ï»¿Ã¿Ã˜Ã¿Ã  JFIF      Ã¿Ã› â€ž 	 ( %!1"%)+...383-7(-.+



-%%--------+------------/----------------------------Ã¿Ã€  Â¶" Ã¿Ã„               Ã¿Ã„ @       !1AQaqÂ�â€˜Â¡"Â±Ã�Ã‘Ã°2â€™BRrÃ¡Sâ€šÃ±3bÂ¢CTÂ²Ã’ #cÃ¿Ã„             Ã¿Ã„ '        1!AQ2a"â€˜Â±#Ã¿Ãš   ? Ã²(/pâ€˜â€”â€“Â¢Â·,M|Â¯GÂ»RÂ£Ã¼eÅ¡T. Ã´Å¸EoCFÃ±â€¡ 4Ã”kÃ¥Ã³xR|Â�Â�ÂµÃ�Â¨Ã“DÃ !Ã‡Â´ÂµËœâ€¡p Ã�Qâ€¹Â§!Ã¾Å¾^ÃµWsÅ’y Â Ã¥Ã�Â§$Ã¡Â«%ÂºqËœâ„¢JyyÃ‹0yÂ�Â«^Ã�Â�
-3ÃƒÃ�Ã‹ÃˆÂ£Ã†\Pâ€™Ã¤â€žs&â€¢â€¹Ãœs Ã¼Ã´'Ã WtÂ¹pÃ±Cp$bÃšF`Â·7.^)Â¾!)Ã’Ã™Ëœâ€“Ã…Ã�Å¡^hÂ¾Ã¸Â³Â·Ã¬eÂ±Å’aeÃ–â€”Ã�,e=B}JÃ©ÃŸÂ¦$$Â½â€”Å¡Ã™ÃœCCÂ¯Â¶Ã¨8ÃŽÂ²â€“Ã…kÃ¨wx
LÃ‰ngTÂ±Ã¦Â¹Â£Ã“cÅ“Â¿Ã�/Â©Ã‰Ã¿ â€°ÃšCÃ’Â­mq;TtÂ¶â€“}0"zÃ–Pcd1Å¡Â­Â¤tË†â€žÃ�Ã“Ã¢qÃº[â„¢Ã¶UCÅ 2ÃžÂ¿Ã˜Â¯Â­Ã‰(Â¸ÃŸÃºÃ§Å¡mW,Ã’ Âºfâ€¹Ã…nâ„¢Ã„LÃªÃƒÂ�8Ã¼Ã�kÃ�â‚¬LÂ¥Ã�uJ1Å“Ã´rÃ‚SÅ’Ã“Ã¶tÂ�!7EUÃ­Ã¯b)Â�AÃ‹iÂ¬Ã¢-Ã™Hk8Ã²Ã�iXYwÃ…)OÂ�^"Ã‡Ã˜riÃ›Ã´{Â»wRUKÃ™Ã�ÃšlÃ“Â¬â‚¬â€šâ€™Ã—Â©T]
Âªbâ€”ÃŠÃ®KC^Ã—Mâ€œxÃ¹Ã¤Ã±zÂ¬zJÃ—{4[Â¹M'IÃ†eH1LCWÃ•]Å“Ã»ÂºÂ WDÃ¦Ã Â°OÃ…â€šÂ¹cÂ²ÃžuAâ€“rL`HÅ¡pCezâ€¡Vâ€™â€”Â Å½â€šÃ‹â€žâ€“Ã±Â­'ÂµR0Ã•Ã–=Ã€:Â±GÂ»C\nÃ†Ã‰5*Â¢Â â€ Â�3Å¡hQ4Ã½Ã’i$Ã•1"Ãœ]Â¢p-q3zcQ$ÂªÃ¶Â¨Â¥Ã¦fâ€ºâ€˜Â»Â´Ã�ÃšHÃ¡â€žeÂ²JÃ‡â€“iÃŠ:Â·Ã Â¬Ã˜c5Ã…kÂ»LaÂª*wiÂ�
[0Ã“wk Â¦aÂ¦0Ã•Â²Ã…Ã…â€šTÂ¸â€™Â³q:Ã†<Â¹Ãº	Ã’ËœÃ†}2VEâ€¢Ã�â‚¬pÂ¡Ã”3ÃšÂº â€¦hÂ³^Ã‡â€¡ÂºÃ§Ã¬Â¥Ã�nÃ³|ËœÃ–Ë†ÃŽË†+Â«Â¦dÃ¸â€˜MÂºâ€“d\ÂªDÃ°Ã›â€žÃŒÃ—LÃ�â€”â€”Ã�9Ã‡|â€¢FÃ¨Ã§Vmâ„¢Â¨â‚¬â„¢3ÃµSâ€“9Ã„Ã¥Â¢<ÃŒâ€°ÃŒmÂ¢Â±`Â·ÂºËœ&ZÂ²Å¾ Ã‹Â®DÂ«Â¶Â»6â„¢â€°Â©Â­HÃˆÃ€Ã¡Â«hÂ­iÂ³04Ã¦â€™hxÅ“i3Ã¯Â¨(Ã“LÂ·â€ â€¹Â¶Ã‹pÅ’
Æ’ÃœÃ’?	:ÃµdsÃ€â€“3Ã¦Ã“Â·ÃœjÃ¢Â¬9â€”]8nÂ¼&]I FÂ£Â¼â€¦Ã¬â€“â€”Å’0vÂ°LÃ‡Â�Ã…fÃ›2TÃ–â€™aÂµËœN@Ã–BSÃ�^Ã Â´4-Â±Â°bÃ—nÃˆÃˆÅ“Ã†D=KdÅ’Ã¸â€¦Ã„ÃˆK,â€ºÃ–RÂ§fjÃ¼$^Ã”ÃŽ!â€ž6^ s:Ãœun\Ã´kCÃžÃ²Ã·<â€”LÃºl
Ã�â€ºGÂ¹Ã€PÃ¡Â¼NcÂ¡Å¡Ã’â€¦Ã™WÃ�Â³Å“Â±vÃŠÃ¡Ã�â€žÃ—9â€¹Pâ€°cEÃ˜â€˜â„¢â€ºÂµÅ¸P<Ã—g1
ÂºÂ©Ã˜Â¬wiÂ�Ã�^l5Ã—I/';Ã‹+Â´Zâ€¡Ã“Ã„FÃ•p[ÃˆÃ°â€™
HÃ„	Ã³
9Â¬Dl4â€œÃ©Â±Ã�â€�V=^HÃ°;Å¾LÃ¤dÃ‰aâ€šÂ°Ã‹,#/Å½~Â²BÃ”Ã›
QÃ£Ã±QtIeÃ³rVB,Ã�Ã‚fâ€¹4#ÃŽÅ“câ€¹Ã‰3ZIÃ–Â Å’Â¢Â¥Â·Ã¼xaâ€¡ÃƒÃ§Ã¨â€žjÅ [5 Ã„!U?,3Å¾ÃŽÃ—â€¦Ã°dÃ“Ã·hÃ¡Å Aâ€°Ã¬Â�Ã„4Ã·ÃƒÃœZÃƒE{â€°Â®+W\ZÃ�E[â€°Â»ÂµkÂ»MÃ�Â­`Â¢Â©â€ ËœÃƒVâ€¹-fÂ¢Â¡â€ Â¢aÂ«eÅ %Â«YÂ¨Â©q%jÃ¢d,Ã”q`) Â¤Â¦â€¦Å¡Ë† Â¦E>0Ã™bÂ²tâ€“Å¸Â�
Ã·jsÃ�â€šÃ’â€™KÃˆcÃ¸(Ã©â€º;k(â€™#Ã´Å’Q
â„¢Â�C>
ÃµÂ³M9Ã³ÂºÃ†ÂµÂ¤Ã§Ã¢;uÃ€Â�)5>RÃ”Â¸fÃ“~ÃˆÂ¦â€”â€™-$feÂ«"FÃ¢UË†ÃŠwÂµPÃ�u
w+"Ã¥Ã‰oÃŒÂ�Â¨6sâ„¢Ã›9Â�Â�(Ã€Â¨Ã¹Â©hEÂ°Â½â€ n`m~â€œ@Â©Â�â€ºp!VkhÂµÂ Ã�1Å¡bEqqÃŠ@ÂºÃ¨lâ€º2 â€“YÃ£%â€˜â€šhÃ›{aÂ¶â€¡Ã…ÃžMÂ²Â¬Ã§L34Â®Ã‡l]Â®â€¹Å½Ã˜Å’m'RÃœe35Ã¦Ã¶Ë†Â­Ã�Â­ cP9Å¡eÃ�kÃ¶oÂ´LÂ³ÃŒ=Â�p8]â€�â€¡BÂ¶,Å¡Âº|Ã‰Â�dzXË†Ã˜k*Ã‡Ãš{#Ã±â€°pÃ£(â‚¬Â¶â€¡9Ã½'Å¡ÃœÂ³Â½Â¯kÆ’â€ Ã‚â€™Ã«SOÆ’â€¢Ã…Â®H6+aÂ¢ÂµË†Â�â€¹YÂ¨bËœb+XË†Ã–!Â°u!Â¢"ÂµË†Â�Ë†n2Ë† Ã…0Ã„`Ã… Ã”Â®c(Â�Ã“ÃœGÂºâ€¢Ã„Â»Å’Â Ã¢WÃ®%q.Ã¡Ã�Ã„Ã·Ã®%umÃ�Â£+ÃœQ,VnÂ¦-GphUÂ¸Â¢XÂ­&,Gt
Â·KÂ¢Ã…Ã…Â·Â¥RÃ„ÃŠÃ‰bKn
NÂ­R2g$VÂµÃ•Ã³
Qr#â€“Ã“ZUÃ�Ã°0ÃŽtÃ™Ã€Å“z
Ã«Ã¶oâ€œÃŽkÂ¯nâ€žTÂ°"SÃž+Â³/â€¦â‚¬Â½"iÂ�Å¾Ã£O%Ã�%&ÃŽâ€�Ã¢â€˜Ã‹Ã˜Â´IË†Ã“Â°Ã‹â€°ÃžM<Jâ€¢â€ºC=Ã¬u*ÃœÂ§â€žÃƒÂ¤GÃ‹Å Ã´;5Â�Å’Ã�Â£Ã±Ã¹Ã¤Â¬6ÃŒ2Â¦â€˜Å¾hÂ¸RÂ�Âº<Ã•Å¡%Ã·Â â€¦Ã‡	â€šgâ€¡.
>3.â„¢yÃ§Ã�zitâ€º`4C`kÂ¢Â¼Ã¡!Ã¡lÃ„Ã¯ sÃ‚[Ã—!Â¤lÂ¾Ã¦o"Æ’Â�IÃ”'@Âªu)3â€ºÃ´Â®â€œ@Z
Ã Â¾]
Ã¼Å“'â€¡4Â¸PÃžkÃ�-qÃ„Hâ€°Ã“Ã�BdÂ´Ã¿ â€”Â¹Â°Ã„A&ÃŠUÂ�Câ€žÃ¶zâ€šâ€šRÃ¦Å tfÂ¬>ËœÃ‘idÅ¡EÃ§Ã‘LÃ·Ã¡Ã½Â¡VÂ±hÂ§Â­cÂ¿Â¥Â¨Æ’@gÂ¼â€¦Ã�Ã¶^ÃžÃ‹c.Ã…Â¾â€žÃ¦â€œIÂ�[Âª+Â·zÃ�Ã’Ãš,Â½Ã�Â»Â¶â‚¬Câ€º7jk$Ã Â¹â€“â‚¬Å½Â¾Ã…Ã™ppÂ¶Ã�Ã¾Ã©ÃŽÂ¤Â Â½Ã˜ÃŽÅ’q Ã±pÃ¦Å¾Ã…Â¥#Ã˜Ã¢4Â�9ÃƒÃ‚K^MYVâ€œ,Â¶Ã‰z_Ã²Ã¦:â€¦;Ã•Â«Â¦I3Ã¢JÂ£Â¤Ã»5$7ÃˆxÃ¼n\Ã¢]ÃŠeÂ¯(Å¸&Å½â€¹Â¶2<6Ã„â€ fÃ— Ã¦Â¢Ã†Â±qWÃ„Â±[(Ã™Ã‚Å½Ã§â€šT7Â¨@ÃˆÃ‰Ã�ÃŸâ€šÃ¯Ã™"&3TYlGÅ½Â�â€ )â€ #5Å AÂ©^T2Ã†Ã�â€ )Â©â€ Â©â€ Â¤yGXÃ�â€ Â©"â€ )Â©Â¼Ã…V WSâ€ #Â©]Râ€“râ€¹q5Ã•bÃ¢WÃ¾BhÂ¯u+ÂªÃ…Ã„Ã—Ã¼â€žnÃ‘^ÃªkÂªÃ�jâ€°jeÅ“WË†Ã•Ã•`ÂµDÂµ2ÃŒ+Ã„ ÂµDÂµÂµ5Ã”{Â¤Ãž0RFâ€™HÃ·AÃ›<ÃŠÃ�Â§ Ã†Ë†Ã¦0Ã‘Â£Ãª4 Ã¶ÃšÂµ[Â¬/1Â²â‚¬Ã¢<-Â¬Å¡Ã¶Â²rÃ—0oÃ—wÂ Â´Â�xÃ�Ã’Ã‹â€ž
g01Â¬â€žÃ¥EMÃ¨â€ºâ€¡Ãƒ\6ÂµEâ€ºâ€˜fÃ™O	kÃ·CÂºnÃ“1`iÃ®Ã’Â²Ã¡Ã‚!Ã‘LÃ„Ã¿ 
Â³Â¬Â�\Ãµ*:M=Ã‡Â»câ€¹2[â€°Ã˜sÃ•LÃ²\Å’KÂ L^â„¢Ã¼Ã„N\Â¶#Â»
Ã‡\â€¦â€¦ÃŸÃ¯IÅ“Ã‰$Â¸ÃŽÃ±Ã�Â®Ã”HÃƒâ€¡	Ã›Ã­/Â´>Liâ€�â€žâ€ g^$ 7NÃ�Ã‘Ã‘2M2ÂªNg=kÂ½Ã�}Å¸l6â€¡	â€”JWË†â€�ÃžÃ©TÂ·+ÂµÂ¦Ã¼Ã‚FÃ¨Â¢Vs6Ã½Ã†4Â»2+2IÃ�9Ã´9Â®Ã‡GÃ™Ã‡1+Ã„8;*Ã•Â§Å¾Â½D*Ã®Ã‘WÃšÃ§Ã¡3MaÂ¤Â·Ë†Â¥t}Å¡Â²Ãœâ€¦Q+Ã†Ã¼Âµ8HÃ­Sâ€�Ã¼xGÃ©Ã�Ë†Â¦Ã‹lâ€žÃ©Ãˆ	5 ÂµÃ„Æ’6Ã¤Ãœ(kIÅ¡Â¯Sâ€ fÃ–&Â¸Â®Ã—v|Ã„yË†*Ã§Â¦Å’Ã‰Ã¹@7-Â®Ã„[]ÃŽÃ–Â¿Ãª`Âºâ€¦=:â€¦Å¾JVnÃ�Â³vÃ°Ã–KEÂ¼â€š Â»mÃ  Ã·fÂ®:Ã‹â„¢â€“4Â�rÃ°Â¡4` ÃœÂ¹Ã§Å¾~â€¹C=Å“â€¦Â¾Ã�j|VDtK.Æ’"9	Ã�
Â­â€“Ã©XÃ¡Â³6WÃ’Ã¯IL-Ã�â€¡
Ã‡
PK     n‰U]@¦‰Š  Š    uninstall.phpnu „[µü¤        <?php
/**
 * Uninstall WPCode.
 *
 * Remove:
 * - custom capabilities.
 *
 * @package WPCode
 */

// Exit if accessed directly.
if ( ! defined( 'WP_UNINSTALL_PLUGIN' ) ) {
	exit;
}

// If the function already exists we shouldn't run the uninstall as another version of the plugin is active.
if ( function_exists( 'WPCode' ) ) {
	return;
}

require_once 'ihaf.php';

if ( class_exists( 'WPCode_Capabilities' ) ) {
	// Remove custom capabilities on uninstall.
	WPCode_Capabilities::uninstall();
}

if ( class_exists( 'WPCode_Notifications' ) ) {
	WPCode_Notifications::delete_notifications_data();
}

if ( function_exists( 'wp_unschedule_hook' ) ) {
	wp_unschedule_hook( 'wpcode_usage_tracking_cron' );
}

delete_option( 'wpcode_send_usage_last_run' );
delete_option( 'wpcode_usage_tracking_config' );

// Let's see if the uninstall_data option is set.
$settings = get_option( 'wpcode_settings', array() );

if ( ! empty( $settings['uninstall_data'] ) ) {
	// Delete the revisions table.
	global $wpdb;
	$wpdb->query( "DROP TABLE IF EXISTS {$wpdb->prefix}wpcode_revisions" );  // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.SchemaChange

	// Delete settings.
	$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE 'wpcode\_%'" );  // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
	// Delete ihaf data.
	$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE 'ihaf\_%'" );  // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
	// Delete plugin user meta.
	$wpdb->query( "DELETE FROM $wpdb->usermeta WHERE meta_key LIKE 'wpcode\_%'" );  // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
	// Delete post meta.
	$wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key LIKE 'wpcode\_%'" );  // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
	$wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key LIKE '_wpcode\_%'" );  // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.DirectDatabaseQuery.NoCaching

	// Remove any transients we've left behind.
	$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE '\_transient\_wpcode\_%'" );  // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
	$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE '\_site\_transient\_wpcode\_%'" );  // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
	$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE '\_transient\_timeout\_wpcode\_%'" );  // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
	$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE '\_site\_transient\_timeout\_wpcode\_%'" );  // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
	$wpdb->query( "DELETE FROM $wpdb->options WHERE option_name LIKE '\_wpcode\_transient\_%'" );  // phpcs:ignore WordPress.DB.DirectDatabaseQuery, WordPress.DB.DirectDatabaseQuery.NoCaching

	// Delete wpcode post types.
	$wpcode_posts = get_posts(
		array(
			'post_type'   => array( 'wpcode', 'wpcode-blocks' ),
			'post_status' => array( 'publish', 'draft', 'trash' ),
			'numberposts' => - 1,
			'fields'      => 'ids',
		)
	);

	if ( $wpcode_posts ) {
		foreach ( $wpcode_posts as $wpcode_post ) {
			wp_delete_post( $wpcode_post, true );
		}
	}

	if ( function_exists( 'wpcode_register_taxonomies' ) ) {
		wpcode_register_taxonomies();
	}

	// Delete all taxonomy terms.
	$wpcode_taxonomies = array(
		'wpcode_type',
		'wpcode_location',
		'wpcode_tags',
	);
	foreach ( $wpcode_taxonomies as $wpcode_taxonomy ) {
		$terms = get_terms(
			array(
				'taxonomy'   => $wpcode_taxonomy,
				'hide_empty' => false,
				'fields'     => 'ids',
			)
		);
		if ( $terms ) {
			foreach ( $terms as $wpcode_term ) {
				wp_delete_term( $wpcode_term, $wpcode_taxonomy );
			}
		}
	}


	global $wp_filesystem;
	// Remove uploaded files.
	$uploads_directory = wp_upload_dir();

	if ( empty( $uploads_directory['error'] ) ) {
		$wp_filesystem->rmdir( $uploads_directory['basedir'] . '/wpcode/', true );
		$wp_filesystem->rmdir( $uploads_directory['basedir'] . '/wpcode-logs/', true );
	}

	// Remove translation files.
	$languages_directory = defined( 'WP_LANG_DIR' ) ? trailingslashit( WP_LANG_DIR ) : trailingslashit( WP_CONTENT_DIR ) . 'languages/';
	$translations        = glob( wp_normalize_path( $languages_directory . 'plugins/wpcode-*' ) );

	if ( ! empty( $translations ) ) {
		foreach ( $translations as $file ) {
			$wp_filesystem->delete( $file );
		}
	}

	$translations = glob( wp_normalize_path( $languages_directory . 'plugins/insert-headers-and-footers-*' ) );

	if ( ! empty( $translations ) ) {
		foreach ( $translations as $file ) {
			$wp_filesystem->delete( $file );
		}
	}
}
PK     n‰U]#lX>  X>    admin/images/icon-wpforms.pngnu „[µü¤        ‰PNG

   IHDR         Ó?1   sRGBÙÉ,   	pHYs     šœ  =ýIDATxœí�\Y¶ÿßî¾}ûöýw?»3æ¬£ãÆÉ;Ž3££ŽaLc1"
À4˜È  HQ$H�œ³ä 9g�(9ó?MaQThº›hßßç|ü`÷­ªÛ·Î÷ÞsnÝªú¯$$1Ö‰ºHH¢ I¬… @k! �ÄZ $± I¬… @k! �ÄZ $± I¬… @k! �ÄZ $± I¬… @k! �ÄZ $± I¬… @k! �ÄZ $±€kuw´g†{¹ê(XIÿrsû"ÍµSw-½{b½·‰JQrd__¯¨+8ÐT]óüÎã{Í-×Ý4WgÃ,SÉï)ïŠzfQ_Q$êÚ�/! ¸P_ß+—{z[¨­šÀd¦û¿ÍŽòUß¾©pÑ>©þËD65tT=ÅDUÃñ& §*JŽ²’^ÅÆ±ˆf{f[mI®0«×ÓÝúÐ@{ÃLNªÅÂÂP&ÌŽO! 8RSM9DTOÒ]3ÑpÝ$�54=î#å�]mB«az «Æš)¤:hü2Áà×I`ðé+%â^<ZõÆ­ £zJóC?½œÞ~çÔ—’3|™×þé�¶OÕ];‚•5	¡†9Ñþê«'mµyòó=Óðê�¹ì™f½eŠúHD­�! F—³¦¡ãœ`³m
Ñ±ˆæ-9ÃrÓd¢‡…<Ðtõ å½±i~Äk':�týì�®ÿë0¥76ò¦8GÐ5ÏB Œ¢¬ð—Ä€‡�oáƒƒæ»ŽÂ’úòB¦�'yÛ;kÈ>»z$Áãñ¤oBÝnœ‚a$ÂÞ´£¥‰i'O¯Âkh¶q2q\b¢ô6�RHWøÖXï¡ £ÈRj%î+�wL%zWþXåÇ�¯¯œà°sÄWw6‡ãÏÕ�ÓîÙÓðq¬°8úsK}þmü[â·úÛVç¿¦î¤º c8µ]3ÑSb:^‰éZkþ)ÿÝßÀÔù§û¾at!`Ó&ä-EÉ‘‚j¾q/ ;$„á^©$Ñ�®­œ óÕ¿ˆã±—ÕZ=O7!J!í9=È•f‚òºö-¸µæÚ©¤oÍ-§^d †g�„àx´}ÒþeÞ¾è¿pÛ÷ùŸïo®¡ýŽáýÛ«H
£5Ç¥ ìäcve8£%ôñZ«ÉÞ�™ùo“ñ2÷¶Ð�“öüôêa* àôÝ�ð-d´Ó—•9©Ä�ôvwáÑ?ôèÞï‚Ÿû¦I|>Âû1Û³äOÎ{‡~…Ï�7Þ¥ìZ¿N£`b" ;á“?š«'ø¼s¯§»¦Ñz?˜ü·ÿöx„@º9<'#³:êéí`=oWˆÚu7Í¥uqöf-»ÖIMÆÃ@ÉÏR5ÌÎÈ›Àçm{×Wýƒêý˜]úéÿðbw·#š÷*HÔ�-! Õ×ÛƒÏ¬›lŽtÖL$ù½ì×ÿRüîßg¿ÿèÜé®�xsÝ$<þ²A§~ký¤3ßÿCî›¿ýêöþß$ v.þ“‡ÄP2à¸{¾aŒ“•¨Û[4B 0ª±ª÷ËMÃý+d½Ç¿þ—ÂwÿVZþÑ¥?†d@$¾Î¡]_ùñ…PÛÿ'õÕßö.eÅE�`?ÄmßðÁž¨Û[4B 0ª,#÷�û[§xJL²cªÕæÉãÜãÙÛÕŸ?º±v‚íïSœ÷L{¹þ9ÓTÕ/ £:Zšpÿà9¤1\?ùÁöŽ{g¹KÎñ=</øØüÜ¤çGÉ~ò³ÅÅé§—àæu`–Óîi˜A”b¿sªÝö©¶Mqƒð%³ß&ßÚ0Io-�u#þ(!\°ŸB Ð«¯¯7;ÒGý—Iœx’öš‰÷¶MwÝ?'HjÐ§å?K=µ8KiiÑÅ/J.}É­…›K{Ëy`0�aˆÉ7 ã0H‹Í¶)0RA2@»H‰Ö¯K±¹Öö@£¢ä(³ÿaï1·7Ou‘˜#·0[i)^Î ~Ÿxò»ÿ!æ²—ýEsÍ?_ìý²ôKIÖ´•õ–)†ëi–ÄMgÃ¬ˆ'&½b6Š ¡®öVí“L.òhçÌp™™g—ð×ãÙ µæŸLsšû–þùÎ–	£2@4÷}Ó!¦²Ø4™)¨3;ø}enš¨Ïƒð„ Ö›âã½_Q}Â~ÏÌ¸“Ÿ]à%ž# †ëÿÍäý¸Ylú˜+pƒ�	"%ZR|Ÿ‰úlI€!Õ•lÿŒäÓœ_Æ/ÏNT\vü3°8ùÅlŠE¼àåþé{—þiT $—ýÅ[r:o`ödÇÔ”L:ÉÛ^ÔçDB Éîüâé·Þ6-ïÜç|ñûÂ_¸J~rmÕ$âµ³‹?Nô:<Ÿ= OwM9¿âï«ÿ	QØÕ•ÿïÜ—ûöv-!SÁm DkÄ|¬”`ãì¶¦:QŸ�Àñš˜ÍïÓy›À¡töàëLK'nn˜F=PÃ,n>¬×“õ×ýÏŒÕ~ùÇØ »¿uö¦¢>3€%âªO°,>MìÄ+,–ûæßLÞ�™ÅÖ™lr âø)J?ü]…°ÂgŒFŒ…)ïõ™¸ ,eGùâgýÆ¯“øôëü:•½÷c–|j	Ï `†/ï»Ùl¬¤W‰úÌ\ –ˆ ˜nœÂïO=½”êë~œpcÝTó-3lwÎ¶Û=çá®9º¿Nu;ð	W!�@í1á>€¸H øK}ún­è¿M6M‘Y˜wŽ£	%€0… `I xš¯´üã'{æf)q7›„ ¦ ,	€œsËH3<Õ‡›#žt§ôwµ÷6×väÇÕÜ“ã ÿ£Ÿä:é7—fõt´t4T½I
ÌqÐ’û0v! X ${t�öÐm)>¥W¾g@”Êºö7¥Ô»[£¯ü† £ ,	€÷áÅÆ%¥eÆ&æVwîEFE÷ö²nrï,I-½ü-- 1×6÷v²/W[WçîáebzÛî±}ww7¶«ž¶·áÊ?" Æ" K BwãÀàÓJJJ÷Jœ9{ÁŒYó1ûò«ïCÃ"à«OC Îl.Éìëë»¦ª1{îB|«E‹¿ÔÑ5Àà©KC ŒE –
ÀÛ°GpˆÖÖ¶?­Æ�7ðì””Ô¾¶&* ‰‡aCU5-êV`ZÚ7°ÊG\øÀ³ ,	€îÖ“áÌo[Ñú1ØÎ]P òÖ …ž–EEÅL[Íšóé›ÚZØ0ë±:€g! X( }­pˆ‡¤Ø¸rKKkíãó$ jý>zÂ´˜��ì¹Ä÷€g! X( =õ¬ÇÂA7ÏÆ•‹‹KjlH TF¹Ü¼Åf+‡§N°ç|—[ ž… `I  ´g±ÒÜSgÎ1ùñœyÛ[[Ê4~!�ùðšÓs6 „††ÃžSÌä <À’@¨µ;‡ðzéÃäÇÇåÚÒðò8 A²KjßÌýdíVË¾ü®½½½»µ)@j€g! Xìu€?¾ê*Ïèïï—‘•§úñ‚…Ÿ—Uèm¡ –ýDÓú®mÚàíÍz·E–�½ ¦ô…°rÍµ=•==½7ônÎ™÷îÇû$åææÖ=½B,<âJðÁ™µ)Á}óÝ
|«VüÎ
«ÊCŸñ×û b*!,…€¿5ÞŽÕÜÜìããçâò¢¤´¬»º ÚJšT’´Âïà¬7Ó®Ö¦ÄÄä¶v		I½½½Ý-éÖç À… `I `V¡¿µÑÇ¬ÉÏ¢æÞ‰
Ý�´ehWƒÑ×6¥ÞVÌw1J·>Ïß¸ î DËV^æst�íÎÙæ[fè¯Ÿ¦¾zò…ä¿ûèØ×“\öé¯ÿªøŸ¿�_ñ÷k+ÿ¡¿î_�wLöŒÇ# �„@Þ¹eþÇ>½·}ÖåŸ'1Ý!¹{É_h²wéŸ•~øß›ëÿå°s2€_B °Ä ¥WªÐ?H²ö(ƒît‹QíæÁooøèÂO³µ7,³Øùó‰_ílt8´ÅéèïÎR;žÞúèÀÆûk-v¯ÔÝô¥ÒÏ3%¿ø;†L·‹œ®îñYR=Ktö" ˆB °Ä eªkÉ ìJ1ãÄ#/®›ƒyÿ­­ÿy.µÝåØNÎíñÁßŽ|=ô˜Ä¨'89\“«
•Õ€Ãs ¸ ,q€Æ&’KU[çÄÁWLÆ ¸»g5WÞ�™ì÷0 ¼Œösr¸* áÇ# p! Xâ
€rí$—zc}’C ”VÍÀ ¸ôó\nG “í?ìXô'® hÖ¡«ø €¥'+. ÐÝCr©ÚŠ ºí3<8ÿÓ¬ë8qý§G¶ªoXºsñð‹£m9B®-B�
@Üéÿp€éþo‰¯.þ õ ÐÖTW”	ÖXMskì•éc¼ïkü”ƒ™Œ@Å	’KA®É! r?‘æ|”~˜®·é+Ë]+ïí]ƒ™ÕîU–»W‚YìúYoó×J?Ï¢Îù^ç€„³Ë9 3·§Ú›ùÞòãDã€ÆªÒëÔŸ\’ÈŠðæ×þi_Ç;êP¡·Ÿç Ä\jÔÅ1Mƒâvbõ$G%*­à
 0ã½_	¢÷¿ $z=¦ž	Ì’^>ûþSýœhwîypîh  ç wå9ôÈ†hùïŸ•Ë! O®oæðpÍ>jT RÎ¯dÀÓ]Óh›ÅüÐòòå1ã€Šì&ïÇ¬¶$o,ûo{[có'¤}z˜ËÉ#Ñ©#@•‰‡	æ¬¶c, ÈüüqK‚1‡Çjt¾Äí æµú£íS©ï¼«Í¯ó;~$J Ê2¯Ka�kyl•ïík5…™ØW•vàín¶iªËþ¹›&kNÉs�¡×zVç¿ö1¿j)µûÜQõXEvò¨‡ö½}�xjo®Ÿüú§/>¢æ `�‰&:e[¢Éõ­y`Ï²¿¾v¹À9loî+p›ãæ-9ÚœÄ@KÃ:„($ Úß6<¾°—¶ko†îÿ¯«ä<lÖ3™ÿ6tJt6Ì‚ýÄ¹ÙÐîäé•C�m-LGïéêÔÙ8/l°nrŽ2O/¤Î�µjqî—Õ¡:~�Í- û¾ü®¼¿+ÙŒZO°…¯8_aµyá��…è&Â�h x¤¼“Mxóìê‘¡¸só4|	v><%¦«¿+bK“ÂïäÚQ¦£ç½
"–“YÀ¹÷^ØNõ*Î'‚ðd@oÿWœ ¼yvi€:W‡ ½
6ê…0ê8 Ix·äƒS[„è&Â� HtÁTsõD7Éy‘rŸyüÄä7òüƒ«äP>šû 0ƒ_ÉïîÕ\=ÁnûTÜöN°mŠú»V�J[�X—»ÄÍ¹|û]™úªWUéJ2åÊAÁ2].ZÈý,ûÍGl �þé#ocÉ®´ÛÜîœ6þ©Ð?àh6ç ø²^�4<ü¾PÈÞ"h‰  {IÜû“‡#ï‚_@¸OtMÇ}sH# ˜6%9{¾gÄë!ð‰<wý³´ˆxb‚oËÃÚÏÒë«h{Ö&Wn}³Ú½ Ó£V'W�]5áþÅ_£mOv¦šó°Ï¶P]ÚJkíæÊû©£BöAK ˜ü~Èq%ÈŽ±'‘rÓ‚ÁîžQ&éŒÖÓ¼6{õç½“h+þø¾¹íö\ òZßª2–êLäz š­òz ÷Ë5Æ²+»“?ÒV2óòznpÜ=ÀO™ìÿkÊÀcŸ’|+[ùs’ßÝ6¼ zzêÜ¤ÅÔs¦÷+«ØíÃ+h+@àáN®`ÊƒyÈHÖk(÷íÇ À£+¿�e?=a×ö|M[ÃX…¯¹À	À_A"…5¥ÛàÑSÓYˆ”,·Ð_�Ó];ÑGrÄ	ó�˜Ž}ewn7mÆ m€Y³�ÚX|÷¶ÜO{—þµ6R�wï/|1Ðßg~åXå‚]Åhk¡ ÂÐK“?ÔÞÍ?æŸ‘€>Ü9“ÍÄ“Yl<÷O‡ HíÝ4mÆ@é•åL Tn‹àÝ}ó=¯hI.ãyóúë�¾îšò¢#?MÎRßMª[öµMÜz?€ÿ*Ëˆ`6MKT\DÈ.¼÷û¼3ˆyîm�b½eŠæêásch+0v XQ�Î.6´qqY€daÖ2¼mÿä”Ä×ÿ{ùàÊÃ+&B]|ƒ|Å:êÄ2 I¢¹ÀÏLº·mÚó}³¼Îñ?2/Tz~´ì§ñòŸ¥žZ©dÀ;§>Ù1õÑö©¶¿O¹¿uŠå¦ÉÐßc)/Õ¢-i�Î J¯ÑÏ�}Rˆ·iŸ€ÛGvþßà÷çWÍ1Û±Âáð–Jsb}
5wòàý þ«*/oMˆ‚Be$È/Ê<»´à»—(²?I^û§Ãy04Wmž^9ÔÑú–Z¾  V¬I¾3†dõöÊœ/‘àÙjÂuÍ×ßµäÏ¦;VÝ?ytS­íibe¢åGiC€�”èi‡·¦³Äl½�Ã³usù2Ù�ãkª2ˆà —` v�¬Éí²à¼ßAmËÞ/þ
Þ¿cñŸpïóº*Q÷p Þ¢€@äqSoÍpŽ—!px¶ðÅBDÓZ7=;Ò¯ ¿  ËR¡Ü Og5–²­!:ütýëL/m¹_&âŒÕÖ/Á½ÿÙ‘mõáú8 ¥ºÁRó ´å4(X²â"þ ‰m>psû¢îŽv¬| Sii¾Úïœ0 Ve&Ýèü‡Pa²Þï¾Æœ�¾î¶F¸÷üòÿˆwGÜ’ƒ’ÕfÒC¹ïÉ/xö~ ÿeqô'¼5i—afœý<öä¢ ©n’óží�óh×¬{¿Ï0Þ0	zw«Í“ïm�b·}*œ‰éÔ³e¿s|å-9ãùîi¤Ñ ¿�†� €EË}V¢³—C0«6—ixz¾ÙW½#ææ¨ß«%@+Èp¿ÊÎ¬»�ý]à'tuv\’ø@}Ãp÷ïrn'lÕw;Vê…Ucñ~ ÿe¸s	ÞšÅÉÑ¼‘ïSac;§’Îéù�¦‡Süþ�­´$DúÓRÝ}\1@LÞÜ“s_�l÷ä«o¯4<Œó=µzÏÒ¡Erçv}#õóTâ‚9,úw:ºÝOã†MíEØ*ëÊFßc}€.€ÏÒ^?<ßOõ'»]³8Àfëö'ïùžá“wïäF¬ü ,þÄ‚0®Çn-áòV¥•©+¥Y ìZápjkå»{š^\�ò¹ª[üÍ£÷# ø¯áÜtÍDª3Y0¯z DDìOÞ‹}ÓñÂNj2Xø Xø±¹ÁÇkÓ¯â£Å«ly|ô;ÛS+Ÿ\ßŒÙ+;…Ž”¡K�	ÆõOÏA±ô?Öúäƒ÷# ø/½­Ø„@·6Òg±´v›n%Ñþ>¼”7ÒÁ«€  (¼ðEð‘ÙAG?ÉSÛ&h0«±”mzq¹-T·-ìFk�ôúµ6Š‡X�pvÓ#`@$ ŸÃC½øÅ ›È ¸2cˆð•¿/Ä,ÑòÏ/<�îÌ„³ËË(Ë„cEZ»ÂdñÑû ü—í™mxkfž%ßŠn¹e:ç Ü£ä w6O1Ý8ùþÖ)¤) Ü˜áuA ,Wyé 3`(È¼¼^˜®_ª+‘|îgî{" „-/£xkÆÈ-$ùÐs‰¹œ@�ºµž|%X}õ¤ô Wbü�
 l€X«L„ÜÒ<Õ­Bpý$åŸxXçÌ- wþ�ºÿøQFYµð}Fp ñ/lqÿsÜ;‹ä@qò‹8ô~�_&¼y'€·äâZ –Y1âÎà„‚rU'–=tRÕQ·Rø­@å;þ2 ù@¬ìð•×Ù%ÙWHÀ£¹+þÌrnïñåÊÜNüÇZUVßî™:Öhƒ¦ãìú*=¯ª®¯¿_øþÃ_‰ €ÆªÜAuÖL*¢äÁæ›9š¢Æ?¤&U5®ÂÙÒvjleEÿ=½}/“²T	'35G_“6ÏÍ¯FèÈ»¼œ_°®vÍÀ#óÎ,çË€P¬½'ýÒàJ@Nïzòû‡×Ž›èiØ»S›‹hÆ/#ÒJªÞkD³ú®Ü:ÜMÃ¤ÉË�2Î.Õ]KŽdHfð+ùF0_Öe¯á¸_}ÍU/ì<=�M«lxkâÉþtšŸñ£GÏn«‡êÉ¹òãØ1HUü,`äd<Ä*Ñ'¿L9¿2ûÚ&Î§MKtöe^ÙæûéOàô3]äWØ^—21½¡ùÄ�ƒVa–þ1¥uïëÓsE@¼ûpn´~2õÁ$IŠK´×02`´~’;e„û¾ÙóSUiµçøIR'üÍ¹Ý|üÔd�‡D�-<3 C\’üB,9¦5È˜ÃdEžø<Vñ›„³?$Ÿû	³D¥q§¿‹–ÿ2Tz!ÿ�þàLg…Ÿ¬ô.éÙ<ÔxêÉaƒh¹EfÝzEýÊ=>ÆX‘¸ÓX$²G#êo[ˆ;ëÉ9T¿ÉRúÜaÏlÒÍ.àúÔÄ3£‘éoIZlPF!íY|‘ÌêŽ¾7?³³Ò‹Ô‘à�„´S‹¢e>	8Äÿ—ûrh>g9žYwû¦ª®íü8üáúaøßºnÁØé{ÛÞ˜žÿ%–4ó‰ªkn•Gñ&‘é`Fô×DùÏ˜ºOH‹cO.rÙ;í%%æÁÍvÛˆ«F2ëá=½j#;þûÁñu-í~©¹ø'vÉùo3
8�†LÍÉOÏÞùþ]“@}™Â?¾å–„\å¥É
£dæ	ŸC³.l75ÖÑyôLÍÑ�Ãhìõ$*Õ?³(¹¢.8§”
 ¦®žÞ°ÌB-—@â¶�‹È§x‘(Žk ñ-î²š¿LH`` 36çØq÷4õ‘1’±•vç¸×ø‰‰Ê-Á>$à?|¯LgOoY}sdnÉý�x®‡V6V^·Îä^YÁC€”îól¥¥gÃ‘,¿0èÈXgu|ÏµS‘467ÔzìYgHû›øDÙG§�Ó'•×¥W7âÆ L­í-¦íT^Os#Þø”(¸ko?bÂþ—	+sÀ³]ÓÈSŸ«&hØ»÷ÎÐ×5á'†lì¸L álõÛÖøÂ
‡¨nò­g^f¶\Mÿx}}o‘í›âG5ïCs¨JYšq•Å‚Ó;Ä¤dCOOtz®  õ³Z5‡Xì}‰…D	€‘W¸êõÄA Nd˜Ôœå¥œ ðbßôÛ#/÷BÂ`½eŠÚº™pZ;YoshïîÁÏŠCäÐcÓ9€¨¾þþúÖ»ˆ$®†0GoãGvNæ×SÔ6
 ¯£mÔäïXŒ:_I5m×à˜¢j&§g@Ó%ðiT
ô÷ö‘É/“² !N/­ªllÆ*&·d-ïˆž¾÷ '% CƒïÆyC#Àª	øj~H_Ÿ^\|‘ èø5GvüÆ&yJL·ý}ªšÔo°Û·í�ƒ=“¦óP„jê‰—[ 0Á�ò04�[?ÃMÝÑç–Ý“§£O(±ÀóØ¢û'oÞ±Òpðà½2Îœx?	 &Óqvy•^ÛÜê™˜‰Êuø'‘ÐÞÕ=€²4îÄ®{GLnBŽ!=/Fv~ü‰4ýß~Ö³ ïme=ÅùÝóq-7MVÕ¸»mëì Fyì@zî!Ø¡y «³ñËÒ‰‡¡Æ–/B8÷?5G_ÃÇOŸXêÄjíâ é¥w5¬­58�¯Tœù½ë�œ}�2kù2-ŸCïç Ü ³wVô¦AÎÃG‰ Èœ†šÉÖQmõP$=ÆüO÷·Yª^Z.�ØQ*›Û½†\�_y`€5ý×yk$·¼Âë[Ú�´7�3”��
Œ
ƒÁÇGVúøì*€»ÌwµÏêß½§þÔ‹ó½Á·M~�Ÿ_]×ÕÓµ"vÉCsJçÞO@Ã90$³0©¸2­´::¯ÔùÕkêì´3>ùMÁg¿á·D ôÐÃN  �psÍ£ž97Ö²­ó²°C«€X8D]['œ?=÷Ð¡Þú ®ñÃ>Á- ƒSà¤q ºÿ²ú&b™æöNŽ½’²,ýcÔ8Î¡ÕœüôŸ8™ß¾©þô%çNG‡¸<*§¸¼þ-qqNo_|N*ìžœË•÷“ €cQ­ôòhsÚêAÅ¸maaJd ô¿ËÀ4íœÕÖN§�‚¸2ÓŸªºŽZnUs;vþ4Þå 04ƒ{”5µÙG§� PS™È3Ëéß)ÝÑÝ“[U�–g�'$c4H1]ã^'–CØM{Ð¶®në@²GòàýÎa*­§YoQ"„Ž<4²p$Ê$ØÐ3k#ÈÉT5¯áƒ€OÞï¶o†êm+l‡	ÅCó1EUø™€Ø ·î-|8v G0èÝI';,³�ýV½}ý%µ�ÙELý%Æ  ]V�Mp±c˜·…öË(âÁûÉ³@N>…‰á=]�L‡†!È'%‡Tsø½<´°p$J žEÐÚ®Áj
û1F½Ñ‘jÞ’3nh©`»2ö‰ÂOžWj>~ˆÇQiØ‡| ÔÝÛ÷0Œ</9À¨Ó5M-úï3Ì4èFêú%È^F­U^UtºÄ­´\ƒBsËxó~rüøvŽlÏüþØ¸¹ŽþÞ€À×ùÄ
˜ûFñÒ¾B‘(ˆÌ.ÆÛÈ*pp¦âª²Ú/¬%=£ÞíNò~Cue|W™ÅøÉ³¾BéŸYÄ_ 0½ˆÏ Ä'‘¤”€¨Š†·¤%4¦Þ‘�3 6Uƒ—ÞlÃ’\²ÂóYÓ”Oc_“v‡cZ~±µ2úaQ…•<{? ¸9kÈÒ¾D>ðu±ð«ÇØÎ’(€‘o î¡žƒ‹®Ì,Ô6
-k¸ní£¯Hæ)9ëæ�kø~î…$àg.¾ô�Ú»Ï!M©¬  ø‚2R‡ƒp¥»·—T²¸¶AÛ5ˆÔ;’Bš¢†¢ÿ¹&f“|Ú96½Ÿr'JAuýMÏ0RIËÀWÉõcñþQÀŒú*ˆ…î‡�ž‰YcogAHÄoŠ¿C…�â2‡}OÕ?ÕÖÍÔ\ÍšõfXçrp¾õù½šöÃWþ�^F/é?ŽJÅ¿ºš@û9_  U6¼ÅSÜ /¬©ÇËÔÔ“’`øùÐm“vE Ì3%�´g‡ÈdH'°ò��@ÜE* ÆjÏŒ1º>Mààî}h®Íï4÷mãO�ÁÕÚÕ�÷ì³gJÄ Äæ�˜bóLÍ|Ÿ¾T54T;}PCâ³óí`= ýÙîévûÞ•_¯kaA:å†^Ðåã§-¶¸šCGä_ø¼IðT~00�P§U³ðÑ¬Š7Î#bz›àxê1@ ØË´|µ‘»}š QSJq%õœžGèX‚~6 h?uÇ.Vd+-}!I¾{R~ü
¿ÕÉ¿êÝŠ‰q%ÐÓÛgH¸ïÇ‡å•ß™ rbwCˆc}Zu£™ßð�eÀ+ìóÔª†;AqÄù ¦Ô’JRˆÏòÈ!¤«�Ã“zreZ Àü2ŠHi±ž;ÍågÛð¤±‡=£P2tÏÆÒ»[GÜ†úPi‘�Îž^¼ÎŽÑ©ümj¾HÄ €’‹+‰çÏ1.#±¼Ö:˜ÓÉš.�)äéíG‘Ã=1œ€è¢*ør Êä#ß¼RÆ~Õ{W` ,0«„v¾3·`<Ñ Ørnç}³‰xÝºHü9ÞïfEñÅˆãJ¢ d;Ò]Ü’r ÝCrËÀ_Ù\F…˜Ç-1haãý¬v�IOLˆoÑÝò" 0½Ê/Õr	¢‘•Â²Ý� `0BjºÐ0 #µ)„  fîæ�nÇÃNeSËÐ¶®Ajê±h\ ÐÞÕmà1"ì±�š³‡ÑÜ÷uáÓØôaI–�¯Ìýb ž�ÿ†ç•SOUBY­UàˆÇÔ7Âž€¬b¦°Jp PîóJ}2„= `áùåZ„©$èø_¦Âõ9 ì9a°8ú3þs YÇ7ó–þºµ5.  •Ö5’\ÓØ'Šó	lú!�Öyº|	ˆÉ 29RU�€)½´
› ÂïÈa¯Q ƒ–Ñq�´Ø.2%‰ù^aPxá}Âû©2BÜñ_„ÏÏæTÖ
¬™yÔx TXSOŠÔg²¡{Ã§ð©YPéš˜m@™×÷#ÞÍ=„„W8tBcYÊ›º{{³+ÞpX˜ ÒY«<ª‰S[" ,FnøA6Š›W|•6µ¿[ ›GsÉL´G €JjoR¼ë¶ï‡&¸'çe—ÀùðN/xû¢^è™2ª9Å¤a“îÂ€+q€ÐŒs Š/}i´aò»\'¶4Õþ–ÛþCsãpeèø``p6Ý-Ž|ýŒfêYL¸3   À‚�ÍÇ�—Ïîa{ÀˆÌF p¦Š†·ö‘¼<½‡d°“”âJÒÎ ‚ óìÒáëbj'±=àW_¡ˆ+U56ó0è¸ÃVe5]=4×Y8àQNçZÏf®¬½gÄôæ±ÐVn÷€Ù®ÇiËEbc LóÝ³ÌŒ�®Âö€_»‡�× àªmnÍ­ª�É-ñIÉy–¨çbä��¥_ŒMpÜƒ�øÇáIÞÉÙ¯òK‹9¸	• 4Úÿb]Ï•µt� `™S·{Àì“¸¿(<‰¥V5Œ€Û›‡ÞÊ£·s)lQP�oÞÐÚÎ‡àŸÞ ø+€€ È;÷yÌñO~´6ÌJ'¬f5ð¥mjÑ
€ à ÙJK¢�‚­ÒÕÿuøq®°9þPN.
_  ï @—Ÿ,¿0xä³uÖ ·}qHn¾-'Ñ©ð… @I0I°–ƒ{ªâg‰'?�’™H÷â—’Ã/�¾-¿(öœŽq( šåbTÓþûô	oÔ³¸vß0£Œþ‘" ÀO îl~Z«†¾¶Õýà8Q7*£  ¾à-9ƒøBU{�q;û‰€ à 6Ä×”HoÁ6I+©u‹² À <$¦Ÿ×­zç”�/(usŽ" = EÍ}¡Ý\YïÈ½âjz¸ÝfNi•¶±…"±± `¼�ðŽ¶c› pô»WòŒg! Ðu .®0p{áM%k§iÙ9åV�»{_h… @ Œ	 Éæ#ßÓc¦w­±­C(g’B   xÀi÷4âÂ°û*G…q
ù' € žíšf²�ü&s»s»…rù) € ÔŸ¼ ¿'½½³€;B9{| Mƒr1Jûp\óCËÂDÝl<
€ à ‰oâÜlDÝ`c À5 úÛºjËç½
uSñAâ€KÜ¸ p¼�M¸à¹U^º¨[ˆŸG üÓ†°ð�uuÈo ¼H~ç—Ý["ßk‰# áY…Ãcº“Ö8{^ß¸ ¡¬–øþïHQ7Ÿ%Ž äVÖ ‹Í/khëhlïW\a÷x0¯Ô<ƒ‘¯½ŸÏø‹Ä éaÔÈ8´qøtÛ1JLÈ*¯¹3½wöìƒëþÄ PáõUÈF5»ðD¦'í½×_ _`á•”EûÂd¸=‰··´�]b  I¬… @k! �ÄZ $± I¬… @k! �ÄZ $± I¬… @k! �ÄZ $± I¬… @k! �ÄZ >¨µµÕÛÛû�K—NŸ:uBNNþäÉã22G�ƒ?®_»–œœ,êj"Ñ0V½zõ
œ^öøqÌã™ìÌéÓ®®®¢®,Y€1ÉÆÆ¼Ÿ½ëãfii)êú"‘… à]æffÒÇŽqèý`ööö¢®2Y åîî.#-Í¹÷C”“�-êZ#‘… àE•••
òòL¾©0ü{öÌ™óçÎ�RTÄ8ÑÑÖu­‘h„ àEmmi]¨016ÎÏÏïëëÃJVUV¾NO�‰‰ééém�‘h… àZýýý´‰ïq™;VV¢®wB p­Ô”9YYÚî¿­­MÔµCâN ®åøìmücdh(êª!q- ×ÒÕÑ¡z¿ô±cAAA¢®×B p­Ë—/S8yâDbb¢¨«†Äµ \ë˜”í4~~¾¨«†Äµ Ü©££ƒö
€üÉ“¥%%¢®×B p§††Yº) ³gÎ”——‹ºvH\Kà ´¿)©ˆpÎs6+xaÖQ_Éßýw6Ö”ø>(s¬ÏŒnÌMèl|3z•jËŠ}m¥�/ö=0#Dñ› ¹¥‘W§Yž-zÒÙPÍfÛêêjÚ‹ �äää´¶¶Â�•„?r²³KKK‰›÷÷÷C¤äîî®®®®tö¬ìñãçÏ�ƒ!‚ºrùòƒâããÇ2—
;¿kmiúõk×ŒoÝrrt„
³ß¤§§'99ÙÁÞ^UUõ”¢¢¢‚TIYY�¶¾s€§nRUUåããsÓÀ@YIé¸Œl¥òÇp8ççÏ9\îÑÜÜìççû×ÒÒ‚ƒAŸ­Þ¼ùèáÃ���ÊJ>û	“@‰ÿÃÐSßÊ|~†YˆÂW}Ý]L›ô÷ö4dÇ‚7‡žú.øäP>Å\¾·«ƒ©|M¼OÄ…_ ë(Çƒ+‡žþü¸¯§¾}[”ž~÷|¢ÁáB‹ž¶·ðISA
ü×ÿè<ÿ£ŸàU"ZÀ±Oá«Œ*=íÍ¤c™š˜\VQ_§€­ˆÆzhL8{VNNÎ(¾‡ŒŒŒK—.A6‹ˆ`?�c8::vww³iÛ´´´ÀÀ@÷/0ÿ
/„HŒ¸7Ø•ô±cƒŽdfjjmmýö-«5 QwwØ[»Akðcíìì€[(ß××¨hijÂ&L?xÐPWÏÍÍeªyWWø=TŒÍr9YYh‡‹. 	½½‚}-� �Z@õ°à_T„?gÚ$êòpbðÂa�”^XhÇT>ýŽõ  ”dtÌïðœwn½ ìÌòXõ~‡çÒú=Õ`L ~ðùûû_ºx‘ÃuoD316†ÍÛÛÛuuuñ»dF58ýà”´YuXX˜ŠŠ
t–˜_8þ ½6‡Ô<,4R—ïÐ…žû…›|B†Éþ¸t)::zz0NÊu¯^½¢V¾¢¢*Ìù"B€xf¸ó<n$H ¤ÒúVŠé	ÚòÐm‡)ýH-®ô#ã!¤æSË‡(|®üéC¦.Ÿ�Ào’X}ggg'›¥oìÍÃÃ£¥¥:3Ú¹#6&uô(` añ÷>´µ%¹,µnÕPÃ6ÎiÄŒCTˆû'…£Þ6D5€644”þH/ ‘­c�/ö÷÷QË7å%ŸXF-vö‡îšHByÿ£4 Ä\ßÂÄ·Um«.ÎÌÌäöôãž®®¦Æ<Gƒ�â¢"ü'ÃxÂÃN Œáê¾~Ä÷xÍ! ƒÖàa' ’@¯0
€Ä›G™âìæâ×Ôò�3øÓ…(A²Kjý¨å«bÜ±,–dY�®'Ü�ä GæE^Zû*6†Ã¡Ÿd�ØYYY±ñ±’½wÂè�¯-œØ„:Lòðú{|fìÅ‹lÚZ ¦`@#}ÑZM� _Ñ'@ ªã¼‰Ñ<€¿ÔòÉÆ²´^¡|ŽÍbú<g#zZ|=-G	o¤úšc¤~‡fÓ‚„×¶&ÁFammˆ¼Ïœ>M;ŽÃ‡Xê Ú¯}øða||<Ó �¥Ë>ÞÞééé®®®�¿²)éëãƒýäŠòry.ƒ1�RSRØ`ppA¨9üFpDNhta+#CCˆéÙ0ùÜÉ	«9Sž0œŸ?�že÷èTšª0€i†AH€ t½­õ?BŸt&I“K÷÷CªÊä…‘üJÝÄ…U´´ôv´–ÛHÓ°‡E5qÚ{aêïíyWÏº|#À€éèqZ»ñƒ¾~ýšvœ ü¬´¤¤¸¸[úßßßöÌ&ï�hž8¿…­,-OÐÍ/Œa°A ÒAj‰|N£wã†›«k@@ @¥¯¯oddôÒË6dºqü† øQ�ç`5�™š˜°ñið×»ÖÖyyyxåÁqÁkicî[__Ï„74QUUÕHG`ÍC¿àøì VW+ØwÓö:@˜Ò
Z—‚~šT²¥,›MàÞ‰û+¦Þ®|’‡hQ—7À·•‘®Ä¹×áãÊ--ñµ¡­*l"ÿíÑÃÎ,Ç/_”••1Mƒ¾y3âDjj*mIèk­ïÜ¡V <ÏÄÄ„¶«wLKKÃŠÑ€£ß22Â/APÅÔ«^¿Ž»>®ööv¦p‚:Úé:˜P‡o�ÚQŽâéáÁTgáH° @èÂÔ·¿1EPáÈ@Ð‰e�y#–šÕ½Ž Š¨!{�›)|[ýÊ+Pf-H}Ýäó�+þ†¤ßÁY4G?¾ðÀÊ@PË! šL=h-C¯VRRÂÔUC¯Œ•¡�½÷*"äÊT�ãÒÖÄÏ×—¶¼Câ==myˆåhûx— °ÜÜ\Ú!úï—/ÙT[, uia´=qàñEàñÄ’©æŠlBvÿ£óÜÍ‰åó]n�»Sv»ã„7 jSC©P±¶:83ÃF+SUYI¨� `Z2Q
›cºÚ î… 6÷ï3� ´å““’hûx¬Y@´½˜¹™v•MT, ¨0¥YvªÄ’Lán±ê;ˆå“��SË@10Øš¼Ðß×Ët¹ âü*¬œKÚÈž@fF- àÇìgµ!¤�ò!òill \PXXH ø=$îL7‘bífgÇx¡SøZ ˜ë[èë³?àe:küé.i�æ�ƒâ›Ð^H4<†}Ë  …oh� 5+ Ñí¹$àééI¬ƒ—°ŸÔ‹�‰aÚ?– ___Ú4€	€ŠŠ
Ú>:‹’ÁE²w¬¬˜ÒwØFÅQ×,	H 4ð1íì>ôµ½�C«¾ªb=™&mˆQÓÛÂT¬|ky.5c�/sÄ
ð@Œê6ú
œ‰¨««£�!! ¯§G{²Á	ðI}Zååæ2¥Î>ƒ“¡L\ñ€€€ ZÒ˜ €ßNË-T[Ðã ›ë ðÕe•¸¸86?A@8 Í%´WBO}Û�‹•I1=ÁÞûÃ›O‹ßMà€£Sý†<±æ ¦‹w�oô´±–ÇÕ××s ¾$ŽÚ#²o.ˆs˜¦ Ÿ?g­¡¢ýjü ²ò„ýRˆóçÏß»{—ý*@¾K÷Ð_“š_è9ô¬LºÔs&M„só(V>ÝúõÛ(•uøy Íò4- ag–cË¤ÁAÏÑ97	 ¦+Ç×¯]cßV�=3]†Ätà} †>#CCök� ü•Ë—…yk‘0 HÐ?DëU‰‡áÛ¶êâà“_’¾
:ñ9Í qú{l‡Ôµn`™¶Wñ#ò@ºÕYú@j~×Ûº�Áb8˜zq-MÍQ›‹É9°™Ð÷ Pooï½{÷Ø?Nb<(,¬'€²`Ú9þÕ­ƒßÚ“œr†dããÔ	ø¤»¥¡¿·‡zÕÆ�ÚÔáÙžH6–¡àð\,ca 1�cJøn››3|HÊJJ´ÛbOÝz¯Àäåé9êÚ*ØðÁšõ2|—0 èh¨¢]lÃZ¶ÐÕžj®@ŽŽ¤V„;Râ¢…¯Y·}åÄSÇ¿Ãs±›`0ñ@¼î~Z üÎÂ&XÙ @¼¤Ï´ö†“'„2mk|ëÖÀ ($$dÔõáP=+Á?P^H÷‡(~Kõ*ø°1'.Je=5Þ`uót+ò]�‹^Þ¡Þ×òJsñp<}e#- °7¬  ¤5-L!�ºšÚ¨mÅä� 2}ûÞ00xIQMU•=Pl-“à$$ 2lThë<gCêz¡½°Iœö^ê&É·d¨�4k‚Èû.ñp<xœf+_Â…0& Nž8QVV†ï‡iˆ¿¬¢Â¾¡ÚÛÛ™’`GGÇþþ~Úù¥÷€�Á›LLLØß Õ`ÿÓÆ(!P›LÅiï#Íèû™‹MwBRK-tbuN)Pæ³–²÷bó@oG«ß!šµ@`I†RX6 o€bšU�—gßPL‹íd�÷ññéëë£Í.ÞS 0ÅDG_¼p�ÍMì�ŒQB ¯»‹ êüðÐ\š5Àrâ—ÔÔ9˜ yÕ4 @:o 4¤ÐÞ’æwxv±ï}¬ Š‹‹ñ]i¨«ÓžKp_öwy'''3­)ÈÊÊ‚m?< ¯®¨¨¨0…CØ’RIxÏ‚0�Ö#É ¼[tÐÙø†:¾Hý0õ¶"éX¼�÷ü&íZ  ìmÑÐjd& àLï]|òø1í¹TVV&-'),4”ÖóÀ9º»»?T c?¦^vÂÉx“ð `ÝñÈp—0Ñôá›ÐöÇdï<¾˜ú˜	Þ ;ó=í!¤†ÖØ^;KçLp’


ð]EFF2E2ìÃéêêÒ:Á…óççÑßÓ¥œ(0 €v'øJXAHx ´UÑ^ájÇ”=Á7aºI’h UWs=éX< ð&)€~®öÐ¬ô;Êx±ºº:NÎ4äL€o05Qkk+Ó…RçÁu0|À @B»ÒÒ÷Àƒ„úhD6·Þy³ÔüöšáËà.Ô«$?·’z nèïë�¾úíþY*H®REíÝUàÄ3ÝßßÏt? DPL�=óðð ]-ž
àÞI›,~ ¤¦¦Òæ?Ðbî�	 Ú5<#½ùgbùöÚ2¦yÉ!`ŽÌËuÔ£ˆ; úûÓ,NÓÞ¸«º�X–i–Îé©€Ï�œh'ø ×ÔÐ ÞR[[Ët±êõëX¦•Bã€Ò’__ß¸W¯˜î†™™šÒþ:Ø3›Ÿ6F	€òÐgì�TsÒ&´Ë~†»gÙ%�94kh™ �^«¾½.-òawKc‚ÁaÚÂXyÒkyy9­›Â™Î	 øS<èë¿mjÂ755�SV¦|"+++Æ3 Zšš\N;ñ Ð~ñÂ…£ƒO¹RùãøÛÏÏ¯°°q Œl^žžLcæ’`7¾0?¡ØÀôãz}÷ ÀAèn¨c 3ì©£ÑW~‹º¼Æ¦§Q°jC¾nÅfÀÝ×Ý»wv"+CÁ]]oooë;wN)*2Ýý"¾Ã¶¶6ZHFà´l ðãò†ö $'%‘šûÉÐ›\ºxQQA�é±YPGG²WðQÂ~<:Ós"0‡ƒ˜‡T¾&Þ‡ÍÍò)fô×•ØÀ‰ùž„�E1À€ÌÌLRaè°y{¢nÎŸ‡Ìßass3í¨¢¬¤Dz!I´÷¤Ã®BBBhË–ü ''ÇÈÈˆç€ ~5›Ÿ6F	€w3ÆxFîsjùž¶æpf ŒBOÚ£Œ ¿ƒ³XÏclm¢î™ ÔòØ^Ü>wPR¿þöí[Ú!…´•*ÚÄ|+<<œ¶¼——m¬Å SQôLü£@˜’’Âæw�]Â ýM	íd¨ÿ‘¹)¦ô×;âžs,ÿöÐsªÆ@¬Ú6lõ?UL ÀÎôhüââb¸}¤!”¯ ¼qƒé~4ð3ö7RÑ†×@õ˜Ü\]ik¥¦ªJ[¾¥¥…vh‚¶‚øÇÓÓ“ÛgñBùË**‚öþ‘¼!&÷ÙjØzêÛ–²Úòõ•´�€Átž�Z Y›‹eU••´Ñ*œ-6#5ä¸¦&&à…£ú„Å0\˜Óî­¦¦†
 |âææÆ¶É¨ÐÂV÷ïÝc*a7mŒ=í�VÔºÀ`Œa�uvv†ßÎ	ØsB¯_»F\\(8‰ €ÞŽÖpåŸ‚ä–BÖ‘ü7ç©.›Mªb=ƒd—`åC¾ö=83ôÔw­•Lå™ ð?:/Dþ+êBkH…!æI6>ÞZ9Ê¤uWW—“££ºšÚ-##ì-,ð/d±ÄËÀLJKKS½~Üèœ²2Î8
8(x$˜™™Y6óKV`0¼yŽ¦£­­¦¦¦®®žžžÎT—……vPlÛ˜èh6å!4:{ö¬2AÐ÷?°±aóð9ØáÕ+W`ç�ÙÛÜ¿ïãÍR{{;^ Â¹€€ ]ÈX ·6à÷â©?44|®wãFTd¤Ð$šw„u·44dÇÖgFƒuÔUp²	ŒXùÆÜjnJ›iPø¶¹øuY°}ž³¤ðo¾‹Qu¼vÏ»Imll,Ä˜ùùùÆÇÇƒˆöQBS__ôð“ƒ‚‚ ¬¼_¾„$ŠúœFAëÃ|I{ ��p! �ÄZ $± I¬õaP“è$·€4ª>L G šÕ� $’>P â¼Q„Ä‰>L jSB‚O|� @U& oýio<@  ‘ôaP÷:[ôOàØ§¢®ÒøÒ‡	@Cö« ã47ŸüRÔUC_ú0h-Ï:±Œ´èºÿì'¢®ÒøÒ‡	À@O{sgcM[uQke>ðÐÙô¦·£uô‘ÄL( HHœ	€$ÖB  ‰µ Hb- ’X€$ÖB  ‰µ Hb- ’X€$ÖB  ‰µ Hb- ’X€$ÖB  ‰µ Hb- ’X€$ÖB  ‰µ Hb- ’X€$Öúÿ,&®¯&-&²    IEND®B`‚PK     o‰U]ðR¼1f	  f	  #  admin/images/icon-wp-simple-pay.pngnu „[µü¤        ‰PNG

   IHDR   €   €   Ã>aË   	pHYs     šœ   sRGB ®Îé   gAMA  ±�üa  ûIDATxí�KLTWÇ�Õ‚òª8“ZH-CJ	¤î€Eµ‰èÎèBÓ…ìºÐMèŽ¦í
ZÝiÒîpU’bíJpãFlÒ†”IJBÃÃ|¨Uy´ØöþÏpÆÃ�{‡�¹sï=~ß/!ÊÌ0sçžÿý^çÜóí8òõ/ÿ	†,o†4, â° ˆÃ €8, â° ˆÃ €8, â° ˆÃ €8, â° ˆ³K„”XU‘¸pæ}QRÚCÜÀÒó5qud^ôÝ¾'L"´ ëøAcàXÏ¶¼-Jvï&Z˜v"Åæˆp@ qX Äa‡@€Ç,¿X&Áð�¾Û÷ÅÒêKaF$­Só+¢gp:Ô'wùùKY4#péæŒ%‚¿ã=ìˆcVÝ2D4Uï­±
Û_”zlhì‘ˆÏ,ŠÄÂsa
,€-RR¸S|y¢N
ÀÃàcVp`$!L€°0øßv4ˆhi¡ëkðÜ¹ÃÕòµ&L³ ¶À¹Ã5tvÑºÚVôÿRº‚S‡¢"RZ ŸÃÔ0ž�Ï.ˆ0c¤ °Xälëy•åJ÷OY¥—Qk`Û÷¥~GÎE»ÂãÖ`O<ÏÔ§DÐa‰ ³Ÿà9-uåV V.¼ ¶ª8««´©¦4õÿ¹…_ÿßs}Z\<]Ÿ|o-@+F
àŠuõáŠË\ùS³«/¨«Lf¨Ièõ
X¨ˆå2æBœx!€í²´ê^ñC<`Æ
 ’!÷êŠƒßW¦_Ï÷£e…â�L´Yî
¢k}ÀH ¸:ÛrÀõùáÉ§¢ûÚ„È>R>§…©È÷�ê N s AgÿxèJÚF
 >?nGG=H½Zê*<]•Œx �+Àp…ã'Ÿè)fgÿ"ñl{æ;ZV�Ê
Â‚² ƒ¿Ý¸b‡7<H#P»�`òƒ.à¼I7W—æuEPüî‚úý‘ †11€W¥_7Úß’©ÚðÄA‰Ðº€[Ä"(Bk.ßœ•å^¿&Târê6¸òrP„Úø‘ïS‡ë YðÙñƒb»x±f!Ÿ° \ÐÝA¶uÿÍÀ:‚°Ápè¼#Ž6d7ë·Ã“OB™fîàžA´áR0qX Äa‡@ qX Äa‡@Ò@�þÃúJÏJ½&BZ ˜j®©ÜÍ`èÂ €8¤¦ƒðìz¥y}±ÆQÛÍžã–ÄÌãUñºCF •ÅoÊ€Ï�¨vÿ’ÀëÄ_ËÿÈ3‹w¿úÊ° Ê
$´Õ:/Öþµ,À²  )`_`ªßæ}ƒàM!€ƒ@â° ˆÃ éUÁ
#e…böñŠ 
iàfPªÁŸ‚] qX Äa‡@ qX Äa‡ öÍòéB…bðÚª"ÑlÍ
â÷�¾ùUP‚´ ¾:Ë¸í<Œ L4öïozg¯¼r{®ß	u70F ç�Ôˆ“DD>1©á£W#€âï4´u›šŸ“»�Çg—Œlþœ+¤c€^Ë…P'P`ÿßÖX¥h®)I=†¡±@»jmÖgçÔ¡HêªÅlØ…KµvÕAoÀö†}òõÅÖó½ƒÊ=�±	u±­+HïàtòØê*DkmEêqX‰+?ß“½‚ð^h&çWÄÀÈ\v­ç¬L£½¡*õ}ñ]Ñùdhìq`& –`aRÌaØHi2=ƒ8Ðz-âÜÀ€*`Î“Ø•v¯_×±ƒ²Ñ³¢x=ßo­+OË” j«öÈ¤uškÒ{áïq¬8N·V±ný†Õw…¨ ¢Ë7g„ßø. œŒgê3ößõ}ðs!ÓM¤ha9â…ÓõŽb×�˜K¤uò×-ù^	„i�¾¦¹7±©ºtÃcèpËrÃkXûßçß-@»ÃÎ›0ß7ÆÉîœG³•ëGÒîÔIþS5jÌ¦>¯Ÿ{¶ý-[UCh§Sï@½_0\�½½Ý²õùp£V|‹É¶rz	Úï~Ã¾@O:Ÿ;4pFyÖ­-œ¢ûÚdV… ˆÝ?NˆÉ‡¹µlë¾/AEüî¢Œ/tà&pÜø>h=gç’å"Ô–±h[¡wh"ÑÿÞB1Ôuì½4·€“ãÕþý£39>H,nÒé•o³Å°>öý‚¯ZÁŸÛßû�ï �@NŠnx,™–Ë“9d¹“z÷Ü²ÒÕôè>iåœš]@ì›‘�ûó
ßpud^´ÕU:~Iu¯"j¤U&aÎ¡¡¤òéöéeünO-�ðsZÚw€ÂNç÷ã÷Î‡;€oµ[Š0bZ·p;�Ä ÁÇßÅeÎ;šÁÏŸ;\½i 4NfÞ$QZ
†‰Ç®x˜}§´
œ¥°«J€²nÈPôJ#„ñIß˜ØŒeä» pÂp"ô?þk€º¾Ýì;�à°€<ßI´SsÉŒ¹~{ã+À·GË
«û;á» N¢ZfÕÔ1Ñ3<õÔúwA
B�;Êœ:FëÁ"+’ïù||šA'¬BRlÿiµì }UÇ�ŒÆ.�®ãï:¸~ewTë"ðÑâ4T(¢�Î•4;(¶ §Á•3sëï�XâÓþq‘OTpš	}ð�ÖÂè�zü¨"–î&Ü&”òE¨Wãä©V®&ôTSÒ:=×§]_��zMbh€@é¢WÓÀHB„¾~¼
Õ},¬™�ï. =°SW›K3h<ª…Ê·ë �,Nd‡m‚è{j9åRÆdÒƒ-La. sºëÂñþ`	.·%e²dlÅ<n™Žý}ü$Ð¶qrâ[µ­oÝ†U7Só+›®ÍÃ¢�Z+SA#¢m¯Wc°ìBë±®dµ¡„2ÝÛù\ý{/­®ÉUEA­n´°ÝÉ$èfÏ¹X˜šTó­aÄa‡{g´ßä=¹¯), Tú–� 3L° \:ÈôŽˆÃ €8, â° ˆÃ €8, â° ˆÃ €8, â° ˆÃ Îÿù®ˆöƒ;f    IEND®B`‚PK     o‰U]›Z÷=  ÷=    admin/images/mircea.pngnu „[µü¤        ‰PNG

   IHDR   `   `   â˜w8   	pHYs  %  %IR$ð   sRGB ®Îé   gAMA  ±�üa  =ŒIDATxÍ}és]÷qeßåív€ @€û*‘²6Z±EF±¼¥Æ²ã©Øq&’+IU¦æƒ­¿@Ò·|³=U©L23eª<ÎÌd&–¬,’=qDy“,k¡,K¢(Jb_Þ¾ßeÎéûø‚$HQ²/ëÀ[ïëî_÷éÓýëkÈoéqîœŸq’Îa1ÝÃ¾oŽ¦¿MÄ÷ÅÉâgßÀÍÃñ}[ÃÊy¾ŸÃŸ“†aäß�ò<™Yþ)ÛŽžšè6rò[xò[rPàÍTóË�{]Ã?ÁŽoô<^|œ¶�'xø�_¡nâ§iŠåB!ž/–oŠaâB¢ÏñÅ÷üS¾ã�ªÔŠÏ­,ÖN~úèÄ¤ü¿QPè^ºþ¬÷s¾ïó[gƒß/rû.}’! OƒÆ§!ÍjUªù‚ÌONKneUªµŠÔj5i4šøY•¥¥%YÍeÅ6-‘¦+¥åìÉžDüq¯æ�<ñÌ‰Iù¿œ[jó-y„Bï¼ÿj
hßç·žè7Ç•Åùyùñ¿<%ù¥I'’²º°$•rY¬HT¸ \§)…BALË+Â6¥…4ñ°bêu—Š|²^¯>~òÔ�ž”ùøÐÐ¶vøŠ¯áÏñõ�ûÆÅSQaó¦ÆnÐ}¬Ýï[ôû¾4
%yõçÏË¾ÿ�Òk{22< ùbA.ÌÍI±TßŒÊêjVWÀÖ­#xCN¿óŽÔui"vÔ›1,[Âá¸$¢q	Ù¶xMg2»šlzéô	ù�ŽEç²�¯ÁÅ¯™ö}¾±Ñ©wRà¶gâwørºx¿áâ'ü;_Z]–ï|ç¿ËÏ~ô¯rÏ‘Ã2Ñ•–ç§äÜÌŒ”aÕ.^ÓMJÈ0%‹I2‘�l.'åº#¬×u%‰@9¬ Ob‰¸J%YÊ­Â;987s2M<vúôÏOÈ|| 
 «ñLÿÛ²¡ÅË§r©(|š³ñäz©(ïž9+¯Áê_yù%Y^ž—QX}2!–×„à\™:?-[Æ¶Áÿ7dfqŽ¡nH4–Z½.¹REœ¦§Ÿ‡u¥Ø†­î)÷äã§�•P…’ôL|w²Vi<69ýú	ù€ŽDç²þ¸ï;ß€¸ÒsÖû{úfººÂä¯•rU–çÄ­Tä•çŸ—™©I©/.I"‘„ê!øf`áó¹e)UË�+9?5£Áw©^’bµ"ÕrE?+
‹‹�ò \Ïãû›ú‚‘Íø€ïA1¦’:\•ƒÕD×dXÆ	ñ¬Ç&'OMÊM>nº¦²þƒpßô</sµç]Ix�Þ–——eöü9ùô¥ˆ Û	IaiQjÙeÙ2ºE gdzjZzSii†,) ½yæŒTŽ”«@?¾£ÐÔà?|–ãJ5‰‚¨g|FðÑ>îÜœ¥p88¯µ¹²L|VÄ²&¡ÄÇ¦'on|°å&°zÜ{ÂÿúµŸmhEx­Â¿MH©	aýàégä�S¿–ââ¢„�º$ûºÅ¯WellH2Ý25?'¤fÅcp95yý×oJè¦=6øæx³%t
Õ¶èQpsœÀòS?°©Ù„	«Gañ'”áQQ¦”ñ¾T‚ÓÄ³<cÜmÖ¿=Ø?~k½)�år“7%±»)+€.b|_o¼}Ÿ§IÐ•?Ö„Ähh©á#wÂßðÙÙ‚üøGÏÉ?<ñ\MLb†'ÝÄ�fM‰˜t…BâÀâÿõÅ%•ê•�dŸ¼òú)iây•zMêø\Z;L\ƒ6³e×p˜ÀÃªmºŸT*	¥ØPvnhð¥b˜¼yfè®\Üï`UQ§tcü^¡��l[ŽÏÏONÊû<,yŸÎaüx·¡Îû7L¦Öu�+h-uaÂ´’•oÿÕ_KnaAò+ËÒ“JÉì{ge¸'-!H.¶G½ ì?ŸÏÃíÔeaeIÂ@9„UªT�í]±è·áË-ørD<~‡�c5àwX7WYµV—2^ã8ˆ®!˜¶§À5A„ä:A0f|ð·ó;e ÄâñÌs•Jn^ÞÇñ¾V@ËßŸØè±«® õ7¾g°[F`�›<'oþò%™=û.\ „�ŒÈÛo¿##C}°Û¦¤Ò	Y®Ÿ›™—¹¥eÉÁ-Õ!¨®L�Àì¥�Ëã==X©Ó¯ã–Dõ[Â’ñXÌÀ /-„´ŠÐ@Pv]úû@Ø&þC�T@îÇ2ƒÕ`ÁêáAwER‘æ¡ÜÊÌãrƒÇÇ€©¬û5[¹�ƒZ§-�ó‘%Xúô{ç¤+‘ý»wKnduþb¬Ñ¯ÓiËÂê‚T‘Bœ��–åBUÊJ�–²A1 ¶cÒ›Žá¹MXySQRÊÃu!°CL‡u­#Ä)E$á6ñ„¦EdÂ9¬‚U@×<VaÕñ¤a…‚s$*‚BN)°U–¡`
¡ëôäDºg¸»°:wÃ²¸îc*á{þU?°�½êïâ¯ûPr9°8Ü_¼(“oüZ^üésR-"¶5ëb@nSH¬šH�îß#?}õeÉÃW/çª°rÖéÁzzz%k¬UÊP˜+‰ˆ%]ñ°ŒDc2Ö×'ý™´„XmZ¬#úqß× ËàjVMY.–d¾X–Å
à+1	×V,U‘57¤E7ñ]ˆ†Œ€×ÓÅà^]!�°ì‡WWg®[	×½¦
ÎƒÀÑß0û•õG6’G@+¬{ÐôÕ‚XóY¸“òÌ¬¼ö“g¥VX‘YXôÖÞ~M–^‘=Ã[$Ü0�Íf$»k‡1¦‘�� AÃïh.Ÿ•Š‘ÄgAøðÿÝaKú£PB¿õÀêmëy†ž_ëÜª¼™°$–ŠË@­)YäC\……ŠÌfK2�d­ÈÀnBÐM·ÅÆšX½†rM´3÷X¦ñ�±±ÝÙóçÏ\—;º.0àb	ž�÷{ø6‡I*•
N¹”—…ì,vê6eeyU²ùéÛ·ÚÃ¢(‰[.Ê=·Ý¥ý2s§ÜˆAF x`uIÁ²{/† U3½ÝÒ�UO„!løùFSW_+ÈÕ \ºôH"*±RtD�‰$‹†d‘µ¥p~!¸ÂE|ÆJ3ŒÓ@¼€ÏiH x‹HË¸hhÈ-NŒï:üÚä;§NmV›VÀ¹luçþ„Ü¤ƒ–dáöÞéÓrö—/ ã„œÝš.–hÄ–ù3ç%�;ã°ö_�~]–�vvnß.¥bQææÅƒ  aÕ¾„©n(«ïïÊÈè, #©®¤$7£P²¥6Í¦ºCåù¬Cªc("õ%�÷ò è\”†ÛBlIÕDz<
ªÉ"è…®Xm„¹T•À¸à"sÞ¹sû³_úÊƒGþòÑ‡'7#‡MÁPM²ŸPs¼C„rÃ Ê2Ñ¹Ù±5Y8{Btåìä»²md+îs¥¿|h×^‰:ü~NêaúnC¦AM”=�hðçŽPÒO„<Ò�”Q$lƒý}’É$aýI$Sb#À›d;q¾MQ¬ž|:…g !ðiùxz\±BˆÄŽ–E_<.B[¬°PÇªåû™XBT o6²½m;wG»†¸ûØÑÇ_8y²v-Qln˜Î#²Q…j½ü¯ýEZö@B¼¾îŒ¼ôÂÏ¥×’_]’±¡-’€éU³Yêî’L$.sÓs€„I©¡˜Rª	û¤!ÙÊ�6àn2’'¤·+.ã£C²gl‹ôöö	ŸG‰)EÀõzÁg=¦Ù"ü(o8BÏÐs·Ì>+&µVü}”–�s�CðÌ3z€¬Â²A _t$Û`þà«RT	p�Uœ4¾çà��àc–÷« øý‡p–ÐmHÐ)á«æ6þ$àa¹ Ô<ø{”³¤
þfþÚ‚Õ•-@OP=°à’Ý�häL"-Uàý:žµ@ÆÁwÇ!°nÀÌmÉ¸L`åìÞ>žhP}>I5’ljÕpòÂ2œVälEPsªR`DY¨	1X‡£à†�G ù#ªÁ=ÆšB#FÐôÍÙU©hÒM„e©²ÐØŽ�Tä×ŸkîÔÑ}Ã�ß°Z~ÿ¹I14­ß‚5ÀëÔÁ4Š$Ó×‘Íæ$ØXA¶Û=0$5ÈÈÃ93õ¶„bIP5IAØDaÓ‘�ÍVøúƒ[‡eÇøVÛ>*‰ž2kS4…©–Ž„½d7›npÄG�tAÈTFÌ)ŸgÂåXú3¬‰¢ƒº.”¤–^'"£ˆ;Åš!gg��ð~Jec¥ ~äQÝ24,±xì›sUÿ¹á˜1)7¢ 8‹GÙ¸8~#‡Ñb;)ÒÉv,ž�90™„¦ðÊ’Eù°î¥«§„Û¢º*²šô¹™î””‘ˆE`õ1XíX·Üwô6Ùá÷ÃíXÑ +™´°í-,_³Y¤Œ�žK	þ— 7�Gb!]U¾AÖ+º0!ä&S¹R‚„5û5}ðR‰ãhbu¸}È!²EYÁùºÚ*`Èîmâ¢žÐ•îB¡'–)WëßÀWÿ¼\¯Ôõò ÜìCCùšd:-6QDh"ùb™7îŸ…“:–r˜|eyh&n¦.¢I\£"ÝH¶î9|Pn;´02->$W‡�} !
óÄmùxC3Z
�<¿åˆ…”+ctS¤-\¬F!²A€nÚ¨QÛ‹ã'`.|½i°`�!ðcáI?¬½†bÐ¬ÜÕù¥`u æt¡.=„<¦hŒ@oøÀ;KÕc»úc'åzp³\�Ñ©Õê”sæ_X	@só³Ò)F®pTCA."ó|�³·»ˆeBÅ$�ˆëÕ%m¹rï‡äøÑ;$ŽŒ×ÅÀ††Ôê•î§…»¨ù
9WóÖ|?¤ÁØVDä¼°¼"Ý€çÆC*«ÂSŒ(ª©3¬!v˜a$sxºƒÂ��çâ’­±cë˜¼SÀ}X};wË®={eÏ-‡À¶¢RgXZ¿ÆI}'2!›U€ZÿÍr=FàzTJhaG`ñ¥BQ­6?\DVÊ¥lAÕJNyò5a*�¯	3‹!Ú>&»ëI`(ª›Æ¦Zz°@Ï/­®ÊòRNÎž›•é¹E™[XQiÛö�aXllªÇàŒøàÀXi3 |Â\�	_~)äkAÁÂ}(¡âÔ°ŠÓ²�ÿ…ÙEéÛ¾SîûÔïã}·£èïh‘Ç�‹Â˜<Ãw¥öõ½ÑonJ73ðntúYl¨˜ÇòFF
¬]Ä\™ž–A,ã|ªoE%^Æ‡Ó­sÙÃ³e8Ó%;wì�þ¡­ðùørVHñ8—;­˜�Õƒ;)¯äåüÙw €œdW25»$çJ’«¹x_WNž}S³îñtŸìØ2,Û»{dPXÆP�’§BÖ‹Øàâ\m¬ Ð\©¤Å}ä}òÑ»î’±Åƒ±ÌMÏÈ¾[ê÷$£z‘3A>ub}‡Þe
8ë¿\h× ùëŸß&ã:V@ûàß\³.HP4ŒÿÐÎ	¹ÿK_©V�çžÿ…<ÿ«Óº**X5´	¨:Þ7†KsÛ6	%ºÜÕÇ»nÐÆâ#0WOfÎOJcyEJ`O!¼ n+1˜–toXÎ/ä½ù,–)9�€¯§åíÅYéCÜ¸}ë8Ñ-ý£}ZK`!F� ©Á3øs•Uá­Bx¼CjÂ(ªXÅOüýÿ†qôÉg?õïd	à¡É`»Ê×:2N“m9òÍ«* øì‘kfT›Q€´I¯Ëó‹mƒ@=?{ãEiÔrò‡° [†ûåÜ+Ï™–/ßÿ1“'ÿíy™Eá…½=ý=} ÚÂ²kÛ lÝ
× >¾,wEl©S+�%\	Ë(”ê‚fhš9YZÈJÄZÊe‘î: òØ¸x›,~}î’½²ìt+2ÐÕ£Ô‚÷Dc¢åÓy€BÑî>qã¨¢ÕÊ¨) G‰§$“LÊÎñm2:8¡APgI.*çùµ«*à\ÖyÀï(+ÞÐaø­ÕrQ‰A,Òbàð¸£'Â²îë²e'0ý÷¾õŸÅA‚³÷Ðn¸Ž7å£GŽ ¡ŠÉÿûé‹2…‚M<E†Y‘Ñ±QéDeÒã³îk^,ì°=±e�ëwM9»°$¯¼r
9‡'ûöÝŠ@ß_P×–Ãóª:ëIä‚¨wXG,XÎ‘´�_Bbf)3Ê ^S¶ÎP|Ô¸J®N|f
OBØûvíÆ7­�¹íEìªHÊÓn‹‹]}ãëÑ¥+Àôz_¶p¼­®6ÿÒ»Û]nFPðöñEýJCŽÞ²GÎ<ÿ3 ¦?þÐaÙ£60=)^iYöoí¹ë6ùñK¯É<ø -£Ã2º}9DDÑEPóeÀmŠ‹/Ü¨—a•UYœš’WàÂÞ�™A–TöÌì‚¼võ�©spž$!ÄâÛYº€ë» Ä°¨a"'�uâ×ç�|s‘{ø¶~	îÈ‡`PÜQ )±‘ÈA1yÐ'¿xþyY˜Ø"wõü.ÜÑ„Ö TðîµÆ×“—)€Y/dó9ùRÁT­<XÕîÑQyÓû¹ýô}(/ÆÁÕe+üg
”}{vÉÙiøèþuKCz
;
>& 'ÑIè&†Ü"Ž‘F©ònøðH"…EgË¹©`^Št¸zLÐ©ü�Ê‹D±
­˜)}(…öáÜb@A•2Êž8�*øíŽ€švU@]n¥.)nÓ¬V ä Ú¶çÀ!#âl%{—Y´Œäf;w¬ ëØe�Ö0n¸hL+×·cí$”`uŠd �¸×‹*9<"ÝòÖ©×ä­_¾&o¿û®Üòñ£räã÷J¢+!;wï ä‹HÉ5ÖjÙ«cZú>ZÝÂ2PjÙD¾`Æð<øf§ŽÂ=Wf|û½©~‰OÈÙBNBPèùÅE-ÒðLÃ8Çáž.ùÈÞÒ“LËòÂªL�_”<XÙªÏreMVðM¬€h¶ A~’<å*rð~,øD`0['vI1Á�ðÅA½çeàÔ/ã5€“y°³ŒøAdKøBÅÂª8ù.Ù}ë­2+Ÿ;3-åE^ê€¥MØ-¸|tÂÐèV�/idžDPÊåt¼ŸÇ< ÌžØ´ÃÞpø«¦äsòæ[¿F…¥ÏjaO¶€ª^-¤O=¶/p)¤²'¶ŒÊèð6IõˆkÍËôjŠ šB"XÄm±IE Ö Œº„àÿùO§eÛð˜Ô§ÎJ¬ëðð0r ä0*ÝÃÀ$OEj^* Û¤§ùæÚ#Jºùr¬Uö¿øDß_ã<ÍV/�î…h¹øÍ@S}}«˜JKåÂ¤û iå7êEd¸!ÉÏÎAø+R©–ddçvùè'?)‘Ì x{H£®Y)m=f¹¸ÑxäcøŽ&}q«$
b-‰ 	®V%0ºw¯üÎ½¿+ö”UøöéìŠ,åVÀÿÀvÖd(iÊXw\ö€ÐÛ6²E‰9«,žé–Jš3@U³Öd=™h�™ø|!+O?û`rSóƒ. ¦½G>"™¡¾ ÞšÏÄâŸ¬‘ÅÇ‚F¶ö
°¬cm– -´N%¨¦|£óÏNsÞàÎKUÐ~TõËgv¦Á¢·öÃbÌÀ•d+ÐÐŽ­2rè�$P+0Ì`*ªU.ûrÚhŠI«ÅöA!¡A�ªtue˜pET–×À}kÁ¨ªáñÈ˜ÇGöÈÊJIf–—e©¸TÔ�8,ÛÀ léí1…ËKêë|¼‡—·ˆd¬#°Éˆ"!f÷EOÊ–bÅAÁœågš#ìÚ³_RýCˆ¸R-¡_¾ƒŠu•ì›=a·dtL6}t¨É¸Øb²¦ýPO®=à“Éít¥ÒðÝM™�›—Ä »·K†€!°"Šõ=ci…yUÜb°~C{‰Ø…uøyˆ&â€ºPSrý m„_•_‚d¦l	‘¡$¤H÷Jïh/VUÙw÷…P¸Ô²eT·Àz]9†Õ„ÕR¬£pOw†sª±½Áw$•ñ¡n™Çc¬]w£�tËGn—¡‘a¥Ú×'žx»{× aÝ*›<ÖÞ»U†»ìñk¼X)¶�\&/ÌÈý¿³_Œ:¸¸Œ‰[ÈÌ™·•Šè2"‹\�Í":KˆdY8ÑfZ?`õÖÔžNŸ%Jr5¤0 BÒzðŸžÉiòod·œDô$1Ò(È'!ø0â‹xKtTñlEZ‰\]6·Jµ¡=C¬~esé…Rû“ ñšÛî¾Yv¨ìÈ¦„¯^X¼cüÕ|‘sX>„c­!–E~þÊ/åßß¹CFÀíä+MsU\ºÔÚâXïÄÖnÌHùÅ‚•€¿=' —ñfLè|ÔˆÇÐ¶DdZ…£ß\*‚Ï)I’g#_A­¹.ÕkU¨ .Ã{'$ƒ2&ý;ët�>P��< Óš0[Å¯j€-b©Å±ª²øœ^°³=£c²è–mãZã¸Žcœ²·‘Å6Cï½$‡í„¡ëªßÛÛ`+€ší`Ý~][ð¾ð@!|#nºX­úò·ßûWùO_z l§Óö”šÎ–WÄLô(éEF‘®ˆ¥A¶¬D"!mC!êñPGàÁBƒ�Ãê]ZúJQ7êåtóËâäÊ2ƒÀ?jc”D¾ý®#‡¤÷ ¹ÁÆÎQ¸š:PsÙÊh)Íç>dË]ý½Ò, »ê�ÿ¯@!¦ì‘Ý‡�ÈÖ�;`ý-ØÙZk+¡#ò^*J Èµÿ°Ñù„ë þÉnð²V¿§Ñ‘·{'ËnŽcÅÉÁ—|é�)ùË¿þkù‹/|Fz¡ üÜ¬”Êeñb	Ùzà°hãƒ²ù ¢™k‡àg]ÀX¯^ƒÀkjuð2.þ¶#r âjËeÜ¼,­f%Ë§Û˜† AöÙÑ�$áÖî¼ãn”02a¸ÁÌ¸ªø’±áÁAWzåjý@E}=IÉÃ8ìXÈ­[vÜò9pû\Ö†àKâ%’Ùð@.tfdŽ_þ*c-À^×áûíM.WzBðƒÝÉàƒb	 ›F^VàŸËàúû™â#Ñ±ê.ðz2¨ébÒâƒàfJV­ÍþìÍA|h0HWé‹°ŠâÊLÖaå9Ô—™LÍ,#ë2U-ŠSvdµæíãì¶«ÉÜÌ”ô¤µ;šeÆH‚íç!Þ22Ü`i¿ìß=ZÙ”ÊüªXÝ¶Å22Š$Ì ÜÝ²{·lGvÖÆà¶ü7“¾ò9 ã6ÅøevZÍü¶ƒ¹yG†å;XY­l#¸Á'Ãç‡F¥7	4R*	!ð±~ìÖaÁ€‹ñ …¹—­—K¶) àâA`1Xtîªk/®–da)+SKyy7[‘Y¬Ž
ÊŒÛ€ëwïÚ)C(Ü' Ã—N½*?}ñPpDöîÛ#· ðsrK‹²ˆÌ@Bu×þ½’„Â—"	9·pAëÛÇvŠ…Â(j |Ž%A‘‰ePƒuKS®!üÀ+A®T€tÉ‡|PûÀúÅ"€—µ,�	ë®&–7ãC�Ïa}¶Råéêfë8‚^eJV¦ènV—–”‡	<Æïòøú¹œœ†ÞEp!¾líêBÞÑ-I(�»'‹xßÌ–1YXžU:ãW¯¼*µ•e9´g�Ì£>0?·J!)½cÛ$ŠÕvÛGd‹»WÎŸ9/‘dJ†”D_?Ü–¸[#H8¯ÇL±¢·Ù.‹//Ü(	Ó2bGLio/2Ö¹ÍÃË�ÒñÚ6'I'A+KãK¯™¸^8Øa"3¶$ë.ÛÓYÃrÕñpúâ r�÷ÃºrE|+�ÄJiX;²×³%p9 ¯�8ê¶™´Ü� Ú³u´Ü_£ TD¯]U�Ë¯ÊVG2Ó/ÓòÞÒ<VSC·8åÁK5ÁÚ6q^Ûw�Ë­_¼CÞšY•í£ÛUé¦kÇ=ëbìwASi	YQ¡:  #H‰¯E*t>Þ®½Z›¡ŽŒ@	—¼OdÕžýûeúí3J/ØÈ`•f°¦Óƒðˆtê€{Vk³\¥RC…ËÔ6ô‹+x¼:™mäî«#·¨8@@{H,ÉtuË
r‚ÜwÌ˜Ž¯¤™nÔ ½T®Jlæ\Ùòü´¼3?‡‚?Ü"Þ‡]ÝÀú	Èm$ƒÄ\R~fTtZÆ°*âZ‹Ï¶\¨peù]ÞHê·6O_í…WzÜ¿(ÏµŸþU;ã.>ÆýY[Æw€”£°�¥FØ3ä(ä—:‚$©Þiaiv°¶!�64qc1¦ÃŽºzk—‹èþ.Cªîž~y÷ü™GÝ¹	Ú;_ÍËØÂ"n[RpeDAýð®~Ñ™KpqyeêX].„Gb×D6ÜÕdÅ¹’½0Î•zwÿ(hïøZbil˜�kttàš6” ü¸qÙòXþz)_þéT�q�ÎÄöËèµ‡GÇÅ~ELI$ˆ$ êáË†ØT…¸PF°eU©Kfá¥4â": ¥£H[ òI£‚Æì™«‰±Â‹HIX!ž�"ø~0öÝùó’¤ð
%éë–	”;ý¥)¢Xï’(ä{ÃŸ¹ìýAö[`Ý®/
—g É+"·¡äyU¬Ý†Ù¶ý+Èå}mSí\VZ€ÞŒKZ{¥	î%­®(•Œ§/.i$cÈ„ÃF°m”n.,Ÿõ€*„ÍÝðeä"rN@©�õÁ×÷Á]0ÀgàÎ>‚:ÃèÖm(Ô#`#'°ðËyùäïÿ¾˜`8«9yé×o*©6Ô›–Aˆ£aç{š~PkÀ•5Ørˆß…£ryíŠ%¢r3»S$²QA¦cBpWG£•Ù®õ^T„qYÆì¨¬3Iáó-Ozû32¾ïYxý…À¢™A“Èc[Ið²ÉÆÜºdW²'Y«l‘(Õ¸05ÜD,-%\®˜4’%pÌâ£º2Ú“’C¨ Ùà�ûQdaïP©P“Îž•§Ÿ:)6àî§?qŸì)7enqN j•PRLº�rrXYyrTž8ßJ¡úø‹‚}•;+	:&6U´ò¯ª –Æ®º«ýŠGgé@‚U°Q`6Ö•æÔ#ÂÏGà~îÿÌgä™ùs¨a}&¿;§yk² ‚à—Âá HOHw³³‚‰Y±AüÊ•ýP€¡0•Gÿ@?\ƒpEŸ"øù¦ô‚¦R¹ÓÚ.#(êÏåsòÜSÿ,‰„”8ê^©*ï¾þ–4ÓˆCìO" ÀJ°C–òú¤¾›ÈúG·j2¹NW9®¨€;(\«¸blî£6w:­aøÈƒÈ4ÐPû$=?Ø�K^(�úî2ŸG­@ù Ò.›f+
‘ä–— c20Ð‡œ"¡E›X¢®'H±„[ƒ{î�éb¨!zá�¾^94õ£ùŠ8QÙ±k—ä Ä&,=&	0¶ÂÈì0à%>¯8p›£;÷AöE‘]-<^å0¨ ÎW“M73V„Ð
 ‰d°nT…Â€Ú.apkè…s“Ò·2sá aY’(°Gàbº�é„‰ðÏÈÛ°’LíÛ	#ÐÆ@gÄñžÜSB2 `Ö	šõ¦º™ÅE "”<¶Ï èn÷"àƒ&ä�åyyå�32Ù ß‰“ËmMØ’`8»âÚ^(e€�‰C·iÇîPÝ%,Sû¢®¬ ÆI|–?%Ü:úF”Db.ÓÝ°¨¶¡P“+€#
àñQ8÷¹'ïN—Œ\Y]DÆø	Ê9•ê“|¾¤–Ïí¢|>Ý9$¼~"Ù”
ëÜÆ‘¸¼1{¤\Y¢¾-£±¤$¹â€¢† ¸& ïLµ)UœGA¾Ö>÷—ÄêóqŸ…Ø°ä›‹xr��‚wñò¶å“—HÎ�µÌµó0Û<uí¬_ÿ"ÛÚžLÒytwßšs™¾¸XÂÜêé×ó’
s‹�ðNŽ§®#�ø08ØF3§#È8v†±b}=R†¯fa„ÝÇ¸–(ü5'9Z;,67bq;”Åª�'Ñ|�»,â ì*‹EYôêrðt GQ~¾<ÿ”&W�cðó'zÒ²%Fð¸‚Í�ôø8rn‘�¡{cp­’˜Dö&�öèJ¼›ÑÁïKû)þºÇ6z�lp¢Zì7‚])…œÄuuSjozãœž4¬o\>eKÊ<%ùl~h��!Ï�“dN3x~Pnò”³"¶âõ„•–ÆŠ'!0¬[ÆGå½\E––´(´ 4Õl”e/ŠòCñÝC�„²“Z+ÒªYÖW±Â22±4uBkÑ4Hï}úeÃó&mÏ³NYë ‹úhã*.åzrG‘‚™#É/¶€Ûçg/H,Ìp™‡[5enânènÊ&‚eTÝPî%¸ä”´ÃÚÀßœD^¨‚À|þüyIC¥ž’nÐºf+%)æ Y‘psÆ`2#w£€2”ÊhËcLi<ì´O`U†öîFÀ˜’ë)`5”ð¸…âË‘�S±—HáéÕ‚ð¦äâŸbÁ)ÎX¸$\WÏ5«ÞŒ#4‚R¡öHŠèNBQ„âi1%¿µ9˜Æf4»k‡£ÒÑžvFp“59œÅù%ÝaÏäÉÁÂMv! Jâ&Ž×’•r]*M_’¥†Ì®==8 |„$±jøì-pQÝc)ÙÚ3$“ù%îº�¤…sD°N*·�ð
£¬áÜøûÜÔ­9*ƒ#;� ±Ã×1Åucà@Y›-rçW“ø{<x³Íù¯kkq¡5—¡É-Fž¯ÛFÉ†A�Z³�ÖO�Âþ~]%ïcµš¯RŽº‰ƒU*(��j„…+(a•,.gá®HgÄ@¬‰h²“ÂûÔÁç¼·¸ þ'*ƒ©pFeéAq§ËŽèjó¬¨Œ¤»Aè�úFòfCð67v@ø¤ßuž;VCºoXn¿ëãX�¶¶3pGc–íÞ¸‚Œuš¯fÂà?žC~1ÞÎr­u««S!k�—«I›·ð³i^ô�!>�Åtü`ŸÿLwoŸf¹¹óïH‹ÉÝoF«ÅÄmÍé�Ï�ƒ²æwN íWßÏBx*.QÀÍ%¬€(ÜÈjY&dlÏ–¤å±Ý<WB±$�*˜a–d”uŠZÄ{sÏ@¸*”“„"YÔô‡z“qðC¨%CÔÕ*Ê+aÄ”Ì Üþ{Ÿ‘$Ê“®R»n‹>0[g-ú¤%­6ÙYöÅÛHV:Î EEx'!ö;Ÿ`\á÷Ííç3Pqð‘…_l|á,ŽøýÔÉç¤›“Mœ°»¯Óo=WŒãM©�Ö`=¹þÇƒë	AYl+ç$+öüs|4•Pnˆ}§@RnêÈ"Ó�‚Ý„ç’"¼hÌÒ>Ô(7V°i—ÂáâVXÄ#‹F>Ðƒü�d\«
Z°ó–{G½;ØÙŽe*ØKMÓ¿¢6ö'ø˜çTFú—½db¬ïûk·Ëß÷ræT‹íé(­ÿèñMnnÓa
œ.¢Ûò$…/v÷¡CRœ9/.�ÿë›Mu;ì\æM!¯ËáŽžb+¨ë¯A`UþÜ…i½�ˆ©Åpo@÷—êµ <Ø¶NH,UëJws°S?sˆ%œPÁsò ×Vœº, ­ÔQàä,¸±ù*H>pý:{%Ç;?ñ	ñÂáëmØ.-xÞñ�‡k¹'×Ðj•>Ù)ô`¼c0Á°M´ÛTŒ¶Ð;n¦ölJ«yÖÐì“ûNÃ¤¼À%5¹dáë¢é.9òñãøÒ5íXpj~°Ã…#ÃØUÁ7î|ñÙ	î>Õ%1¸‹
„hçô‚ÙŒê‰ôõöè~¾®‰„67¶aèœPã„ Š�g‡ó
VP‰xBžÔw³ .LÍ/K™eÑÞAéÛ³Oîûü´×ÔôZÝn×¡¿ãßúïur_wlrMªÇù~[àÁfêà';ÒØu‰JEÖ˜R£ƒ15Úì–L!Dà2B�>ë^Fª¬ËnÝ*·|ìwev¹˜Ø�F%˜hKÿ_oõúPé1øhipˆø÷ydÇÜZÊJXÉ¾‚BI)WÐíAU‡»‹ÛÑ`"
N'„"?'tÕáúJ€À+ÀÿY°ªÜ È^Ð*,¿€Ò(›zwÜz›Üÿù?�žÁ-:ØÕväÆæ¾wéÍs_cû—sç²×e‰Ñé“µ°…uÉ<’ml÷¾˜­Žþk¡• ÃEjx:ÆÒnè€	õ¼V³†æ^­4Úê©Åé·åôO~(}@EiŽ°ëÈ4k°Ù^XÎ•µ·g	”t¾T”´Q¤)Cˆ>qYòP7Í¦­[S+µ m)3kXªô* nÙwtH+gpD§ä’¾ˆ„9a«dÞˆŒìØ-Gïÿ„ìÝ{@;%´ìjZZñ%2^ÕY÷×°þõnÓ�Ø7¬€KÕ›gWŸÅ;ó[Ï|™úæö×îc€ô:¶gåD£ü2‘` ªE«ó´vKÈé·y‹–2”p3‚¸`.LÉ›ÿöŒô*…Ãx_X%÷ð¹EÀÎ
k¨^•á²<!P•)d²«ø:B2ÖPáS	œVÂ�FÚak{�²«�ÚQKSÁ“M$wq@Üô@�Üyû]rn;÷ƒ–Umé:2ÖÜ/gŠnFm%H§d×) ÏýþžþÈÚDáK*båbù1;>¦A)u¨´\Q»ó8xwrä„d&§ÂÜUîlè<·D<ºÎ]¶œSÇæ=M²ð½ê(²-{dçÝUyïÅIÖ	ð)f�hÛa}E{~<Xk
·¸™Vv£øu(ƒí+ÜùÎ‰èìÍ/‘÷�3ÁfÚpÊ¡;²b°�pQÝ}rðð¹÷³Ÿ”=ûö�EMµmð}.ŽË÷×8¬Ë%¿Ñ]­Õà¯[	íÃ“�^¢€;ŽŒžüñÏÎNâË�‡ìè¨„ö”“°ÕÚÒ/¢ý�ºWKÁK°ýŸÇ.yîì<­‹c¬¬Ø˜ÃR!ŒXËÌ¶ý2ë~ãgÏÈ0‹+  \¿®Y'ƒ1'¤8J‚YêêHÛ0
��Â¡­°pžgUª¥“Q¨�$øjv[‡ø:`ý$ €:âÓŸÿ¢|ôø}’KÀÓ=~PP2¥£�ÃØX¸–�±î˜Ü3yòŠ
à+þxôoÕÄñ5Á:ÒPö›çAªÀs‚ÂF{O OšEs;(Ü]b^’³ù­$%`ü½ÖT[ÞBx}ÃŒJÏÎÃ²«ê­gÿIúP‰˜Ž6ãrL‰e[~8cnn‚î$n—eµ`,hF+oÂ@ê@^æºÿ‹ãgàÓm ¤ñ½{äs_þcÙuèh¸ÏÖ<…¿)ÛDÖb®ÑaÉ�J¸QªÀ“ÇÖßu™L³~Âm�4'ShT•—ç<f¿E+è(?°FÃ
vª˜v]“£0�i‡Z2ØTžb°.ó• $ÈÉ÷7ut÷ŽC2¾þüsÿ"ÝÜ9Çaª­­M\Y.Cî¦E’x8¢ù‡esj:ˆ3§ê(jÓ©¹D= �IÄdBð/þ£ô�lEi1¬�ÚkõtÚ­srÖ{šuù”ÃÒ—ÉÝáëï¼,º?~$g8îc†ðE*‚(ŒTàwÙ‹ã´zr¸Ã…5SÎÚa[¹C€s!­íšXE-«3±nÞÚï^;÷ð¨Ëy>ÛÝ!£·—%T¬p-.7ÆáÆ¹?Mat�r‹=;0�^Tn´ëÇÏ>d»ÃÒÄ�+�ÁÍíÞ#_ú³?•Þ-ÃÁ@'|f¨cSb;™l'”7ýØÀúõs¯ôügðÚ9,ÿq
1 ‚±¾ù¨n’_+@c…º Cg4[-ÓuöÁ:ÍÖòÞw-©k×€[HCÛ[I]�âä&üõþ/É¿ýK	#ƒ¥{qI# Ûe‚g %qösÆÀ7D?¼B‘Q®\•,(îÐŽæsìÀaùÂÿ©ì½ón�ÙÎ‡mé� .&ZF«Í^Ïõ¦P“°þ¾ðÄF\¹/(l~ÕôÂÏ*/Ã}¹W÷ÛÖay*|´nhÎgG#JsA³»�¸°
* Ém<-(ªs|®@q¸Fà”l6Þâ·ÜÞÁO|N~‰âHáô«màM¸Wi
Ëñ4±¤y~‘`K“áƒËÇëã¦§íŒ‘žA¹çcÇåà�G•ZÖVCÇ9I«ÁR?ý¦ê›(ü+Z?�+ÜãÇ�DŽÿ$w ‚ñ
„×Ê�é‚˜}Ò±YŠÅŒ*/œã;¹j8&²KôH/»­	…JoÈšÒDOÚüs«u�Wç2×CI¹í¾ÏI¨wL
u”ñ\S_á`ÒÖÜ+€øDÒ�›÷b¨�õvwI<†zn—Ü»Oì?¤…á³Ú—ÁÒ²¨1ÁW¼Üô<[nRÖ ×}æ‰�|ÿ5 :ÆÃ¶ËEBiqAÕºør^ÈÔ~`Â £Ùºqfas¾'�‡KPÕ€mi›¡ç™:aPGE¶¾˜ëd3l?\"™–[`@·»äö/ü¹Ô{w ãÅë¸Aƒ]Ò-Wf9®òô,”4/ÖÔQ#¨=„{¹+A—ûÊô“‚Z¢�â�Ñ0×„~‰õ¯[ïã˜„¡>vµ'\UÇ�ï›ô<çaÝfON„oÜ‹«î‡42GÆpô#çíCÖEŽ’ç¨¬š&{yÌÀõ¬{œíæÙªî 0ˆñ9ŒÕ€{à„Â(QÇ p`ß=Ÿú”Ô»º¥Áª™Ë}ÀŽ¶šð‚;ŒNÓÎ…@·&½k«`dFÒá¬—È´•�·ù™õnQ÷+nÈ¦v>ntÀõ´)‡+×ì½ÿþ}'žùáéÃp)_SÜo2}¼Ñš»©«—î‡¾˜Y3P„`bIðñà©¶Œˆº�vÜ0ÔŸë&p‹™1J�‹Ë2?uAf'§´‚+„ÝÎñxHîùÂ—å™ÿú7Ò…œÄr+Ú|ËÂMMúwü«““ ó¡``Ê4w]R L\t—`p]™v²µv�²ˆÆÎûÛÃu®úÖÕ\Ï¦À#Š<Zw›ŸÃI�›­Ë{�ÌòÙ3IÚÙmU|”®pÔCBp˜(–Àu1'j,ü"ž¦vÜÙ¢4¬y	Åù_¿ö²,ÎÎ+e@F“:Òù�MC’ñ>‰¥‡äw¿ôÇòÜ“'·ŒûÝ ´Ø'Ìƒ¾^)® Ä¡=ýÏ²Œxuç}÷i¶ËÞ#¿U\¹„b¾¹ès2T=º™'núcŸ~ú­qœü«Ü÷`¶…Èi†$¶ü–zÁE6Û+_ØVçn˜x*©îËe¯=kó€š“§ÏÈK¿ø%,Š&Ýaj·³^ß‹P hŽœéé=<‚
š#Å¹÷äÇÿ]±ä§À'nPG´®Ü¡1à!�×wo—ý ÛŽÜû{’éÐ=�c³¢Qd­Éº¸	ý2{¿dlÈ÷L‚í<~-×Ó>6}™ï~÷¯ròþôžãÿ…êE&é¡xÁ@ljv­£éyjŒZp§b|ÐÄ55B0çÐÓâÜ¼<ûÔ÷äôË/èX±B1¯«Â7Xkh—›a�>ˆ¥%ŒÚp<�BVÞÈoH¢«–Ü%3çç@cÔôªIìÒÍrÜÈ�3i")cÏOIG ™@â­¬ÈðÈ�Dp^Ë¿·@Q0„DJÝ3;7]ø—ÞZÏ_«—IôøÞþèiÙäq]ñùÎwþfþ+_þ³)œö01µ>m]Ù”ÐÓæäúûÖè2Mà…BÅU�Þü§'þ^–çgðZaÈZCÚ§íé$÷8H8™Aá¼+)±xXR,Îs36’°Áž™?Nj¹EÍ!X«ÐXÄÉèø»ÀD�ñÀÒÚ˜TÀš2‡) èžD­—mŽÁ/cMžZÏ0‚é&×¼mMtž|	×3rÇu_Eé»÷·§¾ò¥?Ï# ~Šq9!ÑƒVî Áª�2œ`¼ 7n²dÚn ‡`ï§Ù
ˆ\öÉ¹}ÉÂêbÜˆ&p½­»aàËIy×¸�8¿Q‚UÏ�×žx%º$S/IÂ9Ñ	ŠÌÞÙé‚R#¸ÕË5”.£ª-(·Î¹C®íËÆÊ¸Tp}ïˆü¹Îã†.cõ?þîo_ø£?üj÷SŠÇU–²–:ÉÊ¶Ö–g0º‘ÖˆÁÙšºl–Ù&Ý`M•ŠÒÅiÔ}=N¼eÿ�ÍšBñ#Œ6l[ÀQ’¬“r6Xž<û6Ê“Ê“p	êŽ–`éW$'²pë“6%Nr®‚e³÷d&#mž¤½áÄ0:�ÏÂE 9Sø7tŸ¾ŽØwÿç{á‹ð'S0í´ŽÜ²zK-Æl¡�àfZæZ\ |¥%«K‚…²å|‰R1…¸›“KcC¤‰IÀƒ“É£‘¤ÖˆCXäösdùÜ;k<Y `õáª#ÄÒX)m@žª¯�ƒ¬‹q`_,®T"ñ¸"b£½éÂhxÍAµ¾µ!²îoÓõ¿ºs |Ý–ß>LyÇçÿàã'ŒJýˆ[.O‚6Eê[Tæ’èÈlËæNr–gÄ�€ðECé8ªRÜ	IE¥^)HÕ´þ‘	™Ø}«$»·Èð¶�Öa”Ëx8 ZIG4ø¾(3ÒU…�®Î½{”Ûm¥1øøb~UV9ØƒÏaYQ3ëïFIKÁœƒýØÜ‚›[^˜C|(©/Õ­¼^Ú·‹LDëoåP,:²cX_>(ðøìWŽŸ
yÞqÐ“óË@\§·®½þ†“ÊIÐq��‰ëP»X–J {F€®6€K
ç††· ²öJ_ÿˆ¤ºº /‘l¹U¼'
ð¹íá§,jÜ¿EÎŸ—¥b“¤R€EÏfsReeËbgaoRÂ‰ŒÄ€œBé~IŒJzh«¶ÆÒÝ(w†euqI·D(çÚ‰ÎsÒi¸Gvw‡7}±ž+ïûR†<¾û�ç¾ø™?y>4Wtw»þë+5Ðâÿ#d…ŸæD¸ÍITF�‰ãëN]e�®Æ°ƒn²O¨¹¡Ãâ@�ˆ�âKUV/Lk³nÂ_­Wdf5‡U—@)2-¼Ï-Èî=ûelb»ŒOì’ÑÛ‘SôKYz1€WìÈ—ò:ñ„1AäšE—o…‹á/ï½¯K¶�›v5ÕÏõ8›»¾þÄ?<J|ûÄ…ñàªs¢»ÎY¡
ºQ,Ý<!(ÆÃ±k&LA­Ýé¼ä¸?Îí¨] ’9ˆ¯fu9w¹�ÿáXû„�„"¸u(¬û8hµÚðtÎ\O¦_î¹ív¹ë¶Ã(á1Æ(kzåŒäNe5“ç8úrõáôð V£n,®k¹qã?¼û}ºœõÇÍMÀ[ÇÓO¿:î;þ£ø:¼è›Ö•uÖgköšn®`xEFÌ]ˆ'ß6Yù‚@53^pµ:60pç¹m•õh^M	q…¾œ£Wø¾4TÑF«eTçvì= Ç>~\ª+ËZEc{Yiq¶›W•2çUYùÞœ	”—±CeÛ¡È!t³lÐ»Ô)$ÓxÒ©;o6»½žãQ@ûxê©õü¨‹qÝ~êû­¤‡‰V€0B­ù
Ìxsx%k¬Žà•ë´P
Æä‹9XmLç73Ç�¿ñÚ‹ráÜ›:ŽøèÑãJø•J°ò¯éÈ¯Îž¼MJ\L.‹7iÝÂdk‹J÷Ž]²ï£G%>4$¼8™íq_{´”L¢(ÿÕ]ý¡“ò¨ÚÇ??õòC€¢� b6îµj¿¶ÙÆÐ�RXÞdF­M¹l1á@&ÒÌ¼¨2/¼¦W8¤Ó³T$¯’î¨”[‘—ò¹÷èGAƒdn~JÊµêØU©€ê®!Ö�Þ·6g±o	Áßd�jJÆï¼KvÞvH-¬hŠæ€¬%÷ùØÞ�èaûë9>´�§žxñ!þ#�ó8—:ã¯Óê9
®å"JEhe�]uÌHI³ CÚH%ÄëD‘Ù²›Âd“U=»*åÅy)óª«µ¼^|!_lH=ö©ÏÊ÷¿÷„^n$ö`ýHÆxE&¼{Ë¹õ¾OH
E2ª é&aüß²Ë¡›Û¾û~�Uíãÿï/Öƒ°ã»Éx2{VèŒg­ü©H¼ê)gEp²
GÎÄÐ£¦Ž,[i™¿ð¦d§Þ)¬@Y¨#n‚S(�)íÞ²U/QòæË¯ @fœé•8na@Ý·Þ"cûk·2týØ®áÎÕ\éø�( }<ýÄóãžD��exµÝcÚâî—#gÛ#‹%œ²K·dh1ž%PO[Í]õ_ð<$Soœú±”/“A¶Ç0	cç
ç×]'‡„¯¦×–®‘éß~rÏ­G¾3?4kßèø�* ó r@=·s+ãVÓÃ¦*ÀÐñT!­ÅVu/˜SÅ¡«‚lú�—.ÍrAëÃÙÜŠ^Cž� Ú í:F\F&vMž™|ûä¶�þçRQyò«�>úzçñ[£€õÇO¼š‰ŠsØ¶ÌÃ®ë�[¶»uŒæ¸aÛ@ÒGWæPÔyUÌF#’-·º²˜C~™øT³ÑœÜA¶š<õè‰oþV|ýñÿe¾€Fé]S    IEND®B`‚PK     o‰U]öšgf¢ ¢ *  admin/images/upgrade-welcome-generator.jpgnu „[µü¤        ÿØÿà JFIF  � �  ÿÛ C ÿÛ CÿÀ Ô€ ÿÄ           	
ÿÄ µ   } !1AQa"q2�‘¡#B±ÁRÑð$3br‚	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ        	
ÿÄ µ  w !1AQaq"2�B‘¡±Á	#3RðbrÑ
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ   ? þþŸ¨Þ}ŠÕç.Ô_Y„®zý+|=/mZ0Ù=eþ«3©>H9uÙz½¿˜ûÜâk÷’âw›sºª�•
€§§ZôÞ!ÓnupZ+E7$º¶ÓßsEI'Q¹Éêõi/$“[öFŸÿ <ýý—ÿ ‹¥õÌGóÿ ä°ÿ äGõz?Éÿ “KüÃû#Oÿ žþþËÿ ÅÑõÌGóÿ ä°ÿ äCêô“ÿ &—ù‡öFŸÿ <ýý—ÿ ‹£ë˜�çÿ Éaÿ È‡Õèÿ 'þM/óì�?þxûû/ÿ G×1Ïÿ ’Ãÿ ‘«ÑþOüš_æÙüð?÷ö_þ.�®b?Ÿÿ %‡ÿ "W£üŸù4¿Ì?²4ÿ ùàïì¿ü]\Ä?þKþD>¯Gù?òi˜diÿ óÀÿ ßÙøº>¹ˆþü–üˆ}^�òäÒÿ 0þÈÓÿ ç�ÿ ¿²ÿ ñt}süÿ ù,?ùú½äÿ É¥þaý‘§ÿ Ïÿ eÿ âèúæ#ùÿ òXò!õz?Éÿ “KüÃû#Oÿ žþþËÿ ÅÑõÌGóÿ ä°ÿ äCêô“ÿ &—ù‡öFŸÿ <ýý—ÿ ‹£ë˜�çÿ Éaÿ È‡Õèÿ 'þM/óì�?þxûû/ÿ G×1Ïÿ ’Ãÿ ‘«ÑþOüš_æÙüð?÷ö_þ.�®b?Ÿÿ %‡ÿ "W£üŸù4¿Ì?²4ÿ ùàïì¿ü]\Ä?þKþD>¯Gù?òi˜diÿ óÀÿ ßÙøº>¹ˆþü–üˆ}^�òäÒÿ 0þÈÓÿ ç�ÿ ¿²ÿ ñt}süÿ ù,?ùú½äÿ É¥þaý‘§ÿ Ïÿ eÿ âèúæ#ùÿ òXò!õz?Éÿ “KüÃû#Oÿ žþþËÿ ÅÑõÌGóÿ ä°ÿ äCêô“ÿ &—ù‡öFŸÿ <ýý—ÿ ‹£ë˜�çÿ Éaÿ È‡Õèÿ 'þM/óì�?þxûû/ÿ G×1Ïÿ ’Ãÿ ‘«ÑþOüš_æÙüð?÷ö_þ.�®b?Ÿÿ %‡ÿ "W£üŸù4¿Ì?²4ÿ ùàïì¿ü]\Ä?þKþD>¯Gù?òi˜diÿ óÀÿ ßÙøº>¹ˆþü–üˆ}^�òäÒÿ 0þÈÓÿ ç�ÿ ¿²ÿ ñt}süÿ ù,?ùú½äÿ É¥þaý‘§ÿ Ïÿ eÿ âèúæ#ùÿ òXò!õz?Éÿ “KüÃû#Oÿ žþþËÿ ÅÑõÌGóÿ ä°ÿ äCêô“ÿ &—ù‡öFŸÿ <ýý—ÿ ‹£ë˜�çÿ Éaÿ È‡Õèÿ 'þM/óì�?þxûû/ÿ G×1Ïÿ ’Ãÿ ‘«ÑþOüš_æÙüð?÷ö_þ.�®b?Ÿÿ %‡ÿ "W£üŸù4¿Ì?²4ÿ ùàïì¿ü]\Ä?þKþD>¯Gù?òi˜diÿ óÀÿ ßÙøº>¹ˆþü–üˆ}^�òäÒÿ 0þÈÓÿ ç�ÿ ¿²ÿ ñt}süÿ ù,?ùú½äÿ É¥þaý‘§ÿ Ïÿ eÿ âèúæ#ùÿ òXò!õz?Éÿ “KüÃû#Oÿ žþþËÿ ÅÑõÌGóÿ ä°ÿ äCêô“ÿ &—ù‡öFŸÿ <ýý—ÿ ‹£ë˜�çÿ Éaÿ È‡Õèÿ 'þM/óì�?þxûû/ÿ G×1Ïÿ ’Ãÿ ‘«ÑþOüš_æÙüð?÷ö_þ.�®b?Ÿÿ %‡ÿ "W£üŸù4¿Ì?²4ÿ ùàïì¿ü]\Ä?þKþD>¯Gù?òi˜diÿ óÀÿ ßÙøº>¹ˆþü–üˆ}^�òäÒÿ 0þÈÓÿ ç�ÿ ¿²ÿ ñt}süÿ ù,?ùú½äÿ É¥þaý‘§ÿ Ïÿ eÿ âèúæ#ùÿ òXò!õz?Éÿ “KüÃû#Oÿ žþþËÿ ÅÑõÌGóÿ ä°ÿ äCêô“ÿ &—ù‡öFŸÿ <ýý—ÿ ‹£ë˜�çÿ Éaÿ È‡Õèÿ 'þM/óì�?þxûû/ÿ G×1Ïÿ ’Ãÿ ‘«ÑþOüš_æÙüð?÷ö_þ.�®b?Ÿÿ %‡ÿ "W£üŸù4¿Ì?²4ÿ ùàïì¿ü]\Ä?þKþD>¯Gù?òi˜diÿ óÀÿ ßÙøº>¹ˆþü–üˆ}^�òäÒÿ 0þÈÓÿ ç�ÿ ¿²ÿ ñt}süÿ ù,?ùú½äÿ É¥þaý‘§ÿ Ïÿ eÿ âèúæ#ùÿ òXò!õz?Éÿ “KüÃû#Oÿ žþþËÿ ÅÑõÌGóÿ ä°ÿ äCêô“ÿ &—ù‡öFŸÿ <ýý—ÿ ‹£ë˜�çÿ Éaÿ È‡Õèÿ 'þM/óì�?þxûû/ÿ G×1Ïÿ ’Ãÿ ‘«ÑþOüš_æÙüð?÷ö_þ.�®b?Ÿÿ %‡ÿ "W£üŸù4¿Ì?²4ÿ ùàïì¿ü]\Ä?þKþD>¯Gù?òi˜diÿ óÀÿ ßÙøº>¹ˆþü–üˆ}^�òäÒÿ 0þÈÓÿ ç�ÿ ¿²ÿ ñt}süÿ ù,?ùú½äÿ É¥þaý‘§ÿ Ïÿ eÿ âèúæ#ùÿ òXò!õz?Éÿ “KüÃû#Oÿ žþþËÿ ÅÑõÌGóÿ ä°ÿ äCêô“ÿ &—ù‡öFŸÿ <ýý—ÿ ‹£ë˜�çÿ Éaÿ È‡Õèÿ 'þM/óì�?þxûû/ÿ G×1Ïÿ ’Ãÿ ‘«ÑþOüš_æÙüð?÷ö_þ.�®b?Ÿÿ %‡ÿ "W£üŸù4¿Ì?²4ÿ ùàïì¿ü]\Ä?þKþD>¯Gù?òi˜diÿ óÀÿ ßÙøº>¹ˆþü–üˆ}^�òäÒÿ 0þÈÓÿ ç�ÿ ¿²ÿ ñt}süÿ ù,?ùú½äÿ É¥þaý‘§ÿ Ïÿ eÿ âèúæ#ùÿ òXò!õz?Éÿ “KüÃû#Oÿ žþþËÿ ÅÑõÌGóÿ ä°ÿ äCêô“ÿ &—ù‡öFŸÿ <ýý—ÿ ‹£ë˜�çÿ Éaÿ È‡Õèÿ 'þM/óì�?þxûû/ÿ G×1Ïÿ ’Ãÿ ‘«ÑþOüš_æÙüð?÷ö_þ.�®b?Ÿÿ %‡ÿ "W£üŸù4¿Ì?²4ÿ ùàïì¿ü]\Ä?þKþD>¯Gù?òi˜¿a6 Ë§É%´ÈWgIqÎÉË1é“’ßÚû˜ˆÆ¤—i'éx´–¨NŠ‚æ¤Ü$µJí§äÓos¨Ó®þÛiÆ>g_™Gð²�®9ÆpÙã¥y˜Š^Æ¬éô‹Ñ÷OUø4mN~Ò
]ÿ ×ñ/V&�@  P@  P@  P@  P@  P@  P@  P@  P@  PlÀsœŒã¼Üqï†Ïì3¯M›P™û×03žC“Çòú}s]ùzÿ hÿ ¸U?#Ÿü5þ8þdÔŸ<~Ðµ_À_Ù{LÑõ_�þ?²ðe¿ˆ.%·Ñ­Í†¯­jz‹Á³Ï{m#A°Ôµ9-àóÎ¹¾DYùä8ùüÿ Šr¥F¶w�†8‰8Ñ�³­Z­F¾'T)Õ¨ãûÒåå]Yú?‡~øƒâ®+ƒàN¯�ÔË©Æ®6¢Ä`ðX\4js{8ÕÆfŒ.5*r¾JN¯´�½Ø»«ú/ÃŠß>.øLø‘ðãÅzOŠ¼«Á=Åž¿§NM¡[RËv—+2Å5�Å£#«k¸¡žÜ�ÞÆ¹îÀçfe—G6ÁchVË¥N¥g‹SQ¥
t“ueVSåö^ÉEºŠ§+‚MÉ$|ßp—pv}Šáž%Ê1™N{ƒ©N�|»O÷×¬“£*NP¯N²’tªÑ”éÔ¿¹&eøWãwÂÿ ë“xsÃ~+³Ô5ˆLƒìžEå·Ú<¢Ce5Õ¼0_*“÷­$™HäkóÞñ¯Ã.4ÎëpïqN›ÑuÕ]^Ûû)rÔx:ØªhãbŸÚÂT¬ši§f™Ù›ðäXfy¦Q[‚Ÿ/ï½¥¾Ï�^*¼(Ô�J®•£žŒÄ?�?>Ë§ÛøëÄÐh×:¦M•¨´¿¿¹–5`�;[éÖ·RÃnŒÁZâdŽ'ó^§x£ÀÞTÁÑâÌö–Y_w… °ø¼ez�Œ”eUÑÁPÄT§F2iJµHÂ’nÎgÁâóÅbk*nye)5ÞÐRiy»/3¾Ñ5Í'ÄšM†»¡jÚ¦‘©Û¥Õ…ýœ«-½Ì¬‘ºð{†¬
°¯°Ê³\»<Ë°™¶SŒ¡˜eØê1Äa1˜jŠ¥ô¦¯ÂqÑöktÓM&ŽªUiÖ§´¦§Nkš2‹ºkÈÕ¯@° €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  ´	q§Ä™9N{c™ôö9Øâ–`¿Ú§þúB2Ã	zËó×Þt¨ÙÇ¿=¹ú÷ÏCîk€è$ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (�ËíRqî1ïëŒ’9ÁÆ1Ïµ4.¶8ÍZmÆ4=åŒý0ÃÐã8ï�œW¥€_¾ïûºŸ‘Íˆøþü3v Üüsÿ ‚£Á;>$~Ùº·ÃÏü-ñO‡´Ïø/E½ðåÖ…âË»ÛúÆëR“QKØ/l¬õ·½ŠIåŽMÖr‰¡HÐ4xÉüÄÿ 32«—ã2¼Vž#FxyÐÅÎtèÎœê:Šqœ!QÆiÉ§x;¤•Ñý¥ôSúIpÏ‚X>$É8¯)Ì±YvyŽ¡™RÌ2Š41Ì=z8há¥B¥
õ°Ê¥	Æœ%W‡$Ü¥i^ÇÓ±7ì�©þÌß²…×ÀOø’[Ä%—Æ—ˆõ]%§m?OÔ|]¥ÛèòÁ£=ÂÇ;[YZY[K¼q¹i¤òãz97‡ÒÂxu�pN3(ÕÏòÌï‹Æa\¿Ùe�eóËçS
åi^…9*�mEº‰»#òÿ üfÂø£âír¼²x<»+†K†Ë0˜ÅMb1lŸS	ãU7*j­zÕêBQŒ¦£IB<ÒµÝoƒÿ ²w‹<ñ#NñWˆ5�&M+@¹’óOl×/y0ÊB.a’ÒÞ-ŒÍ"yÓ’Û@<f¿–|"ú)ñWx‹—qNœåUr¼‡S—¬º¶"XÌ}exQXš5(Âz\’”ªCÛV¼¹Rz3£�<`ÉóîÄåv^aJ4q/
JŽ›´¦éN5%*“æIEòS²¾…ïÚ“ö[ñoÆ/i^/ð†¯¥Es‘o¢ßiÚÔ÷Ð$V×73Çwm4]aØ]:Ë‡÷›#>bmçï¼~ðˆüKâ,¿‰8o2ËéÖ¥—PÊñXÒµjcN…jõa‰ÃÕ¥J¿¾ý¼£R›¤¹ù`ý¤ylÿ “ó¼—˜W†#R	ªjœ¡Q¸«E¶¥”µ÷�Õµ²Ôúwà·ÃÇøUðÓÃšøj7:5µË^^(a·º…õÎ¥v W%–Þ;‹¹#·V9¢_¼x]Ásðû�r«‹úõ|²…ybq)5Nx¬f*¾;¨©7%B±…ÝÕ8ÅÎ]„úŽŽË�ÓRæ—G)ÉÎVòNM/#Ô«ïÎÐ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  -}‘…ôv÷ÎY�N§\�Æž`¿Ú%Û–?r;˜a�©¯Wù³µ·bF3É€#¯\õ?çðàðß×õs¥^EÊ‘…  P@  P@  P@  P@  P@  P@  P@  P@  PEãý ã×#°ü*âµ_×õ§ù’ÿ #€½r×qŒœy‹Î1ž¦3ÇÒ½,ñ_ý{›üjïÝ_âŠüNÊ²:€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (�Òå>s§ul‚}Æz\ûV¸åûùiöaÿ ¤£Ÿf½eùõ=Å²£ïcõñþ{ðO ×–Î�Ÿ®ÿ wü7_‘¤Fi-  P@  P@  P@  P@  P@  P@  P@  P@  PMï
q×žz�={ûp=z\w^„½þ×õæy~¶ò@’Km‘VWÀ%YrTó‘‘îAÆ9¯Somÿ nOúô9qÿ }N?þ=sþ‚W?÷Òÿ ñ5éû:óêŸþ‡ÿ "ssÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/óøHõÏú	\ÿ ßKÿ ÄÑìéÿ Ïªø.üˆsÏùçÿ �ËüÃþ=sþ‚W?÷Òÿ ñ4{:óêŸþ‡ÿ "óþyÿ àrÿ 0ÿ „�\ÿ  •Ïýô¿üMÎŸüú§ÿ ‚áÿ È‡<ÿ žø¿Ì?á#×?è%sÿ }/ÿ G³§ÿ >©ÿ à¸ò!Ï?çŸþ/ó;MF�Á#�ÎðÄîze™±ÀFO ý8¯+þñ/ðÃÿ IGVàÿ ·ŸçýÃž—§à*Ž˜õÿ xÿ /Zó__™Ó×úìk/Aô¨(Z (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  ›á•=³ž;c··?_þµ­þDõòþ¿¯OÇË<@?q??òÆ\Àÿ ŸÊ½<ýïý¹3—ðÿ ÛÑ×ÞyÅzç P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ z_‡~í±ÿ ¦`Û$ÿ ññßïÿ ?ô”vaþþ)~g¦Ø’À�luãô'¯~+Í}}YÔ¿¯¸×ÐTZ (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  ›ìí9è3ïÏéÏôÉ«Žäõùþ‡–xƒ>TþÐÊ9ç±þ¿äžkÓÀ‚g.#áÿ ·—èyÅzç P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@	�:š`tÞÑ¢×ut¶¸ÏÙmâ{«”V*ÒÇ*,jã•,‘‡+†ò÷íd}¬9q•ž�4~95¶´MÝÞÝZIéÞ×ºÐÖŒIÙì•ßšÚß{WòØ÷Xô$T]'NÚ£}œ7âò#;}Y‰¯â+·wZ­ßiÉ~	¤wªpZrGîCÿ ±toúéŸøkÿ Æ©{zÿ óú¯þŸù�’Éü�bèßô	Ó?ð×ÿ �Qíëÿ Ïê¿ø2æ�þHÿ à+üƒûFÿ  N™ÿ €¿üj�o_þUÿ Á“ÿ 0ä‡òGÿ _äØº7ýtÏü µÿ ãT{zÿ óú¯þŸù‡$?’?ø
ÿ  þÅÑ¿è¦à¯ÿ £Û×ÿ ŸÕðdÿ Ì9!ü‘ÿ ÀWùö.�ÿ @�3ÿ  -øÕÞ¿üþ«ÿ ƒ'þaÉä�þ¿È?±toúéŸøkÿ Æ¨öõÿ çõ_ü?óH$ðþAý‹£Ð'Lÿ À_þ5G·¯ÿ ?ªÿ àÉÿ ˜rCù#ÿ €¯òì]þ�:gþ Zÿ ñª=½ùýWÿ OüÃ’Éü�bèßô	Ó?ð×ÿ �Qíëÿ Ïê¿ø2æ�þHÿ à+üƒûFÿ  N™ÿ €¿üj�o_þUÿ Á“ÿ 0ä‡òGÿ _äØº7ýtÏü µÿ ãT{zÿ óú¯þŸù‡$?’?ø
ÿ  þÅÑ¿è¦à¯ÿ £Û×ÿ ŸÕðdÿ Ì9!ü‘ÿ ÀWùö.�ÿ @�3ÿ  -øÕÞ¿üþ«ÿ ƒ'þaÉä�þ¿È?±toúéŸøkÿ Æ¨öõÿ çõ_ü?óH$ðþAý‹£Ð'Lÿ À_þ5G·¯ÿ ?ªÿ àÉÿ ˜rCù#ÿ €¯òì]þ�:gþ Zÿ ñª=½ùýWÿ OüÃ’Éü�bèßô	Ó?ð×ÿ �Qíëÿ Ïê¿ø2æ�þHÿ à+üƒûFÿ  N™ÿ €¿üj�o_þUÿ Á“ÿ 0ä‡òGÿ _äØº7ýtÏü µÿ ãT{zÿ óú¯þŸù‡$?’?ø
ÿ  þÅÑ¿è¦à¯ÿ £Û×ÿ ŸÕðdÿ Ì9!ü‘ÿ ÀWùö.�ÿ @�3ÿ  -øÕÞ¿üþ«ÿ ƒ'þaÉä�þ¿È±…ŒXò¬­#ÀÀòí¡L 0 Úƒ >•œäï)ÊO¼¤ÛûÛŒVÉ/D‘d"/ÝE_¢�ü…HÇP@  P@  P@  P@  P@  P@  P@  P@  P@N?È  ‹ï¸}yÎ3ÓüþqÜ—æyoˆ?ÔOÿ \eÏ±Á÷ÿ ë~Uéà?‹ÿ nLåÄ|?öüO8¯\ä
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 ()3þÏô§oëúþ·¿ø\àë×êOöT¤ÿ àe˜þ¿Ê¼ìÒþÂ›éícÿ ¤LèÂürÿ ê��o{]wþ?ƒ�ŠtŸkÿ ³õž—ñ?i^µñ]õ‰ø‰=––>ÜøÊËÁVz�ˆdðò0ÕDSÛØÍµà,ù™íÑü#¼øÓÃ_?oë_¼£x7Ä¾ðkøwÁ2é:¹á¯ü@Ô<i¦ø�âOˆ´ŸÃ«ø¢þÂE»ðgÃ¸t_h±ë1K¥Á¨Úmý†×O»ºPc[ý¡à§>ðgƒÒêm_Z>4ðÁˆž)ñ”_äŸux{T›ÅÞmÆ{©ïáÑõk[{Û¹E½å„Òù76ñ\^Ç zUçÇ_ÛÐøYñgˆ5_h7ú—Š~øGÓ¼9ðdÎº=¶µ¥¾½­xúþ=fãNÕ`±Ô$Ò`ðé·~vŸ}âHÒÝ]ÂÆÀ€¾:~Þ-£Þøëâ&½ñ#Á²üJðÏì­â/ÇÁýOÄ6?	-¼Kð.ÓUø‘{á/Ä§qñ2	¼9­éÊô‹ôo´ˆ§¼Ø@>ëý…þ"~Öÿ |iñVý¡Íï†<7áßx
ÛÃºð:èZÕ|Câé/¼Tú¤Ó-Ê\®�áýk�-Þ;)<@ñÍ,RÂ« é}  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ TžMŽ‹ÇÌ	ÇsƒÛ�Ã¿^”ÒºbnÄÑ0e9ð9�qž9ü{ÐÀÍ¾å[ñïÏ`Ç8¦·ÜòßàÃ?´2�Lœñ¯Wü_ûr¡Ëˆøíèžq^±È P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P+†qôÏøOÿ URýDÿ á¾geðªî¼E¨çŠ:<À4Ò$j[í¶8PÎTnÀ'h9À'W�š¿ÜS¶ÞÕéÿ >ÇFø’ÿ ÿ Ò£÷žýý¥§Ïý—þAÿ Ç+Á= þÒÓ¿çþËÿ  ÿ ã” iißóÿ eÿ �PñÊ ?´´ïùÿ ²ÿ À¨?øå ÚZwüÿ ÙàTür€í-;þì¿ð*þ9@ö–�ÿ ?ö_øÿ  ûKNÿ Ÿû/ü
ƒÿ ŽPý¥§Ïý—þAÿ Ç( þÒÓ¿çþËÿ  ÿ ã” iißóÿ eÿ �PñÊ ?´´ïùÿ ²ÿ À¨?øå ÚZwüÿ ÙàTür€í-;þì¿ð*þ9@ö–�ÿ ?ö_øÿ  ûKNÿ Ÿû/ü
ƒÿ ŽPý¥§Ïý—þAÿ Ç( þÒÓ¿çþËÿ  ÿ ã” iißóÿ eÿ �PñÊ ?´´ïùÿ ²ÿ À¨?øå ÚZwüÿ ÙàTür€í-;þì¿ð*þ9@ö–�ÿ ?ö_øÿ  ûKNÿ Ÿû/ü
ƒÿ ŽPý¥§Ïý—þAÿ Ç( þÒÓ¿çþËÿ  ÿ ã” iißóÿ eÿ �PñÊ ?´´ïùÿ ²ÿ À¨?øå ÚZwüÿ ÙàTür€í-;þì¿ð*þ9@ö–�ÿ ?ö_øÿ  ûKNÿ Ÿû/ü
ƒÿ ŽPý¥§Ïý—þAÿ Ç( þÒÓ¿çþËÿ  ÿ ã” iißóÿ eÿ �PñÊ ?´´ïùÿ ²ÿ À¨?øå ÚZwüÿ ÙàTür€í-;þì¿ð*þ9@ö–�ÿ ?ö_øÿ  ûKNÿ Ÿû/ü
ƒÿ ŽPý¥§Ïý—þAÿ Ç( þÒÓ¿çþËÿ  ÿ ã” iißóÿ eÿ �PñÊ ?´´ïùÿ ²ÿ À¨?øå ÚZwüÿ ÙàTür€í-;þì¿ð*þ9@ö–�ÿ ?ö_øÿ  ûKNÿ Ÿû/ü
ƒÿ ŽPý¥§Ïý—þAÿ Ç( þÒÓ¿çþËÿ  ÿ ã” iißóÿ eÿ �PñÊ ?´´ïùÿ ²ÿ À¨?øå ÚZwüÿ ÙàTür€í-;þì¿ð*þ9@ö–�ÿ ?ö_øÿ  ûKNÿ Ÿû/ü
ƒÿ ŽPý¥§Ïý—þAÿ Ç( þÒÓ¿çþËÿ  ÿ ã” iißóÿ eÿ �PñÊ ÆÔ/¡’êßì÷Ì¡1†D”+1BÀ:ÏqZAhýà‘'f�{G=zûàc8Ç¯þª–5ý~„£ä=þ÷±èü;�^)­þ_xuþ¾óË<B?u?§“)Ï®Aëþµéåÿ Åóä™Ëˆø?íèÿ ™çëœ�@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ fÞp­þ{UÇuýX•çÜ±àü¶³t:âÁó�úøµ¯?2Ö„.¿åêÿ Òfo†þ#ÿ ê�KÛ×‚xãØãü.•âYv;¾a�Ï˜ã#óïÍ]€
úzŒþ¿Ëñ¢Ë°|À/©?�o\/Z,» „~cŽžßÏ?ŸQF�‚Âã¾09üÀÿ Çÿ ÔYv Ú1ÓŸPzó×ßŠ4ì¼ÄÆOL�¦>½8ÿ >´iØ-¥Å#¾1œ`gÛŸ×ÿ ¯E—`Ž‡Øãƒíù÷¢Ë°�œã#<Ž�s�ü¿É£NÁmmq1Ï<{~?çš4ìó§#¯¿§ôÍ]€@9<dsíÏáF�‚Û†Ñøžƒ�QÇ¯óE—`ù†Þr:zã?�Óüõ£NÁo0 zdqí�¦O¥]€B0qüñüúQeØ:
@ã§®süŽ2}8iØ,ê1žÀôÿ &�;ŸápÚ?Ã©ÏÈý3íF�ƒ¨éŒŽA ãéþ�v —>‡§éúÑeØ>bméß¯§8'§·×½]�
TuÁ·ëÁüqøQeØtç8'=?ÏåïE—`ù€QŸ`NG€ú“Çò¢Ë°|À®;Iàuÿ <cñý.À gŒsÏãùúqøf‹.ÀÇâ{þ¡¢Ë°|ÄÇ$sÓüçüûô£NÁaJñÐ‚:ÿ �ù÷ÏJ4ìl�OoñöïE—`¿ŸÓ¯·àsùQ§`8Îë××ôÿ >ôiØ-æ;hçƒõôëéè:ûýh²ì==~�¨Ó°[o1ÅGc�Ï‚sþ?ýz,»Ï¨àñŸCüèÓ°[Ì6Œô=³úþ¤cÛ9¢Ë°G=1Øóœúÿ /z,»ÌP¼tç×ÓÓ�çè]ƒæ&2xçžÃ··_þµ]ƒÌR½ÀÆzr:çü?ÏYv À§ü¯On˜ôõ£NÁoÊá�œã#œŽŸNžþž”iØ,!>ŸáE—`ùŠ Ààç?˜ëßÛù{ÑeØž™?�]ƒô ¾¿çƒÇ®r?ÏiØ-æ)Çõã=:Ÿ¥]� ô'Ó·ùÿ "‹.Àÿ ëtç®OÓ#òëE—dã©ÇAõíþ<ô÷£NÁ`ÀÁùO^qŒôÏoÇéëE—`ý:ÿ Ÿ_J4ì… ØÏëøƒù~f�;€Øäô?ç�­v?¸6�¯·ð	þ úqïE—`4ô¼	‰är¼zäqÏ^ÕqÙ‘'ª^Wû�EÓØp;•=º xúv€íÍe#E·mB÷îœÎ9ü�ò1íDw¾‡–øƒ>LÃÒ‘?‡§¯¨¯O/·µÿ ·&sb>ûz?×©çëœ�@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ fÞýÖÿ =¿Ïkôd?Ô»à;iï¼Jl xâ{‹;…ó%VuAË‚B+¡bÞVÌn 'œ`ùÙž” ÿ éìô™�8ez­Ó·ÿ ¥#Üƒõ!‘ý¡fsëi7ÿ %W‡Íåø�ü¾€Ÿð†ê_ô³ÿ ÀI¿Oô¯oË>´sy/Ÿõ÷Š|©º…—þMùÿ Ç×_ÓÚŽo åóü?à‡ü!Ú–1ý¡eÿ €“uõÿ �®´sy~!Ëçø	ÿ v¥œÿ hYöÿ —I»tÿ —ª9¼¿åóü ø;R9ÿ ‰…Ÿ?ôé7ÿ %ÑÍä¾‡üáÔ¹ÿ ‰…—?ôé7åÿ ]Þ_�ü åóü?àˆ<©Ÿí/ü›ÿ ’èæò_?ÃþÂ©p?´,¸ÿ §I¿_ôª\ÞAËçøÁþíHhYãþ½&ÿ äª|Þ_�ü åóþ¾ñ?áÔ¿è!gÿ €“òWùÀô£›Ëñ_?Ãþ	Tø_RûrÙ›Û,µ£Üù¿f˜cdÉÀŸi=wîÝ»¶6óš9¼ƒ—Ïðÿ ‚[>Ô�üÄ,øÿ §I¿ùzïÞŽo/Ä9|ÿ ø"jC‘¨Yÿ à,ÜýÒèæòüC—Ì?áÔ³Ÿí/ü›òÿ �®Ÿýz9¼¿åóüÿ „?Sãþ&yþÉ7ÿ %cô¥Íåø…º_ðÿ ‚ÁÚ�ÿ ˜…ŸLÇ¤ßü•O›Ëñ_?ÃþŸð†ê_óÿ eÓñé7çÿ }Oj9¼ƒ—Ïðÿ ‚ð‡j_ô³Ç§Ù&Çþ•RæòüC—Ïðÿ ‚ð‡j\ÿ ÄÂÏž¹´›ÿ ’éóy~!Ëçøü!ÚŸý,ÿ ðnÜð~ÕþxæŽo/Ä9|ÿ  >Ô�üÄ,ÿ ðoþJ¥Íäóü?à‹ÿ ~§ÿ A>˜ÿ �I¿ù+­>o/Ä9|ÿ ø!ÿ v¥œÿ hYgŸùt›œúÿ ¥QÍä¾‡üƒµ"IþÐ³çþ�&úÏ×¥Þ_ˆrùþðEÿ „?RÁÚ\ÿ Ó¤ßü•ø}Þ_ˆrùþjC¦¡eÿ €“~|Ýžhæò_?ÃþÂ©ÐBËéöI±ÿ ¥~þ´¹¼ƒ—Ïðÿ ‚/ü!ú–1ý¡eÿ €“zçþ~©óy~!ËçøÁàíHÌBÏ®ãÒoþJí×ëG7—â¾bÂ©ÐBÏÿ &ÿ äº\ÞAoO»þÂ©Ïý—LÇ¤ßŸü}õ÷§Íä¾‡üÔ†Ô,Æ?éÒn~¿éTsy~!Ëæð†ê_ô³ÿ ÀI¾ŸóõéG7—â¾‡üáÔÏüÄ,ûÿ Ë¤ÝûÇ×J\ÞAËçøÁàýLg…Ÿ?ôé7éþ•O›Ëñ_?ÃþƒÁº—üÿ Ùÿ à$ßü—K›È9|ÿ ø"ŸjGþb_O²Mïÿ O]³ÇáO›Ëñ_?ÃþÂ©co²ÿ ÀI¿ù.Žo/Ä9|ÿ ø"Â©ÿ ÐBÏÿ &õÏüýtÏ®{zQÍåø‡/Ÿà)ðv¤æ!eÿ €“ò]ÞAËçøÁøCµ/úYÿ à$ß�ü½wïëG7—â¾€Ÿð‡jYÏö…Ÿ\ÿ Ç¤ßü•G7�rùþðCþíKþ‚]sÿ “òWJ9¼¿åóü?à‡ü!Ú—?ñ0³ç“þ‰7ÿ %QÍåøÿ ÀÃÁàíHÌBÏ‘�øô›ÿ ’¨æò_?ÃþjG®¡eÿ €“~ñ÷×ôö¥Íä¾‡üáÔñ�í<×¤ßü•O›Ëñ_?ÃþŸð‡j\ÄÂÏ#¿Ù&úcþ>ºQÍåø‡/˜jGþb^¹û$Ùÿ Ò¯óëÅÞAËçøÁàíHÿ ÌBËÿ &ÿ äª9¼ƒ—ÏúûÅÔ‡MBÏéöI±õÿ �®´sy~!Ëæ'ü!Ú–söû#ÿ n“sõÿ J£›Ëñ_?ÀSàíLÿ ÌBÏÿ &ç·üýRæòüBÝ/øÁàíH?´,ùÿ §I¾œ¥SæòüC—Ïðÿ ‚'ü!Ú—?éö\ÿ Ó¤ß§úY£›È9|ÿ ø |©ùˆYÿ à$ßü•ïK›Ëñ_êßðEÿ „;Ro²ëŸøô›ÿ ’éóy/Ÿáÿ OøCµ?úYúçì“g¦:ý«üóG7—â¾�Ò®4›”Šâx§2¯˜­OIRy%$“É ¨Ç5¤Ó3š³Zôgc¦ö=Ç^Ç ˆî8þuœŠ]=Q%èù<“»úsÆ}¹ÏZQßå¯õêSý~ý�,ñ7õÊ_Ë§ùé^¦øËþ½Ìä¯ðÿ ÛÈóŠõÎP €
 (  €
 (  ñVµñF×[»‡BÓ$“KFÖH´ø®Ä‰�¾Ò2’Ÿáì õ®ÚPÂ¸'RV—UÌ×àc9URj+Nš\çá"øÑÿ @›ŸüÁÿ ÄVžÏüëÿ dóWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ðÿ „‹ãGýnðKÿ G³Á:ÿ ÀØsWìÿ ð²ðF¯ñ÷V0øŸNx4ß"F3Ke›,¡O–¨Pû›�è9¬kC^”¯+ívôê\Fýå¥»XõÊä5
 (6÷î·ùíWþD™»ð»þGknŸñé|:çþ]ßü+ÍÍ?Ýáÿ _Wþ“3«üWÿ ^ßþ”¿¯Sê	g† ²$`œÄŸnõàž�Ûì¿çæ/ûê�]Ûì¿çæ/ûê€º·ÙÏÌ_÷Õto²ÿ Ÿ˜¿ïªè>ßeÿ ?1ßTÐ}¾Ëþ~bÿ ¾¨ û}—üüÅÿ }PAöû/ùù‹þú .ƒíö_óóýõ@]Åuo3mŠhÝ±�ªÀœzâ�Þåÿ !¸ÿ ì7þ•Á@´PßY‚A¸ˆH#wqÖ�]	öû/ùù‹þú .ƒíö_óóýõ@]Ûì¿çæ/ûê€º·ÙÏÌ_÷Õto²ÿ Ÿ˜¿ïªè>ßeÿ ?1ßTÐ}¾Ëþ~bÿ ¾¨ û}—üüÅÿ }PAöû/ùù‹þú .ƒíö_óóýõ@]Ûì¿çæ/ûê€º·ÙÏÌ_÷Õto²ÿ Ÿ˜¿ïªè>ßeÿ ?1ßTÐ}¾Ëþ~bÿ ¾¨ û}—üüÅÿ }PAöû/ùù‹þú .ƒíö_óóýõ@]Ûì¿çæ/ûê€º·ÙÏÌ_÷ÕtIÝ´­²9ãv=0ÉúôîX eV¾´V*×S‚7ê(Ðß·ÙÏÌ_÷Õto²ÿ Ÿ˜¿ïªè>ßeÿ ?1ßTÐ}¾Ëþ~bÿ ¾¨ û}—üüÅÿ }PAöû/ùù‹þú .ƒíö_óóýõ@]Ûì¿çæ/ûê€º·ÙÏÌ_÷Õto²ÿ Ÿ˜¿ïªè>ßeÿ ?1ßTÐ}¾Ëþ~bÿ ¾¨ û}—üüÅÿ }PAöû/ùù‹þú .ƒíö_óóýõ@]Ûì¿çæ/ûê€º·ÙÏÌ_÷Õto²ÿ Ÿ˜¿ïªè>ßeÿ ?1ßTÐ}¾Ëþ~bÿ ¾¨¡éyk#IâfnC“è3Ôûu .‹4äõà>ÝhOüña�ûhyü:þµ=Ÿª2©ºôfž�Œ€=9îFsŸÄ�Ê¢C[.÷üÿ È}÷Ýõýyúûà~=hŽÿ /ë^Å=×ùYâ!Ÿ¹0ËÏ?í<w¯S/þ/ý¹3—ðÿ ÛèóŠõŽ@ €
 (  €
 (  2×>+xo@Ôît›«m^âæÑ„s=¥µ›Â¯€JžþÝÉ ŒŸ/o<ÍuCR¤TÓ‚Ok·Â,ÎU£ÓMµÙ/Õ£#þ…?èâüÓùmUõ*¿ÍOï—ÿ  O·‡i}ËüÃþ…?èâüÓùmGÔªÿ 5?¾_ü€{xv—Ü¿Ì?áwøSþ�þ!ÿ ÀM7ÿ –Ô}J¯óSûåÿ È·‡i}ËüÃþ…?èâüÓùmGÔªÿ 5?¾_ü€{xv—Ü¿Ì?áwøSþ�þ!ÿ ÀM7ÿ –Ô}J¯óSûåÿ È·‡i}ËüÃþ…?èâüÓùmGÔªÿ 5?¾_ü€{xv—Ü¿Ì?áwøSþ�þ!ÿ ÀM7ÿ –Ô}J¯óSûåÿ È·‡i}ËüÃþ…?èâüÓùmGÔªÿ 5?¾_ü€{xv—Ü¿Ì?áwøSþ�þ!ÿ ÀM7ÿ –Ô}J¯óSûåÿ È·‡i}ËüÃþ…?èâüÓùmGÔªÿ 5?¾_ü€{xv—Ü¿Ì?áwøSþ�þ!ÿ ÀM7ÿ –Ô}J¯óSûåÿ È·‡i}ËüÃþ…?èâüÓùmGÔªÿ 5?¾_ü€{xv—Ü¿Ì?áwøSþ�þ!ÿ ÀM7ÿ –Ô}J¯óSûåÿ È·‡i}ËüÃþ…?èâüÓùmGÔªÿ 5?¾_ü€{xv—Ü¿Ì?áwøSþ�þ!ÿ ÀM7ÿ –Ô}J¯óSûåÿ È·‡i}ËüÃþ…?èâüÓùmGÔªÿ 5?¾_ü€{xv—Ü¿Ì?áwøSþ�þ!ÿ ÀM7ÿ –Ô}J¯óSûåÿ È·‡i}ËüÃþ…?èâüÓùmGÔªÿ 5?¾_ü€{xv—Ü¿Ì?áwøSþ�þ!ÿ ÀM7ÿ –Ô}J¯óSûåÿ È·‡i}ËüËv?<-yof–šä/s*B’Okd"W‘‚¦ó£4€ eclg‘ŽiKV)ÊðvWÑÊúzÅ~cU ÚV–½Òÿ 3Ök�Ô(  €
 (  €
 (  €
 (  €3o~ë}¥Zý©¹ð»þGknßè—ß_ø÷jósO÷x×Øÿ é3:°¿Å}võÿ ·‘ô£*¶ª»•[mŽWp´´ì®s‚@ ã¨=+Âéó;¾×ËõgáßÃ¯kL:]½´WvÚÅÞ™<ZŒ·RC êvúUÿ ö¥‚[Eý—#\]Àö‹Î¡±óåµ›Ë†TQ•¨ü\ð†‹¯_hZä:†�%¥Ìp^ÞY!µÔî.•WM[y&º¸‰J?™söu·„©Y¤ŠO’€ŒŸ.§k[=R{Û„k¥1YèšµËÿ ¡ìûAUŠÁ™ö#ù¡$’HÑ–6 ko‹—CM~æ{­:ÌÉiëy¥]‰mf¼±ƒQ�%ò`š7Wµ¹…Òh$š	w~æI $ S�ãOÃ—¸º·þÐ¹O²ISHÚ¬&š113/Ø7ÛÅ-Ï4Ê‘ä]ŽÍòÐ+‡ü.¯‡«ö}Bîêá ²ºûZ&¦—«m¨\Eoe4�\Z@c[�5g�\¬†ß³sÆŽï´{Eñ=“ê<‚âÚ+©ì¤g¶’Ýã¹¶ MÅ<qÈ¬…—ªŽ¿Z Üòãÿ žiÿ |¯øPåÇÿ <Óþù_ð 
H‹w§USæÌ2ƒ	ÈÈÁÀÈèp=(ýWæ0ÿ Èn?ûMÿ ¥pP2Õù"ÆôŽ´¹ Ž ù/@=˜ëx¢Bh•D_îjl‰¼¸ÿ çšß+þ yqÿ Ï4ÿ ¾Wü( òãÿ žiÿ |¯øPåÇÿ <Óþù_ð Ë�þy§ýò¿á@—üóOûåÂ€.?ùæŸ÷Êÿ … \óÍ?ï•ÿ 
 <¸ÿ çšß+þ yqÿ Ï4ÿ ¾Wü( òãÿ žiÿ |¯øPåÇÿ <Óþù_ð Ë�þy§ýò¿á@—üóOûåÂ€.?ùæŸ÷Êÿ … \óÍ?ï•ÿ 
 <¸ÿ çšß+þ yqÿ Ï4ÿ ¾Wü( òãÿ žiÿ |¯øPåÇÿ <Óþù_ð 
7Ñ¢‹W�–öÔ+€i‘X@e%[�H<S]}÷F�!™šTqÿ gÚþí9BOÊ¼�ÍÉã­7¸5Öš‘¼¯sd‘GŸ2FšŽ=³=»orÁWlñÉÜF&GŒüêT î´é¡Žâ‹)`šEŠ)ã–†Y]‚$qÊ¬Qäv!U‹3 'Š š3m.ÿ (Á'•!ŠO,Æþ\ªš7Û�’e%)#P†8Ç%É%W�Ò€+ÚÏa{Ÿg5¥Ü;ä‹Îµ’âó"s±ù‘Mñº²H™ÜŽ
°@<¸ÿ çšß+þUîtøî¡±’âÊ;Û”’K{7–º¸ŽÒCnÌ%•"4eŒXŒÐ¯.?ùæŸ÷Êÿ … \óÍ?ï•ÿ 
 <¸ÿ çšß+þ yqÿ Ï4ÿ ¾Wü( òãÿ žiÿ |¯øPåÇÿ <Óþù_ð Ë�þy§ýò¿á@—üóOûåÂ€.?ùæŸ÷Êÿ … \óÍ?ï•ÿ 
 <¸ÿ çšß+þ yqÿ Ï4ÿ ¾Wü( òãÿ žiÿ |¯øPF8Ä10DÊÝÚ2�«•"â28È ô#‘MuôÛæ¿4iRÉkßò³>�?oW?çõ­iü2õ2©ºôf®�Ÿ—>„Ÿ¯<p1ßÛž•2ýG_}Ò~ ^sõíïîsBßäSÜòß�ÜÎ}b˜�åý8ükÓËÿ ‹ÿ nLåÄ|öôO7¯\ä
 (  €
 (  €
 Á½ð¿‡5)Úêÿ DÓo._ç¸´ŠY2ì¤šÒ5jEZ3’]“²%Â/Wß¡Oþ�ÿ Ðµ£àüEW·­ÿ ?'ÿ �0öpþU÷ü!ÿ ¡kFÿ À?øŠ=½oùù?ü	‡³‡ò¯¸?áðýZ7þ Aÿ ÄQíëÏÉÿ àL=œ?•}Áÿ Gƒÿ èZÑ¿ðþ"�o[þ~Oÿ aìáü«îøB<ÿ BÖ�ÿ €ñ{zßóòøgå_pÂàÿ ú´oü ƒÿ ˆ£ÛÖÿ Ÿ“ÿ À˜{8*ûƒþ�ÿ Ðµ£àüEÞ·üüŸþÃÙÃùWÜð„x?þ…­ÿ   ÿ â(öõ¿çäÿ ð&ÎÊ¾àÿ „#Áÿ ô-hßøÿ G·­ÿ ?'ÿ �0öpþU÷ü!ÿ ¡kFÿ À?øŠ=½oùù?ü	‡³‡ò¯¸?áðýZ7þ Aÿ ÄQíëÏÉÿ àL=œ?•}Áÿ Gƒÿ èZÑ¿ðþ"�o[þ~Oÿ aìáü«îøB<ÿ BÖ�ÿ €ñ{zßóòøgå_pÂàÿ ú´oü ƒÿ ˆ£ÛÖÿ Ÿ“ÿ À˜{8*ûƒþ�ÿ Ðµ£àüEÞ·üüŸþÃÙÃùWÜð„x?þ…­ÿ   ÿ â(öõ¿çäÿ ð&ÎÊ¾àÿ „#Áÿ ô-hßøÿ G·­ÿ ?'ÿ �0öpþU÷ü!ÿ ¡kFÿ À?øŠ=½oùù?ü	‡³‡ò¯¸?áðýZ7þ Aÿ ÄQíëÏÉÿ àL=œ?•}ÄÖþðµ¬ÑÜ[xI‚x˜<rÇeº0èÊÁ2ìG"“­U¦�I4÷M»$Ù_qÒVE  P@  P@  P@  PmïÝoóŽ*ã¿È�Ã_ó7~ÈímÛýûÿ IÛ¡¯74ÿ w‡ý}_úLÎœ/ñeÿ ^ßþ”�¤.$û5ú\<r´MkånŠ3&×YYðØé�Ã¼úðº|ÿ FzÖþVüNv}ÂÓj–šÒé/k«Y^}²-FÊÝínšB�±Í4;^k[ˆdx®-Ü˜¦‰™]HÅpÅ½Ð|¨ÜÍ{á»+Ë»‰!–k‹�-%šI É…ÙÝNÓžáE¼ÐÅá¿D“G…´ø’áüÉÕ4˜ÐK'š“o}¨*¤„ž¬¡ŽH¢ÞkïfãHð�Í¸´¸ðý¬ö«$‹y4ÄxD–¶ëinþYM™‚Ú8áˆãä�QW€0[Í}ã3nü%à[éÅÕÇ†mZpY¼Á§*±“ËDI›óKF‹„‹b„#‹y¯¼ÙxSÀº|¶Ö¾±Ž;KXì¡?ÙhÎ-£‘$Ty
nqæÆ’±rIp­?Äý4hÚ=¹´Ò´ßìûS,“˜-l¼ˆŒÓÒÊQ IË9ÉcŒž”[Í}àhiÁÿ <îïÃÑo@©Àå�ÏãÑo4p·wv^Tsâ'•äg‰‘UL[FXñ’[ {J@<ÿ Èn?ûMÿ ¥pP­Cþ</ëÒçÿ D½ öbˆ–{!î	5¨‰Ê±V$[k)­‚pÀ‚ æ€[#ñŸWý“¿miõÏZÛüDšóÂºÎ³ã‰ü3mwãmISIÐ|©]iŸtYáIÉˆ<7ñKâßŒ¥F½Ï�<Ž^ÞØ¨»]üñæ¥ðËÁ_Ì¾;ñŒ¼ñKAñ®«â½_ûWBð}×‡fÖEÞ½ák÷3¼š¾‹i`©am§\†k‹`ë9q#© Âø9/ü7Âï†õŸŽ–úN«ðóG×5…ño†ü—â?_èW>ÑSÁéáëk8"»•4¿\ø·þhVež],x<Ø4zn—ªÛÎÂø“À_¶™øÄŸ~hZíœ�‰>&øµõ_ø½í"ñ„µ‹&Oü3Ö<¨4Ö¾›Ã‘�Í|’ÛÁ~¢k`$;ˆ[¡è_ðS-OÆÓÂ[âo
øcÀW¾#½¹’møwTÖ4oÉ«Ø]XXG–L.õë;íÛYîmÂ-Í½ÅŠ¾e´±h€	¼+û_ücøà}kÆºEÍÇ‹—Äþ0›[ø~uø@ž})lŸMð¯y2ïöKÈ×]Ô´é��Þr�‘å® 04?ÁQm´kÝëÆ>ÓN“¤´>ÔíïômvißFøã$ðÕ�ýæ³i>¡¨Kyñ¶?[x›VÔK½KJkëé�¢ PÔüúC­\_ø‹Ákslþ)ºÓl´ù|?�ª^M6?Z¤“ÙµÕ–”³JY‘œÉ¼Gæ1ÂÐ?á/ÿ ÁO´Ó%æ·â=*ïTÖµÍ>òâ&×¼;y é)o­ÙØÚ[¥�Ý“Í‚<'gªÜx’ßN1j–µ©iW6’Ç5´Ì@?L¾i¾=Ò~x&ËâŽ³ý½ñ<=¦IãMMcµŽ¼I5¤Rêéj–QÅj¶pß4ñZ#Hü„�
(Òh  €
 (  €
 (  
7ÿ rÛþ¿¬ÿ ô¡)®¾‚{¯™z�Ìý+þAö¿õÏÿ fjop?%>)Á;þ*xÿ â_ÄZü[¶Óü	âkŸˆšf“à°ú´pÇá�xc]ñ^‘ý¢ÑH"—XÓh/ë~,’uýÑð÷ØìÔãbÈ·ZýŠ¼^ŸmgÏëzÅ�ÍÇ�|ñKQø¬.ì´}.Ã^ð¥ýŽ­>Ÿ£xwDŽÞKe76ŠøÅó•šôÈå˜€y×üëö±žÅí'¤iÓÇ~*ñ^‹ k¾$Ò´i~%xûáà±ñ%û[Ar³Üh7^>’ÒãD±gÎ…áïXAË™K{ðÀßÚ¯ÁVß<?ã/ê¾9Ñþ)iØ¾kj—p|1š;e³…Šø‚[‹´²žÌ––R$ –Ão;€Žxö:ý³¼®kº�†~!|>øeg«é^	ð=Æ…àKÿ [xb}7Âz—ÃýRoŠqi’NòŸˆZ½—…üIáH_ ¹ðþ¹¦BÈ|�E¤ Š?ÙGöçð>�ªø”~ÑÞ9ñï‹4½O¶ð?‡"ñ§‰?±î|e7‹î®õ=KÅPOrmo¼=sáë„€Åt²=‘·Š1ò‚±üSý�þ>x‹Äúf¯à_‰Þ³Ö�ÃÏ‡Þ?üg¥\xŸÇžñ€<9ãë�GÃ¿kó-`_ë~,Òõkûè#„Ré·í$„ÜÀÎ§ýŒ?mY|-í?k�iþ1‰n­¬µ	|_â{‹]6ÿ WžúîÞæÑ.:…ìv�§ßÎKÔ,%1@ÿ ÃþÚ?Ø:±ýª|U6µoãïë•ôþ7ñ€�<¤Éyss ‹8nÖÊæKÈ¯®ôËÙŒ~eÖÝ*MÂÚÉÒ€)ü.ý‰?kÏMðÏB×?i_7ƒ<'gàý7ÅPhž;ñÔ¾ Ò¼?áÝ?K¾ÓìRkóœ÷ºÝ�Ö½=ê�=âjÖåÉ�Ã ~À¢ìD@Y‚*®çbîÛ@v<³e˜òNIäÐ¨  €
 (  €
 (†¥ÿ éÿ _6¿ú=)®¾‚ªüÑ~�ÎO^ÿ �ë1ë}~ùïéê+j½Wå¹•M×£4ôàÞpqÓòÏãúõç­L¶)tõCïùSéÉõãðôã?_nwþ¿­†íÀòßÿ ©Ÿ�ùc(úuüûŽƒô¯OüUþ	œ¸�‡þß‰æõëœ�@  P@  P@e®|VðÞ�©Üé7VÚ½ÅÍ£æ{Kk7…_ ”=ý»’>^Þx'šê†¥H©§ž×nÿ „Yœ«F-¦›k²_«FGü.ÿ 
Ð?Ä?ø	¦ÿ òÚ«êUšŸß/þ@ŸoÒû—ù‡ü.ÿ 
Ð?Ä?ø	¦ÿ òÚ�©Uþj|¿ù öðí/¹˜Âïð§ýüCÿ €šoÿ -¨ú•_æ§÷Ëÿ �oÒû—ù‡ü.ÿ 
Ð?Ä?ø	¦ÿ òÚ�©Uþj|¿ù öðí/¹™{MøÃá}NþÓOŠÓ[‚[Éã·ŠK‹[!’W	s£<€`2±63“€	
X:±‹“pi&Ýœ¯eë¿ªÑm+K]6_æzµr…  P@  P@  P@  P@  P@  P@  P@ ›{÷[ëý*ã¿È�óÿ 3wáw>6¶9ÿ —Kþ?íÝ¿Ö¼ÜÓýÞõö?úLÎœ/ñ_ý{úR>š»ºû2©	¼±àg øñ©Óç¾¶Hí©SÙÛKßÎß£(j·üñ_ûìÿ ñ5¯Õ×ó?¹}cûŸù7ü þÕoùä¿÷Ùÿ âhúºþg÷ úÇ÷?òoøýªßóÉï³ÿ ÄÑìó?¹ÖòäßðûU¿ç’ÿ ßgÿ ‰£êëùŸÜƒëÜÿ É¿àö«Ï%ÿ ¾Ïÿ GÕ×ó?¹Ö?¹ÿ “Àícÿ <—þû?üMÁ3û�}aÿ 'þMÿ  ?µ[þy/ýöøš>®¿™ýÈ>±ýÏü›þ k7üò_ûìÿ ñ4{üÏîAõ‡üŸ�ü þÕoùâ¿÷Ùÿ âhöùŸÜƒëù?òoø›[ÿ ´Iå˜Âü¤‚=1Áàv5�J\‘ºwÔ¸Uçvå¶—Þþ]‘ÿ �Üö
›ÿ Jà¬M‹Z‡üx^ÿ ×¥Ïþ‰zìÈ§¼ƒNÒæÔ.˜¥­†Ÿ%åËª—e‚ÖÜÏ3*/ÌÅcF!G,F&®�9U©
PW�IÆœíyNJ1Wé«Z“)(AÎ_bäý"®ÿ ~ø‹þ.ýˆü?âsA_ þÑZ¸Ñu}GIþÕÓ<!ðøiÚ—ö}ÜÖ†úÀjloþÇta3Û}¶ÊÎëÉtûE­¼»¢OèÌ/Ñƒ�ñ8l>%æ\/A×£J·±«�Ì½­/kÏÙÕöyMJ~ÒÜ³öu'dùg(ÚOó*¾,på*µ)¬6kSÙÎpö�¡…äŸ$œy£ÍŒŒ¹ekÇš1•š¼SÐÆÿ ˆ‘b_ú&´Çþÿ ùíÖÿ ñ+<}ÿ C~ÿ ÂÜ×ÿ œÆñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÐÿ ˆ‘b_ú&´Çþÿ ùíÑÿ ³Çßô7áOü-ÍùÌñøwþ€ó�ü„ÿ æÓéÿ Ùþ7û,þÙ_´ï‚</ñ�Ã/Õô­OUÒ®<yáÏ	Xh·£I�'º²K¿xçÄ×Q^vi¡ØÅlëŠ×)'—Ÿ%Æ¾qäu3üÏ‘ã0TkR£Z9v+R½?lÜaQÃ—á`áÌ”_-G$Ú|­]¯g"ñ%â|2ì-}õ!9Áâ©Q�9r$ÜT©b+5+]«Å'g­ìŸëÿ Ü¶ÿ ¯ë?ý(Jü]uô>åî¾eêC3ô¯ùÚÿ ×?ý™©½Àçäø�à˜$²ŠëÄú=“êSêÖ¶P»M>;»­UmU¶‚[ß"'¹´ÕQìÌüÙdGhXÕœ *j>iK§É¨xçÂ¶Ñê·)g§LúæžÐÝÜIt¶B8¦Žwˆí»u·‘ÙÄpÈÁed _ð°¼ö[«Óâÿ ¥­•å¥…ä²jöQ‹KËýIô}>•’exÿ R�í,ª©{"æÙ¥L= )øƒà\Ú¬~0ðÝÃ_M‰g¬Ø^Éq$ò£òã´žw1™V›o“Ì‘ $ :Ëâ�5;ÍFÇÆ~º±Ó ‚ëQ»‡_Òž>Úéü»[‹ùÖÛ(ndù ’äÄ“?ËcÅ 4üCðùÁ¼sàõ6Ò4W ø›ED©!…â›7¿º‘%&GÚË (@aŠ uŸ�ü¨ÛÜÝØøËÂ×VÖpMuy<:þ–ñÚZÛÞ¾›5ÕÓ¬[ÛG¨FöMq6È~Ò¦þgË@÷�ü¦[Cy¨xËÂÖv·*ím=Æ¿¥EÒÇ!†ClÍtÀŽUhßÉß±Õ•°T€üJøuC$ž>ð\ipòGIâ�14�Ç³G{åß$1O’Æ¹xÒh™Â‰�Ÿx:Îî[ÏxjÖúÝ£Iì®uÝ.¸^TD’ÛËt³FÒÆD‘«¢—BASš ÄoŠßWO×õOøN|1%‡…ìµ]K^žbÎàiú~‡`ºž¯|ñÁ,’Íi§Ø:Ü\\[G4H¹MÆEd `ø‹à;«in­|_áû¸íÐ=Ävz¥¥ÝÝ¸/dOco$·°¼oq
Í¶é$Eó–: ÍÓþ.|1ÔäºŠÓÇ~ó, ¸ººK­VÛOhm­%Ôáº�† ößºµmTk—\¬ÙKq)K}²°I>4ü+�TmxßDžî+“gu%œ³_i¶"Ö;ß'TÖ¬¡ŸFÒ›ìÒ£ƒ¨ßÚ©$Æ	•Y úüDø~Ê¬¾9ðs+¬ÎŒ¾&ÑJº[ÅçNêEî`„‰fa‘GÌr©Í Pºø©ðêÆêöÎïÆ,uæ�ax²]a!¹ñ–ºÖŠ<à¦"Ôt¦Ö÷1Hö­ rÓ+Fê ôïˆ~ÕïSMÒ¼má=GP–H¢†ÎÇÄ:MÕÌòL’IvðÃvïpïRº¬"FÛœaM VÑ¾&x^Šyì<Id‘[ÚÇ¨3ê‘ÝhBm.eVƒZ²å¾œÚ†…r~Ë®Ø�"è’-ïd €­cã/ê’ˆ4ßøoQ�£µ•a±×t»¹Z+éÅ­”¢;{©ÇytEµ«�¶âr!„¼Ÿ- t”CRÿ �tÿ ¯›_ý”×_A?Õ~h¿Hg'¯Çõ¡çýCc~ùçéëŽkj½C)î½§§rFG8'=ùÁÿ õþýGß}Öôù¹ëŒ~>½è[üŠ{ÿ ^G–x‡>Lü“û™sùŸÂ½L¿ø¿öäÎ\GÃÿ oDóŠõŽ@ €
 (  €
 (  ßøsR�®¯ôM6òåñ¾{‹H¥‘±Ó.ÊI­#V¤U£9%Ù;"\"õqMúÿ áðýZ7þ Aÿ ÄU{zßóòøgå_pÂàÿ ú´oü ƒÿ ˆ£ÛÖÿ Ÿ“ÿ À˜{8*ûƒþ�ÿ Ðµ£àüEÞ·üüŸþÃÙÃùWÜð„x?þ…­ÿ   ÿ â(öõ¿çäÿ ð&ÎÊ¾â{oø^Îxîmt*ÞâÑYB’Fã£#Ê°ìG"“­VI§RM=Ól9 ¾ÊûŽŽ²((  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  Ûßºß_éWþDšýMß…ßò;[r?ãÒû§ý{µyÙ§û¼?ëêÿ ÒfuaŠÿ ëÛÿ Ò‘ôv©Ò/©¯#ö¾Fø�ãóýÎïÚÄ_´n‘ñ^+O…–¾/Ôô[ßÎ4ÈtÍ
æOizÔZ‹®f½×µ-âÖò	µ+oÄ-a�ûZŸ²Ag4vú•ÚËúoaxb¾Sí3z˜:5áŒ^ÕÕÄEbkPxŒc=+sSœhÏ.y?c()Êqr¥¾G4­šÃÉƒ�iÁÑn´¤éB¢¥^MÔžÒ‹’¥/yK•E¥6ž(øåû`[j^!Óeø1ãxwûbÖÒâ-\ŽÏÅékag§ëV7ír`Oí½VîíÎž xt½8Ü&×�³oý�Á’§†«íÁb]	MKAÏ	í½¥J”*SPæoF^ÓiV«ÊôVSý£�©U‹À©:\ê6¥Q*Üœ±�HÉÊÉT›o—u_}÷<Sñ#ö¯Ö~x?\ðÿ ÃK­Æ¶~1ºñGŠü=m„^øÀvIs©øj'Ô¬Ú·ŽõëvÓ´kXJ\ÝèWbh$Žå®L¯„(f˜Ü>'5†#<0˜<L�ýža˜ÍÆŽ)û;%G.ÃÉUÄJW„+ÁÆIÅ¢ëbóš˜Z5)á:ñ¯*Õ©%ña°ÑNt—>óÄÔN4ÒÕÂI§tÏfý›õ‹¾‘ã	>+Úê¶·�ëš*hT³6núdžðì×í?ëu÷ÕRVä¬âT?tW‡Årz5ðk'�)Ó•
ïìªs¥Ucq1¦ŸgõuFË¬lÎüªxÙÓ¬ñ±’š©OÙóÇ–ðt)9ZÛ¯hç¯{£éùsÕÇù…  P@´ïøúî7jÊ·ÀýQ­�zü†ãÿ °TßúWq�¥­Cþ</ëÒçÿ D½ öfŠ¿äJñ'ýŠÚÇþšn+¯þýƒÿ °¼?þž�Ž#ýÞ·ýy©ÿ ¤Hÿ ,ÏÈÓâ_ûë?úq¹¯õó	þé…ÿ °z?ún'ñuoãUÿ ¯µ?ô¶sõÐd P@  PÞ_fßƒŸþéúö·ñ2/
øçZñ�Ï†n.õ[K¶ð÷‚cÿ „‹áî�áû�wM™S¹‡Äö¾,ñ-Ý´°;oÎ�<8¹ÝùÇñV}“ç•0Øl¥ã2êbã
tjË˜?ªæuñQÃV‹ö0–x,$'%eŽ‹’—¹o§ËrŒ¿—Æ­\b£‰©ˆ•å8F–{\%:N¬çj´k×”m{¼;I­oÕCûü=¸k¸`ý£|"×–:Î§q§Kjmï%�O×/´[m.ÐI7—6³7ØšúHwû#+§ßZæ|™ÅBRálj…Z”)Bª¨¥M:¸zX‰V›Q¼hGÚ*jO^}Æ¿êîó¥›Pæ„jNPjÒj%MB)»:�—šÛrí¹4?±ÃXtïëWŸ´/†oôï	éÞ!–ÚX¶‡Vñ½¦|9ƒÅÚf�§Z^;•‹QÖµ�HŽGÎ¶úì2ÝÛDËŸüDÚu°hpÆ.•lm\7<ësÊ†W4©‚«V¥H$›¥Cˆ¬Ò·+žRNw¥ÃxEMWšÑœ(B¯*…”êÔŽ8ˆB1–«ž¥JpWÝF­µZ|£ûA|!Ò>
øìø?FñÎ•ãûeÓà»moG‰’ÉžG‘?q!wYíîòÒd#6ÓÄ÷��}Ÿçuóü¹c«åõ²Ùº’‡Õë»ÔI$ýådá(6éÎ/íÆVÒÇ‡š`!—bžž&¨¨©{JkÝwìúÅ¯z/¬Zº¹áuô'š P@  Pëïü¿þR1ðŸþÀ>7ÿ Ó•øŸÒþM~sÿ aýHGÝøoÿ %fþ½âôÓ?¿ÿ ¹mÿ _ÖúP•þn®¾‡õÝ|ËÔ†gé_òµÿ ®û3S{�à^2ø#ð‹ZÃx¯S¼H&×/.tÈ§ñ,¶°éºž¯y©jšÅ¶’<åM¬Þj7“ßÃÓ;Ñ�+¤pü,ø¡è¾·Ù[hÚN©6«¥ÜË­§Ù./é/çJÒ¸òç…dxÙ²›2@# žÒ~~Ïz~‹ãÿ 	XëîÚd¶vwž4³“Ä÷LÖÞÔ‡ˆ^úy^LÀl¥hÚúáX˜¬¤Ž)JÅ2n ÙÒ¾ü°×F·²÷:¦…¬[ø’å¯|RÓG©bÞîâ)g¢\éŽ<¸×lfÝƒ( ß>xGñ%üºµýž�¨µš^ÞNmôÉíµO_Û­‹Ç#-´Í{á¿¡…iVÕa(VæPà’þÎÿ µä:ìwwÅ«Io~uoÈ‚ñˆÂ±¸ðÜ®krvLsæ)bÂ€5t?Ùßà÷‡-õy´¶ž¨À�Ýj-®³Én"ñ‰âHÝ.ZB"Ù­hZ,…Y¶¶X™Ã Qÿ …ðsWº²ÕYÔõ'²¹ºº´y|[<â'Ôîf¿ºE9ÛÕÌòNÑð0U@ `ý—>\ºdÖõ"Ú~¡¦Au7ˆnî¶Xj3\Mqoenn¯%�ÐîŽIäÁÈ è<Kû<ü?ñ]ÅüÚ³x…¢Ô�÷ÚlíµëûkLj’	µ/*¤¼™DŽËÊœ¬{T‘@Ö²×Â{9üArl5k«�xwPð¾«-Þ¯w;É¥j>¼ðœÑÀ]�Ùä]þîÍ%‹¾qÌŠ¤ tºÀ_‡þ>'6vÚœ¿ð–h£ÃÚ�Úõ;‹ƒ‘<p[iåÉû·VTÐí�<q>âÈ r~ÉŸž­ÿ ³µ„ŠêÙlï„zÝòûX­ô˜ †ñ•Á�aŸF³¿@ùÿ Nk™ÎZæ]ÀÚGìËðŸH»º½]ïPž}¢Ýµ[ùïÿ ³->ÓK�4±9o±ù66pÀ�œ�îÌ@2#ý“>ÂÑ¼n©Š;èq­th/Ãù°\®í·0‰$y9ARNÖx ú¿ìÍð³]¸{½VÃT½»—OÓtë‹‰µ‹×’î=#Ãú_†´û‹¼¾./-tÝ*/*ê@eK››ë•a-Ü¤€E¢~Ì_ü?¨èŽ™k¬@þ½Óu-6ßû^èÚ‹í*ö;ûk™áÈY¥3D‰+¾L°o…óŒ¤¤ÿ ²ïÃË³:Þê0¼¶}?ZÛOâmE£Ó¼/¥¥¥¿†¬�™º-ßìkuod?uä÷W\I�?þÎžðž±ámGÃÑ]XÛøfè^›F�§�Ä76šzß<€´�ØÏ<:”1çP°³¸Æøƒ ~ 
—ü{§ý|Úÿ èô¦ºú	þ«óEúC9=x‘gŽO�ãŸã8?ãê+j{?S*›¯FiéßÂqØ‘ŽÙ<rx'"¢[mó}÷XúƒÔŒàúúþ”-ÑOsË<BG“?¼2÷ïƒÔ}8ÿ µêe÷ö¿öäÿ ¯ëÐåÄ|/üq<â½c�(  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  ÛßºßSüªã¿É�ÿ SwáüŽÖÝ¿Ñ/ÿ ô�«ÍÍû<?ëêÿ Òftá?Šÿ ëÛÿ Ò‘ôÅå«\ªm`¥Oñgp	ð?…xÔê(^ê÷ìvU¦çkZë¿ü3(eÍýøÿ ï¦ÿ ãu¯·�g÷/ó1öï½ÿ ò!ý—/÷ãÿ ¾›ÿ �ÑíãÙýËüÃêóï½ÿ �¿Ùrÿ ~?ûé¿øÝÞ=ŸÜ¿Ì>¯>ñûßù	ý—7÷âüÛÿ ˆ{xö‡ù‡ÕçÞ?{ÿ  þË›ûñ~oÿ ÄQíãÙþæÂ]ã÷¿þD?²æþü_›ÿ ñ{xÿ +ü?Ì=„ûÇïäÙs~/Íÿ øŠ=¼{Kðÿ 0öï½ÿ ò!ý—7÷âüÛÿ ˆ£ÛÇ³ü?Ì=„»ÇïüˆeÍýø¿7ÿ â(öñí/ÃüÃØO¼~÷ÿ È–m,^	LŒÊ~R RIÉÇ\ªúTTª§$÷ëoø&”é8Jí­º_õHiÿ �Üö
›ÿ Jà¬ËZ‡üx^ÿ ×¥Ïþ‰zìÌý^Â]SÃz¦™F“ê:%í„-)e‰e¼°–Þ6‘•]„aäÊ£°PHV<ðÕ#GB´“q¥^•I%«q…HÉ¥v•ì´ÕkÔÎ¤\èÔ‚µçNqWÚò‹JþZŸÂÿ ‹à�ßðQI|UâYtß|8Õtéuýb[NÛâ—†­íõ95‡¶½†Eì¯áŠæI’+Û;[¨ÕÂOo¡‘ÐœÒ;Ã„Âª¸üÒ�U‡¢ªR–QŠ”©TTâ§NR¤ªS“„¯éÔœWŒ¤¬ÏæÚþñ[­YÃ„œZŽ3XÚ)J.nÒJ\²JJÍ)EI_Tž‡=ÿ 
ÿ ‚�ÿ Ñ;ø}ÿ ‡cÁßü›]?ñ1þÿ ÐÏ3ÿ Ã6;ÿ �3ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü�Ã‚¿à¤?ôNþáØðwÿ &Ñÿ áoýó?ü3c¿ù ÿ ˆaÅ¿ô„ÿ Âêü‘ú3ÿ °ÿ ‚E~Ù_³íàÿ �?¼;à�ø'Âú‰ ¹—OñÞ�âJòóV°û­µ�†�ö¶È.ÒË-Ì–Ð¢'Êîä%~_âÿ �|Å¼ŽÈr,NaŠÇã1YEUËëáiS§F§´œçR¿'d£)6Þ©%sêø/�3ü›>Ãæ9…,5,=
u“pÄÂ¬å)Ç–1Œiß»m¶’?«[ÿ ¹mÿ _ÖúP•ünºú·=×Ì½Hf~•ÿ  û_úçÿ ³57¸7ø‹öWð�‰u‹Ífÿ Å1’K¿ÃâÕÓçÔ`»Ñíµïn¯ž(´ë›wˆÚM<šy0»(éV­DÍ!(‹ÿ Ù§ÀZŸ†´ï
^\jí£iº¹Ö¢¶†[XUîd·’Þæ7AlÑˆ.Ä¥îU]Ø/Î1š e§ìßám7K×tû+éîn|Uá«ïx‹X×a¹Õµ­Vð‡†|#¬Åao§§èÚmöµ…ìµ]VüiW2_jMºxÞÞ¡ @ýŒ¼ áÄž-¼ûwØûê7°ÝµÃé‘G‹…Híá"$†;sÔW–ÆÁÉ!�¸ íôß€SéZ&· ÚxóQÚÏ�OÄ¼—G¶“PÒ|Giï`4¼Þÿ eÅ¤Z6Ü6}*á¤Ý,±]Û]y70 q‡öEÑîlmìµOˆ^/¾Ž;u[„…¡Óm®¯¥v›PÔþËa,Kmqq;´¶‘[:ZéÙÙ2¨Á ímgûtïé?Û÷ñXkrx<iñœ_GjžKY.'¼´¸X­®ÄWVñ>±j£Ê™­ º™¥•�OÙÃ‘jWZ’xïÆ»ç´†ÆÍÅš­¤«‡–10Ã5ö$1ÚÞÝÁ<¶vác@ò:€>†øàÛ xKIð•®£{ªÛiÍš‡•ö—Ž[™nÊUR±	|µf/+…ß,ŽìM vT P@  P@  P@5/ø÷Oúùµÿ ÑéMuôýWæ‹ô†rZñÅý§Ly“Î~ù}+j{KÔÊ{¯FiéÃ%O<g§óüGLg�z‰tõD—àín¼d}úý?�(ïò)ùZWâaœÿ Ózñü>œõçúã¥z¸âÿ Û“9qÿ <æ½c�(  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  ÛßºÏjµú27ûÿ 3sáwüŽÖßõéÿ ¤í^viþïúûý&gVø¯þ½ÿ íÈúš¼Ð>cø§ûQø'á'Ä�À^$¶¼{{ÿ 
x—Äš¶±f’Îty´�Sñ�¦½ªÅåË7ˆôïx¢;{¨ Ô4ëK,3ê” âô¯Ûwáµä>%º�¬îü5®øËH½Ž¯m ‡ÂšÇöwÚîîaº	Oo>�ysn»ÚÔÝ˜·Éå ©ðŸö‡ðWÅ½ZçÃú¾¹o«YZj÷s=þ•%ž™rºÇ‡­õQ¦Þ¼¯ö¯²?Št0ùHÉûYÛ‘P¾P@  P@ eùÇÿ `©¿ô®
 ¿sžÞxAÚf†Xƒc82# 8ã8Îqš ÌK�V4Xÿ ²Q¶(@ÃP„
†ÚbÈÎ3‚N=hÿ kÕè½¿æ#§?òË±ãõö íz¯ýÿ 0ÿ ñª >×ªÿ Ð!{ÿ ÌFÃþYwý( û^«ÿ @…ÿ ÁŒ?üj€íz¯ýÿ 0ûÿ Ó/§çí@	ö½Wþ�ÿ ƒ?øÕ kÕè½ÿ æ#áÿ ,»Ðö½Wþ�ÿ ƒ}?ë—á@Úõ_ú(ÿ ¸Œ?üj€µê¿ô_üÃÿ Æ¨ û^«ÿ @…ïÿ 1}±ÿ ,»óôÇ½ kÕè¿ø1ƒÿ �Pö½Wþ�ÿ ƒøÕ /ÚõOú/þ!õÿ ®^œÐ}¯Uçþ%íÿ yÿ ÈT ¿kÕè¿ø0‡ÿ �Pö½SŸø”/·üL!çÿ !P-{ÚõNâR¾ßñ0‡Ÿü…@Äû^«ÿ @…ÿ ÁŒ?üj€íz¯ýÿ 0ú×/^(„êoMb–±$ñLò}®9Ïî\H""œ¹]¹ÎsM;_Ì]Q±Hf»êv�ÇlºjL±‚Q}{Æâwl1±^BÄÓµê¿ô^ÿ ó‡ðÿ –]ÿ J@kÕè½ÿ æ#áÿ ,»Ðö½Wþ�ïÿ }ÿ é—Óóö û^«ÿ @…ÿ ÁŒ?üj€íz¯ý¿üÄaü?å—ÓÞ€íz¯ýÿ 0ú×/Â€íz§ýWÿ ÿ ñ®Ô ŸkÕè½?è#_Oõ_­ kÕè½ÿ æ#¶?å—~~˜ íz¯ýÿ 0ÿ ñª >×ªÿ Ð!{ÌFÇþYvýh û^«ÿ @…ÿ ÁŒ>¿õËÓŸÒ€µê¼ÿ Ä¡}¿âc=é—ùÍ kÕè¿ø1‡ÿ �Pö½Wþ�Ûþb0þ?òË·ë@Úõ_ú/þaÿ ãT }¯Uÿ  Bõÿ  Œ==ÕPöµê¿ô^ßó‡ÓŸùeØñï@Úõ_ú/þaÿ ãT ¿kÕè½ÿ æ#áÿ ,»þ”ÈŠFÔ®ü¨¤ÓÒÚ?>	SyÛR)Û¨¤± �ÎÁ<S»ü5ôÔÚ¤3’×¿ãþÓÓÈo¯úÂ?¯ÿ ª¶§³õ2©ºôf¦�ž9ãž? }=;Z‰~¨uñNÚ?‰¿ŸN¤g¦(Š×äSõëý?ÐòÏ©ŸÚ<ÿ ‡ò¯Sü_ûrg.#áÿ ·âyÍzÇ P@  P@  PÄ=ý¡üuá¯x›Ãš|~6F¥%¥©¹°¸’äÆ©6EÔ"W|¹äFƒ§üåÅ~*qNKÄy¾Uƒ£•Ë‚ÅÊ…	VÂV�W;ÎqÅB2w“»PKÈý·‡ü?áìÏ%ËsU\tq¬<jÕTñ4¡MMÊI¨ÆXy8«EhäÌˆ¿ioºå£ðÐ#þ¡÷ c±ê_×¯á_?ÿ ŸŒ¿çÆOòÀâ?ù°õß†<1ÿ ?³Ø]þfß´§�Td�¨õk)€üÎ¦/øŒüdôT2�ü!Äó`—†<0ÿ åöcÿ …t?ù˜pý¦¼` gð’zî…“÷Ö«ëVüdãOúÊßóˆÿ æÁ?ø]ËüÇÿ (ó1RÚ¿WµÏÚuÏ[ã¯�<cë¿X\U¯xÞV¶+wÚÙ~%ßîÅ™KÃž�Å‰Ì»ã(%~×ú±Í_~Ý>ÒŽÍSâoÁý>Q�Éwâ&Ý†3œ‰uåÇJè‡Šü?ƒ-ÀIwŽWŒ–(ç— ðto|~-zãðß—Õ®c\ÁE¾Ø®o~6üƒxŸèäß;5×é]ñ;ÄIZÙN_ú•c?ù¨Éð?-óJÿ º†õÃ˜‡üà—KyñëàÆ’¶º²_¹ìÇc}s#ÀT×D|Eñ"m%”`îûåx¥ùã¥ÁÜw™bÚ]±Ôå†<›_ÿ ‚ÓþÌZl|TÐµ™q‰à¿ß‡#²Î,Øç×ÎÇ½uÓãŸfõË2¸.óÂT‡Ë\vç<¸c€ÕíŽÌen‘¯	?ÃÏ’~:Á}m¬|5seû?ø^Û]ñŒîc¶Ö|máûý?ÃZt[	M§ÛjMªê²´»#[2tÈü³$­x¬‘Ã7µ�âÞ:•E,Â9-YBŽ¬êË]“úâŒ4¾¶“Ù[v¼¼gðœ`þ¥,Ò¥GuRµ8Â>m}Y9kÒë×¿ç6±ÿ çÿ ‚–irÃt—³=Í„’2Ô|ñ„sC?ÒÛâ¹óŽO²'¨Bx¯©¡Å˜ê°—5:
QÛÜ–¾vçuþgÎUÈ°ñ’ä©VQ{¶Ò·þK®�~ãé…ð\ßÛâŒqø=4ß�Þø¡s/…aÔ|'­Ëá?ˆú’•#ÃZ¬þ1´mÆw¡Ö=ÃÚäPÚø†èehúÍæ¿q§éõþ²fsþ°�¥yS•	©%Ý?o¯Ü'ÁSIÕUìÚ\ñ©]î§sŠÔàºðP7R¼°¼ð×Á+´éæ³Ô,î¾x–;»Kˆ]£s"ËãÈ¿ÕH
ËpÊSvk'ÅYš‹ýÞÉ=•)ÛÍ?Þ»?=}–C‚•š•~[<]ý%�UðÏüŸöÕñç‚u¡á½3à…�Ä¿hÍâm[C¾ðV¿qiñÁÂú+mKÄž�þ[k‹}SÂ{bþ'ðx¦¡€o<agys£é"þÄë^a:|ôá‡¼ZU éIµæŸµZ|®Ÿ‘"ÁªžÎN²½ù%Î”eo³ü=µ¾«¦ì¥àø-ßí�¯x§ÃÚw‰­þèú±5Ö…©ê­à�~øGµ{Å1èÚ­Ø?N‚ôEmyh‹¸k¸š;Ø|·•>,Í'9Òk	Îÿ „ýŒÔ[Jí;Õ{ô×É£Z™çOâµ’ö‘½¯k§ì’Óævÿ ¿à´¿µ[þÑ~øyñËEøKcðú÷Å÷ñ…æƒáMcKÕ4Rêk�#KÕÿ ´®<WªY�&Ó]û Ô‹[ûË:Î¡3^~eÆyå&¦/­Qƒ©TÃÔœ&¡­HYW„¹¹nãÝ«[S³ÃyeL]b^+êÕd¡)B´!(9é	s:R\©üWIÙÞúÐ¤üI(VDÒ™]C+Y°T€Aé] ×ç?ñ8²í:YNŸõ_ÿ šÏºÿ ˆkÃÉ&êf6õGÿ ™‹Ñ|Qñçri£Ûì²ûÓÇ½?ø‹üWÿ >òŸü#­ÿ Ífsðã‡âìªf;ÐM/þf/§Ä�y”ºám/ ÿ ¦õ¯üEÎ*ÿ ŸyOþÖÿ æ²?âdÏ˜áM/þg&_ˆšë‡·ú<œúÿ Ëzñ8«þ}å?øI_ÿ šÉ~ä+íæøQKÿ ™ÉÇ�õÒFÃŸúw“ÿ ’*—‹|Rÿ åÖSÿ „•ÿ ù¬‡áîB¾Þaÿ …¿ùœ²¾9ÖÛølyéˆ$ÿ ãõ_ñx§þ}å?øI[ÿ šÅÿ û!þ|Ãÿ 
)ó9 ñ®¹ýÛ!ÿ lÿ �Õÿ ÄXâ�ù÷•á%oþjüCì‡ùóü(¥ÿ Ìã¿á5Ö{-Ÿýøþ=Bñ_Šü»Ê¿ð’·ÿ 5ðû"é<þSÿ åÿ Âi¬ÿ vÏþü?ÿ ªÿ ˆ­Äÿ óï*ÿ ÂJßüÔñ²/çÇÿ áE?þPZ_êÅA+iÏý1þ;Wÿ W‰¿çÞWÿ „µ¿ù¨ÁðF›\øíßüÄSÿ åÇ‹u\gm§\©þ;Uø™¿áåøK[ÿ š‰ÿ Q2KüXí¿çý?þPL<U©ç‘m�úäßüpÖŸñ¸—þ}åøK[ÿ šƒýDÉ?Ÿÿ ƒéÿ ò€ÿ „«RÎ1mÿ ~›ðÿ –”¿â)q/üûÊÿ ð–·ÿ 5ø%OâÇ[þ¿Óÿ åÿ ÂS©wß÷é¿øå5â—Ï¬³ÿ 	kóP¿Ô|“ù±ßø>Ÿÿ (<SŽE¿ýúoþ9Uÿ Cˆÿ çÞYÿ „µ¿ù¤_ê6Iüøåÿ qéÿ ò�‡Å:�ímÿ ~›ÿ ŽT¿x‘Ë¼¯ÿ 	kóP¨Ù/IcŸýÇ§ÿ ÊÂW©sÅ·ýùþ;Kþ"Ÿÿ Ï¼¯ÿ 	kóPÿ Ô\›ù±¿ø>Ÿÿ )4ô]~þÿ PŽÚq ‰’V>\l­”BËÉ‘¸Ï^;u¯§àî:Î³ÜòŽ]�†aêQÄÔ“¡B¥:œÔ©9ÆÒ•zŠ×Zûº®¨ñ8�…²Ì«+«ŒÂËêÂ¥%V¬'TšŒ®•(»Ùéï­~À~t PmïÝ?Süªã«ùþfïÂÿ ù­¿ëÒÿ ÿ IÛüû×›š»Ãþ¾Çÿ I™Ó…þ+ÿ ¯oÿ JGÔµàž‰ÎjÞð®¿¡·áÝV‹VŽÒM5:Öíoá°k–²ŠìOùñÚ›Ë¿%$Ü±‹«•PyC cÙ|/øu¦ÁqmcàŸ[Awö“uZM˜[–¼1µÛÜf"f’é¡‰®$�³ÌÑ«HÌFhgHð�…ô	ÍÎ‰áý#J¸+x¦k{Y6ê`÷Ë¾$S¶í´½5®q)±µ/“
`¢ €
 (  €
 Ê?ò�þÁSé\ªN9<É'µ PþÔÓè!g×\ÂyüõéE˜®»¯¼?µtÏùÿ ³ÿ Àˆ¿ø¯Ö‹0ºî¾ðþÔÓçþÏÓþ>"ÿ â©ÙöauÝ}áý«¦ÏýŸ§ü|Eÿ ÅR³®ëïíM7þìý?ãâ/þ.�Ÿf]×ÞÚºgüÿ ÙúÇÄ_üU+>ÁuÝ}áý©¦ÿ ÏýŸ?ôñÿ EŸ`ºî¾ðþÕÓ?çþÏÿ "ÿ â¨³ì]×ÞÚšoüÿ Ùóÿ Oñtìû0ºî¾ðþÕÓçþÏÿ "ÿ â¿N´¬û×u÷‡ö¦›ÿ ?öøoø;>Ì.»¯¼?µtßùÿ ³õÿ �ˆ¿øªV}‚ëºûÃûWMÿ Ÿû?_øø‹ÿ Š¢Ï°]w_xjé¿óÿ gÓ?ññÿ EŸ`ºî¾ðþÕÓçþÏ¦ãâ/þ*‹>ÁuÝ}áý©¦ÿ ÏýŸþEÿ ÅóøQgØ.»¯¼?µtÏùÿ ³ÿ Àˆ¿øª,û×u÷‡ö¦›ÿ ?öøÿ Í;>Ì.»¯¼?µtÏùÿ ³ÿ Àˆ¿øªV}‚ëºûÃûSMÿ Ÿû?ü‹ÿ ‹§gÙ…×u÷‡ö®™ÿ ?öøÿ úÒ³®ëï$ŠþÆi(o-e•³¶4ž&‘¶©fÚ�‹6Õ›h8 “€(×rÝ Q:žœ¤ƒf
ðGÚbÈ=??PzŽÝè³×u÷‰ý«¦ÏýŸþEÿ ÅQf]×ÞÚšoüÿ Ùÿ àL]ÿ àtìû0ºî¾ðþÕÓ?çþÏÿ "ÿ â©Y…×u÷‡ö¦›ÿ ?öøÿ úÓ³ìÂëºûÃûWMÿ Ÿû?Oøø‹ÿ Š¥gØ.»¯¼?µ4ßùÿ ³ôÿ �ˆ¿øªv}˜]w_xjéŸóÿ géÿ ñT¬ÂëºûÃûSMÿ Ÿû?Oøø‹ÿ ‹§gÙ…×u÷‡ö®™ÿ ?ö~Ÿññÿ JÏ°]w_xji¿óÿ gÏý<Eÿ ÅÑgØ.»¯¼?µ4ßùÿ ³ÿ Àˆ»À©ÙöauÝ}áý©¦ÿ ÏýŸþEÿ ÅQgÙ…×u÷‡ö®›ÿ ?öøÿ úu¥gØ.»¯¼?µtßùÿ ³õÿ �ˆ¿øª,û×u÷‡ö®›ÿ ?ö~¿ññÿ EŸ`ºî¾ðþÕÓçþÏ×þ>"ÿ â¨³ì]×ÞÚšoüÿ ÙôÏü|Åÿ ÅÑgØ.»¯¼?µ4ßùÿ ³õÿ �ˆ¿øº,û×u÷‡ö¦›ÿ ?öøÿ NÏ³®ëïí]3þìÿ ð".ÿ ð*VauÝ}ã“QÓÝÕúÑ�Ø*"ÜÂYÙŽUCå™�@$ž‚‹0ºî¾òí9={þ?­=àaÓŸ¾O^�¿µµ?†^¿¡•M×£4ôÞ0  “ênGãþ5Økü‡_r§�ïuëÇ·AÁ§Ò…£ù_"žç–øƒ>Lÿ õÆ_NÙ×žÿ …z˜âÿ Û“þ¿—ðÿ ÛËúþ¿SÎ+Ö9€
 (  €
 (  €?…ø(§íOñÇÂ?·Oí5áø×UÓt]âUý–™iÎ±Û[&Ÿ¦²Ç PÒ1àu5øþ}Ãy>/8Çâká¡:Õk¹ÎoyJÑM¿¹¢åYÎeC.ÂQ¥‰œ)Ó¤£®‘»vþ¿Sâ¹?lÚAÐ«|Nñes�—s(ýšò—ä_ôNËÓü¿¯S®®y›¿ù‹ª´¶îßr9‹ÏÚ›ö‡¾R&ø¥âÂ§<&«x þ(®ˆpöK¦_CçþFÚÙœ�Þ.¶·ÚR×ñÓS�Œÿ 5É|«¿‰0›Ìà£ëšˆ1è'ÇzéŽS”Ás,6ÿ §PÛæŒ¥�Ì%¬±uÞ½g'òß©ÌÜø›Æ—7./|S¯Ý8c¸I«^ÉÎ;î›¿ãZÇ…Š÷0ôbº~î
ß‡âO·­%ïV¨ïÞr›êsú‰Ô]–Yï/e•˜’^âW$“ÎK1<Õ¨SJÑ„RòŠ·à‚íõ~šú—ìÐMhñÝK0”)ÛºFÉãþ�D•¬’¿õ¨]úŽ‚@®di'*Iù�	ô”ž¶]´*ÿ ×©±mnrm�€ÆzŸåYÉßw˜+ë­—õÿ sba@@ÛÆ:ÿ Ÿÿ ]a-ü�é+Ýonþf›‹g¶¸òØ2œn
Y0
’	Óœf�=Ö‹¿õ¹sŠqiïºG/¦[¤M5¾$
dy!»´’Hç¶¼¶hÚ›yâ!íî ÝÐËG†{xåBw¥)B¬gk%óë·ÞG,gI+¦µ_¯—“û™õgÅOˆ‘ü_Ð|ñRM;Mñ�æ‡?…>$Çc@Ú¯‹¼;øSñ5äJy¹ñp´ýÓ¸$×lä3fèÅò:°©hÔ¤¥(è’�µ·«×·c<?5§M¯áÎÑnÿ é[ËUèy�ãäð7‰~x®+´·:Œ<7¢j.„3AñÅÜ_<a9&U½ð·Œµëi#$!Y*@Åpàÿ Þ*A¯vP¬ßý¹Ju¦°KÉb"œ#+ÙÆPk]u’]=zþ¯x´YÚx†ê¬cV’ÌæuºY,q“æ�+i_Ÿyãˆqýý&¾%4í¶‹{ù[ä�çû9]éÊôîú}æ·�~!�µ\kúŽËrþÇG¸¿µGÌ‘êñiZtw¬À±o´>§×2±;üÒäÆ¹æ�jµ–Ž.¬Ò·ÂâßÉYßÐè¦½•(6Õâ¢í³M[§NÇö¯û3xúO‰ >øòiD×~(øqábþLî?Úº”×ªÇ$îK—•[' ƒšüK0£õl~.ƒJ*�z�^ŠoðÑXýS[ëJZÒta+ù¸¦}nÀŒã?Ë¯?•qßÞ^Ÿ£:tm‘—?þ®ƒµtÓÙ‘+k¢ê]F=;Š£œ�d ô§r\M gŽ½ý3××H:h_ÐWF–VìŒïÔZ¨õEª!½I¨úŠÑtô$°8#ëL‰¥Ë±h8ÛÀçßŸù\çÔeÐý4õZ�n5[â¶*ÞD€odsÎ)žD.¤zñøu¤íf8µ~‡Cá_ùCÿ \§ÿ Ñf¾çÃ?ù+0¿ö�ÿ Ó>K�¿äA_þ¿á¿ôê=N¿¥�Å€
 Í½û­þ{UÇr?ÌÝø]Ç�­ºÿ Ç�þ9ÿ §vÿ ?…y¹§û¼?ëìô™�8_â¿úöÿ ô¥þgÔµàž‰Âêÿ ü¡xŽÛÂZ·ˆ¬ì¼Au´Éa"\Ÿ&Ö¸K)o.R´°ŽíínRÙïg�&h%T$¡ W?|i¹¸ñŸ…£€EçyŸÛÚ[œ¶Þj„ºfxÄì°—PTHvŠ ²Þ6ðblÝâß¯™7Ùã^ÒÁ’ãr§�ƒíYyËº(‰A�³*…Ë @5´�_L×ô½?[ÑoíuM#U³·Ô4ÝFÊTžÒöÊê%šÚêÚd%%†h�d�Ôá•�  (  €
 ((ÿ Èn?ûMÿ ¥pP«ÿ øñ½ÿ ¯KŸýô	ìýÅå¥´LÛVffÂª¨@Y˜œ  É$ð&€KDs“xãÀöñ=ÅÇŒ<)-³É4Þ Ò"Š4¼‹PžÑÞG»TEºƒIÕf¶f O™¨Id³¹1ƒ°“xëÀ¶Ú]ž¹qã	Á¢ê2´ýboèñiwÒ¯ÞŠÏP{Å´º‘{¤;â€²ìtKwdñÚÌ—6­þÏ°Ê³BÑÞy°½ÌepÅn<Ëxä�<’ûáG•rŠXb¾««húŒÚž¹©iº6›n¸Ô5[Ë]:Æ Ç
f»»’x�<ò.O€²ìK§ßéÚµ�¾£¥ÞÙjZ}ÜbkKý>âË;¨‰ KounòA4d‚Æì¹g ÐÍ«ýÑù
Ë±…§ø›Ã¾£¨húWˆ4OWÒX®«¥éú¶Ÿ{¨éŒ
)]BÆÚâK›6$`‹˜£ È€òË�Ý«ýÑù
Ë±²ÁnžlòCa£O2WHÐ<²,Q&÷*»¤•Ò8×9yQAf �b]«è?!@Yv«è?!@X6¯÷Gä(.Áµ}ä(Õô� ,»Õô� ,»Õô� ,»Õô� ,»Õô� ,»Õô� ,»Õô� ,Q¾ -± /­0@�çÜ¨8¦ºú	î¾eúC3´µÙö¼õg°þóS{�—uâÿ ÙGq5ïŠ<5i¢I%Ü·ZÞ—o´pßÍ¥L÷Kr‹
Eª[Ï¦ÈÒXïàšÍˆ¸‰ãT+�øèÍâ1ã/	%ÒÙ6¼<C£ÿ c-ã¸‰mTûgØEÓJËÀgóK°@…ˆ—czKKº±µÔí¯ì.4ÛØíå²Ô º·šÆî+½‚ÖK[¸äh.#¹2F-Þ)fÞžYmÃ Xv¡}§i6W:–©ye¦éÖq4÷wú…ÄvV°'/5ÍÕÃÇ(å¤•Õ¹—b'WÑµûuMSÓ5­2àÈ-õ&ö×Q°œÃ#C(†òÎY­å1J�›$m’##a”€�-«ýÑù
Ë±…‰ü/>¹7†`ñƒ7‰-àk«�E«iòk�[(ŒµÄÚJ\ø Q4%¥{uŒ	cË~ñr†îÕô� ,»Ë$ñK<ïCË4Ò²GQF¥ä’YªG ,îÄ*¨,Ä Maà) €¤A AèA ,»µ}ä(Õþèü…eØ6¯ ü…`Ú¾ƒò—`Ú¾ƒòƒjúÈP]ƒjúÈP]ƒjúÈP]ƒjúÈP]ƒjúÈP]ŒýIWÈ�å]ZÀà‹„Áô×_A?Õ~hÑ¤3“×ãþÓÓÈý«j½L§ºôfžœ9˜ä�ïqÇ½:‰lRýG_}ÖÁõÉ9ôïÇqùžÔGWò°åý[hyoˆ?ÔÏ‘ÿ ,¥#°Ó½z˜âÿ Û“9qý¿ëð<â½c�(  €
 (  €
 (üö¿à§pHßðP�ÚªEàÂÒ¿è9?ñ-ÒŽJüã5Ó2Æ?ú|ÿ (Ÿi—¯ö<;ÿ §k_œ�‰RÍæ í'œ�óÖ¼—V+]nv5~Ÿä:8îhÉ@A8ÀqÚ´Œ®®‰Iùzæ>XåiK Ž:`�sþxª’r�´]‡w´’ïßúïÿ ËšúØÜK'�Ÿ0îþŸZ]¬ì(ôþ¶ïú�ÿ iý¢6f
ß)80¿‡oÖ§Dùm®þV4Ó§OÓÔ³o}²¢¸*Bí Ÿç½g>Ÿ¨Ô[M­lÿ à›©si&0w”ÉV#øIù�ãß=Gó®Yü]=Ë�6ÕÝ®E&¯+ yKñó2õúdgõ©-S—W÷_]òóÆ$Îv++1�òî'¾{~¦²œ]Ë§Fîïëúõ0ïüZ°º¶ò¡�Î8Ç™ý8ª§	=Ôsœom^�
z?‹Z6¸»†àÇ´²ËpîTEå$Lò4›˜*Æ‰w}»Usž>]'Mè·{Yj×G÷ýÌTåÛµ­«¿áßm~ò��<CâKýSº±ƒPÔ.¼{âKý[BÐì-înîÞÆî_&Á­,`ŽI]ïâ*¬1³0u'ñ2…%yÂ¥JRJ)Û[¹5k}Åaá:œòŒ[ufÜb“nÝ,–¿qî_fß‹_üo«øj;{_‡Þø?`þ>ø­ã�‰�wáoø2]$E&‹¥kú�å°0_É¨\Új’iiš‘‚Î-¶ù•óq9Ž-ÂÇ.jõ±òú®†<õëóéRt£¢qŒ.¹ïÊÔ´nèí£€¯Œ®é.XSÃ¯kŠ©Rñ…$µQ“µ®Ú¿.úkc“ý§<,ŸþéŸ¼!/Œ¼uðñµ)ôÝ?ÇÚÿ �µ?x?Æž0� ‡]’ÇÄ:¯‡4‡�Íu«j:>˜··Tv6ïfiW‰Xœ\¨âxÎG%…§Z5êQ¤ô½iRæ¥¾‘U$×_+ÌpßUÃ,LIá›å§Zp•(U›øyT­'÷i^þGæ/ƒ~.øËÅz•Ìþ ÔæÔ'¹¸—”�Òy®Ò�NÑŸ›©9$õôrËéB»‚�ºï×oóÿ ‡>~8¹·ïIÉ»-vþµÓ?Ðgþ	CâÉ¼Uû|»•Ë6Ÿc¬hDnßµ4Mj÷M…s“ÀŠÝp:€ è? âª>Ë=ÇAiyÆoþß„dúy³ö>©írŒ3nî*TÓéjrqõÙ¦ö®w§�þN�«çÔZhömfnÆà.Î+¢¶�È’ßæ\�Áà¯<ñíZÅÔž€þ´Èmért0ÁÀÏjwÍ�àsžžŸÒ·Miò1{¿Rlç¡éU°˜àH«Nâ·re=Ó5¢fm½WBd®¬<6:þZ‘ìïÕÓ2jÎÃXŒê¢ö`–·ìE�óùÕs®ÌÒþC”²ôcS)\–“è#³`œçüâ�Yžru¸TçýMÇSÿ LÏ5÷þÿ ÉY…ÿ °\oþ˜‘ò\mÿ "
ÿ õÿ ÿ §QëUý,~( PmïÝoóØUÇ“'¿¯ù›Ÿ¿äv¶çþ]/¿ô�«ÎÍ?Ýáÿ _cÿ ¤ÌèÂÿ ÿ ×·ÿ ¥#êjðDð¯|Ó¼q©ø¾í¼UâÇâ†tï
øÎÃGûÉ©iÚ2k‹¥½…õÕ½ÃéW07ˆušxá¸y3[µœÐ¬ôäRþÃÿ .¡»º¶±5Ýö§©=ÌºU¬Pºj3jmcah–­–’÷2ª�>6hü¨cWgqæP}öø[¤]K{ý§­ÝÜI¨ÚjBK�"\\ÙøÏIñ²Ü”œÜF—²ßigM–îÑ-Y´k©,<°‰¹À>©øyàË‡>ð‡€´©å¹Ó<áÝ#ÃZ}ÄÑÅóYèÖ0Ø[Ë<p…f’(¥ò•c2(ˆ¸PØÐ@  P@GþCqÿ Ø*oý+‚€-jñá{ÿ ^—?ú%è³i-ªE"‡ŽKu�Ñ†UÑã
ÊÃ¸e$Ül�ÈÝSþ	�¬ßøƒÆº’üS€é0×¾!ëØóZ]¼ZBÝê¨¿ôÝ9eŠæÖ+‡~ñ—Æ�)íÍ«Eq7‹ô­‰5½�ÐpFñ?ì�âãáÏ ü/ø}á}
ü5×üS¯6¿ñ–ÿ AÕ¼;âë¯éÏaªÜYh~±½ºÓî4é¦–ÿ I´¸ð¾�g‹¬�¾ù(Ä×þ	½ûB¡šÔ~Ñìlô[_	iÞ¼ƒ]ñå”öƒÂÿ |sðÆ×_¹ÒV[›3Y·¼ñŒ:ÚÚXÝ^Øj2èvs_J·N w‡ösøåÿ 
WÃ?u³ñN­àÿ iþ?µñ·ÄÃâÿ ‡^$ºÒµV×,üâK†OßxoÌÙ§<×Þ¹	�Ö×0„‘@<3Mý�?k›_ �§íá¯Y\_Ýx²úßÁz·�´µ­OÆÚ�ˆuøz$Òü9ðêóD¹]ÊæÐM«èÂîá­4çŽÂÔ\ zÏ‚c¿Žñ7Áµ—âÿ �<Sm¥x¶ïVø±âkÿ _\ÚxƒÁúT	&�áil/.m/dÕ.®Ç—u¨iÚ$VóAµåÄM#š âüoÿ úøÝ®Þøáü-ñŸDð…†¢Þ(�J¾¯áŸøæßÆ´Ï‰7üCñf•¢Ë®iWÞ¶¶—Ã¾“K»ñ<Z®•i¥Ø\G¡Y%Ìn ž'ÿ ‚}|ÔÊmöšñ5»I}¨_øŽ	|câëííFãÆÚ®¹¤êísoc|–7ðÝÎŸ¢A¦Xiöºnªm¤Kï.5Žf £®ÿ Á=>?júå…ÅÇÇßíM
ÖÛK»Ô¬oü[ñÒëOÄgÇ1Úêëhó[[é÷rÃàÛ6Ô´Ám{eo¤ÞÚEask3-àµ~ÎŸ±÷Æ/…ßtŸüFøÏwãMFµº�4øÆò×VÖŸBÓôy|[i«ùvÖ×ÚÕå”Úõî�ÜhÚ=åü¶ºkÜÃLà£” P@  P@  Pÿ ¹mÿ _ÖúP”×_A=×Ì½Hf~•ÿ  û_úçÿ ³57¸”_ÿ àšþ$ø‹ñ;âŒŸâÄvžñUçÄ-3Àâ-A4Ëo
xÇÁúž©ac©¢¤Ñ\jš_ÇŸx‹â]Æ¦#¦\ZYÂ‹yà€í5_ØóÅøe¢üøs¡éúì>|YÕüeñCPðëø_Ö¼!¨Yjš�†'ðÏ‡tó¬ÛéÚ“Y›@ÇÁ÷N&ß}u>^`äßðN�wÞ™,´­¿†t],>—áû_Ç.™i¬Þ|]ðgÅgo¢Ø;éÖÚ'‚WOñÎ�à‰­Ý&}ÄZFƒ©iÖöz*\8­x[öZøëáÏ‚ž(ø¯ø–ÿ Ç·Þ/ÕÛ^OxƒÅ)âOi2ÚÝµÜ.¯§ëSé^1ºÑu™6­¦Xi7ö¶Ù0[K<+¹À<ž?Ø/ö·};\†ËãÏ�þkwÞ!ñ'‡>\øÇCð‡„'Óü;ñkÃº…ðçO<e¤x•~!hZÏ�.%µÓ®-uï	E©é–ºŒ×Pýˆ¨Ò¿boÚÂ:_†môïŒÞ(Ö¼GªøÓÁºW‰µÓãÍsP°ð¯ÂtM;OñÎ—b5¹4‹�OW’æÊI¼1}�>£ºæFÔf·àÐßÄÿ Ø?âïŠ<uñÄø·£ø>ÇÄúî§âëzØ_XüAÔßX¶ðN™ð×^ñ®‡w©i^
m+ÂW–öºî‹¬Ý^Yvw_
Myi£ uÿ ñý¡Ç„áÒí?iÏË®;iQkW~7ñ¬CZÒ´‹U†×I—RƒNw°"à½ÜÚ¥žŒ.îš8á¸�¢’@€øÇþ	Ûû@x—Ã^ðÔ_´Mßú?…¾&é.×o|[ñ jšþ£ã?j>ÒÚk{@š}Õ•°¹Óu;™<½6}>÷I7:|:•ÌÑ€{OÂ¿Øßã…>4éŸ|añ’ãWðF“¨ëWãÀú‰<is±qy¨^êþ¨5‚Ú9¼;k{†¡Óí³§ßizU¦¡v­{q%½¸é%  P@  P@ CRÿ �tÿ ¯›_ý”×_A?Õ~h¿Hg%¯ÇýŸ§�çéóŸçýmOákÏô2©ºôfžœÚG¦sÏû8¶qŸ|`óQ-†‡ßµ²9Éü1éIoòþ®Sþ¿¯¸òíyD•QYÙ¢”*ª–f$  ’yéƒ^¦¥WV’Tç{ü·låÄ|6]gŽìßóåwÿ €ÓñêûJÏü
?æsrËù_ÜÃìßóåwÿ €Óñ{JÏü
?æ²þW÷0û÷üù]ÿ à4ßüEÒŸóÃÿ �ù‡,¿•ýÌ>Á}ÿ >Wø7ÿ G´§üðÿ À£þaË/ås°_Ï•ßþMÿ ÄQí)ÿ <?ð(ÿ ˜rËù_ÜÃìßóåwÿ €Óñ{JÏü
?æ²þW÷0û÷üù]ÿ à4ßüEÒŸóÃÿ �ù‡,¿•ýÌ>Á}ÿ >Wø7ÿ G´§üðÿ À£þaË/ås°_Ï•ßþMÿ ÄQí)ÿ <?ð(ÿ ˜rËù_ÜÃìßóåwÿ €Óñ{JÏü
?æ²þW÷3üí¿à¨ºïöüCö±¶˜24ïÑ‘Ô«)f–pÊØ#¯qšüë5\ÙŽ-­bê½V©èº£ìpKA=Ô>çv|qãT/²@ G©Îqžõä:.ÖI¿[¼ñ¿õù�â€Ó’ÒÈ\X9þµÑJ*Öh^Ñ'ÓÑhgÜø‹Ìaæ»îäŽ3òŒsž¹Í_,µÐÆrwÒÍX¢úØ~UŽïE¥ØJ[i×ÏúòÔt:ÍÂ…	ó&Nsß=¿úÿ ä¥BNWòÛçýHÙÎ=íýyšvš”¤–f*FH�¯§â7‡nßçý^`«(ìýoþ^eéu2S‹�˜ŒmÀàÉÉ''“XK	«mµ¶ÞˆÖ8ŽšmÛ®å‹[Mo[hí´}3ZÔfÜ ‡LÓ/o™Øœ-á�“è>¾•”þ­BîµzPIkÏ8­½]ö:)*õt…)O¦‘—ùXúsá—ì9ûT|V–;�|ñSÛH£þ&ZÚC¢Y 'hg7óEp?Ü·n{W…�â<‡¤êcé9%+Ô“ëk%oÇCÖÃäÙž%Ç“4�ï)Ú1_{¹ö—‡?à‹Ÿ¦ÑïüSñƒâƒ~xwJÓîu]ZKî<Yi§ÙÂn.˜Ä“iq,É
>ÕÌ£xð*qöN4rülUj“P¦¥/gÊO•toWúž¬xRºN®.¼(RŠæ›Šæi%~¶óÔ½û9Á(ì¿hŸé:Œ#Åþý–tÛØîïüOâ¹m-<sñê¦ˆÉk¤èúgÙ×Áþ½hås%Åö±ªZíqsoo8·YÌx¾¦_J§µö53)'B�3£ƒv—Ç9]Ôª´½¹c¥´»¼GV2„êC	s9Í¯i‰IôQIFVž­«=�Ôÿ ~Î~×¾=xwöVøIüøuá†~1øŸuð¶ÂËÂ~+ñ…¥æ¡&‘£øNûÆlþ"�JžÎ$šù,õZçÌ)sæÇ…¯˜Ãæ•)åõsÌrXüU|\°øXbœªP ÔyçV[äçMû¼É¥Ø÷êàiÕÆ,¶‡6…<4kU�¡R¯3äPr³—+¶¶iïf�Dý¦þ|9øCðWàÀ¿‡ÞÒü7ðçÇµÁÿ ø»B¶‡1x�EkÝoÅ×pkÍu%öµáÍ:êî[™žK“†fkye‰ùò¬Ï˜f8ìf'R¥l6OŽ«‡røhµÅ{«FŒšVKsLv
†	‚ÂÑ¦£Jy†5{ÔÖNó{É¹EI½ÝµÜø3þ)Ð-ÛöÒî`¶†4øvHâŒ"[ÅvÑÛ¢TcŒ$*¡   »¼<“—ÍJMóÐ¨Þº·®÷ëÔããzqY2KhU§o-ºÅßÃ�H¼‰Â�ÏåJ¤�@qƒ“Ô~¯ßí£ë~ß×cñþd­ª[[úù}Öõ?¿_ø"Mã]~Ãþ�Ù�Ø¼Yã“’›õ‰ç#Ûæ�œ{×óÇCÙñ+Î4¿ô„®~ÇÂSÉè[ìÔ¬¾ù·úÿ ZŸ²öüõçòý+ä¢î}?Wýu5Ð‚0?¯õ­ëÔ™uô/EòóëÖ·9KjØäsé@š¹`I‘Óõÿ ëS'beœ�£ŸQŽŸ�øÿ *»µ»ìiFû‡=Ïùé[ÅÜD•¢b¤}:ƒíÖ…=+É–U'��§_é[)\V¼{þŸãT"el(ÆßÎ‘„Õäþ_�ÜÐ!›××ô?á@õõýøP3ùúÐEàøä›^‚8£y\ÁrBÆŒî@‰³…PN äñ_}á£KŠð­´—Õqº·eü	w>O�“y{+þÿ ·ý}G±}‚ûþ|®ÿ ðoþ"¿¥}¥?ç‡þó?å—ò¿¹‡Ø/¿çÊïÿ ¦ÿ â(ö”ÿ žøÌ9eü¯îaöïùò»ÿ Ài¿øŠ=¥?ç‡þóY+û™›{aµ¿Ð®ÿ ðoO÷*£R�ÿ ‰ŸÚ_æCŒ¿•ïÙ›­î!ñ¥«Mñk| Ë¢“ög8Ë(àsŽ{WŸ™Ê.„m(¿Þ­šfgF?jû{7ÓûË©ôýxG  P@  P@  PQÿ �Üö
›ÿ Jà Z‡üx^ÿ ×¥Ïþ‰zìÇ,©šÍ!ÂEl%rHHâÜÄø ñ@–ËÐàWâ×Ãÿ 6Þ�YÙIw XøšÝoK[ùº> úÜpÝ.àxGðö¦³ƒ�E’^âpe;Ï�_lnô»9üY`dÖtÉµ�>HÖâKY´è³Ýµ„ÛÆœ`y’+Ë„_š€4â·Ãö±µÔO‰¬Òîþ.)Ošê5)ô‹Ív;'h£‘c¦i÷³ä;D^Ú[u�Ü ®~0|87–vx¦Æææú›¨ÕgŸ6ö–æêâSåÄxŠ%ÕCH¬62+ñ@ì~'øR°��ŠtË‹&“NˆL�.KêÑ\M§�ˆLEÄVw®FR1c|%hÍ•Ð„9þ3|-Ž+™ßÆúŠÎ¹¹qpì"·}Ágm±ä’¬¾h7�…ƒ`P­?âÇÃ�WM»Õ´ÿ éWV1éRÞOÍ›tÖâ3ifHZ8û\Jò ‰�(A…@©|\øm¤BÓê0Ò!‰m-ïÙ–Y&Ûev�Ëmtâ¤)ÑÜE$nÀ+#îÀ‘|Wøs=å¾Ÿ‹´‰/.®lìà·Yd2=Ö¡7‘c	ýÖ®ß-˜Qd…ZáI·V” X—âo€ žkY¼W¤G<sXÍÜ²îÜ²Ë	m›I¬ˆÁŠK"´q3¸+@Öß~^è×Zå�‰-¯­-&šX§’ûëñø^ ¶~X”™5É ± �å<ð½Ç•ŠÄô¿~Ç¦ÝêÑøŽÎêÆÂÔ__Kh%˜ÙÙ&„]\ @ÑBÒÛÉ3œíhÃ#«�ã¯Â­rÕo,¼_§¬$¡¹ó`wžåÒ;{uFB~Ñ3¸X`8š\;DŽ‘ÈÈœh„Ë«�¼O7•­$f=9>Ó=Õ½²4²2ÎLòYÎÖÙ¡AySr‚ÓÅñsá¤ñK<>2ÑdŠXæd�Ï•$—ZÇŠ#Ü²ÉqsqÄ@‘ÌŠQJä€%ø½à[MWPÒµNM.M>æþÓí—öÒE§ÞÜéRÛAªÅas›ç6�5å´wBD‡PÑy‘«º€6Ûã/ÃKý2ïVÓ|U§êVö–Býâ²ód¼–¾M2³Ú¼qË4—Œ‘YC®^âh—€êH‹O‹^ ¹Ó_RŸÄ6šZ[êŽ“{kªŸ±ßiú¶�p¶š®™ynw”»Óî%À�¥‹iÅ,–äL@:Æ~ñ3ùZ»§ê’ÐKIw»Z‡òþÒªUK[´‡bN Äç„f ž€(ßýËoúþ³ÿ Ò„¦ºú	î¾eêC3ô¯ùÚÿ ×?ý™©½Àã.¾*øÂm2G_¶ÓÛX»×ì4æ¼w7žÖ&ÐµxÊ�ßP·�rûU¡‰çÜ#RB–£ñŸáž˜ºcÜø®Å“X¼K·Žêé&¹{ÔÓŒeà‚E�’îDŠE�«®Cm+Í [~gjZ±ñFœ4ýP°Ó5;¥vš+­WTmLÉn³F‘ß^…X¥-å¤RG5ÃBŽ ?þ¯Ãó-œx›Ožâþî+kxL�;\Îå„Æ²$«‚òBê&Ž?Þ´b2€cñKÀ•…æ§eâ}>k->ÞÚêöP.PÁÜÐÛÛ³E$34³ÜÛD#Ž7�=Õ°(>Ñ˜Ÿ>C%ÌRxÇGY,Ù’å²‰Ñü·RGs+uTÜB&<²€Lø³ðãX·»¹Ó|]¤ÝEeo-ÝÈIdÇo¨4Y$4k<˜Õ^‘Fò4÷6h¨~Ùkæ€I©üTø{£Ãú‡Šô¸#ºóÍ°Y$šIÅ´ÆÞãË†ä•¼™�ŽO“åpGQ@føÃðÆ'Îñ¦‹¸ó¼•y¤Wu·HäžM†-ËK"‡™€‰\I2)Q 5o¾#xLº¸²Ô<M¥ÙÜÚ°Kˆç•“Ê8Ë�§–R<íšEsû¹™m r_Ž¢°ñ&¢|[`ÐxSLÖµ�f45ÌZo‡ô‘®jwP[y~uÂC¦n»�bR÷E;À®�JÈ­ÅO][ÝOkâK“cw7�@${‹X$’(–Y£	òF^hñ!o-Ô—�Ýê ÅÓ¾:|,Ô�è‹Å¶ÿ ÙÖÒ]ÞÁ%°†Þ�RÚIºpM"ðãú8�{Ý[¬€%ý¡~E¬.Œ<KÓ}©låº†'60O%ŒZŒbIœ¤Ž’ZM©%¼3£vÖRÀü`ødàñ¦ŠùŠâp©;³˜mcO �b.QT€­·Iû¨·ËòPKïŒÞÓ5k­/QÕ%±K6´Š]^âÖA¢›«ÝNñµš^¦óö™4�VÂõQáEhçÂ»2HÄþÝA©\[xËHž=&ÏPÔ/ÄrKæCg¥Yÿ h_N"h–I ×?»V2C¯uŠB€¿Åï5¾¥6¥­Gáû�k;}cM××ìŽ™.¥]é‹uneÿ ‰�¢ýªÏÉ–o6&òÌ% ßÑ<yàïNm´/éz¤ëpÖ†+K�#›”µkÙ Q�ºHíQæ‘W&4Vß´‚(­ 
—ü{§ý|Úÿ èô¦ºú	þ«óEúC9=þ?m	Ïú–ú}öÁê9­©ìýL§ºôfž�œ¯¦Óô<�Æ?§&¢E-—¯æ‡ß�Ÿ®OÔéïÓ?…ßÕÿ Áþ¾ãŠ·ÿ �Þœ?éàtäwþŸþºì¥ü:ßõæ¡Œþ(×ÈþG¥×Ð P@  P@ þYßðYQàÿ ‚¡þÚÑ	6…øÏ©€3ÿ P�·5çU§RnK­ÏZƒýÔ×Ãåú£órÞþV9\¹'°9<zŠÆT©¥tÒ·�ÿ 3kÉ½5vÚßð.jÚØx‡Q›n�¡ê÷¬Ã!lôËË¦lñ�!�ØŽÙ”ç†§Õ­Jšï:‘‚zyË±j�zŽÐ§6÷´#)7ßdÏSð×ÀO�~4‘Ã¿	<w¨cxü5ª$dŸ<Öê¼ç?{Ö¼êÙÎI†W­˜áaÞõ¡¿Ê_Ö‡]¯3¯/s	^Þtä¿Oëóú›ÀðLoÛÆ^Qÿ …i.ƒo8eñõ¶˜¨wI\È ÆOÉŸjð±|sÃxg¦-Wk¥æû®Ë_[Æ„óšú{üÓ’Jß+¿ÂÖê}Íðãþ‹ñ?QXfø�ñ7ÂÞ„•2Ùè1Ýë |»†ù-ííÃ�˜ÃŠù¬_Šx*\Ë—V¨öS­(B6íhÊNßçcÞÃp*Vx¬e(FúÆ”e)vÞQŠWõë÷ýÃà¯ø"ïìá¡GøŸÄÞ9ñ]Âm3)º°Ó-e#—ËŠÖy1�38=sÍ|¶+Ä¼òµý„(a“½¹bä×Í½mÓCÚ¡ÀÙe6�Z•«>ªVŠóØúçÀÿ ðOØûÁ~P²ø3áýNxÀ"ë^k�VfuÇÎÂIc„“�‘åc=xø»ˆqo÷¹ž!-n©µ¯¢Nß=�b‡äøƒFO¼Ó—æÙõ7†~|'ð˜�|3ðßÁ'–É4ïéÓ :~ù-¹¥óë^U\v2¾µqXŠŸâ«7ÿ ·œ0xZVöxzPíË«}Èõ8c� TEDPª�ª t  1ÛÊt(Ål’^GÌŸ¶ó]Ãû%ü~’Ây­nWá¾½åMnï±æ$±ã!”´e× ƒ†#¥{K9Ën“KJ÷×®�äy™Ìöf5-±—õÔôÿ Ùâ;Xþ|û$I¸ø[à?*8ÆÕTÿ „cMè£�žIõ$“Í,Ñ·˜ã“wÿ kÄo¯ü½‘¾1ú–ÑI<=m¾Ä{9øVMŸðPïŠqãþ>~x*\õâ-fH±ùƒþEz5]øc‹4­¶šºK¡Ã¯íêºhòúwùUbþÞûàÑÿ eë€bý±¾
àŽÂk[Ã÷çŸêipôŸ¶ÌW|£¿ÙþkOŸ�³«F–
ßô2Â|¬çýkÜøþˆ?ì©oä‰	·[É9¯oÃÏù)#oú­§ÈòxÞßØ³v_Å§gó?�¿‚š%�þ…yq*ƒ-­¼mü¹!œ�Äs�›’ðqŠþ†IY·Ñ?ë}ÿ ®§â2¿]á¼þKå÷ÿ nŸðD8±ûéÀpÇþ.UèîO§s_Ïž ÉAY¯ù÷K×áüÏÙø1ß&£ÿ _j?Äý ·þ^�+á“k©õ­ë¡«¿
¸·u«Ü-£ã'­ùŸs>Xö-Å’'�óÞª-»Ü‰¤­bÚ.G^Ÿ×¥h`÷d�G=øõÿ ?�+$+~%ø² ddžž¿�ó«ƒw¶¿Õ‰’E•9Ï§üºŸZÒì‘ý±þsZ¤šZjKBt4ÕÓ'aw}j¹ŸõaÝ,ÇžžÃ�>k�àž¶üÀÌÜú~áÒ‹‡³�oëïÌöþ_áO™y�Ù¯/¸o�þÉ?J9×™”¡®‚ùÃû¦Žd.Wý\õÏ‚ŸòPl?ëÃSÿ ÒW¯³à?ù(ðÿ ö‹ÿ Ó2>[‹¿äI[þ¿aÿ ôê>×¯ÝÏÉ€
 Ì¿û�øûvKtfúœ}§üŒ:Wýt»ÿ Óuçù÷­'ð|×ê(|oÐô:ÄÔù3â—‡þ2IãÏk>ÑõýfSá}þê6¾)ðö�àÿ ø§K#Ÿ]ƒÆzN£«Zêú–›â�/‡tù›¤jå †ác¹ÐŸ~¡@TÃöêÎâ-:É¬SY³¶7~	‹]þÇ:¥Ë¶£ª˜|_>ŽÏœaMJÞÃP’f!ŸîÒCè¯Ú>Ëmö½Ÿjò!ûO–1Ú<µó¼±“„ó7m?.94=  P@  PQÿ �Üö
›ÿ Jà Z‡üx^ÿ ×¥Ïþ‰zìÇÆ¨ö±¤€kuW÷J4`0>Äµ ¶GÍ~/øCðøÓUµ³Žh.á¶—Wñ5¦ž‘è¶Ëw}�g3µ¾Í#MºÖîµ{;4�Î×a®&º´ŽxÀ-ßxàµ¿‡ôíCRÐ£¶>ÿ „oD¶›\Óc�PÒüCsý›@Aus©]±[ÍÄ³Ÿ&(Ì¼P&•áÙÊëÃ:ëé"Ó®´2ûÃš­åÍ¦¹o<ZT¦=oÂþšÃËFˆÃ{¨_x†ÂÆuŠäêZèÔlÖk‹«µ· ÜðÏÃ/€ÚTú/ˆômOI“|6zÄ¾"°h%}kuµãY®èŒ·šœìæHÔ¶ë’R#Ç” 7Ã��Þ°Ó#ºÔâÒâÕ&Ó&Ò/&Õày^ËC�^·g·‘bh††‰ãÿ ¦±¨Ë[[Ëæ_Z4úg�_Qý›>_C"Og½­î™«Eo¬ÁoÆ“i4±t–W#W'{G¹Ì±4*Â€7#ø5ðwÂú¹´Ã¥i:›éú•ö¡&©i�žÒ¯&O³ÝËAnºêMt’yãû:kË”ò¹¸@ig�ÓýªI¾x®mE�Â~‹ì0Ã¦ÚÙ¶À­ö]&xì­£‘ØA·læI¾`Öé_³÷Âý.yom´VšòâïG¾’òyÖIšmO¿Ò´R­Q¢&Ÿ¦j3ÙAå¢–…biZI�ÊÀ¯gO…÷÷RÝÜéWLÓ_=ûD.ÔB%ûT—Öñ…òl¯¦šòÕYÙÖy\Í$ÑŸ, ^ðçÀO†þ7gKÒ§nXþÔ..|ï6u×ì|K=Ño)g½ÕôÍ:âð#,}Ž1ìàôŸ‚´m'YÑmtw{-~ÂÛKÕ¼û†ynôÛ)üë+'‘1äÚ€°Åòï0¢¬¯#v Ã³oÂ%½†ö?VkJñ	²ŽæE±—ZÐçy´‹ù` ·›`'»‚ŽHâ0^Ü,±ÈþKÂf×öxøSoee?‡"ÔÆ¥ee§]]j~MÍé²Óîä½µ‚+•‚&·Ë+.ëq´`+1mÌÀ×²÷ÂK‹{‹VÒ¯ãŠé¤’ãì÷©nòÌòÆé<’Cl’<öÉ‚ÒWf{hÏ™[”Šâ0í{àÃïÜO>±­rS¹ÕímÆ¤Ñ[é·š‚lÕŠG·•ª®?´"»{µ”ªòŒhT=ö{øaáøu}/F–ÞKL�KuûB—´†+ë}J)ì'òEÅµÜZ…¥­äS‰[Ë¸·ŠD@È(ßö]ø]1Åq¿©¼wÚ¾ª×¦®··3êúõçÚumRæI-Ú//!é²U¡]: Ž‘LÌèøSá_ëskZ·Ù[þÝ?ÂÖVÈ¡b²Òl.e¼0©÷�5Ì‹&í‘ùa(`Ä€K 
7ÿ rÛþ¿¬ÿ ô¡)®¾‚{¯™z�Ìý+þAö¿õÏÿ fjop<#Æ¿	~ÞG%Ç�u(­¬.µù.mWSñ�…†›¨êWº…î§§éÓJ!61kúž£s.¥ÚÅÕÔ±ÛC4HâÝÐÂ!ðÃžðõíÞ·¡Zhv¡q©éZ–¡¯é‘Ù\ÞÁ2ßK$·nc·¸’	¡Yˆ²æ1æäwGðWìÕc§|@ð¶•­iÁ4åºñžššõ±[-;Á:„> Ôîx"=:K½=õë“ç=�•Ö“ÒÙÇwff ÙðßÃÏ€-.�ã-/TÒ®Ú=iµX5½~ÍDÞ$lØK}r’4j®‡û>Kr±.1ÙDß1 ½«|?ø/àÝSÔ5}^#Kñ-Õµœ×:Å¢¤7ÚmÍ–ºÃDcWžÕ|§j7èéz–ºw„Úòâ8mlõY¥ ŠûàÁ=ZA¨ºÆ‚þh/Ä–šÍ¬PÝ]À£7ÈB6ùf·ÛÈ�¼‰ Ua¾€/i~x~ÓP¹Ó•-!Ô¡µŒj?ÚvLö’·ˆ4­vÎëO»’T¸—\ðö…,+!žÞâmÂ?³ÈñÍç e'Á/‚Ä–Ìz‚^ÅÍÎ¡§¼^!³6Ñ5Ë¶£r‘yj�§¸}BHK•ó&2?î™P kCû6| œ%Ôš+êo.Ÿ{cõÅè�Î—ª™n&·†X‘#kw¸»¼½Š@¬þuôçÍh|ˆ¡ ÙñÀ_‡(¹½¸ÖtË›•Ôð\Ú‹ –ÆM–]VÍ@‹Î[mNåEÝÚ‰¼Ï´ÐI fÙ~Íß
¬®5«•Ñî.%ñ…}áÝ\ÜÜ¤‚ïN¾Ð®ü0ßrÞ3ðxzþûG‚Xèws	ÖyŠÊ ú7ÁO‡Úx•¬´©Oü%zPÐõA5ÁlhñÆðÛiÖ¦4‰¡†Òò­¤-%Ê*!yÝ×q ç$ý™þK�?†sÄÖò#w3ëu·Óa·†íß|¯œÚFŸ¨[¢È€_ÀóÍç-ÍÔs ié?³÷ÂÍkéíü9ò_@×¾U×Ø ŠÒÛO¶·ÓÌ�æÚ;M>ÎÚÊÞL½À‚ó'’Bò0 ý˜~ÆðIo¥ßZ=°¼Kg¶»‰¯‡É5£É$6³Ê÷v‘Lò¤WDJâ@¨ª©«þÏuË;½7Q¶Õ¦Óní4‹caý© ‚tMIðí–¡yfàê?ØÚ›a-ÄóN¯,Â5–Y€"Ñ¿g„úÖ¡ugáösªéw>¡ÍËMÍ•Î™s£:(²Dë¦_jJðI0ßÜ‰|Âb1 d^þËŸµI5;�e|E­_k7Öº–©¨jšÏÚo/otég›GžiªFNŠ×7	¦"Ä±ÃÍ‰4aU@:Ï|ðGƒ|Mgâ]Í¬¤±±Õ`‚Í0-Î¡­=§ö†µ0B‰&£-µ©³W"Çosr¨špìCRÿ �tÿ ¯›_ý”×_A?Õ~h¿Hg'¯q}iëä7þŒý;ãÞ¶§ðËÔÊ¦ëÑèiéÀaN?öÇõ'ÿ ¯Q!®�‡^ýÓéƒüºãóèr;f”wí¡OïÔâ­ÿ ä9§ÿ ×ÈþG?ç½vÒþoúóSô1—ÅúùÓ+€è
 (  €
 (  €
 þE¿lÏØötñÿ í�ñïâ7‹<!±âøöóVÕ¥¸‘ÊIvöV3*†"AŽGJþpâþ.ÎðœA›`¨c%N†*t¡•£Ë•ìžíëý?Üxo†²¼FK–âêá•JÕðês“mÞNRé#'Á¿±OìÉáØa:oÂ�	# ‰'´¶@ã>i`{ç#žü×ÅÖâlêµý¦:¶¿Þ¶öýv>¦žG–Ñk“M$­ð§×Ïä}¢|%øk *�Àž°Ù�¦"ÍÇ¡ò‰ýkÍ©�ÆÖw©ˆ«6ú¹?Îç|pxjvötãöŠ[ú$zE��µ²¶µ‚ÙðÁq¨Çl È~\V×ÖM¶ûêÍÔ,´JÛXÖ�j€ søT=Û4Z+¶üŒú�þ&´³è}±LÍïóÿ 2ÚŒ�ÏCÖ€/@ yÿ ëÖ‹a?ø?wüfÝæ?Àÿ /ëNÚØ�ÿ l+/µ~Ìí›eøoâL–#-“¾xê•êdÍÓÍpZÛKñ’_©Áš+åøµÞŒÿ #˜ý“¾!Ûëÿ ³ÿ Á-ÖçUº‹áw�á¿¸òÞÚÆÚH¼?a‘›‰StÒ¡ Ž2½{•"¯8N¶aM¦åõ¼CitN¤¤»îš:2ª2«–àªkKI)>­A'eÖÍu=_Áÿ ³Æ¹ñ÷Ån¾$[h3ë>	Ò<úŸ¥ìšM:ìß	dÔîå¼%äy6³ZÃk"�º9œ�WN–UýŸí=„¨â¥_ÚË«œRµ�­ßËu×ÌÇËû31XÇJx…S©8$’J2½ï¥ÛèžŸ‘ì<øT<?Ÿªk>Ðüm¥èº•ž­¥k—¶Vþ#š×Rµr,5äÔc¼¹²Ôm¤o6;�Á­²Y%CÈåÄe¹žN¥^—ï(I8<E	9)Fz8ÔKT¶ºwK©êa1Ù.qN&Ý<L_´xzë‘ÆPW¼»Û[;]½–§Ë´Â�ÙïöÖøq«üøñá[‰ô;û¸/Péº¦¡ jšf©`å¬u;Y´Ë›dy-\ïXgYmåÉWGW6Q�â2Ìt1˜t©×�4yù"ïnœZi©z_k4<ã"¥�ÂKW÷˜yÚJ	µï/…©]5mzµäÏå“öÐÿ ‚Eøÿ ö¶Ö<sðãQ¾ø§û?jfhÇˆ<ÒqŸâËka±­Ì’àÕà†yl¹Ž&Y?xáŽ5ÂçIáq)añ©Z*íÓ®ÿ ¹}c.ðmï£?â>ÄäíV¡Í[
ïÍ£s¢´ÒvÝoi%²Õ-ßî×üýþÅ:Cs“ãÏ’z�I—ù ?
üËÄù(+¯úwKÿ H_çsïx66Éh·¿=M:^çìäQ‘ž?ÿ ŸjøcêK¨@<úSZ4”`}xþ_çŠÜ,Ë*Ås×ŸJ¸´·3œ[µ‹QÉÆyOóþ}êÓFNœ»~%µqÇ¯{š£2ÒÉÆo_ÿ ]8»={ÕÑn3Ç¹çô|È›2\ÖÊI$‰Í6Ðš¸ÜRm"lÃ‹Ü,Çz­“~W)\i?�¨s¸šdLç·AK˜9XÁ#œôös+={àd¬ß¬éöSÓþ}Ú¾Û€$Ÿa¿ìÿ ¦YòÜeì*÷ÿ ŸØoý:�¸ë÷ÃñÀ €3/þãgŽ¿¨KtfÎ:ÓþF-+þº]ÿ éºòµŸÀ¾B�Äý?ÈôJÀÔ(  €
 (  €
 (  £ÿ !¸ÿ ì7þ•Á@µøð½ÿ ¯KŸýôÙ�HãšÑ"•H¥·Xä�ÀexÞ ®ŒYI$Pd|µqûü*žmBuþÙ‰õu'ÚÖh-í®¦ev¶÷)40ÛZé&-Æ5OôM2ÖÑ!+-¼r¨gâ/ÙÓáç‰,-4û¨/ía²—]–Ýôë¶²’3¯a¤
Ð*,&kÓ1�±^´Á²@ –?€þÒôiü?á{©|;§ê–º�Ôö÷º¬²h¾)ºñ‡‡á¶ºÔRê8l´]fúòKKŠ[1ÕÈh®nPXý�>ëú–¿«jú¿Š//üJÚ\úµÄ—Ð‡šÿ N™.Q�l`º½™\y*‘"ü–ñÄ  ®ïà~³ðÂxÇ]Ó4Ý?LÖô®4˜tÛ}JóÃ¾,Õ,5Ÿhº„ÒÚMƒÄ—ú]ƒÝ]Ú[Úê6°Ã-½…Ý´w‘ÎÇÏû|6½º¶»Õ/õí`ÚèZw†Ò×QžÕìfÑô`ƒH³¸µŠÚ8ÝlÒ4ŒÏ´]]F1y<çš é?á™üs£E¦ê3ÜÍpïâåÔnÑ"�ol¼Ys¤I%ŒQj‹¨g¦•máŸ	Ùé7vockáû{k{˜­n¯`¸ æí?cÏ‡vwi{³â‡¹KY-VYîí'pŽá‘ÃKjç}º‚¶ýVi&EÈò0Õv6‘XYZXÀ\Ãekoi	v.æ+h’Ë¹åŸbÌyc’zÐª (  €
 (  €
 (  
7ÿ rÛþ¿¬ÿ ô¡)®¾‚{¯™z�Ìý+þAö¿õÏÿ fjop>tÖ¿dÿ …ºÞ»}â;ˆu(µ[ïÅâæš+�ÉµÍåÜ—C*É[‰î¡iã‘$G[4ÆØ°Pß³—ÃK�ÇÃSé²¾�a«mCh’xþÞÖòÛÍ)Ka�´,ÎÓ*¨ä1@Cû>xSMÓu‹G‚ëÄ~»ð¶·®ßÄšž»&‹á?øFþë�ÆÂmFÏÃ:eþ¥$
«¨ê–ðÝ^$Æ‚€rWß²7Ãý[[Ó|G«k>)Ôu�<j2›©ï Dº¿Ô­¾É-ü–�[ÅiÇoòAmiQœ:Ûï »/ÙÚÓIðv“à]Æž!ÐtŸ}º_jzlZ`×ôË½GK½Ñ®¦7WsYÝ#iÚ…ÌIÍœ›f÷[�Ì+- `Kûü5¸žÊYïµùbÓõ†Õ­mæÛìÑnUÝhÛ–òŒ¡æóË°dd[�TPšÏösð´ZKéWRbñÜ¾2Òã¶µµ’ÛHµ:V©£Eáë;}R=F5Ó…¶½âÍÄíu=wQ»Ó^Ëý  ã"ý�>Âuk>'�j7­w0¸¸±¸
¡ µ_:ÍË[ÛF’™KûÉK¿Í@Nx_@Oè–Z7÷º…½„k¼úƒE%Ð…T$’ÇfRX<†I7H^Fö„U è(  €
 (  €
 (  €(j_ñîŸõókÿ £Òšëè'ú¯Íéäµî/í=àaß�ÞOÃü:VÔþz¯ÈÊ¦ëÑššqû£ŽA8Ç8ÇQø�oÎ¦[�ëÜ8ÿ k‘×¦?ÈíIoòE=ÿ ¯ë©ÅÛq­iãÖàc¿BG?LÎºé_’·ocPÊëäOK®p €
 (  €
 (  ç·ö˜]ß´?Ånq�Ü~¶Öƒòæ¿’xßþJ¼÷Ï%ÿ ’@þ’á?ù'2�û�þ•3ÌlCÄq“ô¯”ßnÇÐÞþ‡Kn@iÅôìC5‡AôÈS*|ÉUqÉëéþ4·(Ò‡!xí×ÿ ­;ÑF”ŽÀÀô¢ïÌ–—SFÞB0°?�ùý*ÓîKòþ¿¯ëcU¥†(žy¤Xc‰Yd�…Hã@Y�Øà*ª‚I' sZ~"J÷èºÿ Wý�þ!þÚ>Ñî.4�‡Cã›O5/uõ‘¢ðýµÄE£kk�‡ûbæ9lŸdÍœl9.ÖP#=U”m*·ƒz¨èååu}7Ùô-QµtºÙÙ½6v×åsá?Š¿·'Ä9Z]3PÑô=GD»>UÞ›«[­/ rC[K
KÉ©ÚÑÈÎxe®ü§
´ê8NRŒ­wµº]ÈÄÂš¥8Jñ”yZotôié¶èö_Ùûþ
©ðÿ HÕ4¯‡Ÿ>hú† [MÇÄž…l£ÐíUc·�æÑíàæÒÚ,o’Ýî'	X$nµ*r›•\E:x‡Q·R§/-^ÎwÕ9Yzé~§†§R’�<5yÐ�;rRøé¾¼Žú¨»ýûŸ´þÑ´?øR?|.ñ¿Œ|%®Û¥ý¥Í•À™Ö&‰\•u–¤	•&�ò�*s®	
j¤ðÒö´ç-Sø¢ÖêÚ^Ö±–/1•Z”éâb©ÊšµþÌ¯¢~WþŸnKOø‰®øCQÙ­sdá–óJ»ýô2ÄïCC&å`qÆÜ7ð­)bñyÉB\Ðm©Ršæƒ�UË+¯?ó&¦Ž&>ôm5g°|³Œ·M5gê½NsâÃ-7ÆÖ±|Rø\�/4Â&ñ7„â§Ž�%Ý‚…ó$�pe’>A’€üÊž~g”SÄÓ–a—E©GÞÄác«�z”Öî=Z[–WœÕÂT†[™ÏšvÃbäôwÚvÑôMî÷9¿ëšv­§^x{ÄÚmŸˆ¼1¯YË¤ø�Ãú¬ÜØêmÜoowkso"•xÌr0nè¤
à†PG��Ä:!8¹FQióEµ$ÓÝ5³[÷ÓïöskÒœySR‹JéIkÝk£]ëäWøû0xöWðf§á�‡”MðïÄÞ7ñŠü)ey4PÉ¡§‰/_P>Wžf{£¤¼¦ÖÞRL“Â‰!PÌQ}ìÎüóT!ÒtiÁÊ5i©TpŠ…ùe(ÉÏD§§®×M3æ2¼5<ØHF¢tªT«8*r—$&Ü®œSý×H·µµIžþãfŽEdu?2° Œ€GÔG¨ Ž+ç+Q«‡©*U©Ê�H6¥	ÅÆI­5NÌôiÔ�H©BJIõNè“a#·?�f·4T�qŸÄØwE¨É çÛ�Î™˜Ïcþ}j“ò… |Øàvÿ ëÖÇÝú±Û™z0?­-C!Æ9çñïþ}©:ÉÏ@1êkU²ÿ #7»'ëúúê€“9¢à-ZØBf†ô~€!`:š��>qéùšL
nÌ§Ð?\ÔÉê¿õý]aø&ïˆºxÿ ¨~«ÿ ¤o_máì¯ÄØeoù†Åÿ é™+Æi¬†½ÿ çöÿ NÇÌû®¿ OÆ‚€
 Ì¿û�ŸóÀª[£7»8ûOùt¯úëwÿ ¦ëÊÒù
?ôÿ #ÐëSâÏŒ¿µßÂˆ)Ó/"Ð5=ÂðN¿sáK{¹�Ä?éþ#oIâÿ 	i1ÛÊ5!àý/Â§Ä¤.ðÂš$µÜ—µ¤QLÇŸÛ÷Áw+
[xGÄ–Ó]VþQ4ÚÁh´+‰`Ôm•!ÕY¡�¶Ç$BëÈhà‘n.ˆbÜ|-ý²¼3ñSÅÖ¾Ñü¯[G&µ§è7šéÖ<)©é6Wú·‡nüC§§›£ëwÒ^,ÑZµœ�eâÖä•º0„&€>Ë €
 (  €
 Ê?ò�þÁSé\~â/>Þxs·Î†X·uÛæ#&qßÍ T�ûIÉ³;W?h›�£ ÿ Ç·p(ûõ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 õ/ùágÿ �3ò5 Fñ^Ü4+2[EsG34rÉ#Ÿ%„Šª­kó2€Ä°Ú¤�€¿â• 2­¢Ô-aŽŽÑÖ U\Ï2–$¿g8<ò zš Ÿ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF ~¥ÿ <,ÿ ð&oþF g‹P¹ÆÑÚF‚x$vY¥v	ªìL
¤.XžN)¡=ÌÔ¤3“×¿ãúÐ¦ëÓï“ùñ[Sø_¯èeSuèÍ=;)ÛÉgž:síéü²*%°ã¯Þ‡Þƒ³žÙÏô3þ}h[ÿ _©Lâ ç[Ó¿ëàtè9oé×ž¹úWe/áÖÿ ¯?C)é(×Èž—\á@  P@  P@Ï7í5!�ö‰ø°s�ÿ 	UÀü~Íh ¯äž8ÿ ’³>ÿ °é?ü’×ÜIp—ü“yGý‚/ý.gšZÌ1ê§~Ãœÿ õ«å?]O¢ŠÖÝö:y>QŸNxü¸¡hÿ ¯ëþ ùcwëÜ×Žu<½½ñŠ¯êÁËm‹ˆç9Ü=ºb—oëavï»òÇõÿ ?ZÑj#b8‰Q×wÏNRMÙ-[Ø†õµöïþd>$Ô,<¥G¯xÂêiS«5½Ö¨âÐ\ûÍo¸šu4Q²ä�›š÷°œ5�ã#”ð£JZªµbéA®ëšÒkÍ&�'�å˜jŽ”ñtåU^ôé?i$×GËtŸ“hü¶ý©iÇø•¿á¿Ã=Vh| ,ñ³Ko.¼ãk®�c,l²®œ¬
ê�t7@ÃË8­e—Ï.­(b9×†Ñ¦ù¡mnÝ®ÒòÑ›SÅ,e8ºJp£+ó7£Ÿeåç÷Xùvô½N�É‚Dû<~]´A•Œ�p…XãE´¶Qc\;€c’nR“»»ÕßÏÌö)EF
ËÑvWÿ �ä|WñƒÄ2xƒ[’ÊÎY¾Ëîó¥¦á¬AØ¬wÌ6qÆ`‚"«Õ%Áêeð³Rkfµv×ÑLáÌ*Z.-ïyýþ¿ÖçÄ~.Ö<OáÏÜ\Iqqqa< Ç™d}¹•x!˜®I' ªF2@¯®„iT¤’Jö×Nÿ Õ¿á�—«)ÁÝ]­wÕ÷è~ÌÁ2?à¢~"ýœ¼Uaáÿ _]k	üQuo³¤Mq$ƒF¸™â‰õ�1&r�MƒçÂ¡c�AÝ†É>v¸,G¶§(^Õiôœt\Ë§2ï×©UhÇC–O–§ÅN}Sè›ß•þõ-ãïøoÆº‘ñ7Áš®“'‡<Ek¦ßÁ~'D±�5‰a†ÆæÞáG\ÜÝCm,lÊ‹pà³!ï«—Ã8VÃÊ•8VŠpu,%9;(s$ÔfåîÙéÌyøll°jt+Â­GM´ùrŒb®ÛMÝÇ•9&µ¶�‘ÀøfmsÀZüw>T±=¬�õ¿—·ÌŒü²ÃqBÌ¬¤�˜WdW5(b²ìCS„¡RœœjÓ”zlÔ¢÷‹^©üÎêÒÃfkBQ©N¤T©Í>«gtiú;£�øÁ}ðËÀž(ð¾¯yt<9¢üH{‘áËÇ¸·]:OÛÄ×—†þÍ"Z¢^KÏ}cßù—ÅyäÃþ�†öið~Q›BX¼6"¶µfçd¡S»^>ÉFœâ¯víRÖz.þZâÜÓ,“Áâ°ô±t¨¥')ÓÄJ)^-Tnpz4¿‡}5n÷<ßâõ®‡ãOÙßâ>—‰¶øwSðþ¯yá¯i·†ÖçÃ¾/Ò­%¼Ò.­çGó4ýJ¡b)w<ˆòG ÃÇä™�×¦ë¯¬`ªN.ž"•ÝµñEÆ_’½âÞöi»\ú|—?ÂfÕ![
åCCÝ­‡›^ÕRŸT×ÇMî¥e­î‘á¿ðH?�ÿ jïÙßâ^•ñ%Pø‡ðÆ6žÓ¬‰7ˆô©ìïdËæ³—¹C§É4,@ò„UQ+šú¬wÇˆr7‹ÁZxì,cRŒ›æ�J.RÂNKY8´Ý'&Ú—»¢lóxƒ2¥’g˜9TQ¥„ÌéÏÛÆ	(Ç¥î*É9sZ£Jò^÷Cô9³1ÈŽŽ„££.×F^YN
²�Adƒ_ŽN¥9Ó©
”äá8IZQ”]¥ž©¦¬ÑîÆQœc8µ(É)E­SM]4ú¦‡#'LŸóøŸJßQ½I·¨Àçè8­¸‰Pó�3�J¥£Ð'éWvs½ß¨àÇ"©6Ù-+£$Ž¹þƒëT@ýøêGÐâšl\¨rËƒž°ÿ ëfŸ3UæN.NAü1G3TJ&ÈÎöÀ£�‡*ò¨9$þCÿ ×G<˜šIóWçAþ4]ÿ V'ä3Ï\‘‚}:
.ûŒ¯#î'ñÀúúÐØ%©ëŸ	ÿ …•§ŒñýŸªñÿ nO_káïü”ØoûÆé™/ÆŸò!¯ÿ _ðßúv'Þ•ý~. PeøÊ0ÿ =RÝ³Ž´ÿ ‘‹Jÿ ®—ún¼ÿ ëÿ �kYü4(|OÓü�D¬H~Ïœn|ˆ~ÐÑˆš-<ã9™vï1ƒÈBÛsÎ3@n4�2êÞKK�>ÊkimZÆH$¶…£k7GFµ*SAI| 6aÛÉ Ÿx3Â¾ÓÎ—á_é:ƒ\½ì–úe�½¢Íy$IÝÎa�Z{–‚8­Ìò—”[Å„Q¢(M@  P@ ”ä7ý‚¦ÿ Ò¸(FiVe™�+o+Ô¬jX�ï�Å PYõ'Uu´¶
à2†»}ÁXdnÄÎ8ÈÏs@ó5Oùõ´ÿ À©?øÅ n©ÿ >¶Ÿø'ÿ #ÐæêŸóëiÿ �RñŠ <ÍSþ}m?ð*Oþ1@›ªÏ­§þIÿ Èô yš§üúÚàTŸüb€7Tÿ Ÿ[Oü
“ÿ ŒPæêŸóëiÿ �RñŠ <ÝSþ}m?ð*Oþ1@™ªÏ­§þIÿ Æ( óuOùõ´ÿ À©?øÅ n©ÿ >¶Ÿø'ÿ  ÌÕ?çÖÓÿ ¤ÿ ã yš§üúÚàTŸüb€7Tÿ Ÿ[Oü
“ÿ ‘è ó5Oùõ´ÿ À©?øÅ n©ÿ >¶Ÿø'ÿ  ÍÕ?çÖÓÿ ¤ÿ äz <ÍSþ}m?ð*Oþ1@™ªÏ­§þIÿ Æ(>ÓyÅö›hR)$HwÅpÒ:¼„,#B�”¹
ß0*îq‚¥@§d	k2°\:ñÁÃ,EH÷Š OíK/ùé'þ]ñš ?µ,¿ç¤Ÿøuÿ Æh þÔ²ÿ ž’à5×ÿ  ûRËþzIÿ €×_üf€íK/ùé'þ]ñš ?µ,¿ç¤Ÿøuÿ Æh þÔ²ÿ ž’à5×ÿ  ûRËþzIÿ €×_üf€íK/ùé'þ]ñš ?µ,¿ç¤Ÿøuÿ Æh þÔ²ÿ ž’à5×ÿ  ûRËþzIÿ €×_üf€íK/ùé'þ]ñš ?µ,¿ç¤Ÿøuÿ Æh þÔ²ÿ ž’à5×ÿ  ûRËþzIÿ €×_üf€íK/ùé'þ]ñš ?µ,¿ç¤Ÿøuÿ Æh þÔ²ÿ ž’à5×ÿ  ûRËþzIÿ €×_üf€º•“º ”†v›áž0YŽwI®Xð<ž4z€9={þ?í?ëƒÿ èmß×ÓŠÖŸÃ/S*›¯FiiÝAÇ8<úÛüõ$p8ÄÈkõCï²##®0}úñý‘Oú·õøe¿ü†ôÿ úøôêß—­vSø+×šŸ’1—ÅúùÒ«€è
 (  €
 (  €
 þxÿ iñŸÚâ¸éÿ eÇëkh?­$ñ¿ü•y÷ý‡Kÿ H�ý%Â_òMåö¿ô¹žUfØ@}ÇàyÒ¾S·Ìú8üHèmåÜFH¿N”nß3UHÀ*hC,¤Ì¼×ü‚?
wÐV¹µ§¹y£\»
2rHŽäö“UÜ”Rrri$•ÛoD’][3“åM½M¶ôV[ê}­ øGÁ?|ÿ ¾%µ´—ë§>©g¦\•hm£X|ëtx/�y) $Y �º¿¡8?�°9^
žm�Âñ“„kRÃTIÓÃÅÅJ<ÊI^¦ºô^gã\CÅ¸üÓ,³(r¥B3tªVƒjuZ“Œš’zSóÞÇó‹ûc|oñçíñ2êúòi¬<1jÓÛhZ<Vz~™›|É"F¤¾YY$ò×ç�a g£ˆ³¥…¡R½ãog…¢­öJ1VVK{+ùLÝHCø’~ýz²¼›oväîÞº8iZBËjtýLv±`�J@ÞQÿ žÆ#´�Ž~aòg‡e5øÕZ’«9Õ¨ù¥7Ìõï©úE:Q¦£Y(«$¼ºöüÿ ¨þÍÒã´’É¼Û†ŽÜ¤óîPÍ”T³üÂ(Ž3å[æpY²1É7­í«z]¯×Ðì¦å¶¶ÓÓúü{*üEÑâûdvú}’[ÂÍ‰D@ 9¤0=™¾aüB½\mjõþ¿á­¡Ë˜FêÝ×–Ÿ=?.‡Îž9ð0½Þ,ÏùŠ® ‰89@FrtõíÓô*ò®]6²ð:o¿¡àM_D¿¯ëærfš�¨¶•^ÅŠ€¥P¤q•a÷Xãïbª¤·z?_ø&”ã{-­ý^‡îgì™ûfø£Sý›uØâõµCÄÞ-ñ'„t?†:ünÒÉ¦Új%Ñ—PÒÚãÍó£“}¯NhãÛŸiÜT”°Õ«IG-„Ö+…�)­èKÛÁÎ)u„ÒÙ|-ß©8¬=b#˜ÍÆ1¡‚ÅÃžŠªT**Rknh9=[W²ìR_> éÞ+Ò¡&ÿ OÓ¬à×!E%®R("‹íeä¼{OšÄå†‚I5ú¯d*­í4­JúÄRÖ¤RKÚ$•ï¿–¾Gå\9�J�y`«Í*g'BMÙS“mòÝ»Yôí©ùWûsøg@ø§û&|UøU¯Lún»}¥Gâ?…ºõ„›5|CðÍÍ¾³¢jšLñþú•íd°¾û>ãN»¹³bá«áòÌÒ¦[^*Tù çMò=S¼Ò•ÞÖqmßº>Ï—C0„¤¥ï¨T÷¯f­ËkõR·Þö>9ÿ ‚.xWÅŸ´×ìmûKü'ø¯¨êwZÖ�ñÿ ÃVZ�ÔÓ°Õ¬¼9¤µ¥Ý¬ÒosÚ$HT–9ªœŠýš®[�Ï²‡B¤c*UàªR••éÕäV–ÎÍI¾kj~iÛ�g8|U9ZtZ§^v«IOß‹îš^ëü�×oø%ŸìÇ¬~Í?
þ&h¾,Ò£Ó¼]âOŠºÕö­$iµ5+]ú7Ú<Øn"{™‘� Yxuq^_er|l5dÔÞ&oÉÓŠå‡.›=_Ì÷øË<£žbðxŒ<Ó¡KO•_XÔ›”§®Ž>ê×±õoÆ†"EŸÅ:¹óFdÕ,¢^ YîáE\î™G$“¸gÇ¼«F®u–Qj²rž6…5h¬Û­¥ñiy÷ÞÛž·ñ4 éå˜ú‹“HakMÛ—¢¥)7·HßÓ×æÎAëÇ­~$ÓNÍYùŸ§“‚À©ê1ßÓü}=jáÔkTÑn& �îž¿—ùúÖ©Ø’è#è;³Ø\œŒzŒñMh.Yve…lþãªèÏ’_ÊþáûCr<ÿ žôÅ¶‚ì#�yúP"A‘ƒÓ"�ÃÍÆA?ýcþ\Rûÿ ,Nri‰ê3ÓúÐ.]HKàóŸsAvòd8ôëžŸ–h>Ç°| üLÓùÿ ˜n­ÿ ¤m_máë_ë>_ù†Æé‰)Æ©ÿ `b?ëþÿ NÄûî¿¡Å‚€
 ËÔîßüõ U-×õÐÍõõ8ûOù´¯úëwÿ ¦ëÊÒù
ôÿ #Ñ+SÇ|añÏÀ^ñ ðßˆnu+Sn|;ý»®®“}'†<-ÿ 	~©&‡áSâm}a:fŒ5ýf'Ótö½¸ˆIr’Í jê>é7k©üKð=…ËÀn’¯iJÖâCœ©%Ú±ŒÌA€ È6uâ€:ŸøÃÂ¾,C'†|E£kÑ­´¬úN£k~«iu=ÝµµÉ6ÒÈÜX_A§ä’k;˜”—‚U@’€
 (  €
 ((ÿ Èn?ûMÿ ¥pP­Cþ</ëÒçÿ D½ öc–A˜˜«¸ŠØHV4i$`‘n+j;�0¨ ³1 M ¶GÅW¿ðPÙ¾É¼AnuízãRðÅÞ“¦ë:=¯†uyµk=[UƒÇ“�&k¶óãÔt¿øWšÔ:Ý¬ˆ²é77š½êÃ6¹§$à’~Ùßâð�€ük«ëÚ—†ô_ˆ^*Õü£7ˆ´]CG¸³ñ6†¬u-/[‚öŸGšÝÔÂMø…lF¤±PÀ[þÚß²ìºN‹«\|hð&œ5˜ô9N�¨x‡M¶Õôeñ…5i_ð’i¯r.¼?çøcJ¾ÕµXíR8aÃ°w�X±Ôiÿ ÙÏH6ë©ürøUbn®/mm¾Óã¯D&¸ÓœE¨E}D+½ŒŒïi"Ý¸”© ü7ý¥þ|\ñv¿àŸ‡_¼;â½wÃö6Ú�ÄZF£kyþŸ;˜n/´kˆexµkM.èÁc«ÜÙ Óo®­m.ž9ç��ð·í‘ð/Å>(o§ˆ¯´º[‰|3®ø¯GÔ<7áo[Û]Ïe5Ç‚<G«Ak¤ø�öÓ˜×Jº¸’X"k˜Ñ­ñ! èŸö³ý˜ã‚æåþ>|$örYEu7ü'¾1ÀúŽ‡ªxžÄHãQ*¿iðæ‰¬ë±düúF•¨j6¶“J€ø÷öŸø[àItXÎ»ãIõ«�V‡á×‡õO6›‡¨ÿ dj÷ÚÉðõ½òivv:˜’ÊI¯ ×\Çóo.ÀiûTþÍ�¨C¤ÿ ÂõøTº¬úµ®ƒ™'Ž|:—í­__C¦Zi_dm@N5�Jâ->;R‚f½³ó�J ¦ŸµÇì¿"»Gñÿ á‚;)õ'òü}á§)ao3ÛÍxÁuVÙ'�ãó˜Ü¬3Á 
:í‘û-ê6Ú¥ä_þÁi¤\ëV÷—7þ/Ñl 	áíMñ±{·w‘%Æ™e£jÖòê0—³Î¤MÁÀÐº6±¥x‡IÓuÝP´Õ´mbÆ×SÒµM>â+«CO½….-/-.agŠ{{˜$Ia–7dtee$ Ò €
 (  €
 (�ÿ Ü¶ÿ ¯ë?ý(Jk¯ žëæ^¤3?Jÿ �}¯ýsÿ Ùš›ÜQÜÛË$°Å<2MnTOr£É	a•Æ¬Z2À¡Âä)":H»‘•ÔäF¼A#ƒÁ÷ 2Æ<ÌÈƒÊ¥Ë¨ò×nìÉÏÈ6‚Ùl¼ô y¡Š&šYcŽ]Í+º¤J¿Þi„îH E4SÆ²Á,sDù),N²Fø%N×BU°Àƒ‚pAE =˜(,Ä*¨$³ ’I< ;“@ó#ýßÎŸ½8‹æ¼;LGÏÎ|µgÂçäVn€š …o-áíêÙî£æKež&¸Œm—„1‘~VVù”|¬B(Í  !†A„ƒøŠ Z (  €
 (  €
 (?Rÿ PŸõõh:`þ×_A?Õ~hÐ¤3“×³öë3ÿ LX}>sý:žØ­©ü22©ºôfžžËî=ñÐgÛ�3Û¦qQ-†¶ùŽ¾á�\~=þ¾Ü3J;öÐ§þ‘Å[ÿ ÈoNãþ^?‹d÷Ï_Â»i|¿ëÍOÐÆ_?ëäOL® (  €
 (  €
 (ùÞý§Ü�Ú#âÇC�Oú[ZWòG¿øË3åÿ QÒüiÀþ’á/ù&ò�û_ú\Ï+²mÑŒsýZ¾WoÇô>Ž?5"l{s×ÜPhÿ ¯ÉþFÕ´„¯'ê?Cý´É]¾âöõ8Ý�¨êŸçŠC:?êšsüVøcá^oø¢ÈÏ	cd’Þ>àN6Ï%ªÃ´ýõi}+ôò9fyÖZ
X,%U)97iÖ�¥N	uKã—Ehèî|gæÿ PÊëÐ¥6±UéÊ)GxQjQœïÑ·Ëú¶uß¶/Žu/jxwI5…¥Ìš}¥ª’âáàRS„N Ýò¢–kö¼û3¥KÚ:“TèQM/ï5¥’[ù#óÎË¥hrÇ›ˆ´¹ßÙŒ¬÷Ùwä~`ø“áEž‡jÒ_Â5Ná�ï¢šÙ%%kÁ
Fv�¿vÝªBï,Çðìç0©™bÝiIªpR�}˜ÆûÛniwµÝ÷Øý{.ÁÃF1Š^ÒI{I6ýéu²»µ––VZ_©ó®­§^‰½�–æ2lX-d[{¶ž^F�Ì²{©/Ï!1Åy/f¯÷ÿ _×S¶0|ëÏ·§Ë§Ì�Hð5íÍÈºÔííµ‡÷q}á»z!‰1S…\oÀr@Ï—ÓOÓäu(5ú#Ê¾&éú>šïýž"®È7ùj7’y.ää‚y Ÿ~Mz˜ukMBœ%7¦‘Mþ6ÛMÙæã¦©©:²Q�K½ôÙk¸ù{QÓe•¼Ëm·6ÂvØÈU¼°G>Y”.X©\øA5îû:”¤¡V2Œ´º/ëk£ÂSŒß4_4[²ûÎBëIˆ–†Kxƒ,wD78?ßqûÈÏÔæ¢¥ùº¿�þ}ŽšvR}?¥¦çìoüös�â7í#kñTÓ>ÑáOƒö:ã½Â	læñV¥m6™áÛ@�ò¼–¢âûY‰È‘¡¹Ó-$áÊ0úîË^37Ž.qæ¡�„ª6Ò·¶œ\)+=MÊ}5Š~Ÿ/Æ™ŠÂeSÃÆ_¾Ç5J+þ�ÆQ•Vºü>ïý½cûÙÔ-ˆ²E$e$�Ô220ÚÊÊÀ‚¤F¯Úti§­Ó_'£þ»Œsr´ÕÓVi­û¦~ÁD¾ø‹á†­ÿ 	¥¯ÚoþëŒ#B7²øOT`›­BÈ¶w²|öÒþ´fÆ`Zü»ˆ²)`±O‡Œž¼“åZªñòŒ›rWÛU¢å?NáÌïë¸g…«(¬^>ëzJµ5´ŸyAY;jÖ®úŸFÁ0>égë¿ZiÐXÝ|Zñf¯ñìÅˆÝEª¡Ó¯
‚UEÞ›oipBªù˜UUÀ¯Ñ¸g<6O„U¹ª©UåzÚ~çß={úÄÕá‰Ík¨ZÔ’¦ì­ï­g·÷›õ?F!ÎŸpe@M¼¼L }ÓÚUÊô8<©9çíÕ‚¨®´’ÛÍv<Z%M(IóA¿¹÷¾ýŒæM¤+Æã¡••½AÈ Ž½AúW–’OUf¤šÑ®ªÝS]N-èâÚjÍ=škª~V>Vø¥ðžêÖòm{Ã6¢k;†yotè·”îg¸�w.èŸ<J»•ÎP6N?ãŽ©íÞi’áå8Vnx¬%5ðKYJ­(·³ûT×]b»þ£ÃU	RŽ3«Ë:v�DþÔRIBo¿òË¶öéàXÚÆ9’D;Jº2ðU•°AAÁŽ¼WäŽœ©JP©BiÙÆiÆIöiÙ§Ý4�Ð£58©BJQjéÅÝ?4Öå…¦2tÝÜñÛ¥R¿ü8‚Wš yöýÆ�#==>µhæš÷›îI½½AþÈ#×8éÓü(W"ÜIä÷ô¤U�ðsL� Ey‰ç¯‹[¼ÌgŒd}i=˜ÏgýŸN~&iÄÿ Ð;Wÿ Ò7¯³ðë^(ÃØ63ÿ L³å8ÛþIüGýÂÿ éèŸ 5ý~& Peÿ Ünq×ŸÀŸz¥º3gi�øH´®ÿ ¼»çþá×Ÿçÿ ÕZOàù¡Câ~›‰Xšžñ#övø}ñKXMcÄ�âx|û�Í¯é:7Šõí@ñl^¿¸Ô¼=iâ�Âþ7Y¶Òï/.îmæÜÉä°êHšŽŸ¦]Ù qþÅß ¿µ,uËÏ^jÚÝˆ·òõ�[\Ö5Hµ–§.¯`ë{sy%Å±²½žv�,ä·„Á µ–9-â†(À={áÏÂý+áÝßŽu;‰/5ø®ßÌñùQXÀm`¶±Ð´Ø<É¶•§²^^Ã¶ÖÔ5mRï
×lªéô P@  P@GþCqÿ Ø*oý+‚€-jñá{ÿ ^—?ú%è³&ƒýD?õÊ?ý Pd|…¨~Áß³©ªëºÅ÷Ã˜înüOsñ>óÄÍ­ëóXê÷?5¿kþ;–ÿ M—S}>èêwÞ
Ò–Ùe¶dÒ¬îµÛ-m,üA­A|·¨þÈß5Ë}7Ãî›§Þ|(ðîŸ«i~ø?¦øgÂžð'†,uÍ1´�R;?èº=åäWLPEª]ÞÇ¸¹‰Rày´ç~ÿ ‚oþÉ^”Oáo‡2é×‰
Ý·ˆüGy¨¼zG„�."ºÕoµ[�WQ·×|/åéÚå¦¥{yizÑµç‘õÍåÍÀXàš¿²e¶‘y¡Úø3Ä–ún§Í¦­
|Eñó>«¦ê:ShÚÎ™y<¾#’v´×l˜�cÊ’)¯¯?âa$¿oÅÀ î<?û|-øwâ‰|ðrï_øWñ
ëÂZG€5h×‰¯ÏªøD0K§xsUÑüeˆtF+Ûd¾ÓuÍ.m_IžãTM.þÒß\ÖáÔ 8Yàœß³ýÎ¶ºÝÕçÄùÍ¥µ¤Z�~'øÌh¸¶½¹¾’ïÀºOö¹¶ð`¼’òæ­;Ã£OÒÎAfºzÀ‘¢€Máßø'ì»àM/V¶øà=Q»Ðµ½N¼¿ºÕµÛkc­ü2ñ—ÂË£«Úßj~w‰,î|=ã¯ÿ hÙë7—-y5á”\C46ÒÀÓ/ì+ð6óá§Ão†~#¶ñ?ˆl>ør/ÿ lIâ½JÖ<c¦â¼ÔÆÓèÚ�Šx‰õ]F3©ÝË¨$ÓÇ}5ÍÅ¬Ð=ÕÁ”#Ã_ðNÙÂx¥¼9ð¶ÓI‹Æ67š^¹mcªë6Ö÷Z]÷‰m<_5„‰üfx—ÄóÞE-ËMu7×:zÜ=m­` ÉÒàš²N…áý_ÃZ?€.´Í/]Ð´¯j°Xx‡\³�PÑ4+ëÛÝ&ÇQ··¿ŽÓTK_·Ï²jV÷sjQ¬2ê²_]Â—4 íOþ	¯û)ê¾ñƒgð§‰ãð�Šô™´OxrßâŽ`Òõ­;þí@Ó¢¿†?+NÚü#:&±¢È\=†µgöèÉ{›±p÷…µ¼V–ðZÀ¥a¶†+xT’Åb…8Ô±É$"�’rzš š€
 (  €
 (  
7ÿ rÛþ¿¬ÿ ô¡)®¾‚{¯™z�Ìý+þAö¿õÏÿ fjop?*o?c�ÚBøÃñÇÿ |Q ø;ÃÞ8ø†Þ'ñF�¢x�¼7â¯‰lÖÞ;m.-_â/†¼3¥|GÓ-ü)¯x—Ãþ MÅ0ø�a‡ƒ¼2þð&«©xjáÎÙþÆ?¶‡…´Ÿèý¥|IáÍ	_P×,t¿êâKËiw:®•>¿¦øŠìkùáÔn¼,àðö¼ð˜oàQ!” dÏû~Ý1'Ž×JøÙe|KÑ#ðïŒ'Ô¼wâí^ãP¿·»ø@o|wjN,_Äo„~&iQxMz„´¯ˆòé×önœ°\ z§‡dÚA¾üXðÄ/Š£ÇúˆŸM_øgÄZõÕ÷€õ­#NÕ#¼>¿ðÿ öTsøSAÔt´þÀÕ´ý/QÔ,5r×÷]³ Ë¹ý“ÿ j�:Úð|4ñîƒðkÃþF�kàÿ „_üiã½á×Ã©$‡ãLÚž§¤ÚC|ÖZ‚Øx£Å?
üayáñ£iÞñGü!·þþËÑ|5ªj6wà«à‚¿µŸ�þxÇÃº¿Ä½;âï‹<_¢è:UÜž?ñ?‰ÂÎòçG_Œµmñ×QŸC4š†›¤Ù[dÇ)d1ä0 ù¢ëö(ýµ`ð×„4Ko�Rjw¿n"O
jqøóÆÿ Mƒà§ÅO†ñv™o¦$ÿ ð†�_x×Ã7·¾Ñe—@ø—oáÛ”ñ„’�Rä¸¥êÿ ±×Ç‹Ž_þ1øÄÞÒ<_ñ
ÛÂ>ø€Ö‹Ä]î‰àý'Ã¾‘¬\/Ã¹<vÚ¥=µî£&�gñ&
iÅ›Íá×‘ew ©§~Éÿ ¶¬C[¶Õ?jŸêMw3iz«|@Ö­#Öµ­?á÷�tï	khÚVŸ¦Iá›}?Æú�ƒõ/øfËZÔ</ãtiçñ•t“Kg8Ü?³'ÃO|"ø? xÇ~"¾ñgˆôký}®¼C©x›Ä^-½Õmïu«ÛË+©õÞ_ë¤µš#ý�%ÜöÚXÿ A³skTïô P@  P@  PKþ=Óþ¾môzS]}ÿ Uù¢ý!œž½ÿ Öƒþ˜?§]çâ¶§ð¿TeSuèÍ-7°Ï@Oný\üc§2éòÔ}èÄmïŸñÏéÇ|g½%¿¢ûŠ×á±Æ[ãûoOÿ ¯‘�n¹üÿ úÕ×KøuëÍS|Qÿ ¯‘þ¿3Ò«„è
 (  €
 (  €
 þvÿ iâ­ûEüYSÆ<[8?Cog_É\oþ¶g®ÿ ó/ý"ô—	É7”Ø$ô¹žkiî—ðÇ¡jù?ø'Ñ§ï/ëúûËª„qƒ×­ŸÖæ•²ão=yü�¨¦NïÐšöþßM±ºÔ.Ï—ke“Í!ûªˆûŸNæ»09~/1¯>ŒëNRIòEµÞ²“Ù$º½‘ËŒÆaðTeSVÒNÊRIÉôQ[¶Ý’K]O–üñVM;ãÏ€¼m{)ŠÛOñv”H'ä·Ó�ÇÙY}Ûy™œã–ÜÝó_Ð™–KC	‡¥µ	BU'Ö¤ä×´“ë«nÞV±ø¶o‰­šÔÅV«{ÖŒ£N?É«B?$•ÿ OÔ/ü=‚ÓÄzÎ¨e{Èõ9SÓndØ±Ô‡Ú-ÖÜT)�Àï=ÀWÉqœ±�2¯F¬ŸÕïí(Ei	êŸŸÌûŽžû6…JQNªŠ§Yµw	ÁrÊ7ù/¼ù{ÅßEär	¦XŒ¤˜¢�c-–Üä©$oõ1Ö¾T$×uý~‡ÙÆ´ûuï¢ýz|Ï�5Ÿ‡ö>ûTÒ¬(å	_”o$ž»»Ô�zšXjõêÆ�
S«RnÑ„"Ü›¿DŠ©Š¡F­Z°…8+Êr|©|Þßw•��~*ëluìo„ßu?ÄØYüCw©iºvž^â>#·†êxîeu'2HÑ¬< ®ÕúfCáÅLTc_8ÆG¹–+ž¤¿»7û·n×}4>5ãºTdèå¸iâ[r‹¯7ÉJ6ûQM^_5cà�‹^ý£´(ßÄ¿¾¦�ÕÁ†9u/hðÛÆø2l…ïh
2sŽŸÅÍ~ƒ‡á|«/‚†NœRÕªmÊOEw'«éåä|>#>Çâê:•éJo¢u-žº$’êcüð‡ÇˆkWÞð‘®Øh¯kk¬<[¥Íom-ùºèåg;]Í�ÎÒ½o»¥sâø{Œƒ§,Rº»U#IóF[]j¯æ¶vÐ¼6q‹ÃÔŒáJé»J›ž�ºëgg½¾ö{†¿ðâN“£ÙkZ÷ƒ¯4Ûâ@º¶´¹·Ô¢…‰À"âÎIPG#“ÌÃ`…eÜq_›pö//¨çõœ>Ê¥4î“º\ñÝ7÷c–g1«–maê¦ýÉ»ÞÚÞ¥êçõ±ÿ Ñýžàøû6øf‹AoâOy^7ñ´{&Yõ[Ka§ÙI’Hzr@
g<·±'õÊÿ ³2šJqµlSXš½×2Jœ_¤Uìörgæ<S™¼Ç4©Ë.j8TðôuÑòÉóËþÞ“·¢GéE¬ý¶8íß·=ç_L|ÓÔç>$ü;ð§Å¯x�áÿ �4äÔü;â]6}6þÝøtY—÷W6Òš«I–;›i—ñFã¦+*Ô)â)Ê•X©Óš´¢ú¯]ÓóF”kÕÃÔ�j3p©xÉ~Oº{5Øæ<'àý?áç‡t/i0ù:W†´›M@ Qeao­¿LóåD¿þºô©8(B�,!Á.Ê*É|’8jÊr­R­GÍ:’”¤û¹>fu!D‹�ÎzŸóúÖ­¤®Äõ‹×RyZÊC¹0û¶9ýÛ�„óò“’9ùzzVi©{ðß­­n÷5Â×j>Î{­üˆüIâ='Ãz%Ö±­_Zéúu¢¬——r¤6ðDç–Yd!Q�˜œRO ×Z´èFUkÎéÅ>yÍ¥—{è{l5lehS£	T«-#'''²²[»Ù[»^GÀž#ý§¿g¿ëwÚ]”:µä¶N!ÿ „«L±{m>æcòÿ £…„ßÂ³Â†^9Hcùâø?3­8Ô¥UÖZ,vº¯+%Q'¥þÖéŸ¬ä\;ÅØJ¢©ESiKêxš—’�gfÝ7mÓÕlÑ‡ÿ 	o…d”%†¨ó@üÆóÛM yÃ¦Üú�Û}	×å¼%:U¹p•ž"ŽñœéÊœÒí%$µôºó>Ö�|¢ž"„)OíF#8ú§{ú-ûŽŸÅ¾³ÿ �½oMƒ<¨šê(É 3
åi'fõìk¥{S“w²´_ùÖz®™ªD&°¾·»�¨{yE<gª’:R²{5ý|É�*”ÝªBQ{Ù¦Ÿä[#~”2}Ü°ç±ÿ ?çó¥ÎŒÜ÷�ÿ ŸZ|×f»ŽÝÀ�Åìõ½ÿ ø!ŸJ\Ì–¬í{†qÏ¥ÌCƒçÓÔsyÊG#‘ë�éÖŽa¥dSr2~Ÿ—ù.},3Ù?g¹	øŸ§.8þÍÕÿ ô‰Ïùþ]ëí¼9ÿ ’£ÿ `¸Ïý2Ï“ãoù'ñõÿ ÿ §¢~ƒ×ôIø˜P@z‡ú¶ÿ >•QÝ½ß©ÇÚÈÃ¤ÿ ×[¿ý7^V³øÈPøŸ§ù‰X�5ÍºL–ï<+<™1ÂÒ •ð2vÆ[{`sÀ4= !!Af  	$œ $’x I=(  ‚‚ ‚8 Ž†€€
 (  €
 Ê?ò�þÁSé\kPÿ �ßúô¹ÿ Ñ/@=˜~ôØâ	Í§îsŒy¾Oîóž1¿Ï´	l½”u?ˆ_´•<M¥|;Ô<M·‡­4Ûø¥±}5åñ–Ÿqâ¹5{›fEŽ}ãN>–×PRm/nÀ²ÓÞâf½X–/¼aûEÍÿ Þ¥¦øBV_êZ¶±¡Oe*Äú(ŠÙiRÞ´FK[‹™+oå—�a·š µŽþ=É G;x­õm?^Ñ-õ¤³žd¾Ñ¯|1â	µ9l£H¾Ñ)Òõ«}åš�æžîëO…Y€WÑ<qûBkšæ�m}àeðí‡Ø5«�Zw³¹’Ý&ŽÒQ¢�-Ô‡{ùw/gk›'²]ÇªÊ /øâÇ;½$Ö|öA'ðÔ7ÃQÈkË>®WMKV¸š¼Ò|$’ÜZ¤°Ø],Î£B¹`Çj?¿iÛ+;Ô‹àÛ^j?`·’Í¬üÉm´.3²&v�CZ¤l’]3=¬ŠÐÊŠs€«Ã¿~=Üxs^“_øxl5­&oZÚÎ-.æMD^XÜ>¯¨Zéö�M=Ô1ê0ÚÚËšNú|wÒ\Ê½£= aêß?hÙcº‡HøO=µÌZm™Ši-§š6Õã°±›V„™âŠ)-þKË+	àyÒÅö„Ý@6t~Ñ†ª¿iø{ai¢Aªx~	%¸Kë[ÛÛ»MB÷ÄCÅ²4Jº³·Ñ`y@ŽðÞÅ~�å2 ýCâ?Ç¸5¨,þ%Ì)ªËmÙ¨þÆ.î"v7Ÿd6ò‹KíµîáwµÔ$¸kY%ž'U ©áo~ÐzÞ�«iÚÇ„&Ñ5HÒ	4ínkÚ¡›Ç–{¢´�PA;xF}Nyí®ŠObÖ6·[nŽÐM?Å5¯ø’ê_	A¡ë=œþ„Á ›VÖåº–Ë)­¯ã·hmlctýû ·_g70-ç�È£x×ö§ÓÞ3Wð%ž¯{?ˆtM9µ) °M
êábÖuß´Û,¶±I¥(ŒÇeq,r^¥Ü“Æv2± mŸˆjkûíC\·Ðm!´²ÒôÉítJÎm:ßS¼›Q½‡RÓ K˜Òý.`·û4©y4	 Ž2êÍªìqþ+þÑ‘XÞN~ÜÏ<LÂÖÞ(®„ó$7–qÍæ)·‰g�îÏÊ‘àx�»–DH‰ |MâÏÚOÃ¾'¸}#Áiâ¿_êþ%kF…m¢¹Ð¬#›N´Ñ­n ‰ÞãP�6óßÅx‹¾xu{ˆü±”$`ˆ´�¼vV—-ïËèwWz–¶�-²ØëB+ëøtøt”‰î/¡ŠÖÍ,ÖÊíq©_YÄ¨w9P�xËö€Ôu{Ã¬x/I»ðq›L‘ókâ¨¡Ô^Úˆn+…MNE�¦[˜â�MHí »x®.Z5 äáø™ñóJƒÄ1Ø|7ñ7ŠZÑßZÑæÑæ¸×–âÜköq¿”cþÈ‚ÙîfÒo¦eŽñíÄþaš<€w¾
ø‡ñ_QñG‡´/ø>ÓH‹_†÷Så¦ŠïLÑtm:À]O©Dñ¡ªêš½¢XYžiÚÄ%ƒ[ >�¿û–ßõýgÿ ¥	MuôÝ|ËÔ†gé_òµÿ ®û3S{�âÞ!ý¢¾xDix¢kí"ÏXÔ|W¤Ãxme½Žï
ø–ïÃSGt–I<¶ñßÍcu{iq*¤+k:HÊ¥Y¿i_‡3ÙèZ–ŒußiÚþ¨ºMµÖ•¡êSyS®§—pÒÂmÖl[Í2ÈÈ¨e’,˜QÏ ëÚ_áv£áÿ xŽÓPÔg±ð´Ú0Ö¼­'P‘­¬üAâ�izŠ²ÛìšÎYíe¸šH‹}’ÅÏ–üP”ý£>\êz~�§Ýê·z¦¡¯ÇáÄ´mQ³0êF3<ðO%Ý¼Q¤ÖÖ ÜÉm»í
Fs@´¿�ŸuKûè®5¨¿³b´’âÖOk?j•ïo´-6+kVÌ¾¥r·¾&Ð`ž!4�>©kæª‡È çu/Ú«à¶�¨éz§ˆuGJ™ ½³¹ðö·ñ:¶Üìk Y!‘×*èÊêJ0$ß‡¿i¿„ž&}BßMÖoÞÿ Lµ·zqÑ5_¶­¼ž$Òü)käÀ-7ÜMy«ëš<VÖð‡šHõ$	°± µÿ Ú7á‡^ÆÞÿ QÕ´u)ï­m4¸ôaïÍÖ�{-…ÝµÄÌµ¤ÑÜÃ*l¸òË,¹R	 Ì¹ý©¾ÚI7®¸“Ïcw©WÂ¾!•ã°²–h.o&ò´ö[%Å­ä3�’Kgt¨O’ä t~ ø÷ðãÂò^.µ}«ÛAbú‚\ß§‡µ›�9[Ju�T	}œ–Òÿ gHËéŽFîÊ², €q¯ûW|+òück2ëðÎ½âÖÐ_G¿µÔµ]Cð¤ž/7IsoÆÚ†™ÏØb¹1É3@îÊ(ìÓi¿´�5›M^m1u¹îô-ÛÄZ­”Ú6¡d-t‹ƒ[ó}yo‹ÚÞIa¹Iš+¨­æ{v‘Pš ã4ÏÚïáUÚjój-®iÚEŠê\É¤Þ_Ã,]Ím
FÚ|7é*ÚDÖ–ç÷—_ÛúTâIædPŸÚÓÀø†ÛF±Ò|Iygq*«=ìÌ¶Ï£YëK}§ék±ªÚ›{ØSÌ°´˜d‰Ôº; iÛþÖß.†`ñMã�o©Ü¿üH5°c‹H¶–îÿ ÍSeº7Š'a€îb‘P¦€:=Cã·‡4ó«j2iz³øCA¶Ñ¦Ö¼T‹—e.¿¡é"ÓmÓB/ý¿yæiZö—4·–ÚÁ,òÛI*ÜZ]G�†~:|<ñv½†ôkÝUµ[‰!æ�«éðÅ Ò¯u´[››ËH`·iôÍ:òîØJên#�ÌA°h”¹ý§>ÙÝý‚â-{íqøÏÄ¹Kmþò(.¼8Ú‹_ß«ky-®-£´²·Ô%ŽÞY&¶³Ôme�Po Õ<ñÂŸô›�oÂÒêuµôÚtÓMgubËw£É“w2�D!öl`r¤Š íè†¥ÿ éÿ _6¿ú=)®¾‚ªüÑ~�ÎO^ÿ �û<ÿ Ïã?ížÞØâµ§ðË×ô2©ñ/FjiÜãñÛðŸ®GÈä	–Ã[/_ëúÐ[Óò�8ÆN?=}€ëê~¢ßäSÜâíÎu½;þ¾Ó«gùã�å]t¿‡[þ¼ÔýeñCþ¾Dôºá:€
 (  €
 (  €?œÚ†}¿´�ÅÕÝÓÆq�ø÷´þ•ü—ÆÏþ2Ì÷þÃ¥ÿ ¦éŸÒ\'ÿ $æQÿ `‘ÿ Ò¦p7_¹\àtÁãÔþžþ¿•|’>Ž*òGCeos|þ]´O3ú(éõn}I½»)ÌsjñÃåøJØš²vµ8>XùÎ£´ ¼ç$rã³,[JU±¸šXzqW¼ä¹Ÿ”`¯9?(ÅýÄ¾"ñ‚þØCÇ:Ü6®£éVŽ&½�¶ïÛ²2\G"!É"FÆ+õ¼ŸÂì>ÅñF;—DÖ[ƒw›Óþ^â®»8Â0³ÿ —Žú~k™ø�ˆÄJt8ÚWOŠÒuûº6¶ýe9tNwò_�¾8_øê	´ý.´o	I$ooa£]]ˆNå’úè�5�p²,[¶†qr¯µ„08*?SÊ°T08HÚÑ§êÔ·ZÕ¥z“w»w›û´>QTÆbª¼VcŠ«‹Åk¬¤Õ8'Ò�8rÓŠ^QVüOœõ}A‹££`Ç*:àã‚9àŒŽ}k94“o[ÿ ‘Ñ»õ×úû�Þ‚^7ƒâßìñáÏ\\Gýµà{X´zfÚó>QmoŽÒ6üª[œ·9¯?ˆòÿ í·�¥:ØOÜUQMÍÓzÅÙk£Ñoo$zÜ9�Ž_˜WÁN|´q¿¥Ìù`¦¾%å}n´îrMgªøÒýì¼-k%Ì1È"›W¿‰£´�a^-�Ù5Æ>c•xcc·ç•x&SÁX¼ÂJX¦ð¸{sl¥Z]-m[¹]¯å¹ïæœ[„Ëé¸Ñµz×·»ü8ïw}nþOñ3<MðbÓMš)µ	[T¼
§¸U'  ‰O—Œàm\ñ““Í~“—pö]”AG‡„j5ïÖw•IÛMe+µé–»‹Ï±¹”œ«Õ—³Þ¢Ôi¥è’MõmÜán¼?—cŒwC‘Žrry8éšôÚkeëý3ƒÚó[§s‡ø�ðßÁž>Ò-cñ_‡4?[ÀXÇo­ivZœ1»®ÒÂ+È¥UÊü¤¨Ž+)§%úŽ5R¼^÷Úß�wÀ?<à­÷Oð¯†t?ÃyåMu�§[iðÜKš!y"¶Ž4fC4ÅI^Žz±ª�4“ëÍßmFêI´¯öºÿ Á¿ÏcÓþü5ÿ „óâ6•¦<A´�6â=GU;+Co2²ÀN?å³ ½xˆ¥K«WQj<‰§$ÕÕ—¯�Ã‹•
Åµ6œbÓ³MÝ_O#ö^Æ8,í`¶‰qApÅ¨ˆŠUGEP  v½¿ME·à´>a¶ÛmÝ·vû·»6-n0Àq€?^œóý(ÑC18ã¿Ïåíõ u[hî-w–DÁWÏ8=½úúq×Öµ¥.WåØ™AIyœÏ“qnß0ÊŽ„t9ÉôóÅtóÂo–Ý;œÎ”Ö·Ó Û¢ŸežYyUFb9ü3øö5P‹M$ôéúXRJÉëëcãŸÚ#ö{Ñi%ñŸ‰¼+¬ø^uŸM:�ÝÏ‡%»
%‰5¿Ës›©Ä$eýòý›Q…C%­õ¸’@ÞN{ÃxlêŒa^­z2Þœ©ÔŸ³¾©9ÑæTçnî<ÖÑKSéøc‹±\9Š”©á°Øº2´jB´#±Z7ì±
.¬6~íÜX·f~|_ðßíû4øâçIø�à]V÷À¯:ßhÞ8ð½½Ö³á«¨¢]“Ç{%½´×š#Â¬’°Ô–;q#¸†ê`…‡å™‡VÃ)sAÔKOkJí5Ý«¾W¶š.—?rÊøë,Í”VJ…wnl=iEM;]¨·¤×fž·Õ+Øó¸kFmZ][ŽM*åãˆDóÃ+ù’0@©) çÌãn3Ž3Å|¥n«N2QmÉ]¤ïý~'ÒÃ3ƒiMGu¯Ëïûž§Ùß
þ"xÆ÷:môñÞêhA›í[¥	 `…±(T19Àê+Á–_V„¤«R[´¥§—ßÔèž"R�5	ÙÚé«]7­ü™÷¿ƒlth£h"Š(£(ºì�”Œl#hÇB¤ØÕÇ‡©{Á;ôM¯É®çŸ__–ó—3º÷š»º{þghú@µ\[ïç*»žn8îìüç®kÙ\?åÝãÚ7rü[låúÌjhíÍòIÿ ^—+´3¢ŒÆXg$¡éîÃç­yU°é]Úë½º|º“tÞè…Ÿ *þ£�}9Ï¬ci-{ÿ L¥ý"?0ÿ x~•c7¹ü…;÷1—Äþ_�³ÁÏä(º$Œ¹þ~˜›ì	€ÈläOÏ§øQÍÜUçßŽ¾¿™©™ìÿ ³ÁÏÅ4ÿ Ô7Xã?ôâõ÷^ÿ ÉQ‡ÿ °\gþ™gÉq·ü“ø�úÿ …ÿ ÓÑ?C+ú$üL(  ËþcoÇù
¥º3giÿ #•í%ßþ›¯?Â´ŸÁó_¨¡ñ?CÑ+SãÏŒ³ïŽ¼uã�OÅ>ñf‡ámCVÓü%ŸâûÏézß‰<qá9¼Is ð÷ö¥­Ü‰ˆŸ\·ŽöMûÃw°¶Ÿ^]jö&]6@4²ÿ íºDÉoûAøÆ-a¿Ñí®.üM­_]&{éîï´å"k{	®¥…¡³³×nôË­[N�I‚å²ûÀ¨~Ëÿ ´þÒ´x>:k÷“xº×SÖõM_Ä^"¿yü+¥¤O7…î,–úÛBÕlnôDñ‡ï´K+«Ã¨Øê×/6�öiÀ>òð®“6ƒá�D¸™n'Ò4};Nšt,ÒÙÚE’(bÌÚ2ÀN&€7è  €
 (  £ÿ !¸ÿ ì7þ•Á@µøð½ÿ ¯KŸýôÙŽV‘,ÃÅ–U¶Eü±,‹R3&×Ø€Rûnwml`€¶GÆÞ"ý£þ,@oáÐþ^A.ššœ\j·š¥ý­Æ¡dÇOQfº~�i,Ö¿Ûp][C&âa`mu{(g! :¿|`ø»¢Yhz…‡Ã;k‘rÚœz¾ŸÔµkˆ_Ã×ãT{+¨Î”¾V«¤et/>Ï�Hây'·V¾�ñ?ã‰ð‡ˆuxWÂ6>+û_‡´ïè’[êv1j×òxçSð÷ŠLð�wS¾—H²ÐâÒ5[V1jé%Ö¡q5�Å•¬`Ú?âÅÆ«ªé1üÖišý…¢ÞÞ_Üéñ_h÷·"9%µ†=;S�¯-Sto)¿û<’ì™ †&(€šwíã�N].(¾x‚ÓûcZ±Ólÿ ´u››vþÎÔ˜´:Üæ?Oµ½�»Ù>¯iu4ÛO©[Áj÷¢ßP–ÐñøÛã~éþ!¼ðÔñoö³Yëº=æ—«x’};K¶’t›W‡ÃúeÍŽ§*^,K-¼Q^^-¢ÈYnÉV Aý«|o—g*üñNµ¨³i±\Éa.§¦iÓ&¥§JÎúÝ/<?yqm¡h>Õ‹ÉzÚvM†§òÆ“€z4ß¼J4mfò†³>£¡x‚ÓÃz�²ëW×v6×—fi>ÓÖŸá‹««Ûkkan÷ma¾É¤°¹kY-ÞRçÖ¿µ'�‘ïí/¾kó\é²[À÷�\êövW÷Vz�ÜKmxkQ–bk+h.'7J­y„L*õƒ<Aqâ¯h^"»Ònt�_Mµ¾ŸG¼gk�:[ˆ–G´™¤‚ÕÚHYŒlÍo	%I1¯J éè  €
 (  €
 (  
7ÿ rÛþ¿¬ÿ ô¡)®¾‚{¯™z�Ìý+þAö¿õÏÿ fjop<3Å%ý�4mMí<Ceài5­nî}F[i|1ew{©]èšž¥¥\ê2>šÑ¼Ún¡­]ÝÎ¬’³¹Ÿ÷¨Ú7Œþ_Ë§XhÉág’Æ]BïN‚
KzmÕŒfòþXœèÉo§Ý¤h×9C5Â¯�”a¨=Ä?³¾­zÞðô½›ÄÂ{3Ã6’XjW&¡¨É½ôÐé_Ù²MGH¿¸°“yí–æÈÉæÛÉ }ïŒÿ g_Ëª]Ã§xNGÂ—3%ðÐü&¿Ó/-	Íe£b	’VØ·â43Leùh>‰_³ªx–��în&Ñø£J°ð’O¨^°©Á±`š8’cjÖ‹u)ÔTG¦Ï£]½¬¯i¸Y¼kû2Ýx‡HðÍå¯€W×œú4~Ó^;û‹¢Æw}9Ô\¨!•¤XÒÇï—¥ k]xŸöpÐ/|Y¢ÜŸ‡:]Ö†–¶^0´þÂÓíã´Këˆ5+kmRHôÕ¶”It¶ú“Dd—Êš(ï¦´"T ç!ñÏì¬eŽM:ËÀ—2Þ[Gi¾†W7×ö²]@†tÐÒ(îe·ò,“$±‡xMô¥aâ�ÙõN…^ðÖ™ÿ 	5ž±<	7‚tëd¶†Íü=k¬ÐX¼v¯w'‰tiÙ¾‰["9v ŸŽf»æÕukûOë70]}ŸU¸oÉª^É<B0ÎÚ³OFä³Ú¹;fq¶€¥øÃön�Ð´ÿ i-«K Kðl�z³ÃqoªY]=¾Ž`–Ëû>)XJÖ¶l©ý±öHf@=¢ÃÁþÓ¿´ßMð¿‡,N»Ç¬5–‹¦Û^•–Hõ#²ø¥I^;¯5]”©A ªÿ |*Â²x#Â.¶êën¯á½–’ÒÞÂEˆ,F¯eiifê€µµ¶€ƒ* XÓüàÝ%¯_Kð—†t×Ô™ßQ{K´k÷�"»^µ½¬fé™b�Iœ¹+/DP )?Ã‡’2»øÁÌèfdsá­z5Âìœ£}‹r—‰6‘¿ø³@gð�î¥µžëÁÞ¹šÆÆßK²–}J™í4ÛEUµ°¶i-Ágl¨‹omØaUU�  gàOiâe°ðw…ì–åæ’ámt*q%Å½Åœï8ŠÑD¯5¥ÝÕ¬­&ã%µÍÄLSH¬�ÿ 
·áž"ð¯|ˆ&‡>Ñ	‰áVH�Ø’²"3 �û¦í¤Š étè>‚[]EÒt;iæ7[éu¦›³°¦’8a�ä  ]”±õ z ¡©Çº×Í¯þ�Jk¯ Ÿê¿4_¤3“×¿ãúÐã�%†}÷·ÿ ¯¥mOá—©”÷^ŒÓÓqÇBHü¿˜ê;ãóÅD†ºyØ’÷ýYãžz‘è3Ž}³Ij×õÐ§º8«sÿ ½8cþ^ójì¥ðVÿ ¯5LgñCþ¾E~g¥W	Ð P@  P@ üàþÓ:eþ§ûMü`†ÆÚk‡ÿ „Æv"5$ -­2Y¾ê�r@æ¿˜8‹#Í3®2Ï(e¸:ØªŸ^“~Î>ìW%5yIÚ).­½ßr<×•ðÆS[Š§‡¦°‰{òÕ¾i;F+VÝº#�Gð·…íÌž+ÔKÝÅƒý‘fÈN3¶I!yÆIÄg cÎ>Ï)ðÓ/Ëã
üGŠUëÆÍåøWuüµ+'g%ö”n–ºè|þcÇxìb•<‹èÑwKˆJ2’Ûš¥ªO[_ÞÚé‰>3\ÜÛIcá“�h7 h¶5Û)ã&>BFr<ô<WÝGCAa²¼-¾‚\¶¥í$º9N×o®­Ÿ<%lMU‰Çâjã+7Ìý¤›‚owÞßð”¼s`ž%‡Î¸»’[Øäyæ•çyKs€I'‡aÐWœêNRnmÎûÉ»¶÷êwS‡,y"¬¼•¿¼áY¤¶´Ž×g”Ð�×¡R:ñïÇä·³k³þ¿¯Ä´µÛçëõ9+Ë‰ÈÏÜ,zÿ ?Æ±Z”~•ÿ Á<~.ØøgÆW
ñ+økÆvßØÚ…¼Ç0ù—!†B¤Ãq�^¶Q]Q¯ìçgN«Q’–ªý4þ¬yù�':¥7ËV�¿¯}5kO/Á²w^±ðWÚ4èbDŠžÚEPÖÒ|ðÊàïB3‚pÁ‡8¯±Œ#¹R^‡ÌN´ë;ÉÝöé÷~¿yàÞ-º[©esÏ€{z™Å5èoNZ[º±ù7û^üsø‹ð¯Åvšg…šÖm3PÒ´÷¶µ66r\½ýåíÕœŒnï'†(âÊÛª‡*¡�/Šæ”méýhtFÖVéÿ ß×«>›ö�ý¤&­>¥o/û¸ï<3
*z*ß¿àx¿3N¼m§íûH‡U¶½Õn$i"Š8Åï‡'%Øþî ŸmšC"a3–%p0h¶�´ýæV½¶W~~ŸÖèþœÿ b‡þ-ð§Â=[ø“:]ø÷ÅÐë:Éû5½³ØGwRÛén¶²Í=œdG,‘9YoïŠìÃÓå‹—Yuù^.·´ikd¶ï«Ôû…Tþ·8Ë0HÛ°=Ïãž_óÐÐI¤'ÀúØúý(›ñ.¼!óm ž0ö°ù·
®ÆYwF$Nª
²’Aïš¸Ù_k¤ºíóEYÚöv{>‡;á®£Øõr±\ï”Fr>hÕÀFÀeXO­	¶ö[ýÝ¿"NÓXÒÞÿ N¸‚ÊdI'@›;OC‚W,ìÀË$tR«ìç%Ì“ÛúüŒêSR‹KFÏ’ÇVðêê‰{F÷ ÍØÊ¼ˆ8q• F3�H\|Üñ^š­Nº\�;-¶käyò§*mÝn÷¿m?¦_¿“NÕt©,5›;}KN¹ƒËº·»Š9â•¨’9U‘Á<�ÃS•8ÉY¤ÓÝY5ý~¦”êJŒã)FkiEÚKÑ«l9_ðTßØý¼àŸøçà—Â/x‹Rñ«o5µÆ�ã	ÝÂé<ï§k„±Ô„è»mà†K@Q&Þqó9ÆG,E	}F�ÕM9Þ>óŽþæÉ=ÿ 5å÷ü=ÅR£R³µçÝA©Ú/K.}´ëß[ùÿ <?¿lÿ é^5‹Â^,šóÂÿ t¹LCO½W�u9í$d–X‰UfPÎËÈýÜ˜ÎÖÇæøüª^Î¤+S÷½ëé¬_}õÐýcœÑ¬ ¨ÕW’IG›{ê•¿[êDŸ²‡í½§x¦êø–ýbÕå¶¬Ò “2„V	�rsÓ×5ùö/	<›‹nŸ2MÛkžô\q	-9ìÛ�Wýw?`ü/â5$�–umñ†B6àsŒv9ëÞ´£R2I]^Ûuÿ †G•ˆ£(Kµºm·ù{FŒìÇøy9 08ÈÀäÖžÉJ÷jÒ½ïùXåöó�•Ÿ›óïèdÝÁo#€Œ22NFãü'Î+ËÅ`iM=þ[¯Ÿ^Þ‡¡B§6®ú¯½õü´·ês÷¼,ß)#$d
ùúø:ÑnPø{%ÐíQmwü"°“’Wž3ßÿ Õ\ÚGâ‹^¨Myi[õõ<þ¿çÒ§™ÿ À[­º¤Û~ñÇ=úŸzq×£'Ù¯?¸y”xã×üâµV¶…Æ
%iT6ï`ðyàtíIìÊ=¯ösb~)i`öÒõ“ÿ ’/þOùÏÛxoÿ %NþÁq¿úbGÆñ×ü“Ø�úÿ …ÿ ÓÑ?E«ú8ü4(  ÍCý[žÂ©nŒßSŽ´ñQiGþš]ÿ éºóüŠÒõ_¨¡ñ?CÑ+P €
 (  €
 (  €2�ü†ãÿ °TßúW ZÔ?ãÂ÷þ½.ôKÐfMúˆë”ú  È–€
 ‰íà’Hå’¤–,ùR¼hÒE»ïynÊY3ßiï@Ð@yy¾“Ÿ·g�å§›³û¾f7íÿ g8ö 	@   àÀ t PqÃ;ü¨£‹Í‘¥“ËEO2W9yhäsË;e˜òI 	(  €
 (  €
 (  €
 £÷-¿ëúÏÿ Jšëè'ºù—©ÏÒ¿äkÿ \ÿ öf¦÷Ëu?€?µ�J}_Sð^›w¨ÜÝ\ÞKu+Ý÷w7——%q8“]ê·2F�Q¦¸‘Êç@-¿ÀŸ‡6~,³ñ…–‘-•ý�­ý°³¶¼ž=&çûJÍôû™ï,7î'6r¼ÈÄÕ²¼Š ©§~Ï_
tMFßUðÿ ‡‡ï¬íì ±›GºžÔX½†žšLvÑ–’1yý™62O"H^‘ˆóŒ’¸�øðÄÝj÷‚óPÕäYukë©î^ãS•:IzRXã™–@%» Ê7°fæ€ ›àÂ)ïuEü¥íWSŸWÔn�M×z…Ðu»¸šD”;›¥p·O—"Ç+ûµ 
–³·Áí6æÆÿ MðfŸa¨é’´ÍJÝ¦ûnŸ1é-¤ÓI/”ëü)Ž jMð?á…ïö›jÞ±Öî5»ÔÔµ»Í[uÕÞ±•}¢%Ö£(1ý¢Q¥j7V\¨_)�íó#G 	Àß…vèËmàý2Ýžé/Œ°,‘Köè¬LŽór8hK$HCíÆs@�‚ÿ ŸB‡Ã×šêVZKc¾þây®å¶šûBÔ&ºWŽG?iðÎ‚Áø`ºe²…mÀ	Á…±1xCOŒ+nÛ\¢¹Ú$0ó¹²ªß63@ÛüøUlòIƒ´Ðò¦¬ŽI¸n5í>çJÖH1
Ú�…Ô¶×leMœ‚Š@¨ÚZÃekoglž]½¬1ÛÀ›™¶E
ãMÌK¨ e‰'“@(  €
 (  €
 ¡©Çº×Í¯þ�Jk¯ Ÿê¿4_¤3“×¿ãúÓ¾`“ÛøÏ#ßšÚŸÂýQ•O‰z3ON=ÿ �üú>§Ú¦[~¨uïÜ#“ß—ãôüúÒŽå=Î.ßþCzwý|Q×¿~Ã½vRø+×šŸ¡Œþ(×Èž—\@P@  P@  Pó+ûaüG½°ý¤¾/è–R›ƒÅ÷PJðæ7™¾ÉhYÚ@AÉË‚0A,8¯ŸÆcªR©Z…g‡�3u(T­QÆÎufµ”šÑ½‹SÝÂà£R�*ÕëO‘({iÊp£ô�(="“Õ-V®ËSãûýV=@\¬’È%1·ï]³’~bÀú“É'æõë^ª¶šm»»·»~¯ÌöáIE-:/—e¶Ÿ#ÁžÔuÝJD’òH¬c-#É·q‘y +Ôãžþp¡*�üº»[V—õæ{ÿ �¬l"‰£+»!„¬ÎòH8RYB/ çb(<wÉ­–µùXžn]»y_Õ�™|SÙ¼CªZ¾÷êÃ Â•zÆ¢ä¼Zò);Ý­KI„úwšÌÑäüÜ÷ã^kÇ3Õþj)áÿ h÷ •e¾¶;‡Þ³FA^�ã¿­¨»J/]$ºÿ V"¢÷]ÿ •þV?¦Í9ŸâWÂ[²cq®hº|I(ù—v‹»G„Î÷AºH·ge_ãûêJP’{¯ø‘ñuãìëÎ)hÝínúè¿ä­rìn�; ~e`xÁèAú+RÓµšÿ 3ñÏþ
2A¯øRûlÓF–vo"Û[Íu/“iâ�æt†Þ9g“ËŠgfÆìX‘€MsUÑ¥®ï_óþ‘ÓOTüÏÈ¿x[Ä~"ñ¯«Y|eñ¾“¤ß›„¶Ðm¼¨­µ�¬îì¶Fv³†Iíã·yT�‡-/a’¿sOë¦ÿ ŸÈû{þ	›û0ÞøÃã¦–×Þ>ñoˆ</àÝGDñž­c©è²èöWWš]�Î‘¦iŒd·‰.`¹¸6“#	'1èVÐË+$‡.*òK¾ž�öDNn“né«/^Ÿð#ûÐí>ËioíÛQªªª( (à  b½¢²Ûo¸ò¤Ü�ÙÓCÉëŒ`þ>�i½u$½;ç?†M 6|åEÁ8Âä±À
 e˜“Ð““ÆZ ø'âf¨š�µ?Ã­_Ãqpe]¶×akhÉðÉ	ßðˆÂ/—4N¤uæ¸+5
Îqm;$õÓE÷YXõð×žSj-]½UúùY§ó<§Âµ†ußGámJðö¹¦†UÔ%Ð5X‘‚º´ùfÒîHùÿ |­bv³5Åšª¥EÊ­ì¤œI?†^½Ÿ©¥|ª¤){h5([á_Ì¿–ºŸ úW�„ZÆì¥4#qX020%ü¥X©‚G5ës'óIÜñÚzéÿ zR]iºÝ±†dŠT•@’ çÆO*Ã¤eX=bÓZ=Ó^D8®×¹áŸ¾xôÚMðÛ]µ‰Ò?†õ‹[Yíî‚ÿ Ï¦¢-Úö)Éòî$”Hÿ òñ
ñ^Nm[?åUrŒe%8/{‰¡Jp¨×jŠ
q{èäÕÞè÷òGÃªj†y€«*Sï˜jõ¡Rš}é{OfíÞ1Z}–Ï€~)øÏRñ~�}ðãâ´	Ö­¦X`kÍ>xžd^MÜpÍ~Rî!Ç™m4j ë’+ã)ø�žåµeC8ÊpÊ¤dá)RUh9E/Š>ÒU új­Øûïø†ùaN¼“7¯*�4T�BŒ�írÂ”¢û©«üÓ? j?ø$/ˆþ&øÎÇÇþ	øƒðÊÚò×UƒS´½ÔàÕt«¥—ÎyfÂL~ò61IûÜ8b‘‚qÆqÞ[Œ„ã<"'.hÕ§4Ü–úF-XéÁðfa�«Ntq´çr‹´éÎ-Æk«­RíþF§Á/ø%‡ÄøŠ/xÏâæ‰«Ï£\‹«-Âö„¥„‹"‰õ9nâ¸’4*@Ž;XU°¬Äãm|aœÃJt(áåéÏ)E¶­ü©hþoÕŸ `ò÷N¤kV«uü‘‹�žŸi½WÉz¶ÿ 4­_Â–¾£$­Eæ3ÎÛ"¥‘·å€$î,ppI95àá�E%v÷þ—õùØºt*^Ñ¾–ºvV¶ŠÖ[~»I¶±½	YUÛo@Fa�_È×¬êÉ«]mÓFxë'u}t×‘§¥ƒrT¾I''ó=ýiÒ‡;mó?ø'-wMòµe·Èë�„+!6�¤ñƒŒƒžõÕ,,yu�ïÜá†6jzOEE§õÔçf³´–7>LG;Ž:í9è2}0:×—SBMóSOM:ÛÓó±éGÚ‹rw[ÿ _™ÍM¤ÝÌê¤ýÔ)€3ÓæW5åÏ)¦Ûåmv²Ñvïù+µ·õùzÏ†îš%h.Ð±kbØôù“g>£¨þÃœ—¹U¿U§õ·©ŒñÔàìâþÿ .Ý63ŸÃ&@DqÛN¤|¥VTøñzÏû†Q•ûókÛì“ý¡‡ëÍš+>�âXc-.Ÿm?0WbBö`<²O' 52É±Ñ_§7áxÿ ]
Xì,´ç’½÷K×¹ìŸ³•¦­Å=.KËXãƒû7ZjHr3dûA�¢Fäñ×Þ¾¿Ãì'ÄØj•b”V›¿z2KK.§Êq½j58¡+ËÛátôª®~‹×ô	ø�P@—ÿ êÛüôª;£7Ôã¬ÿ äbÒ¿ë¥ßþ›ï+Yü4(|OÓü�D¬B€
 (  €
 (  €
 Ê?ò�þÁSé\¦Ê®¬Œ+)VSÈ*ÃèAÁ 
Jµ+ß(ì¥¨Ðµ`Ø àp)ßÓî—˜ŸÙVßóÒÿ ÿ š�ÿ %Qqr¯1²íºy—ÿ ø3Ôù*‹ú}È|«Ì?²í¿ç­ÿ þõþJ¢þŸp[ÔOì«oùéÿ ƒMGÿ ’¨¿§Ü.Uæ)Òí�ü´¿ÿ Áž¢?•Õôû‡oPþË¶éæ_ÿ àÏQÿ äª/é÷ å^be[ÏKÿ üj?ü•EÅÊ¼Å:]±ÿ –—ÿ ø3ÔGòº¢þŸpíêÙvØÇ™ÿ ƒ=Gùý«4_ÓîAËê'öU·üô¿ÿ Á¦£ÿ ÉT\\«ÌS¥Ûùiÿ ƒ=D+ª/é÷•y‡ö]¶1æ_ÿ àÏQþjÍôû�rú‰ý•mÿ =/ÿ ði¨ÿ òUôûƒ•y‡ö]±ÿ –—ÿ ø3Ôù*‹ú}ÁÊ¼ÅþË¶ÿ ž—ÿ ø3Ôù*‹ú}È9W˜ŸÙvÃþZ_ÿ àÏQÿ äª/é÷*óì«oùéÿ ƒMGÿ ’¨¿§Ü.Uæ/ö]·üô¿ÿ Áž£ÿ ÉT_ÓîCåõ¥Ûùiÿ ƒ=Dÿ ;ª/é÷*óû*Ûþz_ÿ àÓQÿ äª/é÷•y�M:Ù$I3s#Fw šöòtÙ¼¹§xË)åIRTò¸#4_Óî­Ü¿HfM¼z�¬)n‘ÙÊ‘©#O4Lë’AhÄ…<òŒ=éè÷¸oÕ?çÚÇÿ çÿ äJ4óü 7êŸóïcÿ �sÿ ò%yþ õOù÷±ÿ À¹ÿ ù�<ÿ  ú§üûXÿ à\ÿ ü‡Fž`õOù÷±ÿ À¹ÿ ù�<ÿ  ú§üûØÿ à\ÿ ü‰Fž€ýSþ}¬ð.þD£O?À~©ÿ >ö?ø?ÿ "Q§Ÿà¿Tÿ Ÿ{üŸÿ ‘(ÓÏð ßªÏ½�þÏÿ È”içø oÕ?çÞÇÿ çÿ äJ4óü 7êŸóïcÿ �sÿ ò%yþ õOù÷±ÿ À¹ÿ ù�<ÿ  ú§üûØÿ à\ÿ ü‰Fž€ýSþ}ìð.þD£O?À~©ÿ >ö?ø?ÿ "Q§Ÿà¿Tÿ Ÿ{üŸÿ ‘(ÓÏð ßªÏ½�þÏÿ È”içø oÕ?çÞÇÿ çÿ äJ4óü 7êŸóícÿ �sÿ ò%yþ G,Z…ÈŽ9RÒÄÐÊï²Ìåb‘\¢£CÂí\„'%¥tüCÃðÔÔ¤'®ÿ Çý§µ»ú|ôý+Z½L§ºôfžšzbsŒ~_Ÿ^ÿ Îd5ÓÕ¾ÿ Vxç‘ëÇnzzútÏjÿ "ŸõøU¿ü†ôï{�ïŽ[½uÒþoúóSô1ŸÅúùÒë„è
 (  €
 (  €
 þA?nMNfý¯~<ZE,Æx<}wåA9_±Xœžp‹ÉÁl.qšø¬Ãý÷ÿ _ä¶>Û.Šú–õt×æÏÐ4�ORò�ÛàÊÁ¼¤ÎÐ=ýyàdãŠâJí$¿­ŸævÝEë²>Àð>�k¥XÄ¾Z™Z?�ˆœƒÁãßŠôéÓŒUµv×³gzœÎÑè÷_Ö£¼QjXÔ‰‰Æ?Zr«¾úzÂr¶‡È´áŠ™Õ~[›xX°ÄŸ¨¯?y®Êë§ÞuRmÆï¿õç±Ãª=¿˜ÊöÏ½péëÐÓðŒ¬ž&ÓÝG"îãœ"óZÃòh‡v�öýWèGŸ²g��¿‡´Û™3“´ªÇåehþVÁld�aÛµ}ŽYVô”_•¯ÚÇÊf4­Sž+{Ý-–º~£ûE|>êã^Ò£+¢kE¤‘¥ÙÚd‹åU$$¼Yí�Íz�úëýHäŒ´KúùŸøßá‡ƒ¼k{e©x›LMNãN‚[kA#~é#�£y@%š$Éÿ dVSŠi_�½94šÒÇŸ~¡’I<¥09åá€9þ½«)(Á9=—õ÷šó¿#ê¯Ù7ÀðÕþ³ªxoD±Ò,®§H1iÆ&6ìSÌsÔ’ûÀç@?L°­N¬ä›qÙ~¿ŸôÇ‹�-8®¯_Ãþý1Óg{þÃ�Ïjõ:_ðÇ”Û7Õ»Ž„
«\EèÌ=qúãú~ :ò3¨Zjñ»)’ÆâÉÃ)•2Îã¾s@ÖçÀ|)ö[«ï2Y‰Vt]ÌIÛóÆzp0=¿NM;¿[ž¾§º•–�-ýzŸ#h>ò|}§ÞZB’ÜÍtLžlaÑ¡`Ë'›‘ó!Vù�=:W›•T´ÒûkäzÒ®¥AÆ]R_%ÛäE¦þÓ^1øoñ~ãÁš•�Ôü÷éV7:Üèí$Š²>•rïˆà¹ÒÚR!Ë±Ü2+5˜Õ¡Št]¥O›áëð¿–Ýö
™møXÕ‹å«Ë{­Ÿø—4~¢x[Ç0j¶ñj]Ù–&9e‚C¶îÓzyŠ·0îÜ§«¨(ëó)Å}Êqº}5]VÛõ>f­Sm5¶Ï£k±í~ñÍµáHn%MØs};ŸóÒµ|²zhÿ ¯ÄÊÎÍ2§Äo„ßþ0i¦x³D´Ô7!ÚŒI:¥‹‘�-�ò¯�/nJ‘Æ+ÌÌrœgMÑÆP…EÒvJ¤_xÎ×ZžžU�æY-e[ˆ�-S•;·J¢×IÓ¿,–§â‡íGû+|møo¨x—Àj~:øwoæÌïj÷Ö‰j��JÎ%%¢… V¼ˆ4gäÞCå™Çb02•l#uð·r[º´ãÑM%ªWµ×cöLƒ�0Yª�k†ùci;S«;+ºr¾—{Eú#Àþ|S–ÛÃÂîâîéf¹INöY8.Ž®C†Và‚F|ML,èTjqi»­SO¶ß#ïÔáR1iÞ/f¼×õëæ}áß‰VW�,²\á£Ëeð…˜gwÊ[Œ‚³
Å+mþ_×CžQM¨ÅÝ6ïúW;ûˆVS°_5ƒ¬›rxäœ;U©?¸Êtì­ŸG}{�‡¼U`-ÑÚåar€ä�‘ŒžkÓÂÖ‚Zéëý}Ç‰ŽÃÉÊÉ»n÷Ó¯õò;µñ¦Ÿ4%<Ô_â`7c®2yuü+Ñ–*‹…œ¢žº3Çú¥e;Æ/×[Ýçˆl›{E<@m-…uÏ=8ÏôêkÌ«R“÷”•¬›þ¾ó²•º&š{zW649lomÅÃ\EÜíó#ê	'ëšª1§;{Ë_Kÿ ZüÊ¯í`ì¢ö]Ù¼uK;VHÄ¨@9ÊüØ?QÇ×ÖºSŒI¯•º®�Ië$×kÝ\Ô·×­%bpHþñüžÝ8­!V/g·õ·õø™T¡R*íiÜ¼u(I¼lOqŒ÷é[)Åéo/ëó0µ¾^×õêz·Áù “ÆÖ±¢¹²ÔH* ?ñêùéê+è¸^YÅ$¿…_T¿éÛ>w‰äÿ ²+«¶�Z?úø¿¯SëÚý@üÄ(  ½Cý[žÃüŠ¥º3giÿ #•ÿ ].ÿ ôÝyZOà_!Cã~Ÿäz%bj P@  P@  PQÿ �Üö
›ÿ Jà FeEgbTf'UFI'° dŸJ  5(O+ã©èék++Ì¬ Ž¢€íÿ çÚûÿ  æÿ âh þÑ�þ}¯¿ðoþ&€íÿ çÚûÿ  æÿ âh þÑ�þ}¯¿ðoþ&€íÿ çÚûÿ  æÿ âh þÑ�þ}¯¿ðoþ&€íÿ çÚûÿ  æÿ âh þÑ�þ}¯¿ðoþ&€íÿ çÚûÿ  æÿ âh þÑ�þ}¯¿ðoþ&€íÿ çÚûÿ  æÿ âh þÑ�þ}¯¿ðoþ&€íÿ çÚûÿ  æÿ âh þÑ�þ}¯¿ðoþ&€íÿ çÚûÿ  æÿ âh þÑ�þ}¯¿ðoþ&€íÿ çÚûÿ  æÿ âh þÑ�þ}¯¿ðoþ&€íÿ çÚûÿ  æÿ âh þÑ�þ}¯¿ðoþ&€ü/"FRxšCµ<ø$ˆ; NÕ. -�Ó­ ] á©ÀÙ1Åu*d�$VÒ¼mƒŒ£¨ÃŽë@ý£üû_àßüM Ú1ÿ Ïµ÷þÍÿ ÄÐý£üû_àßüM Ú1ÿ Ïµ÷þÍÿ ÄÐý£üû_àßüM Ú1ÿ Ïµ÷þÍÿ ÄÐý£üû_àßüM Ú1ÿ Ïµ÷þÍÿ ÄÐý£üû_àßüM Ú1ÿ Ïµ÷þÍÿ ÄÐý£üû_àßüM Ú1ÿ Ïµ÷þÍÿ ÄÐý£üû_àßüM Ú1ÿ Ïµ÷þÍÿ ÄÐý£üû_àßüM Ú1ÿ Ïµ÷þÍÿ ÄÐý£üû_àßüM Ú1ÿ Ïµ÷þÍÿ ÄÐý£üû_àßüM Ú1ÿ Ïµ÷þÍÿ ÄÐ®£dWK˜|ÇHÕ¦·’$2HÁQ7°
Ø…PO,@‘@è“×ãúÌÓ?€sùO¥mOiÔø—£4ôÐ8=ùãð½»ý~•2Ø¥Óä:û;O�?Ï^qœóÖ”w)ïýy]¹ÿ ‰Þ�Ó›€{úŸ^@ïŽ¾ý«²—Á[þ¼Ôéèc?Šõò'¥×Ð P@  P@ üƒ~Ùú;Ü~Ù?îb�†?®÷.pú‡Óð÷¯‹Ìûn#OùyÛÉo—¸áõÿ —kó×ü9‡á;CÀäó¹sžœr3í�zŠ1\é¿>ß3Z’÷e®¿ð÷>�Ð/žB:`¸íÐ�ÐšíÑ=:o_ÇÔÌñ5ú‰ºŒ„Ôàz	ïG[ßËÌKD|×ñHæº†à0;Óí–UëÔã9®V²Vêµëçgëoé›ÕkcËµ	Uaf]¤•lsè+‘-ôìo»úþ¾eß¬�ªGu""”#œ€ÊAõâ«f½|�ì×¥ÿ §ýz±_³ÇŒã´ŽÝ°YE¶æ$BêO#sj�1œWµ—Öåjï«zk²Zo¢Ûó<ŒuÜ­k5§«ýWÝcôþîÖÃâWÃÛýùÔÌö¹ŠUÃI¨7Ã<yæF�zuô¯§MI&¶kúôyóÍrÉÝy_×Þ~Zx–ÒçÃúµö‡©¯—ye+Dã+¨?$±ärŽ¸`ry$uŽh«­?¤oúyV<ÿ X¿-
YÚ×—Î¶Ð*žAvÃIÿ  <Ûƒ\8Ê±�>DÓ”ö³¾�oo»S³IÊ^ò÷c«ßðóÿ #ìßƒZbøsÃÖpm1´£{+à�çäm99ÜsÐ“Š¬Tc¢Ûç~¿‘8Æ¤þÙ|—é¢>¨Ò/K"üß0õúùï^•ÓØòä¼™ÜÛMæ*óœ¨ü;zñÛµ·__™™«�‰þ’~ ��óÅ~ jéQƒkq!™nH6ž>€°ïŒþ†ºziÐksäÿ �Zqk™ß+àýIR=³ÏãXV�Õÿ C¿$Ÿ+vë÷Ÿ4ø;NK›Ù�m¶·œ|Ü§Ì ÏáþOÃËi^ûþ‡|�âí¯Mÿ Câï�Z<W_î58Õ}q#o\pw’§§n1×õ¯ñšVm®—Z[ü¿×ÂNÔcö½×â}ûû=ø‚ÓÆ~Ó4ÙnË_ÑlÛN‹Sµ>UôH y‹‡ŽæßvÖ{[˜æµ›`Y¡u8¯wQT¥´à¹n´Ûg®þ‡‰�§*\ì¥N£æå{_oU¦Í6Ÿ Ðüd<ãÃiá_4òÇ§ß+K…¼KlDW6—¼ŸØ—’�…ôëë™ ó×ÎXDºG¡WÙVµ9ÞÑb¢î›Ùÿ uß]žše,#•%Z�ï)Úî:sÓ}š[¥üÖM®‡Ó~ñ½Ô›;×)$XÃ3¶
7(Àò¤AV«zWriêßõþGŸ(ÛÒýw=ÇOÕ­µrùr¤ªU‡Êèèã] «†A9â©ÅItzY¦¯TÌõM5ÑèÕÖ»ÝŸµ'üßÃ-5O|Ôáø]ña%Ì¶ö–°Ÿøžãç”¦©¦DˆtÛÛ‰J�íM<€ “=•Îr>k4áŒ>õcNëïµ©Íù¨´ã~ëÕ£ír>5Çåª8lTçŠÂ+(¹;Ö¢´^ìŸÅ¯hËg´–Çó×ñ6oÚ7ösñV¡áŠ½ÓµvŠà¹–ÇSµUP—Úeünö—¶’®Ð$…��ƒéÑÉ|-~«
Ž
’Vo£~�>»ô~½�ÒpÜK‡ÄÓU¨Ö�TÖÉ¥(÷RŽ’‹òkÍ]oÂi_·ýµÜv·Öomå�8œŽ¼¸xÔ2•ÿ �
ò±7ˆ¥wëÕzíý\ÞÜ*K–rqWv×æö¿OÔõ„ý¼´;-6_ø˜M=ì;¼‘nf]@dˆ°vÃuÀÁÈ=«ƒûwÁ­ºmýyz³³ûW“æœ^ÍÝ¯ºÿ Ößw�ø§þ
Yãy7è– �<]Ü»ÆËÇÌB¼GŒ@ÚpkeÃx©k:¶jÞê½þýŒÞyƒ‹~Îšžš·¯Ü¬y‹ÿ ÁK~4¥ËÝ½†�5´±ìºñv†,ÃoïY2¹èsŒuÏMWÔp³“Nûß§õÓ¾¦ÛQöŽJ”Z¶ŠÎÝ|žÞjö=ÀßðUOi×I¹§ZGü²>näÙ¹€/åùß6:çð:å©�âhÝÓ©Íåúô¿õòÑgt*iV…•­Ì“ÿ -·ÿ 3ëïÁKü/ mKT²@ÿ 1u
áUÇÈï¸'i\.<žüßRÆÓ»qÓoê×5–3$¬ÝÚ}ãéÓîzžïáïÛ×áÎ¦!û>¹o%Äª1
ÈêI+�Äv)ì~aõ5”½¥-e¦ö‹üÿ È!ìë&£-v¾ïó=ËÂ¿µ‡üF¶×ª‘€å•¦Üw#6U\³u
‘Ö°XÚŠZÆK¶�~ïÀ·—ÃwÊïÚÚzÙØû£öYø•§x³âv—cmv³K&•¬Iå«d�ŒŽIã®±¯²àÜTêçTa$ÕèâÝI¾Èø®1ÂÆ–M^qÛÛaÿ ¨ý3¯×ÏÈB€
 Ë¿ÿ Vÿ ç°ÿ ?N*–èÍœ}§üŒZWýt»úÈ:ò´ŸÀ½P¡ñ?Oò=±5
 (  €
 (  €
 ((ÿ Èn?ûMÿ ¥pP­Cþ</ëÒçÿ D½ öd°�¶ñ3ª°¡f$  @I$ð ’x€[#Hñ‡„µù¥¶Ð¼SáÍnâÞêöÆx4�oLÔ¦†÷Mû?ö�¤±YÝLñÝiÿ jµûm»ªËkö›=#ó£Üµs{geä}²îÚÓíWZ[}¦x ûEÔìh<×O:âg!"†=ÒHÄ*)'—«x£Ã:æ“§ë¾"Ð´[ýzim´;[WÓôëÍfâ š&Úòâµ¡7VÂX¬ÒgŒÜ@A–=À´^»[£8µ¹·¹6³µ­Ð‚hæ6×+rµ´â6cëÐÊÐÉ¶A±¹]®¤€Aªjº^‡asªëZ•†�¥ÙDÓÞjZ¥å¾Ÿai
¼×7—rCoJ9i%‘G$Š –ÆúËS³µÔtÛË]CO½‚+«+ëˆ®ìîí¦A$7·0<�ÜA*2¼RÄïˆC+A T ÝÊX e. b¹€l€Jõ �pHÁÁÇJ u  P@  P@  Pÿ ¹mÿ _ÖúP”×_A=×Ì½Hf~•ÿ  û_úçÿ ³57¸ôÏxo[¾Õ´½Ä:¯©èÇm®éÚf­a}¢ÜÌfÛêÖ–·Üi³Êmîq^GŽ`›jŸ)ö 4å¼´‚{[Yî­¡¹¾yc²·–x£žòH!{‰’Ö'a%ÃÃo“Ê°«´p£Êà"³  ƒ�$‡ àúp{z Ì¸×4KIÞÖëXÒí®cx£{{�BÒÒIÓÍ…&Yæ�÷‘)PÒ'Î€¯4zÚæÞòÞ»Iáº´º†+›[«iR{{›yÑe†x&‰š9¡š6Y"–6d‘]©€0m<cáýfOØø«Ãwž Š9&—B´×4Ë�f8a8–Y4¸nžõ#ˆñ#´PðÄ é(Vñ‡ô°Mw]ÑôWÕn…Ž˜š¶§e§6¥zÃrÙØ-äð›Ë¦^E½¸’b9	Š ½u}ec
Ü^ÞZÚ@ÓÛÚ¬÷W[Â×7wÚZ[¬’º!žêîh­mâæMq,pÆ­#ª�T P@  P@  P@5/ø÷Oúùµÿ ÑéMuôýWæ‹ô†rZÿ ö‡þ˜7þŒ5µ=Ÿ©”÷^ŒÓÓG#¯CíéôÏå�©äÄŠ[/R[áò·¶GQÏsþ¢K_�Þçn?âw§õé#�nGé]´Ÿîë×š‹õ1—Åúùëúó=.¸€ €
 (  €
 (  ä·öÃ0�Úóã÷Ì�]òåaüëãs÷Êÿ õñþKþö¹ûŽþ½«õÒìàtk¨Ò Šÿ 8#§ÓúÖ4ä¹‘s‹kþ	ë~¹X”HÇ¹öèÏå]Ië®º‘Ÿ³‘Ëø—Q$Î­•É ý7~^Ÿ…Lä—­»	Á­?_Ÿùžâ›ŸµÇ8V;£RØÏ÷Jã­rU’myùyZ›R\©ß¯õéèy]Ì’Ü”·F;�×’‰·NÚm¾‡ªø'LŽ)$b²õÝ‚zcÓ·§>õ/]ÀÓ>Úø[«Éh°*Ïµ•�Ü Œ4náxìxÁÏ#Ö»0þíž»÷íþfu)óBíy=v]ô~Ÿ‰úŸð�ÇŒ-íÃ¾v¨G¸pA¤ÿ ê¯¦Â×¼y[½’WkúgÌã(Ú|ÑÛ¯—¯õ¶§Íµ>©á|K¿ÛVZÂÄ'hLÈešÒq¹HÁ-¹$WHoôqY×¯Rm½õóÛS\-78+®»íÞÖòô>Gð~ªÞ"ñ¤1	¦Ÿ(Žß ì˜+‚óŽ„÷çŒW›íjªKE{/Dïuë«=HQtè´÷•¯ÿ ~ŒxwT„Åk*2ˆWÝ‰¸éÐ®M{š´SÒßåoÔò«AÞOúÜöíñ1ÏÁÏà?É¯Bö~MXóšnþ¿×õCÒ´‹€\ÙVÁ^üñéøÖ›~¦3MZçEq(ŠÉ#v ÷Æ{Ód†š¸Ó"h÷7Õ¹¦0iuÜùçã–ëIdÚ3Ôqž@#úTOà~Ÿ×™ÑM¾xÛÓúù%Yoý§#§Ê‘Aà‘Ÿ®å^km^ÛÝÛæÏR=¼Û>Cø‡
Ë©¬ÙÏïÁÉûä±çñÇ§ã^eeyËºnÿ ‰éaÜTzÝký~g®~ÎZ›i^<¶´FÛô*Û:eƒ©üNÜ×NN5yz5úÁÛ©†d”¨suOúÿ ‡=óö¾ømcã�dB¢þÆ2ñÊ£3°žT†É ÇC“]y–U¤¦¾(Ã¿Ëò82Êò¥W‘¿vIÙy¯ò<Cöi×|e¬ø:êÒ{»½_þÉ�š@í»X²¶¼·³‘Žo`P¤›IË°ÆØ2ÍŠÃV¬é¸·u—yEywWïò:³aãR.Ü²š»e¾Ï³ó_3ë_üJÖ­g(çûBÈ3$Ð	'”þ\±Míî¢�žÞ@¯�Õ‡ÊMz4«Nöz®Žß™åT ’rO•ïÈú_UgÖënž‡Ñú'ÄXî4|¬„Ñ6sõg ÿ *ìM5þ_×nÇ+[_ï1>0üøOûLxBo
|CÐ­µ(ÌntíIs«h÷$e.´ûÈÊK+-ÿ *UÜŽ¥]²’P’“„en’WOÈtêÖ¡wF¤éÝëË&µGóûfÿ Á5~ üÔ®5.â?ßÌÉ¦ø²ÚßcV#m¾­³›iÓ!D¬r�y¯w…ÉñöŒð”ã[¬z_ºÚýþòªfù�(®\Lôû[¾ŸÕútØü½¿ý›<C©-ØŠúúKpH�#ºFÝAp”r»O~}ëZÙ&‚|˜JIKªŒoå®þžFpÎqusÅUvÒÜÎ×ôÛúõ>eÔÿ fyüãý#ÆW:3øÎÂÂèI«xSS»½†ËX°“	sg%Å´¾}“²1h/ h%	"d®ÎãòJ2|Ñ�–ò‚M]y=-Ûþ÷rüæ¤nwó—½÷§ÓÊÇôsð‡öFý„¾>þÌëñ?áÏÂïønõ#Ô4éÚŸ�uû«ï
xÊÊÖ[KYg›eÝ§›¨Ù\E0+»yáG%£“tr\¾q|ôjEµ§ïeu/½]7>Ë(ÆÖÌqp£:ÐjRMFãh«¹ì®½Õtû_¹ä¿ÿ à�Þ¼Òô]CÁuM&÷SÒ¡¾{OiPßZE<ˆ|Ø#¸·µÒBª¹Û’y¯Ê¸Ã6�æ°Áû_V„+B\öšR~ôuNöè}^O±j3Q•DéÅ=W*^íüÙù‰ñÓþ	óû@ü[Ýbÿ Ã2x»Âv›�¼KáYåºB(–þÊ'{­<9ÀE�2Ç×?Êó.XBª£Q¤ý•ou§·*–Ò×³"¶]ˆÃ+Ê<ñ_j:Ýyéu¹ñ®·ªè:’Mk%ý”ÖÄ®×’C°�áhß¡_q‘^ÅL9ÆÉ¦¥×G÷^ûœ´ëºWµíÕkó>Šð_í;â:Çu©Ü:·–låH;¸#@ë^Ul§GÊ´Ñô×½µ×Ðô©cùV­üõþµës÷·þëûHŸ‰?µ×ƒ¼%-Éi®<!ãË£1Éû‡nn2 \“^Ÿ
`êPÏ)MÅ¨ûB¿{Óv>{Œ14êdUã&Ý|3·]*«ëýzŸÖå~°~> P^ p��óÒ©nŒß_S�´ÿ ‘‹Jÿ ®—ún½­'ð/�£ñ¿Oò=±5
 (  €
 (  €
 ((ÿ Èn?ûMÿ ¥pP­Cþ</ëÒçÿ D½ öds@n´ÉmU‚5ÍƒÀ®rB­ÌaˆáKgŽx Èüš¶ÿ ‚møçÁº¿†ü{ðÇã$Z7Ä»$ñ¯‰5E5¨¼?¬é¿4ÿ hš,~›.ûx-l.¼[§jú�O·ê²êZTs3Ùé‘"€y¥·ìSûpëÞ,Õ|;®üi—HðÞ›7V_OŠõMFo^ÿ ÂL5X¬aðÌs½-'HÝ¥Ø^2¬¯Ë	 kø—ÿ øñÿ Äaðp^ühlüÔ>5¾™=òj÷×·ú/Ä¯�~$xwF¸½y~ÑåøoÃ?µ�KpXÌÓk6&Õ…¤WJÀ�¯ì'ûaZCákh?k„·M^´Õ5+•�Ä÷7w–°ß<—ÐZ5Ì¥mŸYÓXXêHs§2®! ‡ÿ àžŸtë¿j3~Ño£Ëâ‰ô«ýMðÞ§ã!§hZ�§ÂïŒ~¿»–[ùÍÞ ÷Þ9ñ/Á¿ïŸsÆ¿M ÿ [h(Òô?ØÃã‚ü5Ö|'ãß�Z_Ä­xüNð�Ä&ëÄÑø‚]V�Âñâm/ÄÖˆâxSY™žkÑ¤+Ì"U_3 )¢~Â´†§¥[]þÑKƒ#ƒÃ°j^ÐÛÄz<Pi–¿ô¿ˆþ$ðÆ•¼«nú.¯áØu_­Ýà‹Ïz&Ÿm¼“  ƒÂ¿°ÏíK¦ÜX¿Š?j«¯%§ö[Ï;ËâX®53§Á}[j™>Ï-¼qk2ÿ ¯žÚÎ5ºËP!¥Á<¿ií:ãV×%ý¦ìï<M«èA¸¼I<_§Û¤š‹ít_ ÚOçÂº‹¼UmñÌG†}ÂÚ-¼¤ØÉr ô—ö|ø]âo„¿×Ã>2ñ�ß�üO>½âgRñ=ÛÜ³Ý®­«Þ_Y[$wLÏVsÃg	ˆcXBBa@ ÷ (  €
 (  €
 (�ÿ Ü¶ÿ ¯ë?ý(Jk¯ žëæ^¤3?Jÿ �}¯ýsÿ Ùš›ÜÉïÁ;þ.Kãø×Àcð¶£âox�Ä·Ð¤ZåŠ¦™¯xËâß‰gÐ’ëK•n%ŽàxïÁzƒÜÍ™tÝ{áÝ”ÚaK]Nð›hß±Wí·âoø‰üMñ‰¼/¦è–ºþ›áÍzûÅúÆ¹qãKÝ[GŸL·ñMý†™36�$2Ê“]il¸¢È7±4Û?üÿ öž¶ŸW›Fý¨—J—Ä6ºÚ­Í›øªÎøMõ¿ƒ>øysãU‚o-neñ'…¯õ·µlCŸ{
[*ÞµËQý¡?`|[×|â/|S>Ô¼à­?N�®!ÔuÖ|s¥ýžÖËÄÚ³	C\ÛA¥G=¢Û82%óJ ãôOØãÆ…>¥ceûFÞÃá/Ã÷7�¼3£âµ·Š{?ë7šïˆe3y™ÿ „PÒþjqi­�£ø{K¾´Åô[€5áø&/Œ´{OˆzÆ«ñªKø“V�Vðž³áÆ×m¢ðÜóé–~¢×Z�ÌßÚú�˜–³ÉŒ‰|Ù�™¤bÖÃ~ÔVš¥½Þ›ûM¶³ñÎ¥­B—Þ/V›Â·º•Ûÿ eËm¿eƒÄhSYèâ(3uic§¤vŒâc@ž0ý†~-øßáGÂ¿ø—â�†µÏøUñŒ“øÖù|Q±Ñ<I¯G¨YéöÚ=¬‹¬l4˜bÒÌZÞ`\BUÀ ÌµØ'ö�Ôå×~éß¦ð¯ÃÛÂÞ$ð¦³¡{¨ÃÅ�7ö…“âgöý¦›,í«A&•à;htáþË›Y—N»¶S¥À A|ý•¿h_‡?þx»Å?­¼IáŸi*Ó¼Iá¤—Ä·‰­I­j—wÚaÓãÕ¤{]6®9•Fã°EØ  ý €
 (  €
 (  €(j_ñîŸõókÿ £Òšëè'ú¯ÍéäõÜ}¾ÌžÐ·§?¼?×�Æµ‡Ã/Tc?‰…þ¦ž�“Ž~üŽü¹éÓ>•2ý
�A÷Ä…?B9ïœbxïïïDwþ¿¦7¿õþgü†ôïúø£»ýÏ¥vRþoúóSô2—ÅúùÒë€è
 (  €
 (  €
 þf¿jßØ‡öÇñïíCñ�ÇžøA}­ø3Ä¾0¹Ô|?¬Gâß‡öQê|––q¥À´Ô¼Ug¨@‘È<»«H%ùrP	ùlf]�«‹¯Rœ©ÎmÅóÓWVZÙÉ>�“>Ÿ˜aia¨Ó�eF’q¨ìîú¨µ÷žý‚?lKd:—Âèæ!w!ño€©Ç?4~+`@íÎZ˜e˜´îé?üŸÿ $o,ÏÝ•hÛ¿%_þ@õ‹OØŸö¢·¶*~^y›0xŸÁzÿ ÂM�Ö·úŽ/þ}?ü
ÿ äÂþÒÁÏõðTòþãG¬~Âÿ µ­Äe`øG})9'þ*¿¯$·÷üR=zÖ3Ëñ­ÝQoþß¤¿öò^a‚ÿ Ÿêýù*}ÿ ày“Á>?l©®/DŸoÄS[J‘¹ñ‡Ã³™ù ÅÙ�9#¾+e˜×f¨=6\ô¿ù4h³ÿ ˜•·üû«ÿ È_qÈi¿ðNÛLjqÍwðGPŠÙK1ñŸÃrH’xÅÏ|tç?Ùxû»¿üKïþ Ög�¾µÕ­§îê½ðëï=§Mý€¿jÛi!wøEx�JÅ^È ‚FWÅ'ñãéR²¬zÿ ˜wÿ ƒ)òÁ¬Ï“_X_ø.§ÿ !cÞ|û~ÑZ}±kï†·–3G.Óšÿ ƒgó¢8,Èðx–ERpF\–.2GM<·7Eß{sÓÿ äßô‰žg‚’åUÕ»òTÿ ä>òï‹¾þÝš=�Ö“ð·à>£k3#!ñ¥âï†R\tÆl,ŸÆmŒâK®Âk·Ùcãtlöær¦Ý¼½ÿ ÌæXœ¶R½LEÖöTê¯½ò~¾LøÅ_±ü�WñZðø«ßNÒMªjšÇÄ/‡ßÞJùQ·ü,‚Ö$VÂ-½ª„A±€yÕð¥KÞœ›m}º[vøüŽºXüªšåU"—ø+oÿ ‚Þ¿�ú/û<~Ë_ÃÖ6ßþê¾×¬4yfño�õ›IˆºK[½Ä·W$1´vØQÂÊãé`ðu£«Ppšêç	/—,ï÷¯™ÃŠÇÐnôk).Ê5"þéB+ç§à}gìññ
Ñák}˜EÊ�í)zãþBœsž@íèª2VÓñ_æyÿ \Œ¯ÌÒ¿]ËþÖé
þ(Ú8Y¼91Œö–Šp=8ÔsÇ®+¢
QÞýàNtZ÷eò´¿;jzn—à�@#óô9Q†ÝÃíºiÆ:ò·l?*èºÓ^‡4Úv³Ùy�]ß…|K41*énX:‚¦æÇå\òIûFïÁÏj9—õrÂËDÕbµIjC*…Íƒ�ÒžùïG2¸-Ï2ø�à?kV��¤µÓ�Ãhº°�9Þk¨ÀÉ>µ2wMwØÖQ’mÙ,ê?~-¼wBÛÁ÷e,F­ Á³Î_UP:ãœÊ¸eFwv^›™éCAZóKþÝ“‚>uñgì™ûAjEšÏáÝÔä0+�xI2qþ³^Ny®	áq“j›×ûÐÿ ä¿à´ñØH§ûä¼¹*~�7|û/|Ð<Aá­^ëáíÕ©±»‹í­ý¿áGòí÷1È‡]ràü¨½]6"a'%%Ìù¢ôÙ½b+ã0•)T‡µRæ‹²åž®ßá]{ÙcüWøWñÄºÓt_K©Ë T´]CG�™²¹K�BzÈ:W­‰Nt'+Éì¶¿ÍØò0Õ!
Ð”åh¦îõv¿’MþŠþÎ³§Å_>«/‰ü.Š÷Ž§kêÚ×š9Îl5[° üÀuü+‹‡�7V<·µ¶“g^?J¿'³©Ïmô’²·÷¢ŽCâGÀ/ÚCEø£¨øÓáW„notëèmKI:ß†`Ò5Ùâ91\ÚêÕ»ÛÝL€ Ô­’„!7Ë$@ÄÑˆ§Š�wSÅî¯wÑµfû£l=\ðê–&§,ÕÔd£7(üÔZ·–ßƒ^õá_üZ×´}/Q×þë^×<ÅKÍ6ëÄÔÕ£¾EºÒuû¨.m$ ˜dÌW8â[T Ý‡�GêS•)u‹”eøÆOOÇÈóêªTå(Ó­Ð·»5�ß£SŠwôÓÌ÷]+Â^2µˆ	4Ébž$VIVîÃÃ Æ@ºàðz‚¼òEuóÅîsißð;y¼$<Qáëÿ xÏC·Ôô½VÒkGN½û,ö÷V×ÑËŠ’0F 2�ÊyVÍBJP›Œ“ºj÷My™µ}-§ùî~[xÿ þ	•mo¯ëá²4ÕœO¥Á{%¤ÇÃjãý"ÌÉsz“êdÖSHE‰Õ.^Wˆ¼¿CC9¥:1Ž)¯iuÉFO�-ž‰ò¾öÝê­Ó†®j_ºZ=mu§}Úùz3ëðIoêªCif†IÞ¥©ém}¯Þ0â(„7ìšmšôò\`$VÇæ­jãò×J6«ÍRW¼U:–‚µ•äà®ý¼ÌèC
Žôí¬Ÿ<}çä¯·› ý–?b_ÚËà¥·Å/ê_nÓÁÞ)ñ�­é7	âŸËoçiw·1_L°ÅâVºV½Ó†—þ¶Ý&ž¨à¹U¯¤ðë›’¢–­+F[igªØýƒó<R®c]aá=Og9B¥DêÉr(ÅQ…I'fÝÚKÎçé·ð;â}Ö�áÈ-|%+]XÚ\Auöž†¦,Ê­,úšÆÙPqå³Þ¿ñ#‡3ló€ÄeX7‹T°ó§YÆ­
\²æ¼ïêÒrºþ[¥ä}®IÅ¾bñèÂ�zð©JN†&\Ë–Ò²�	5gÝ#“oÙÿ âó«#ø.GGR®�«xt«+YNªC)‚ Ž~j¸‹ÓºÉªáfÿ šÏ —ð¼¿ægÿ r¸ßþf>ý ?à�¾øæ5-R†¼gzDñ?…5oÇl÷<m“RðìšÜz]ÜDŒÊ¶cL¸”³;]9¯¤ËrŽ=Ëù!,¢xšzUqxÒþíO­s'Úí®–<êüCÁõ“ÿ …(BO¬p¸Ô¾kêßåùßñsâ—ü›þ
áu¬¼ð¿Nø©¢LÒ=¶± xÇÀº±D»<µÔôïø£H{k—ÜÃÊ±¹Õ 	7C*Üárü×I{|ª¶¢Zª•ðs‹zü2¥ˆ›ÿ À”OŸ­�ä°“öYœjFúZ†);y©aãúÜû¿þ	ÿ Ùý¸?f�ÛsÁŸþ7|Ô<ðëKðoÄ=3QñÇ�¾kPÛßë^¹°Ò :w†¼e¬êòµÕä‰
¼6G|ÉÞ(ƒ8õò¬·†ÆB­Z.P¨œ¹©»9FÉZ3“Õù.y›eØ¼¾¥>%T«*”š‡³­#4Û¼éÆ*É_usúñ¯ª>(  Ëÿ õoøÿ !UÑ›Ýúœu§üŒZW§™wÿ ¦ëÁZOà^¨PøŸ§ù‰Xš…  P@  P@ ”ä7ý‚¦ÿ Ò¸(Ö¡ÿ ¿õésÿ ¢^€{0ó|‹;a“É´óv/Þ.ûƒËcƒÉèhÛä|ßûTü>Ñf·‹[¶Ôí–oéÞ#šk±Ô“OžîóÅV7£‹«Sm«[\ød[ÅióÝ]ÜjpF-`Kk©PïíOá;_ì˜¼%ãYô½wÂú�‹>Ý-ž“a5†›¦Äd¸K­2óWŠüÍ37•B#ùíe¼}±0Œ?´×‚&Ðí5ÅÒüBðK­é:ÌQÅ¥ÄöÓë>ÖµëEWRÕ4é¤Ñn$Ð¯´{}Jx,Ö}E¬BÎÞòæÜ–™ûSø^Ö4�BÑüC>­g«Þ¡s¡ÀÈš5´“^B±&±pLÉ4ml$ºk+	Ž'²¾¼·"B¥¡~Ó<A¥Ã©YÛë±´Òh­�ÄzWuû?^Å;ÎuÓ¦ÁŠxÅÉz.¯­îKè®lm¯b¿Òd¿ å.ÿ lß„ÖVš�åÎ�ãˆcÓtèµY<ÝÕ{Y‘§´›ûXÛÜ‹fQö¸á•¦‚7IŒf#¾€:=ö¢øâWÖíô¯Ù®ŠÞŠîÓSÓ4Û$þ$°¹ÔmâµÕ.uˆü?'Ømì¯¡$úÅ´jöþ]«]Éqh— Z¯í{ð§NŠêKhüAªµ–•§ê÷Igo£@°A©ØÚjVöí.£­ÙG& ,ïI,m�ÅÂ4r!O¸\KLý©¾jú Òìt¯JË¨øwMº½:#XØËâˆ.¯ô¹nž?½Ç’t{Ífçìö×[Ù[IÃý¨SNp
z—íkðÇI¾Ôì/tï£éW÷:l÷ Û5”·V²”hínÿ µD3I4om Ü·SÛ6ÔƒíqÍkzþØÝÜk øÂ}:çÄê–vúÄrèöÝK¨ßOluø®-Þ+bñÛ:¾¥(.$°·dE˜r×ö¦øw}¦®³k§x·û)[T{›«Í&ÓK{{-:ÇKÔaÕÛSÔìî/tÝR×Wµ{	ôôº}ë<pÚÜ[Í fø‡ö¥Ð´]
ßÄpøC]¸ÒæÓõ]I§»¾Ñí6A§êþÑmURÂçYw›V¼ñNž,•–%‰v¾{E™ 'ÿ †ªð\ú†µ�?Ãž/¹Ñ¼DúðW–6:-Í¢h–Zn¥ÂÛV¿µŠæRÃSŠòÎQyqÆ�ÛÁþ„ :KŸÚ7áõŸ†4_]E¯Á§x–ÓQ½ðì2YX‹Íj&XVý¬“ûSìêm­ÚëQ›íw6Â/LÔµÌV¶ë$€Ñ?h¿øŸPƒDðÝž»ªø‚âÚþoìu‡L†kI4õ�fŠúíI!TûTdŽêÁµ{¦‘.lòÌý¢€8]?ö¿ðLú�Å†¡áÏéÑ[Ã©^}´>âtý.9&º¿ˆIshdŠ(,õyÚf¼•4©¢°¶¾¼šW ¡©þØz ÕtM'Ã^ñN½>¹o£^[,Å"ºkmb+Ùã1é¾¶ñn£‰™Äº½®�¥´�‰µ;ku.µoûa|/šxífÒ|uesößìÛ¥»ðý´V¶WÑ:¥í½Æ¤u_ìÒÖ‘§ÝJò«�±¥Ë‡D ÷ÿ xÓGø‡á=ÆZÝ¦•­Es%´Z„QAZ^Üé÷6÷ÖÐÏr¶—–×v“Áug$¿h´ž7¶»Ž¨¦‚0ûÿ ¹mÿ _ÖúP”×_A=×Ì½Hf~•ÿ  û_úçÿ ³57¸âOÚkÀþ}7û~ÏRŽíWÅ:=ÜºkZêRh—^ñ&¥áø%ÖmÖhÆ×[]&òÿ N’VÎl­ »º‘�ÍûMxfKO_i>ñ¾©ˆ5q¤B�c¥i70Lº¤Zd¬ÖÚ¶¯h÷™EÕ³Ûy–×0MÔ' V?µGÃíGÃ(ñM�Ž¿saá+½
=Mb‚Æ)¥Ó¼Câ7ðý¦¯a¡awwifÁ.u1®øÝšÃOþÓ¼‰Ò€,ÚþÔ Ôu�;Ãúu–»>­}â1á‡·–=-cµÕ{«y.,õKødh-í+4,útàˆP9ˆ [Ò¿i?jzn³¨6—âK484ù.´û´ð÷Ú¦¸Ô5éIc�øŠ[('ŠóÅZK.«u¦Y²j>d3=DY€b^þÖ¿ôùïmîtß#Y]#(Ñ¬µÍÑ!¢‚Òïûd[K5Ì·VÐ´±Í4Må¬jW·P^ý©þx¢Iìô¯ÛÉ¦ÚÉpÉw£ÚGmu7ü%Z?„-´ëmYu7Ñ“Q¼Ô¼E M7º�œ+c©‹©®cKSì 	«~Õ4ÁcëÚ­æ¡-ìÙØE¢æÞâÂþm:h/o.u»}>Þin-åû"}®F»�D�V€3gý¯¾ÀðÂt¿K<¶—Ú‹Ãma Ü›m7Ni"¸¾¸–/5¸�í6÷–ÉoÒ_—³–V³[Ym..@:Ÿ~ÒŸ¼%}¨Yk­Fšbß=Íä0é2@!Ò¦6Ú¤ËlÚÊj�,nG�Ë&�×Œ|Ý2+ë|Ì 8õý®üqiã§±ðÏ‹îµøcÄ*[µÓÞßU³Ñ|uã[[_í›;ûÝ+L½Ö´Ëõ²KËƒ[¯¦·½ž) :m#ö�ðÎ¿eâFÒ<?¯M«x[A¶×µ=>æMÚÕmïR&²R]Jà�wæ“mb5XÙ&Óbºh­d ç´ÏÚÃÂº§ªMáíz;ý?IÖõ;{;QÅŽ°þ³»¿ÔítËËäÒµhÞÎÊÆööäjþÒ®ÆÆúêÚÒímŠ¸Ý#ö¬ð‰4Û»Ïé*{˜´�YÚkšWö Ô,à¼†Óý¬š�õÑt¹¶¼?Ùšf¤Ñ[\Û¤ÑÇy(´ bÛ_á„]Íî»£ø¿L¸°ÑµrýaÒM-,´§¸mI­µ}e¼=óÙÙÚÜ^µ¶­e£jÁ-½••Õé‚Úp�k/ ›ˆ­N‰â‰œi’ê·³[G¡-­­¬K¦~ý?µ5Í&úâÑåÔ^Þ;Ï°EK§ê�X2Û'á½Íþ£g‰âÀšfµ¢xvY§‡A‡ízÎ¿i©]iö:{uìÜ•ÓÕ¦¼Ô/´Ý-!ºŠD¿–Ex YíGðÂO
ÞøÎAâKmË_þÀÏ¤GçÞ>&a©ÚZC{4çKò­5‡–á-îá·Ó/§žÊ(£‰¥ Áðßíaá/øÎ	Zx[ÄÂ­SHÒíµõm"M=ä×ï!²Ò.žÙõ5(ìçšâ:ai!‰g…¢K”2´ UPKþ=Óþ¾môzS]}ÿ Uù¢ý!œž½ÿ Ö‡þ˜8üÜþ¿úã&µ‡Ã/Tc?‰…š:oðä p{Œž„O_¡52*=>_×©%öBœçž¼þ~øÿ 8¢;ü†÷8Ë~u½<ÿ ÓÈü?Ã9ük®–�­ÿ ^*Kâ†¿òò'¥W	Ð P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  Peÿ ú¶ï×ùåÖ©nŒßSŽ´ÿ ‘‹Jÿ ®—ún¼­gð|×ê(|OÐôJÀÔ(  €
 (  €
 (  £ÿ !¸ÿ ì7þ•Á@µøð½ÿ ¯KŸýôÙŠ%Ž14§lQZ‰db2qÅ½Éð œPd|óÆ?€Wwº¤/>‡vÑkz…õæ—VãûJ[[/=ÞX>v–-OM—Ìçu¾¥o*ÿ ¬&€5t¯‹uÝvÚ‹#ªGvž‚Úm($°Orá²åF‹6°É6+&f ®às@Â¾ðúÅ,+¢é‚)äI¦ŒY[ì–XíÞÖ9vaš;i$‚2~är:®¶@<7áûYV{mK·™còVXl­ã‘bÙåùjË*…>R €A9&€/ø~žtM*(d–ÞwŠ;d�æ´]–²2¬`3@™H‰b3 Â»ÞðÕÀ"}H˜�H“OµpV k†ˆ�¨ 
½:P£ÃšÛÜZL×rC-Í¸²·Ï-¹SË—µÚ"«å–® PøD|-—oøGt\È\¹þÍ´ùË…W-û®K*"œÿ 
ªô P¨|= Û‚ ÑôØA�J|»+tÌƒÌÄ‡lc.Ò€Ç�$pA ŽoøváÚIô=*gr´–6ÎX«wFrÁ˜¶ï¼OSÒ€…¼7‘bÐtˆÄ©4RÓí”<w(ÑÏÌ“#ºÈ§†V`F	 øu—chšY\ÈÛM•¹\ÊÛäùvcÜ‘Œd8 ™´á6ï¤iÍL-gFT´.FÂ…p^ÞÝ±�½G¬k€Ï†ü>Ö‹bÚ.˜lÐÊRÔÙAä©�ÖI¶Ç³hó]¾*©ù@VïÂ¾ŸI¸»Ñtû†Ðâ¾‡IŽKhZÔ­d²½û<%q‹9§µ�¢‚ÖóÍÊHÀ€\´ðþ…aro,´�:ÒìÇ&æÞÎ§ò¡�"Š?5>Ä�s€ª $žÐ&
²èº\�^9=�³ ñ9–6�ªHÅ×°b[©4 AáíÚçí–ú>›ß—_iŠÎ˜E"ÞÄŠ�‚E ò‘AS* ä¯á¯Jþdš&–òy‘M½¬m‹y°±h¤É�;ãbY[¨b[9æ€4lì¬ôëhìì- ³´‡•mmC~d�,…#@ª¥åw‘ÈgvvË1$;ÿ ¹mÿ _ÖúP”×_A=×Ì½Hf~•ÿ  û_úçÿ ³57¸©üXøi«ßiw·ÚúÑÖî¬µ8ô±uxu}ÞòæòK˜Òf:e�®£y,Í•ŠÚÖî`vô€ÓñÄÿ ƒž	»°ÒõÛÍ+K1µ”¶NÚvlíäÕ`kûG[„ˆÇÜÛ†¹ÞJá3#²Œš äbøëð>Ñen-dkËË->]>ËAiîî.­µ»>{« ó#m?YÔ`ù%Ê‘.nm+ ·Â_¾ø’OSðÄšL±xjÍïu¨´•¶þÎ‚9Ù2ÎÐ!Y^PÌŠ÷¶zÐ3sñ·àU…•ü÷ÒÊÚû[Óü=uö½ÙÅ©ÝÌšF¥3£I[»mÛY´¾Ôæû¶®²”š, ?âoÂ?ßµ¶•¤Aª¬vš¤“Ý.ˆžU½Þ�ÝÍ¥È‹å…D�*ƒ¼2„$P}�Æß€Í¤ÚÜÍ>•¤Å­èÖ:�ý�Æ–"{-/Q¿Xá“YU€-¬+ª\G�6W³G¸ €	%ø±ðJVæÒçL†ÎîÇP‚Îy/|6mjWZ|‚En%·q4v×+ö“Õ„�ñ‚hÑ<©ü5ñÆŸw¨øFÏG¾±´½ºÓ§–=.(U¦1B'1‰!S,ÄÑ¨™s¡Jƒò ;9ü; ÜÎ÷7:6™=ÄŽ²É4Ö6ÒJò"„VgxË1
1É<P`ð×‡­¼ß³èš\>|ÚÍåØÛ¯›mrÜA&#ùâ™@I²®Ÿ+¼P‘xC€^¬:F�ê[þÞ#´�àvfaqµš;>@$ãŸÿ _…EÝ•èÐtÅ›Oµº³³ÙgÇ½ìÚÜªD¨mg¹µfÆãousvO `°øoÃöî’A¢é‘<phÚ;+t)nÓ}¥¡R¨6ÆgRƒ
\�”`Ÿñ/Ã/xÃK½Ñ¼Eá]SÓu(_ÚÏcnc»Ž–qÀ	ûØ]×DÙIQ�vwþoi?°´Ÿ1•QŸìÛ™#�·—’Š‘F¡~è8 ‡„|,#1hÂ61”iÖ 4œþðâ.\dá�Ì 	 ƒAÑ&Üi:w�ÌÎaû¿”]ÖTv1ù{K2O:“Œ•šAÑÛ ‡ÃÚ¼âæM†ày$M•ºJ¹V·!Ö0ÀÂÊ¦#Ÿ�€W Š ¡©Çº×Í¯þ�Jk¯ Ÿê¿4_¤3“×ä!gÿ \ÿ C?ãüëX|/ÕÔø—ø[üÿ OM=·_q×è9#ðëÅLŠŽËÕ½á{qù�^½zgõ¡oòù÷8¨?ä9§tÿ ��Ðû·ôúû×e/‚·ýy©úÏâ‡ý|�õý™éuÀt  P@  P@ `^ø£AÓîÖóQŽ+ˆñ¾?*âB¤öc. ûnÈî+¢\EH©Â›q{;Å_Òí37Vœ[NI5º³ÿ "¯ü&¾ÿ  ªà5ïÿ #UýGÿ >ŸþþH^Þ—ó¯¹ÿ �Âká�ú
§þ^ÿ ò5QÅÏ§ÿ �Cÿ ’oKù×Üÿ È?á5ðÇýSÿ ¯ù�¨â¿çÓÿ À¡ÿ É·¥üëîäðšøcþ‚©ÿ €×¿ü�GÔq_óéÿ àPÿ äƒÛÒþu÷?òøM|1ÿ ATÿ ÀkßþF£ê8¯ùôÿ ð(òAíé:ûŸùü&¾ÿ  ªà5ïÿ #QõWüúø?ù öô¿�}Ïüƒþ_ÐU?ð÷ÿ ‘¨úŽ+þ}?ü
ü�{z_Î¾çþAÿ 	¯†?è*Ÿø{ÿ ÈÔ}Gÿ >ŸþþH=½/ç_sÿ  ÿ „×ÃôOü½ÿ äj>£Šÿ ŸOÿ ‡ÿ $Þ—ó¯¹ÿ �Âká�ú
§þ^ÿ ò5QÅÏ§ÿ �Cÿ ’oKù×Üÿ È?á5ðÇýSÿ ¯ù�¨â¿çÓÿ À¡ÿ É·¥üëîäðšøcþ‚©ÿ €×¿ü�GÔq_óéÿ àPÿ äƒÛÒþu÷?òøM|1ÿ ATÿ ÀkßþF£ê8¯ùôÿ ð(òAíé:ûŸùü&¾ÿ  ªà5ïÿ #QõWüúø?ù öô¿�}Ïüƒþ_ÐU?ð÷ÿ ‘¨úŽ+þ}?ü
ü�{z_Î¾çþAÿ 	¯†?è*Ÿø{ÿ ÈÔ}Gÿ >ŸþþH=½/ç_sÿ  ÿ „×ÃôOü½ÿ äj>£Šÿ ŸOÿ ‡ÿ $Þ—ó¯¹ÿ �Âká�ú
§þ^ÿ ò5QÅÏ§ÿ �Cÿ ’oKù×Üÿ È?á5ðÇýSÿ ¯ù�¨â¿çÓÿ À¡ÿ É·¥üëîäðšøcþ‚©ÿ €×¿ü�GÔq_óéÿ àPÿ äƒÛÒþu÷?òøM|1ÿ ATÿ ÀkßþF£ê8¯ùôÿ ð(òAíé:ûŸùü&¾ÿ  ªà5ïÿ #QõWüúø?ù öô¿�}Ïüƒþ_ÐU?ð÷ÿ ‘¨úŽ+þ}?ü
ü�{z_Î¾çþAÿ 	¯†?è*Ÿø{ÿ ÈÔ}Gÿ >ŸþþH=½/ç_sÿ  ÿ „×ÃôOü½ÿ äj>£Šÿ ŸOÿ ‡ÿ $Þ—ó¯¹ÿ �Âká�ú
§þ^ÿ ò5QÅÏ§ÿ �Cÿ ’oKù×Üÿ È?á5ðÇýSÿ ¯ù�¨â¿çÓÿ À¡ÿ É·¥üëîäðšøcþ‚©ÿ €×¿ü�GÔq_óéÿ àPÿ äƒÛÒþu÷?ò:H'Šæç‚E–PI‹Êº0ÈaìErÊ.2q’jIÙ§ºf‰¦“Z§ªd´† P@  PeùÂ1úÿ !T·Fo©ÇÚø¨´¯úëwÿ ¦ëÏð­'ð|Ð¡ñ?Oò=±5
 (  €
 (  €
 ((ÿ Èn?ûMÿ ¥pP­Cþ</ëÒçÿ D½ öbˆRâÈA(Ýö¢ 8ÊIÇŒ«‘Ò€[#Êàøð–.= ø3N¸´AlÜÉy5ÍÏÙ·—-sç]Gµ¶ao35°’ÚÝÄ!­á('„>ü;ð]©‡MÑä½»}J]^}gW»–ûZ¸Ô$¸k‘q5ø0¹hdl[ª*,(ªª8Í zÂ"Æ‰QA%ˆU@,Ä± ËORI P@  P@  P@  P@  Pÿ ¹mÿ _ÖúP”×_A=×Ì½Hf~•ÿ  û_úçÿ ³57¸³ðsá¶½zšŽ¡á[|5Oí‰n­ŒöWw¿bÖ´ö7“ZË—KmâU'¶vò.>ÔÂt‘ Z@I{ð�áö¥ ƒRðüZ‰Y–â9ï®¯.®¢–;g³‡eÄ·!Šgh¡·röÈ¸I  ÍxwövøIá½+LÒáðÂjgJº½¿ƒRÖ®î¯µYuFáînµ+›¡,+%ûJçÊ¹Xc{e¶ò²Å€:‹O„Þ Ó¬Ž�¥è+¥YHd3Á§_êV‚éd9h®Þ+±%Ì ýÈ¦vŽ>‘ªŽ(„þÅsa2xSN6Úu¾©\±ý§Jyµ‹�æöþâÒçÎê7†´Äk™´±,Ép³w(Ž™ð§Àz6¡¥¥èQÙÍok{h‘%ÕëÚ4zŠywrMm5Ä‘Oq,8ƒí•!8ÙT   ‹àçÂøg¿¸OhFMNÖÊÆýe¶3Áse§ÍkqiföÓ¼–ÂÖ+‹+YÍºD±K4BY’Ggf –„n�%×…lnH–;�:âkéîšxÑcIÞò[§»’o)V•æiX]š0€:}ÂÞðñ'CÒ­´µe‘+ ðÀD­96êþA|ÁW1ï�T¤l¨î¬¿@  P@  P@ CRÿ �tÿ ¯›_ý”×_A?Õ~h¿Hg'¯ôëOO!ÿ ô3žztü};Ö´þz£)üKü,ÔÓ{}}>½¿?~ÈqéòôaXwù¿Aï×¯éBßäSÜâíÇüNôîßé9Çæ+®—Á[þ¼T1—ÅñÇõ=.¸N€ €
 (  €
 (  bÿ Áú¥u%åÕ´†yŽdhç’ ÍŒn*„Äu5ÕO^”#%Ë¯ì»kÐÊTiÉ¶Ö¯{6®Rÿ „Ã_óíqÿ �sÿ ñU§ö†'ù£ÿ €D_W¥Ùýì?á ð×üû\à\ÿ üUÚŸæ�þú½.Ïïaÿ †¿çÚãÿ çÿ â¨þÐÄÿ 4ð‡Õév{ø@<5ÿ >×ø?ÿ Gö†'ù£ÿ €D>¯K³ûØÂá¯ùö¸ÿ À¹ÿ øª?´1?Íü!õz]ŸÞÃþÏµÇþÏÿ ÅQý¡‰þhÿ à«Òìþöð€xkþ}®?ð.þ*�íOóGÿ  ˆ}^—g÷°ÿ „Ã_óíqÿ �sÿ ñThbš?øCêô»?½‡ü ÿ Ÿk�üŸÿ Š£ûCüÑÿ À"W¥Ùýì?á ð×üû\à\ÿ üUÚŸæ�þú½.Ïïaÿ †¿çÚãÿ çÿ â¨þÐÄÿ 4ð‡Õév{ø@<5ÿ >×ø?ÿ Gö†'ù£ÿ €D>¯K³ûØÂá¯ùö¸ÿ À¹ÿ øª?´1?Íü!õz]ŸÞÃþÏµÇþÏÿ ÅQý¡‰þhÿ à«Òìþöð€xkþ}®?ð.þ*�íOóGÿ  ˆ}^—g÷°ÿ „Ã_óíqÿ �sÿ ñThbš?øCêô»?½‡ü ÿ Ÿk�üŸÿ Š£ûCüÑÿ À"W¥Ùýì?á ð×üû\à\ÿ üUÚŸæ�þú½.Ïïaÿ †¿çÚãÿ çÿ â¨þÐÄÿ 4ð‡Õév{ø@<5ÿ >×ø?ÿ Gö†'ù£ÿ €D>¯K³ûØÂá¯ùö¸ÿ À¹ÿ øª?´1?Íü!õz]ŸÞÃþÏµÇþÏÿ ÅQý¡‰þhÿ à«Òìþöð€xkþ}®?ð.þ*�íOóGÿ  ˆ}^—g÷°ÿ „Ã_óíqÿ �sÿ ñThbš?øCêô»?½‡ü ÿ Ÿk�üŸÿ Š£ûCüÑÿ À"W¥Ùýì?á ð×üû\à\ÿ üUÚŸæ�þú½.Ïïaÿ †¿çÚãÿ çÿ â¨þÐÄÿ 4ð‡Õév{ø@<7ÿ >×ø7ÿ Gö†'ù£ÿ €D>¯K³ûÙÖÛ[Åi6Ð.È`�c‰ð¢ŒùW¤ç');ÊM¶û¶j’I%¢JÈž¤a@  P@ f_ýÖ¯o^žµK¡¯©ÇZÈÅ¥×[¾?îyZOàù¢añ?Oò=±5
 (  €
 (  €
 ((ÿ Èn?ûMÿ ¥pP„ñ	áš$	¢’"GP$B„�pASV�Uôò¨¡T²\î!Fm¬p9ÀÅ ;¿÷´ßûæëÿ ‹ Ç÷´ßûæëÿ ‹ ¿÷´ßûæëÿ ‹ þ&þºoýóuÿ ÅP�cûÚoýóuÿ ÅÐ�_ûÚoýóuÿ ÅÐ�_ûÚoýóuÿ ÅÐ�_×Mÿ ¾n¿øº 1«úé¿÷Í×ÿ @5]7þùºÿ âè Æ¯ýí7þùºÿ âè Æ±ýí7þùºÿ âè ÿ ‰¿®›ÿ |ÝñT cXþö›ÿ |Ýñt cXþö›ÿ |Ýñt cXþö›ÿ |Ýñt cXþö›ÿ |Ýñt cXþö›ÿ |Ýñt cXþö›ÿ |Ýñt cXþö›ÿ |Ýñt žF¡3Ä.žÌC©1ë6öh˜:ÈÄÜî3ŠbìiÒ‘¾§mÁØ´QåQ¥K�0®Iö0]Üó´b€%Æ¯ýí7þùºÿ âè ÿ ‰¿®›ÿ |ÝñT cXþö›ÿ |Ýñt cWþö›ÿ |Ýñt cWþö›ÿ |ÝñJ 1«úé¿÷Í×ÿ @5ïi¿÷Í×ÿ @5]7þùºÿ âè Æ¯ýí7þùºÿ âè Æ±ýí7þùºÿ âè Æ¯ë¦ûü·_‡ñÐ�_×Mÿ ¾n¿øº 1¬{Mÿ ¾n¿øº 1«ÿ {Mÿ ¾n¿øº 1«ÿ {Mÿ ¾n¿ã Ç÷´ßûæëÿ ‹ ¿®›ÿ |Ýñt cWþö›ÿ |Ýñt cXþö›ÿ |Ýñt cWþö›ÿ |Ýñ~´ ÇƒQ¸òÒáì–%š_ÈYüÂ"‘dÚ<Æ*íÚOPG"�=MZrzî~ßf{y?!µ=¥êeSuèÍ=;øyõàõÈ'ùqüª$5Óä>û�z÷öÿ ë~¾ßAoò)êüŽ*ß?Ûzw#þ>âÏâ+®—ÁWþ¼T1ŸÇúùÒë„è
 (  €
 (  €
 ó�sÃ>'¿Ô§º±Ö’Yò¡kÛëc�àòíà’2ÉÝœœò8¯J†+N”cRƒ”Öòä§+ùÞROå±Í:Ue&ã;'ÓšJßrfOü!¾3ÿ  ü_ø5Õù¶úîþ�ßþ
£ÿ É‘ìkÏÅÿ �Ïüƒþßÿ Ð~/üê¿ü‹G×p_ôÿ ðUþL=�oùø¿ð9ÿ �Âã?úÅÿ ƒ]Wÿ ‘húîþ�ßþ
£ÿ É‡±­ÿ ?þ?òøC|gÿ Aø¿ðkªÿ ò-]ÁÐ;ÿ ÁTù0ö5¿çâÿ ÀçþAÿ oŒÿ è?þu_þE£ë¸/úø*�ÿ &Æ·üü_øÿ È?áñŸýâÿ Á®«ÿ È´}wÿ @ïÿ Qÿ äÃØÖÿ Ÿ‹ÿ Ÿùü!¾3ÿ  ü_ø5Õù�®à¿èÿ àª?ü˜{ßóñàsÿ  ÿ „7Æô‹ÿ º¯ÿ "ÑõÜý¿üGÿ “c[þ~/üäð†øÏþƒñà×Uÿ äZ>»‚ÿ  wÿ ‚¨ÿ òaìkÏÅÿ �Ïüƒþßÿ Ð~/üê¿ü‹G×p_ôÿ ðUþL=�oùø¿ð9ÿ �Âã?úÅÿ ƒ]Wÿ ‘húîþ�ßþ
£ÿ É‡±­ÿ ?þ?òøC|gÿ Aø¿ðkªÿ ò-]ÁÐ;ÿ ÁTù0ö5¿çâÿ ÀçþAÿ oŒÿ è?þu_þE£ë¸/úø*�ÿ &Æ·üü_øÿ È?áñŸýâÿ Á®«ÿ È´}wÿ @ïÿ Qÿ äÃØÖÿ Ÿ‹ÿ Ÿùü!¾3ÿ  ü_ø5Õù�®à¿èÿ àª?ü˜{ßóñàsÿ  ÿ „7Æô‹ÿ º¯ÿ "ÑõÜý¿üGÿ “c[þ~/üäð†øÏþƒñà×Uÿ äZ>»‚ÿ  wÿ ‚¨ÿ òaìkÏÅÿ �Ïüƒþßÿ Ð~/üê¿ü‹G×p_ôÿ ðUþL=�oùø¿ð9ÿ �Âã?úÅÿ ƒ]Wÿ ‘húîþ�ßþ
£ÿ É‡±­ÿ ?þ?òøC|gÿ Aø¿ðkªÿ ò-]ÁÐ;ÿ ÁTù0ö5¿çâÿ ÀçþAÿ oŒÿ è?þu_þE£ë¸/úø*�ÿ &Æ·üü_øÿ È?áñŸýâÿ Á®«ÿ È´}wÿ @ïÿ Qÿ äÃØÖÿ Ÿ‹ÿ Ÿùü!¾3ÿ  ü_ø5Õù�®à¿èÿ àª?ü˜{ßóñàsÿ  ÿ „7Æô‹ÿ º¯ÿ "ÑõÜý¿üGÿ “c[þ~/üäð†øÏþƒñà×Uÿ äZ>»‚ÿ  wÿ ‚¨ÿ òaìkÏÅÿ �Ïüƒþßÿ Ð~/üê¿ü‹G×p_ôÿ ðUþL=�oùø¿ð9ÿ �Âã?úÅÿ ƒ]Wÿ ‘húîþ�ßþ
£ÿ É‡±­ÿ ?þ?ò5tOx¢ÇR·º¾Ö’kX‹a[Ûë“(*@O.âãÆH;·eqÀ9¬«â°³¥(S ã9+)rS�¼ï7ò.�*±’ršin¹¤ïòi#Ò+Ì:B€
 (  €
 (2ÿ î7Ðÿ è5Ktfúœu§üŒZWýt»ÿ Óuç^/Æ´ŸÀ½Wê(|OÓü�D¬MB€
 (  €
 (  €
 Ê?ò�þÁSé\¦î¨¬îB¢+;1èª –'Ø I ñª@Ã+ó)ä0°»ÃQºp{dõéNÞŸzý~æ/öœ?óïÿ €_üj‹z}ëüÂþ¿sí8çÞÿ ÿ  .¿øÕôû×ù…ý~æÚpÿ Ï½ÿ þ ]ñª-é÷¯óúýÌ?´áÿ Ÿ{ÿ ü ºÿ ãT[Óï_æõû˜iÃÿ >÷ÿ øuÿ Æ¨·§Þ¿Ì/ë÷0þÓ‡þ}ïÿ ðëÿ �QoO½˜_×îaý§üûßÿ à×ÿ ¢ÞŸzÿ 0¿¯ÜÃûNù÷¿ÿ À¯þ5E½>õþa_¹‡öœ?óïÿ €_üj‹z}ëüÂþ¿sí8çÞÿ ÿ  .¿øÕôû×ù…ý~æÚpÿ Ï½ÿ þ ]ñª-é÷¯óúýÌ?´áÿ Ÿ{ÿ ü ºÿ ãT[Óï_æõû˜iÃÿ >÷ÿ øuÿ Æ¨·§Þ¿Ì/ë÷0þÓ‡þ}ïÿ ðëÿ �QoO½˜_×îaý§üûßÿ à×ÿ ¢ÞŸzÿ 0¿¯ÜÃûNù÷¿ÿ À¯þ5E½>õþa_¹‡öœ?óïÿ €_üj‹z}ëüÂþ¿sí8çÞÿ ÿ  .¿øÕôû×ù…ý~æÚpÿ Ï½ÿ þ ]ñª-é÷¯óúýÌ?´áÿ Ÿ{ÿ ü ºÿ ãT[Óï_æõû˜äÔ­ÞHâ)uJÛPÍislØÈS#Ä#V8ùC²î?*åˆ[úº~€3WU¶qº8ïdBN,n™«yCpÈ8#ƒÛŠvôûÐ\_í8çÞÿ ÿ  .¿øÕôû×ùŠþ¿sí8çÞÿ ÿ  .¿øÕôû×ù…ý~æÚpÿ Ï½ÿ þ ]ñª-é÷¯óúýÌ?´áÿ Ÿ{ÿ ü ºÿ ãT[Óï_æõû˜iÃÿ >÷ÿ øuÿ Æ¨·§Þ¿Ì/ë÷0þÓ‡þ}ïÿ ðëÿ �QoO½˜_×îaý§üûßÿ à×ÿ ¢ÞŸzÿ 0¿¯ÜÃûNù÷¿ÿ À¯þ5E½>õþa_¹‡öœ?óïÿ €_üj‹z}ëüÂþ¿sí8çÞÿ ÿ  .¿øÕôû×ù…ý~æÚpÿ Ï½ÿ þ ]ñª-é÷¯óúýÌ?´áÿ Ÿ{ÿ ü ºÿ ãT[Óï_æõû˜iÃÿ >÷ÿ øuÿ Æ¨·§Þ¿Ì/ë÷0þÓ‡þ}ïÿ ðëÿ �QoO½˜_×îaý§üûßÿ à×ÿ ¢ÞŸzÿ 0¿¯ÜÃûNù÷¿ÿ À¯þ5E½>õþa_¹‡öœ?óïÿ €_üj‹z}ëüÂþ¿sí8çÞÿ ÿ  .¿øÕôû×ù…ý~æÚpÿ Ï½ÿ þ ]ñª-é÷¯óúýÌ?´áÿ Ÿ{ÿ ü ºÿ ãT[Óï_æõû˜RÛtjéw™"D­-�Ê'™#Eg1m]Ì@ÜÄ(Ï$h·õt4iäõì}ºÓ?óÅ°FAÎóíŒq×#VÔþz™Oâ^ŒÒÓ¹e?ìŸ¯@©9qÅD¶ýI/³´ûgüöëÓó8¡oò+©Å[çûsOö¸Ìþk®ŸÁWþ¼Tü—èc/Šõò'¥×	Ð P@  P@ ç:ßŒu}3R¸³·ÑÖhb $Î·È1÷�‹åÛØwàæ½**5iFr­i=âœtòwÖç5JÓ„šPV[7}|ô2?á`k¿ô�þýÞVßÙÔ?çûûàGÖj"û¥þaÿ ]ÿ  ÷îò�ìêóýýð¬ÔþE÷KüÃþ»ÿ @8ÿ ïÝåÙÔ?çûûàY©ü‹î—ù‡ü,wþ€qÿ ß»Ê?³¨Ï÷÷À>³SùÝ/óøXïý ãÿ ¿w”gPÿ Ÿïï€}f§ò/º_æð°5ßúÇÿ ~ï(þÎ¡ÿ ?ßß úÍOä_t¿Ì?á`k¿ô�þýÞQý�Cþ¿¾õšŸÈ¾é˜ÂÀ×èýû¼£û:‡üÿ |ë5?‘}Òÿ 0ÿ …�®ÿ Ð?û÷yGöuùþþøÖj"û¥þaÿ ]ÿ  ÷îò�ìêóýýð¬ÔþE÷KüÃþ»ÿ @8ÿ ïÝåÙÔ?çûûàY©ü‹î—ù‡ü,wþ€qÿ ß»Ê?³¨Ï÷÷À>³SùÝ/óøXïý ãÿ ¿w”gPÿ Ÿïï€}f§ò/º_æð°5ßúÇÿ ~ï(þÎ¡ÿ ?ßß úÍOä_t¿Ì?á`k¿ô�þýÞQý�Cþ¿¾õšŸÈ¾é˜ÂÀ×èýû¼£û:‡üÿ |ë5?‘}Òÿ 0ÿ …�®ÿ Ð?û÷yGöuùþþøÖj"û¥þaÿ ]ÿ  ÷îò�ìêóýýð¬ÔþE÷KüÃþ»ÿ @8ÿ ïÝåÙÔ?çûûàY©ü‹î—ù‡ü,wþ€qÿ ß»Ê?³¨Ï÷÷À>³SùÝ/óøXïý ãÿ ¿w”gPÿ Ÿïï€}f§ò/º_æð°5ßúÇÿ ~ï(þÎ¡ÿ ?ßß úÍOä_t¿Ì?á`k¿ô�þýÞQý�Cþ¿¾õšŸÈ¾é˜ÂÀ×èýû¼£û:‡üÿ |ë5?‘}Òÿ 0ÿ …�®ÿ Ð?û÷yGöuùþþøÖj"û¥þaÿ ]ÿ  ÷îò�ìêóýýð¬ÔþE÷KüÃþ»ÿ @8ÿ ïÝåÙÔ?çûûàY©ü‹î—ùšÚ'Œµ}KR·³¸ÑÄPÌX<¨·
bILŸ.Ü€ëÈÅe_F•)N5®ã²n:ù+[Ré×œ¤¢à’}UôûÏG¯0é
 (  €
 (  »þºýG^ßJ¥º3giÿ #•ÿ ]nÿ ôÝyZÏàû…�ú‘è•�¨P@  P@  P@GþCqÿ Ø*oý+‚€-jñá{ÿ ^—?ú%è³‰ªK#¬qÇn²HîBª"F�˜ðTIà I ÈÃðçŒ|)âønn<-â-ÄÙN-®äÒukÑm9V)Ä9‰œ#˜÷€$åll kJÀ_ÿ e›¸¡ö?·ý�¸}‹Îû?Úvÿ Ï/?÷[³÷øÅ OÍµÄb[{ˆ'ˆ´È$†XåŒ½¼­è—t3£Ã2ç1Ê�…u  sw~:ðe„××¾(Ð­.-í.`¸Ôí"š°]÷«,O(t6©óÍ•ýÚüÍ�Í u$q£Hî©+3»0
ª€–fbp€KxÁÏJ äôø#Å—‡|Y kWÖ‰æ\Ùéº¥¥ÕÌ1îÚ]áŠV}�²¬ÁJ«¬AP[¹¼½	ê:/~€ðOnô�¨x·ÃV³¥ø{R×ô›sZV}'Iº¾‚ýA•-knî$”VU*0ìŽ©¹‘€ Õ¸Ô,mg±µ¸º†�NâKM>pîæ+;«ù!…ŠD³²»¹aÚ+yøhTº¶’Y`Žâ	&€ ž–6–*	"Æ¬^3"é¼èC.A€' €
 (  €
 (  €(ßýËoúþ³ÿ Ò„¦ºú	î¾eêC3ô¯ùÚÿ ×?ý™©½À¿‘ê8ëÏáüé dI ,£$²Œg9 c'>˜œöæ€14/ø{ÄöïwáÝgOÖmc(ãN¹ŽêÈ¥ãÄ±–G€²”fs@®õM6Â}>ÚöúÖÖãV¼:~™ÄñÅ-ýòÙÝêÒÑƒOp,l/nü¨Ã?‘i<˜Û� Í[XÒ´>ïVÖµ-+L±‰¦¼¿¿¹ŠÖÒÚ%™æžfHã sóžÙ èúÞ‘â:ÓWÐõ;[K¿„OgasÕ­ÌD�¾)bfVŽÖÊ?ÈáX@y£¦zŽ‡¿ÓÞ€!ûU°œZ›ˆÉ…î¿›žmãtŽIÄ;¼Ã
I$hò…Ø¯"+0fP@&„¥ -  P@  P@ Ÿ©Çº×Õ¯þ�Jk¯ žß5ù£B�ÎO^ÿ �ûOCÎCøŸAÛœÖÔþêŒª|KÑšZi ¨ï´þÿ .ýù8è*$5Ñù¡÷Çä>ùÏ|öî:óÛÞˆï÷w)ÿ _×ü‹·?ñ;Ó‡­ÀÏ×$Ÿä¥vRø*ßþ|Ô1ŸÅúùýÇ¥×Ð P@  P@ Ï^ø¯@Ó®ÒóPX®"À’5·»›a=™¡·‘õ]ÙÇ5Ó&"¤TáNñ{>h+ü¥$ÿ 9V§âåf·ÒOòV*Âsáoú
ä–£ÿ È•_PÅÏ¯üžŸÿ &O·¥üÿ ù,¿È?á9ð·ý?òKQÿ äJ>¡Šÿ Ÿ_ù=?þL=½/çÿ ÉeþAÿ 	Ï…¿è)ÿ ’Z�ÿ "QõWüúÿ Ééÿ òaíé?þK/òøN|-ÿ AOü’Ôù�¨b¿ç×þOOÿ “oKùÿ òY�Âsáoú
ä–£ÿ È”}Cÿ >¿òzü˜{z_Ïÿ ’ËüƒþŸÐSÿ $µþD£ê¯ùõÿ “Óÿ äÃÛÒþü–_äðœø[þ‚Ÿù%¨ÿ ò%PÅÏ¯üžŸÿ &Þ—óÿ ä²ÿ  ÿ „çÂßôÿ É-Gÿ ‘(ú†+þ}äôÿ ù0öô¿Ÿÿ %—ùü'>ÿ  §þIj?ü‰GÔ1_óëÿ '§ÿ É‡·¥üÿ ù,¿È?á9ð·ý?òKQÿ äJ>¡Šÿ Ÿ_ù=?þL=½/çÿ ÉeþAÿ 	Ï…¿è)ÿ ’Z�ÿ "QõWüúÿ Ééÿ òaíé?þK/òøN|-ÿ AOü’Ôù�¨b¿ç×þOOÿ “oKùÿ òY�Âsáoú
ä–£ÿ È”}Cÿ >¿òzü˜{z_Ïÿ ’ËüƒþŸÐSÿ $µþD£ê¯ùõÿ “Óÿ äÃÛÒþü–_äðœø[þ‚Ÿù%¨ÿ ò%PÅÏ¯üžŸÿ &Þ—óÿ ä²ÿ  ÿ „çÂßôÿ É-Gÿ ‘(ú†+þ}äôÿ ù0öô¿Ÿÿ %—ùü'>ÿ  §þIj?ü‰GÔ1_óëÿ '§ÿ É‡·¥üÿ ù,¿È?á9ð·ý?òKQÿ äJ>¡Šÿ Ÿ_ù=?þL=½/çÿ ÉeþAÿ 	Ï…¿è)ÿ ’Z�ÿ "QõWüúÿ Ééÿ òaíé?þK/òøN|-ÿ AOü’Ôù�¨b¿ç×þOOÿ “oKùÿ òY�Âsáoú
ä–£ÿ È”}Cÿ >¿òzü˜{z_Ïÿ ’ËüƒþŸÐSÿ $µþD£ê¯ùõÿ “Óÿ äÃÛÒþü–_äðœø[þ‚Ÿù%¨ÿ ò%PÅÏ¯üžŸÿ &Þ—óÿ ä²ÿ  ÿ „çÂßôÿ É-Gÿ ‘(ú†+þ}äôÿ ù0öô¿Ÿÿ %—ùü'>ÿ  §þIj?ü‰GÔ1_óëÿ '§ÿ É‡·¥üÿ ù,¿È?á9ð·ý?òKQÿ äJ>¡Šÿ Ÿ_ù=?þL=½/çÿ ÉeþAÿ 	Ï…¿è)ÿ ’Z�ÿ "QõWüúÿ Ééÿ òaíé?þK/òøN<-ÿ AOü’Ôù�¨â¿ç×þOOÿ “oKùÿ òY‘Ó[ÏÔ1\[È²Á2,‘H¹ÚèÃ*Ã ê®iFP“Œ•¥fŸFº¦šMjžÄÕ#
 (  €
 (2ÿ ý[~?ÈU-Ñ›êqÖŸò1iCÒK¿ý7^ð­'ð/T(|OÓü�D¬MB€
 (  €
 (  €
 Ê?ò�þÁSé\kPÿ �ßúô¹ÿ Ñ/@=™ZöÈjZ-Þœd1CKžÈÊqŒ]Z<@¹Šy›¶ägÈë@-‘ø÷§Á)¼Uá™,gðwí9âßÍšMÍüº–þ¸Ô.4‘¥¾Ÿow&…¨Ce¦h·:v­u¢Ç¨éwz™—Ç^'�ZÕµ‹+-Î3ÁŸðM�Ú;ÄQx�]ñ¿Ç­_áÖ±¦è~Ò4m]ñv¹ä[h!¼úÍÆ¢|w¨´+®„hÒíõ	|Ä“kI¦ -�Ö-ÿ à™¾5‹\¶¹oÚkÆÐøn-Inî|3¥]ø·IÓ¯¬¥øéâ_‹z½Œ«oã½‰µýÄŸð‰ÞÞA©¥äÙpÝ‰®íïZÆÌ»øÙÿ ÜÑ~/ü\ñgÄø~&j~·ñT>ÓåðÝ¾“-ý¥®“¤:gŽàI¬Àn/¼o¥ÄmæÔfˆÍa+™ÿ ÒNT€qqÿ Á6¾"6„º~¡ûNxŸS¼µm&;HnÄôK›[OXêë«[Û|M‡T»—Å2øB÷ÄZ™�SŠ;=k[¸±²S£>¡¤ ¾	ÿ ‚VxÂ~Ó!“ãŠæñ…‡Š†®<C£Á/†,áÐ$¿½Ô.ô;X4BÃÄwOyqt�q6¿â­nÑÌ*±ØA€z/üCâ¶‘i¢ÛÉû]üEÔå±³ñU®©w}wâV—S:ß‚ßÂö²B‰âq•ÜZŸ—âx.ä[Û}"íî­?²õÃ$Öà�ãØ#Æ>*²ø(Ëñ¦×NñwÂÏ‡º7�5?ˆÍá-GVñž»‘-üï%½æ¯âËØ,¢Ô¤¿�ÉuPø‚Æc5ÔìÍ$Y€yg‹ÿ à›¿¯,/5�üx¼‹ÅvºGƒ´¯é±j_í´$Ð¼'ñ›ÂZüâãSø�¬jÞø¤üQÑ5íKPŠhu/‚mô›{Èa½ŽòÌKHÿ ‚küDÒkûOÚS_¶Öuè^"½¼Ž?Ê ‡Hû$Qxb?µxúâ]KÃ¶6V‹af·Ò¦«ußêm*È× ®C8ä÷=2~œâ€
 (  €
 (  €
 £÷-¿ëúÏÿ Jšëè'ºù—©ÏÒÿ äkÿ \ÿ öf¦÷ò·â¿ìñ“Ä ø�âŸþÑÞ(»·ñ�‹t}WOð¯©ø³FÐô=ËâÏ…<uŒ:Æ‰â¨5�¥jÿ ôÝB+Hí_°ñOƒô¥k<iö¤ª_þÅ.~øÁ’~Ò^:×5E7¶þ"“R�Á÷Ì–—6©ug…µxõ.t÷¸ŽîÈkž>×à¸žÖ%¼�ƒ3¨—ø'�ï<Uoâgö™ñt¶zöÏØô�:ãÇ¶V·WÚ�ÄÏ†5&Õ•¾#L.uËßx3ÄžÔì£ÙáØ4ÿ E£iztÐÞAxÁhßðO?�	~%|-ºø_ñ(ê¾Ñõ/I­[Þj^!Ð¬ü7…µ£ª^ÝG¤Aã"ºäšõ‘:kZÍcªE�’e·F7 Vÿ þ	¹ñOâ.±uâ_‰ît­N|Gñ&‘iá›�Ï:¯‰üñoÁþñWW;„h÷>ˆv:Æ�¦hÚe¤–6—ÞÖ¡Û^ÆÒü>ý€>-EàOh¿>8KV×ï´›ýK½±ñ�<1¥áín]RÇVñ=Ÿ‰|Yr5‘¨ÀÑXj.žºN“öxbso,Þp”:ßþ	£ñ_èÚÖ«ûSøÇû&í÷Yðw†të¿xRk+‰Z×�µ¿éºO„µ­-,¼A£ëhÄ2Új©>‘¡*ÝG¨µžœ{ÂŸðMŸh~$]SYýª¾$x“D†_¼;yâ¸¬ZËÂº,ÚJiwmãu	`ž_²ßÉv55ººxL:‡Úœ›§ å¬?à˜­<ÝBëö¤ñ³®Í/‰Vk­M<n!›JÖî~ÞÛøueÓücg¡ZjžÖõÑoir—Ÿo×¬ìæ¿»Óìo“U ýý�þ
Þüð^©á½_Ç×Ä]oYñ‡Š<S¨ø¯]›Q7—K®ê÷WÖ"ÎóTÕ-¬!Ò,&ƒMŠ0ÙÙH–Ë2ÚDîÙ ÷º (  €
 (  €
 (†¥ÿ éÿ _6¿ú=)®¾‚ªüÑ~�ÎO^ÞÚ×ãþÜ�zÚžÏÔÊ¦ëÑšzwðõï€qƒïëÓ=}‰l5ú¡×ßpŸ¯~{}ýJKržë©ÅÛó­éçÒà{då¿Ç—jí¥¤+×šŸ¡Œþ(×Èž—\@P@  P@  P5}áR¹’òêÑšyNdtžhƒc%cuR}I®ªxÌE8¨BvŠÙ8ÅÛËTô2•rwqÕïfÕþâŸü ^ÿ Ÿ)ð2ëÿ ŽÕýüëÿ  ‡ÿ "/«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@¼3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 0ÿ „Ã?óå/þ]ñÚ>¿Šþuÿ €Cÿ ‘«ÒþWÿ �?óø@ü3ÿ >Rÿ àe×ÿ £ëø¯ç_ø?ùú½/åøÿ 3«··ŠÖ­ A0¢ÇŠŠ0 ú
ä”œäå'yI¶ßvÍRI$´IYTŒ(  €
 (  Ëÿ ¸Üã¯?‡ù÷üj£º3giÿ #•ÿ ]nûÿ Ô:óüÿ ú¹ÖõB‡Äý?Èô:ÀÔ(  €
 (  €
 (  £ÿ !¸ÿ ì7þ•Á@µøð½ÿ ¯KŸýôÙ‘ÏpÖš\×I™í¬$¸HW;¥hmÌ‹À'2
0	Éàl�—î?j­J—C]gÃZÊÃ¬øÂÞ'itèšðiºþµm¬\jÞ¿ùCE©èŸb°ûTlŠöÐ]Ïqv±yÅ(»ÿ ÚrÊÙ4}BßÀþ$›FÔ¼9sâiîc]FÖÆßNûs©ÓUYšT?º NÂVS�@­i]ëÃzoˆ#ðÞ´éuâ}/Â×ÖìÞm6ëVÑ5=NÒòádÚ½Î˜mäV�½µ�Ý®£3àµµ R°ý§t­oQÒltOø†ãûOHñ&­þš‰g$IáÛgy-å
³­¼—w(cµy7-Ä¹Œl"€5ôßÚGÃ:–�öØü?âæ¦�¦5£CÚ÷Ö~0¼2 Âß*<¯Goí÷f}”Æ5Ë(“¹ý°<imq5Ï…¼]oqrÉ�Å‡•,Æd–ŽRà²‡‚"¤OnÂtlaHQáßÚSÃ¾"ðüÚäñÚ%³ØI^bÜêÚV¹«ËlóÈaŠ9ìíü9©Ä‹ E¾º—H‚ÝÃê°ì Ã½ý¬ü��†üM}<z-Ž¶ÈÖéj�Ý�¶¡-œnÂlßØÁr©u¬j“©‡ÌÝÐKHý§<?¬øŠ×ÃÖ¾ñ~ùµOiSj-gÓíî<sxmô©èÌ&†ÎgÖv�9Ã[H­*1PÔj/	iŸiyü5â×†ÞKußž’K,w·²XY:[	<Ðæx™ïà`%Ó-ŠÏp
�öž±×´_éþÖ†­áíJÃN½°‘À>×ã�Â\Å,K¾ê{}nÛY¶x®§®¡-Û@4�í¥á-ÄžðŽ³4š
Ä³Å¨"ÅÌ÷È–ÛdŒ]ùpÛ¬ä-Ì,ê7ïŒ£€sº—íkáý7Ã·üžñ$°iš~‘¬j²Ah%Ž=2ëYÑt}FH"óaqo>±‘æ51+];´¶à‹ßÚ2i¼;â=kBð^¥,¾ñÌ>
’ƒö¿·É›=î¥©YGfbgÓ¡¸µžÊÒôJð] KÑˆßÈPCû_øE´™/“Ã%ŽátØoÅ¼öÈ¤½Íõ¦“´qîI®.#Õ/`K›hÂÉ“}´3!@kûUøq¥½aáO/Üx¦kæ1�.ÚÏ\¼Ðnìg€DÆø. ¶ÌBY#fžxÄŸèeç ÃƒöÆð©MfêïÂ*ŠÏI»²€}žÐ]Oso{5­´w��å,¤O{	–ÉžHî/äŽ" µ×i?h0M}á�-ýÌþ"±‹O�Li˜_x[Ä:ß†5”iQ•Z}GFóRq�=�ý•Ìj¥TOá÷Ç%ñ¶·g£ÝxKVÐÓSŽÙtëé]n`{é4­WZ–Òì*FÖl¶MÃ‚û¶Ìb·šhØ€{í Q¿û–ßõýgÿ ¥	MuôÝ|ËÔ†gé_òµÿ ®û3S{�óÏ‰¿iÂ§6¯¡jW×¿‹4�PéKö»­MÄºŽ�¥K}l1"ÿ oØé³j`Ipd�býÌ†e@$ß´uµÅ—‡/ôOkÚ�·ˆ5•ÒT³Åo,58tùeXŠ7›I~Ò%ó"+MªZ€+éß´ÿ ‡µ/x§ÄÖ¾ñ‘xRçC7¶2Û}�P¸Òõß>‡ý�³ùÆVµ‹læ‘òâ;›x¼•D™€-Ú~Òz¥¬éÚŸá­yï¯|E‡ä„}Ž;‘¹¸ž;ˆÔù¶+l1ú§�÷GìØÞ>`º_í¢ßéÚÍäþÖìî4Xôÿ ´Y–†`noõOiB¹ÛÇþ*ÒÞ[™£	åÁ¬Cý•6ðzûö¯ð†�u¨Z^xgÅVÒY_=ÅšD·3>	P†�Iã#Ë¹HÌùƒïÔ{Ã?´ï†¼I¦éáYO¦Áæ<WGä™%ñV‰áKEšèùkmÍÏˆ´»ïµÉŽu¹% èÒ‰€¬þÔ^ÓM¶¶ð÷ˆoõJ{ûHí<¨­ÖÚîÆþ}?ì×“¯Ú¸ky'€„uk}²’� Û�ÚËÂÖò[Ä<ã©%ÓµRf²±K˜-lôÙ$·›Í�HO´½Í½ÐŠÜÏk›„wq- uQ~Ñ~›JÓµ4Ð¼Gÿ ½J×ìfÑÝ¡Ó-£»™.P¾Õ¼MogHÉr&…e�Cæ0žß~ØÞ´¹±UðwŠÞÎ{Kén§kdY »´¸ÓáŽÚ4’H§Ká,W›Ä2ÈŸe�3ï×ßþÑö?ˆõÍTð‡ˆØê:]¦•=”?hmFÛVh­-®2£-øºûb d±´H%‘åi€ ÿ þÒ7>ñ¾¥àùü«Jšn¡šúº<Ÿa¸¸–+]D$S(‹¤G¬Ï-Ä²ašÆ/3HÄ rÞ(ý°l,¼7³áŸx›P¹¼¹Ð£µ·Õ-ZÓu¶µ«^hÆä[ÂÍq1²¼Óî¾ÓeBÁöiÄ¥n@@•j+=­4ÿ øÅzN³'ö¼76ïm[C>Ž‘É,¦Wv)c,W—pZCmÎò#´¬¿í)á�ã[‡Fñ‘A¬®�¶©h>ÔêÖÂíoX¢D“ÛŸ>Òs5Ä2@À$’˜�þ�MÔ¤}?Ãž	ñ=æ¨ÚÎ™ Â×ÖâÛMŠûWŠk«Inn#27Ùã²µºžuŒI¡nÑ<«*€3Iý­¼¨ÙÉ4š/ˆâº‡Ã—^ Ëd¾eÈ°ÔæÑn¬b�¥3C|ú�¥ÛZÚÍ™&±Ž+°vËµ@3®kïG>¢°x?ÄÓZèÐé—:¥ÊB$š5Ônm¢ŽÒÚËdoq|"šG–!*ýŸÊ- hù Zø}ñ£Føƒ¯k:–‰­éÓè·š†™-åôý�y¨èði3êÉ§ÝÆv]YAýµb¶z‚~ëQy!DH”ÈêÚ—ü{§ý|Úÿ èô¦ºú	þ«óEúC9-{o´àÿ ¨o§úÃúóœþ•µ?†^¿¡•M×£54îÝq‚:u<s‘Øq××cÙz¢KÞ†GqÁqÏaü¸¡jþE=Î&ÿ niÞ†àsŽ½O>�¸ã¥uÒþnþÂ¡Œ¾(×Èž—\'@P@  P@  Pœëžñ¡©Owg¬¬6ò�c…îo!1 >àH#d uÝœœó^•^�(Ât[’ÞJ0•üï&ŸËcštªJMÆ¥“éy+yhdÂâ¿úEÿ �ú—ÿ ­¾½„ÿ Ÿÿ Át¿ù"}…oùùÿ “Küƒþ�ÿ Ðz/üÔ¿øÍ^ÂÏ‰àº_ü�{
ßóóÿ &—ùü!+ÿ  ô_ø©ñš>½„ÿ Ÿÿ Át¿ù ö¿ççþM/òøB<Wÿ Aè¿ð?Rÿ ã4}{	ÿ >%ÿ ‚éòAì+ÏÏüš_äð„x¯þƒÑà~¥ÿ Æhúöþ|Kÿ Òÿ äƒØVÿ ŸŸù4¿È?áñ_ý¢ÿ ÀýKÿ ŒÑõì'üø—þ¥ÿ É°­ÿ ??òi�Ââ¿úEÿ �ú—ÿ £ëØOùñ/üKÿ ’a[þ~äÒÿ  ÿ „#Åô‹ÿ õ/þ3G×°Ÿóâ_ø.—ÿ $Â·üüÿ É¥þAÿ GŠÿ è=þê_üf�¯a?çÄ¿ð]/þH=…oùùÿ “Küƒþ�ÿ Ðz/üÔ¿øÍ^ÂÏ‰àº_ü�{
ßóóÿ &—ùü!+ÿ  ô_ø©ñš>½„ÿ Ÿÿ Át¿ù ö¿ççþM/òøB<Wÿ Aè¿ð?Rÿ ã4}{	ÿ >%ÿ ‚éòAì+ÏÏüš_äð„x¯þƒÑà~¥ÿ Æhúöþ|Kÿ Òÿ äƒØVÿ ŸŸù4¿È?áñ_ý¢ÿ ÀýKÿ ŒÑõì'üø—þ¥ÿ É°­ÿ ??òi�Ââ¿úEÿ �ú—ÿ £ëØOùñ/üKÿ ’a[þ~äÒÿ  ÿ „#Åô‹ÿ õ/þ3G×°Ÿóâ_ø.—ÿ $Â·üüÿ É¥þFÎƒáéº”7wºÊÏmq$	qy9—r
RxÑ ÉvwpcˆÅáêÒ”!EÆNÖ“Œ#mw¼[eÓ¥R2NSºÖêíßï=¼Ó (  €
 (  €
 (  €
 (  €
 (  ½@|�þ}=j–ëúèfúúœ…§üŒ:W¯›wÿ ¦ëÌZÒù
ôÿ #ÐëP €
 (  €
 (  €2�ü†ãÿ °TßúW ZÔ?ãÂ÷þ½.ôKÐfxílÌ¹[ÚyòRÌ#Š1öª‚Ìv©Â¨$ž &€[#æí#ãÿ ìû¯j–ZN–b»½ÔÑ5Vòü«4Vßð�ê:n€×z­Çö/•c6¥¨êÚn›x÷�ÒËr±]dC0ˆ[ÄŸþ
øOZ¹ðæµ¾WOK­1m-üª^™£´›ìÓiúØô©ÖíÀò#¶¶Þ“J6F®h‘´çÀ[›'´¹†×Z•Ý´¾
¼‚5µ²Ó§}CV»·ŸO‹cXÛÇ-�ìsGý¡ ‘"’Ã ç‡~/| ÕôøÃA·+¤xZDÖuð•õ‹EÝ¨’âó4è%¹‰-ŽÙ„;â·_ÝÊPq@Å÷íð;MÓt«ˆôëÙ´]l_k6ßµ¡¥ÞÃáé­´ë�JÖC¢¥µÝÍ�ìÖút)	’õf_*(Àî žËãgÂ]Z‡K±ðµÝåËëZv�y=ÿ „àÓ›OžêÊ9¡–ò^+Kå[A"ÙOÛµÝ´êð›p‹¸€U›ö€ø/¥Û^Ûëº=Î�,·ÚòÏ¤]ßÜ^Åà{ëËK�Uí´­>õ'·³þÉ¸¼²•·Ëœ2,E
 />>|°k{ŸøG5Óµt©mµ”ø{¨Çe©ZøŠî{]=ôæ“JŽãUŽö[mÀÙC<næ•]ÑþüBøiã­CVÒ|!fRë@˜ý­.<+{¡Ä·VsD×Ki-ö�gÍÆ—y^}™�ì¯.JHVfz ôsáý¥y›DÒÒK4ÒJtÛ3,“\ñq+ÈaÜòÎ?×HÄ¼¿ÆZ€$¶Ñ4k"Mž‘¦ZX›kX	Ki¾Ñl‡Ê‰2¶ó“<
xŠoÞFþj EÐôE³“O]K[	²%±]>ÐYÊo"Ka’ù˜îCó|Ýy 
·>ðÕÝ­ý•Æ�£ËkªÚµ–£	Ó­^Ú:*{�±)– ¨�U‰Ù±
m(¤ \·Ñô‹X¼›]+M¶‡åU½�¬1|ªÈ¿»Ž%_•ÕxáY”pÄï‡¾Ôµ-'X½ð¶‹>£¡Ëq6—pl¢O²Ët‰òy1‚vuŠ"ÄSyorG²HÑ€Èðö€¨ñ®‡£¬rBöò Ó,‚Io$Ïq$¢­ÜI$ï�3¼¥K±b ßøFü;…Ø.O9Gö]Žo,Åæ¨ò0$ò‰�xù¼²S;IrM3M›i—O±”«NÊd´·}­u!šé—tgs)2ÎG3HKÉ¹Žh`ÓtëfßmaenÂC0h-`‰„Æ&„Ë˜ãSæ]â/�ÞS4yÚÄ´Fÿ î[×õŸþ”%5×ÐOuó/RŸ¥È>×þ¹ÿ ìÍMîÎºÿ Çÿ �:Fµ¨è÷��CÄ©â´Ëý2ÓÁ÷wz¤ÚÖŽímÅÀ:p-å¬³ÿ gj7å„±´�’æ=‹¦~Ô¿¤ƒLY¬5mçÓ!ñ›e?�õx`¾¸k{rŸÙú}Õµ¾£yv<ˆ-’Qsupê�‰I&€;-?ãGÁ‹Ý7\¿°·�Å§Í£Ã«Ø�jpjSKs¦jÞ$°¥>’—×a°Ðõ«÷ao"Ø¾™zIŽX� R�ãßÀË.ÛÄ!¿³l7ÛÛÚ^?ƒu;&êËûZÄA�*9;ÛsçZlf˜ùkûó²€,è~kúf©¨ØO§Åm{ma?‘¨xnm.ïÅ±_êšÖ›c‹camsâ©¤Ö4M^Ým´øo¥Šâ/1ãE¹†I@1u�ÿ íå¯t­Byì´­KS–Úo†Ú÷Ú!²Ðehµ!0ºÐ�[2ùÖæÚ7µº¨o|zø?®A¨«h—š4Ñh�{¬ÚÞx:äÅ˜|)}ãócyecs¦ËrÚ¦¥¨�$ÝK<²Ã?•¯"™ +��£Õ¯l.<?¨ÚÞZk3hÐ3|<Ôäš÷YµÓ–÷S´… Ò$¸ŽîÂt¹[”�Ù´FX]€+j´GÁßkZUæ�>›¤ê²¤Vzóønm*ôÞxLÖ"hã1Gx~Óo©èkÇ%¢Î—wÖÐ\D�[O, BhÐøW^Ñô½[KÓ4Ùô­B$Õ´æ}&øþˆ?Ú…´öÑËoq,o‰KÆ“•z ¶|3á²¡‡ô2‚$€!Òl
ˆ#ŸíQÂÛàEÐ)6,ãÎP$ù¨äšN•4Ës.™§Ëp™Ùq%�³Ì»ˆ-¶VŒÈ»Š©8a’<�@O§i÷"Qsagp'Yq=¬‰’Xd¶•%#	Ky¦‚E|‡†Y"`QÙHVÐt6h´m%šÙB[3iÖe­Ð?˜aÌJ$ýàXö€ÿ 67s@]hÚ=ó½Ò´ÛÇuuckpÁn‘c¹¥‰È1ª¤ã8™VMÊ  CXžÑ´¥†IÒêHF�f"{˜Â¬w/‡cOªªLÀÈ�T+  >G¶ÿ �}'Mƒ3ƒäØZÅ›�¿ü‘/ï‡™&%ûã{üß3dOøà�.÷RÔl|-¢Ã{«ÞCP¹60Í,÷e?5Lë(€^"·B¬Ò:ÆY€6?áðþçoì=t²y²7öe–é%Û³ÌsäeäÙòol¶ß—8â€-ÚéšuˆE²Óì¬Ö5ÙÚÚAnDPÀ1 UÛÛÃ…Àò †<l‰€7Rÿ �tÿ ¯›_ý”×_A?Õ~h¿Hg'¯ôë0ç‹tÆ~ùì}§jÚŸÃ/ë¡•M×£4ôîŒ‚yê3�¯§ÓœTKa¯ÔuîvœtëÔþG×Ðtý(Žèlâíóý·§K‘ýýU×Kà­ÿ ^*~†Rø¡ÿ _#ý~¥×	Ð P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  Peÿ ÜoÇù
¥º3{³Ž´ÿ ‘‡JãþZ]öÿ ¨uçùÿ õÖ“ø>áGã~Ÿäz%bj P@  P@  PQÿ �Üö
›ÿ Jà Z‡üx^ÿ ×¥Ïþ‰zìÉ`‚yÁ¿È(²8Ï„¿/µmV_èQêVKª›;Û]>ÞÒâÚãY—Nžúþ	mã�£Ôš]&ÆHu"êÝáß¨ÌÄ€W×¾|;ñ>�q¢ë¾´Ôc¹³¼°“S¸.úøƒQm×æ-}˜êÐÏvÙiî"»I¤bI|œÐé?>èÖ6z}—€ü.b²Ò ÐãžëG±½¾ŸM·HÐA{u·w¦SËs%ÔÒÉspZyÙåvr|ü3ð?‘Œ>±³ÒV!ÚŒbÐ/£_¸šŽ‹måiÚ€�~HÅÝ¼¡äPŠ ŽóáWÃ{í:ûJ›Á:�¬öW�Ã£X@%¶ºŽ(®"-
ÁeŽUðFáyû‹€	cøeà+y4‰m<+£X¾…siw¦›,„Ø[%�“°¶HÄ¿e¶Ž8 Y7,Q¢"€ª [¸ø}àK½Gû^ëÁÞ¸Õ~Çy§ÿ hÍ¢éò^ý‡P–yï¬þÒÖæo³^Mus-Ì;ü¹žyYÕ‹¶@+·Ã?‡n“Æþð£Gu'›p� é…'“q2Uû6×}ä¶æî%³’M léþðÎ•47g‡ôm:{mÿ gšËM´µ’2Ý-dòž‘£ßm@ûHÝª¨€7è  €
 (  €
 (  €(ßýËoúþ³ÿ Ò„¦ºú	î¾eêC3ô¯ùÚÿ ×?ý™©½Àæeøkðö{æÕ&ðG…%Ô^êþùï¤ÐtÇ»{ÍR$ƒRºiÚØÈ×ðÇWr–/q"JÌª @fêÿ ~ëZ6£ Üø;B·°Ôô÷Òî¿³,-ô»¡dù>U½íŒp]Zìc¾6‚XÚ90èCÐúGÂ¯‡Z&†<;aàí iMm¥[\Áq¦Û]¾¢º%»Zérê“ÜG$Ú•Õ¤/ Žêõæ¸Ý4Îd-,…€6ßÁ^–ÌiÒxcA{ Ö�ö7Ò¬šÛuŠyvMä˜Ly´Œ·;s
±íP~‹ðßÀžÓõ=+Gð¦‡ga­5ÓjöñéÖ¥u1ws}w,wÄÆMÌB]JøE¥£†;‰"‰R3¶€oðçÀ6¾oÙ¼á‹>ÌéÓtM:3-ƒ"Æl¤+n7Ú˜Ñc06cØª»v€(–Õ>ü-Ö|Aqâ[ÿ 
ÙÉ©]xn_
ÌˆÒE§*XÓpÓ#e°Œ6nÖvÚ§‘öû{CöhgH>J ÛºøQðÚöÊÓNŸÁk-B=NÞÑt‹%·±F!<KYKÄ«¢@ÂdDY7  k^øÁZ”i¡á?ÞÅºGÖ�a:"Immdê«$=¥�­³  0[Cù#@ 7ì4ë*Ö;2Ê×O³ˆ¹ŠÖÎí­ã2;I!Ž•#MîÌíµFY‹I4r€
 (  €
 (  €
 ¡©Çº×Í¯þ�Jk¯ Ÿê¿4_¤3“×ãúÐvòûÿ ¬=?ÏLÖÔþz™TÝz3OMtû`þœQÆqìj$5ÓÕ_}ÆÏ|ôöü?ãÕG—õø�þ«ôëéæqVÿ òÓøÿ —€SŽA=?:ì¥ðUÿ ¯?#)|Pÿ ¯‘=*¸N€ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €2õõmþ}*–èÍõ8ûOùt¯úéwßþ¡×Ÿçô­'ð|Ð¡ñ=¶ÿ #Ñ+P €
 (  €
 (  €2�ü†ãÿ °TßúW hÍžabBÍÄÄuE(H÷ ñ@VßQET[ø6ª…°$áFOÛ98hÞN¥ÿ ?öÿ ø ù2€'Rÿ Ÿûü ?ü™@“©Ïý¿þ þL ÉÔ¿çþßÿ  ÿ &Päê_óÿ oÿ €ÿ “( òu/ùÿ ·ÿ Àÿ É” y:—üÿ Ûÿ àÿ äÊ <�Kþíÿ ð ÿ òe N¥ÿ ?öÿ ø ù2€'Rÿ Ÿûü ?ü™@“©Ïý¿þ þL ÉÔ¿çþßÿ  ÿ &Päê_óÿ oÿ €ÿ “( òu/ùÿ ·ÿ Àÿ É” y:—üÿ Ûÿ àÿ äÊ <�Kþíÿ ð ÿ òe N¥ÿ ?öÿ ø ù2€'Rÿ Ÿûü ?ü™@“©Ïý¿þ þL ÉÔ¿çþßÿ  ÿ &P}’îGˆÜ^G$QH²ùqÚy,ÏÝd7áUÀ$ù€Û‘œÓ¾þ`hÒ.+;è#Xa¾„F€„d]‚ä�¾Ö»�=vŒú
 “ÉÔ¿çþßÿ  ÿ &Päê_óÿ oÿ €ÿ “( òu/ùÿ ·ÿ Àÿ É” y:—üÿ Ûÿ àÿ äÊ <�Kþíÿ ð ÿ òe N¥ÿ ?öÿ ø ù2€'Rÿ Ÿûü ?ü™@“©Ïý¿þ þL ÉÔ¿çþßÿ  ÿ &Päê_óÿ oÿ €ÿ “( òu/ùÿ ·ÿ Àÿ É” y:—üÿ Ûÿ àÿ äÊ <�Kþíÿ ð ÿ òe N¥ÿ ?öÿ ø ù2€'Rÿ Ÿûü ?ü™@“©Ïý¿þ þL ÉÔ¿çþßÿ  ÿ &Päê_óÿ oÿ €ÿ “( òu/ùÿ ·ÿ Àÿ É” y:—üÿ Ûÿ àÿ äÊ cÙÞMå¬÷±4K,R²Ggå³yN.ós&ÐHÁ;l&¯ýv4èÉëÃý:Ñ¿é‹ègâ~•µ=Ÿ©•M×£4ôîHëÐ“ŸRäHÇn8¨�×OUýuì:ûî“ÔsÏåÿ ëÇ¿âïòþ¾E>‡oÿ !½;=~Ð?[óéÜûWe/áÖÿ ¯5?C¯zõò'¥×Ð P@  P@ Àk<ƒIÔ'°:lÓ´+Iç¬JÇ¯Ê­’½>làœúW¡G/•jq©í#mRå¾žnë_#žx…	8ò7n·µÿ 3þu¿ý&ÿ ÀÄÿ äz×û._óú?øÿ äˆúÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ‘èþË—üþ�þ ÿ ù úÒþGÿ �ÀøYÖÿ ô›ÿ ÿ ŒQý—/ùýüÿ òAõ¥ü�ÿ ÿ €z=�ÚßYÛ^"4ks
L¨ÿ yCŒín#è>•æÔƒ§9A´ÜdâÚÙÛ±ÕÍ-®¯bÝ@Â€
 (  €
 Ì¿û�ýsíéÍTwFovqÖò1i_õÒïÿ M×•¬þ¸Qøß§ù‰X…  P@  P@ ”ä7ý‚¦ÿ Ò¸(V€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (’×³ý¡féƒÿ ègóã·<úwÚŸÃ/_ÐÊ¦ëÑššvFÜŽ óß¹ÇLtÁ>þµýGß}ÒÞç¦xÏáÓÞ…¿È§¹ÅÁÿ !½?=îr9÷=¿
ë¥ü:¿õâ§åÿ Æ_?ëä¯Ìôªá:€
 (  €
 (  €1¯/|?Å/ît˜î –îKE˜Ù�øôÍo
x‡Ó�gðS·á¡œ¥M;IÂþv¹WûKÂóù ßëñªöX¿äÄ}ÕÏG½?ü”?´¼'ÿ ?šýþ°ÿ =–/ù1u@ç£ÞŸþJÚ^ÿ ŸÍþÿ X�Ëü˜�º sÑïOÿ %í/	ÿ Ïæ�ÿ ¬?Æ�e‹þLGÝP9è÷§ÿ ’‡ö—„ÿ çó@ÿ ¿ÖãG²Åÿ &#î¨ô{Óÿ ÉCûKÂóù ßëñ£Ùbÿ “÷Tz=éÿ ä¡ý¥á?ùüÐ?ïõ‡øÑì±Éˆûª=ôÿ òPþÒðŸüþh÷úÃühöX¿äÄ}Õž�zù(ixOþ4ûýaþ4{,_òb>ê�ÏG½?ü”?´¼'ÿ ?šýþ°ÿ =–/ù1u@ç£ÞŸþJÚ^ÿ ŸÍþÿ X�Ëü˜�º sÑïOÿ %í/	ÿ Ïæ�ÿ ¬?Æ�e‹þLGÝP9è÷§ÿ ’‡ö—„ÿ çó@ÿ ¿ÖãG²Åÿ &#î¨ô{Óÿ ÉCûKÂóù ßëñ£Ùbÿ “÷Tz=éÿ ä¡ý¥á?ùüÐ?ïõ‡øÑì±Éˆûª=ôÿ òPþÒðŸüþh÷úÃühöX¿äÄ}Õž�zù(ixOþ4ûýaþ4{,_òb>ê�ÏG½?ü”?´¼'ÿ ?šýþ°ÿ =–/ù1u@ç£ÞŸþJÚ^ÿ ŸÍþÿ X�Ëü˜�º sÑïOÿ %í/	ÿ Ïæ�ÿ ¬?Æ�e‹þLGÝP9è÷§ÿ ’‡ö—„ÿ çó@ÿ ¿ÖãG²Åÿ &#î¨ô{Óÿ ÉCûKÂóù ßëñ£Ùbÿ “÷Tz=éÿ ä¡ý¥á?ùüÐ?ïõ‡øÑì±Éˆûª=ôÿ òPþÒðŸüþh÷úÃühöX¿äÄ}Õž�zù(ixOþ4ûýaþ4{,_òb>ê�ÏG½?ü”?´¼'ÿ ?šýþ°ÿ =–/ù1u@ç£ÞŸþJÚ^ÿ ŸÍþÿ X�Ëü˜�º sÑïOÿ %'·¹ðÝÜ¢Y´k‰˜±@ÖRÈ@ä�‰–8ï�ÅL£‰‚æš¯Þ\é}ìiÒ“²po²±¶ P@     p ô¬ €
 (  €
 ËÔ?Õ·ùì?—Z¥º3{³‘²Foé¬µÓ?²›¤ñgQÇ­i?ƒî~7èzbj P@  P@  PQÿ �Üö
›ÿ Jà Z (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  K]e7öªYamÀW,HÎ{7ë[Sø_©”÷^�ñ5tá÷yè>éýNyôýnÑ-†ºz¡o¾éë�ÃöÁ>Ô£¿ù”íøØã ÿ �æŸíp üÉþ½«¶—ðë×ŠŸ¡Œ¾(×Èÿ _™éUÀt  P@  P@ qZŸ�t­Vö{é®/â–á·H°É�v1�%‚VÀlz
î¥�­J¦£M¨èœ“½¾R_æa<<''+É7½­ú¢‡ü+]þ5Oûûiÿ Èu§ö�ä¥÷Oÿ “'ê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~äð­t_ùüÕ?ïí§ÿ !Ñý§_ù)}Óÿ äÃê°þi~ä^Ó<	¤éw°_Eq,¶ìZ5šHaˆ+¸ˆ­âb@'vÜõ³«�­V¦ãM)hÚR½»k&T(FRNM®öýÛW	¸P@  P@ fß£g§ãíTºÖçœê“\ZJ·6ÎÑÏ	Ý®>R2A0 •e9V†r+¦	=©ÿ ŸÈÆM«µ£Oúþ»÷uëa°Zi“/$W˜ú‘ÌjÑUýZ›ÙÉ|Óý?R"k¤ó3�ÅŸù‡i÷îóÿ “j¾©æ—áþDýf§òÃîü�ÂÙñý´Ÿûõ{ÿ É´}RÍ/Ãüƒë5?–�ÿ $'ü-¯Ð;Hÿ ¿wŸü›Kê�þiþäY©ü°üù!áløƒþ�ÚOýú½ÿ äÚ>©æ—áþAõšŸËÇÿ ’þÏˆ?è¤ÿ ß«ßþM§õH4¿ò¬ÔíÇÿ ’þÏˆ?è¤ÿ ß«ßþM¥õH4¿ò¬ÔþX~?ü�Ÿð¶|Aÿ @í'þý^ÿ òm?ªCù¥ø�}f§h~?ü�¿ð¶|Aÿ @í#þý^ÿ òmT‡óKðÿ  úÍNÐüù!?áløƒþ�ÚOýú½ÿ äÚ>©æ—áþAõš�¡øÿ òBÿ ÂÙñý´Ÿûõ{ÿ É´}RÏ/Ãüƒë5?–�ÿ $V?5Óv/?³ô¿1mÚØ/—y³cJ’–?é›·n@8ÆxÏ ú¤?š‡ùÖjv‡ãÿ É?áløƒþ�ÚGýú½ÿ äÚ>©ç—áþAõšŸËÇÿ ’ø[^ ÿ  v‘ÿ ~¯ù6—Õ!üÒü?È>³Sùaøÿ òBÿ ÂÙñý´Ÿûõ{ÿ É´}RÍ/Ãüƒë5?–�ÿ $'ü-ŸÐ;Iÿ ¿W¿ü›Oê�þiþäY©Ú�ÿ $/ü-ŸÐ;Iÿ ¿W¿ü›GÕ!üÒü?È>³S´?þH?áløƒþ�ÚOýú½ÿ äÚ>©æ—áþAõšŸËÇÿ ’þÏˆ?è¤ÿ ß«ßþM£ê�þi~äY©Ú�ÿ $/ü-ŸÐ;Iÿ ¿W¿ü›GÕ!üÒü?È>³Sùaøÿ òAÿ gÄôÒïÕïÿ &ÑõH4¿ò¬ÔíÇÿ ’ø[> ÿ  v“ÿ ~¯ù6—Õ!üÒü?È>³Sùaøÿ òAÿ gÄôÒïÕïÿ &Óú¤?ž_‡ùÖj,?þHçÛãwŠÌð�/B	¯“ X…b9ÿ ‰ˆãœì+i`)G—ßŸ½Ië¬¢Ÿòí®Ÿ™ÆTw¼`­&–’ÖÒ·óü^ñ §hÀcœE}ïÓý8ÿ õ‰ÅcõJÍ?¾?ü�õb¾µSùc÷Kÿ ’'ÿ …µ¯ñ�?H÷Ä7½}úo¯ãGÕ)ÿ 4þøÿ ò#úÌÿ –?sÿ 0ÿ …µâúé3þªôqßþ_¨ú¥?æŸßþD>µ?å�Üÿ Ì?ámkÿ ôÒïÍï§ývþT}RŸóKÿ �ÿ "?¬Ïùcøÿ ˜‹Zù<iúGýú½þ_n£ê”ÿ š|ù}f§òÇîæ/ü-�¾Ÿ¤þÞã¿ý>�cGÕ)ÿ 4ÿ ð(ÿ ò!õ™ÿ ,óþÖ¿ÿ >Gýù½#óûuT§üÓÿ À£ÿ È‡Ögü±üÌ?ámkÿ ôÒ§î¯rOþÿ “Ó4}RŸóOï�ÿ "YŸòÇîæ/ü-ŸÐ?HgýMï?ù=GÕ)ÿ 4ÿ ð(ÿ ò!õ™ÿ ,óø[> ÿ  ~‘Çý2½Çþ—~˜£ê”ÿ š|ùúÌÿ –?�ù‰ÿ k_ÿ  ~‘øÃ{ÿ ÉÔ}RŸóOÿ �ÿ "Y©ü±ûŸÿ $/ü-�|gþ%úGôÆ÷ÿ “¿ýc½T§üÓûãÿ È�ë5?–?sÿ 1?áløƒþ�úGýú½ÿ äÚ>©Où§ÿ �Gÿ ‘¬Ïùcøÿ òAÿ k_ÿ  ~‘Ô�õ7½±×ý7Þ�ªSþiýñÿ äEõ™ÿ ,~çþaÿ g_ï§éÓ÷7¼ÿ äðëÚ�ªSþiàQÿ äGõ™ÿ ,~çÿ Éÿ gÄôÒ:gýUàÿ Ûïz>©Où§÷Çÿ ‘Ö§ü±üÌCñg_ÿ  ~“ÿ ~oOôîhú¥/æ—ßþG@úÔûCñÿ 0|@N?³ôŽ¸âßåöÜÑõJÍ?¾?üˆ}fËÇüÀüZ×ó�ìý#þüÞçÿ KÃš>©Où§÷Çÿ ‘­Oùcøÿ ˜ÂÙ×ñÿ  ý#>žMïÿ 'QõJwø§÷Çÿ ‘Öj,óø[Zÿ Oìý9Æ<«ßþN§õJÍ?¾?üˆ¾³?å�ãþaÿ k_ÿ  ~‘Çý1½ÿ äãùý)}RŸóOå(ÿ ò!õ©ÿ ,~çþaÿ kÄôÑóéå^çÿ Kýy£ê”ÿ š|ùúÔÿ –?sÿ 0µþú~�?í�ïNÿ òûGÕ)ÿ 4ÿ ð(ÿ ò!õ©ÿ ,~çþbŸ‹ óÒ{ÿ ËÞßöûéÎhú¥?æŸßþD>µ?å�ãþbÂÚ×óÿ  ý#þüÞûÿ Ó÷·�T§üÓÿ À£ÿ È‡Ö§ü±ûŸù‡ü-­œiúGn<«ÜŸ§úoOÀqGÕ)ÿ 4þøÿ ò#úÌÿ –?sÿ 0ÿ …³â?â_¤sÿ Loxÿ ÉÚ>©Où¥ÿ �Gÿ ‘¬Ïùc÷?óø[Zþ3ýŸ¤vÿ –7½=ãûš>©Où§÷Çÿ ‘¬ÔþXþ?æ/ü-��ýŸ¤sÿ Lo¸ÿ ÉÞÿ ¥T§üÓûãÿ È‹ë5?–?sÿ 1?ámküÄ¿Hç·•{ŸËí¾Ô}RŸóOï�ÿ "?¬Ïùc÷?ó|Yññ.Ò}a½Çáþ›éGÕ)ÿ 4þøÿ ò"úÌûCî—ù‰ÿ k^ÿ Ÿ#þüÞõú}·ÛzŸj>©Où§ÿ �Gÿ ‘¬ÔþXýÏüÃþÏˆM;H?öÊ÷ÿ “hú¥/æŸßþD>µ>ÐüÌÑƒâ^»?ÊÖzddñ¹#¹Èã¨ßtÊyþòãµ?V‚ë'÷‘K7Ò?sÿ 6ké·W³›«—i%”‚Ìq�3€ª Qrp ã>ù©’QVŽËúô»þ™QnWoïõZ‡§/CÜÏ<{sÀü?®+šFë§¨ëîU±þ×?ä÷éœP·ùïýyU¾¶ôìÿ ¤ûrÄÎºé·ýy©úÏâ‡ý|�êzUp�@  P@  P@q®YxâmJáô»’–$�!c¹‚ «�âYNíùÎON˜¯J…L
¥V©ö›Œž¾Mt9§îMÅû½,ÒÓædÿ füHÿ Ÿ¹ð:Ïÿ Š­½®Yü‹ÿ  ™¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Aý›ñ#þ~åÿ Àë?þ*�k–"ÿ À&¸žïÿ Fÿ ‡-<e Z¸2XùRW¸‚b\¯îö‰ †Á$ñŒŽµÏ‰ž
Tÿ qTºµ£(éÖ÷ÑšSUÔ½÷îÙõO^›õyç@P@  P@  P@ Fíw+óÒ©tþ»’ÎV´2#§œŽžÜúñß?¥ofŒf®™æ—úc–o�þëü½{×R{k®�¯ø;‹ôÿ �ëõ0LbNWéÇ_Ðþ•¢¿R9wÜOìÃýÓþ
/çù‡/¨ŸÙgû¿§ùÿ <ûQ?Å‡'¨¿Ùgû¿ç·oóïEüÿ 0å~aý–º*/çø¿ò_PþË?Ý?ç�J/çù‡/¨eŸîŸ^”_Ïó/¨ŸÙg?wüöíùÿ œ—óüÇÉä/öYþïéþÏçEüÿ ?ò/¨ƒL=×ÿ ×ßµóüÿ ®ƒåõû,ÿ tþT¯çù‹—Ô?²Ï÷ÏåýißÏó'¯àÙgŸ—úQ?Ïüƒ•ùýè?²Ï÷O§ùþƒÿ ×Eüÿ 0åõì³ýßóýh¿Ÿæ¾¢eŸîþœQ?Ì9=EþË>†‹ùþaË¾âeŸîÿ ŸËüþ_Ïñbåõû0ú/çù�•ù‰ý–»ú€ôÍ¿_Å‹—É‹ý˜ºh¿Ÿæ>WæÙŸìŸÊ‹¾ÿ ˜rúœGØ	ÔïSiÿ �™>„oòzö^š�JõêŸþ�Œ¡e§Û—çéøK©³Ó€vN‡0?.¼qÆ:ðyœ•�Ÿ_ø4äò~¯ú×üìh0ž‘öçƒÆzÿ JW_ÕŠåþì¿ßÙ‡û£'97¯Nž�?Z\Ë»òÕ-Ö©þæ!Ó?sÔ|»½=q�§<Óºÿ ‡h9i~ýš»ížrx8íëøõã4®¿¦…É¶’û×õúökqòc>™ëíòÿ Z9—ôÐù?»+ú þÌ#�¿žG?M½ió/ë—úÜ9?ºÿ  þÍlç`ü�éÇ¿ùÍ+®ïïˆ¹i~�5¹ù^Ÿ÷ÏQÏùês.ïïˆryKðÿ 0þÌb~§ŸÀ
.»¾ûÄ9i}èOìÖî¿Ï�Ð~T]yýêáÉå/“Wû5ò>QÏl7øóõ¢ë»ûâ>OîËO5þbÿ f7÷xÆ9úâ‹¯é äþì¿óìâ8Ú¿ÍÎ=xþgó¢êû¿¾!É×–_€ŸÙ�ýÏÇæéŽ;v<Óºóü—û¯ðû5¸ùFøú~^½©]wzO)~æÙ�ÏÈ?_B?ºM>hÛþ
ÿ €�-/ÃüÃû5‡ð�ü{×ž£œþ”®»¿¾!Éå/À˜ßÜ<}O ç¯|úŒw]ÿ /ëüÃ—É¯»üÅþÍ9û£¸Ç?ËA¥tú¿¾!Éå/ÀOìÖãåüp@?¥^zMô€¿Ù­Ÿ¹èyÓéŠ.»¿¾!ÉÖÒü?ÌC¦6>éúüÜ.ßZ9’Ýþ(94Ùþz‡öi^þ‡'¯_Ö‹®ïïBäò—–¨?³[¦Óúÿ =½}¨æ]ßà>O)~†¡ýšÜüƒêw~qëB’óûâ.O)~pg7÷?C�ýüý9¢ë»ûÐr.Òüf°þ÷ç=9ö9ÿ >”]yùê†áå.ÁýšÜ|ŸÏŸüwüæ‹­}{Ä9iké f‘ü™'§üÿ ¯žý©ó.ÿ –¡É¾�åoóìÇÃÏÐ�}º¨£™iþh?ºÿ  þÍ`9QÈï“×ð9üJW]þæƒ“û¯!³O@¹÷Ãé‘ÓÓúÓºóû×õø‰Áv—áý~"�1‰ÇÜ`�qü‡¿ëŠ\Ë¿âƒ—Éùj—õýhlXi…X9ôþŸAÔ¤ãž1RåßÓËñëÓþj.úùh¶_çòÓð=Hµ*W…ÆqÜã¨üz{šç›ÿ ‡7ŠÖŸÕ¼öÔôDÛŒÝyïÎxÈzúq\Íÿ _×Þn—Ý~¤W¸ÚÇØúÇÞüS[ {œTòÓ½îã÷ºçÓùú×e+û:ßõâ§èc/Š?õò'¥×Ð P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  PR( ûþ½;{t¦„b]Ù‰OóÒ­Kúþ¿"îs“éËƒõíZ©�ãý_×™žÚóòï�_åOÚÉåý]ÿ `¯÷ñÓüú~¸£Ú“×úüCû	{¨ëéúqëOÚ_×õóNß¨a/?(üTÑÎÃ�Q¡/÷GÓÿ ¯G´þ´NÂ`¯÷CÏùý>”½ rö
ÿ t~G×üÿ *~Ñ‡"óüEþÁ_î�Ä^Ñ‡'¨ŸØ*?„~GüŸò(öŒ9=Cûº?/óþ4{@äþ¿¯ø`þÃOîŒzí8£Ú0ö~ 4<í�oóßŸÂ�h�ý„½Ô~]iûFŸ×`þÂLýÑéÓŒ÷^>¾”½ ùû	º>˜ëOÚ‘Wì%þïä´{Aò4%?Â=>íÓú°¹?«±°—¦ÑíÁõ÷ÿ >”{@äì%Â?ïŸóúÑí“ a/÷@ãû¿¯Oò~´{@äìþï¸ÇëÁþ”{@äþµûº?#KÚ‡©ç_ØÊ5{õ+À»›¦rA‘Æ;rpëž:cžÚ³ÒŸ�?³‹ÿ ?ël©ÇYiöçÿ ¥4v6Z*�	UÆÓÛñýzúã¨Áåsß_ëúþ»iÉ¯áý~† ÑT•¨#Ó§\þ•þcäìTë·=9ëž¿‡—nÇ?fŸÓ`4Eþî@sõ}yãñ£�÷þ¿¯ë@äòüEþÄ^…G¨<ÿ >™çÙsÛo¸9?«ýßÖ‚b!ÇÊ	ô<Ÿ¦=¿?ÆŸ;þ­ r/ø`þÄ^À3ÏÏ=óÜœÿ N(ç·_À9?«‡ö"€ô>ãÓÛ?B(çógý\Q¢)þ�ðGëØcçÖŽ}7³þ®'ö`åGëŒçõ=�åG;Óúÿ †/õq±ûª21Ï'‡­.êÁÈ¼þðþÅLž:{œ{ÿ “úÓç×ü8rWýûpr£¨ûÀý}ºÿ /­àà·×ïÿ €C_îð1Ç?ˆúcüris¿ë°ry~"OXÆ=ú.1Ÿ^Þôù¼ÿ áƒ“×ïÿ €)Ñº=³ž?.Ç§áš=£þ�rWõìU?Â3ÏU?�©ÏÐŽ½ÇSŸÏÌ9-ÿ ÿ  ÐÓ²õ–q×°ÏéÓŒ÷9Ørýˆ½vŽÙ?×ü3ŸÆŽ?ëä‹³üDþÄ�º�Ç¸Ïóü}zcsùèž_ˆb¨Û�}�aÓãÔçò9üÿ ¯Qû?é0þÅC�” 03ß“�óê{^ÂäØ?±W1Ž„õïÇ>�zQÏÝ‡%Çb&	*ÏaŽŸ†{÷ä÷ëK�üƒ’ßðã±PtAŽƒ¯Ë�Ÿþ½ûjž¿ùýˆ�J¼‘ê^3ø÷úQÎ×]Éóù‡ö*tÛÈ×=¿¡?ÎŸ?wý~!Éåøˆ4DÈùGÓ‘ÏOnyôâŽëú×ñ 3Â¯§?�N?—J9Ø8z‹ýˆ˜ÎÑÇ^yÈý~„ŸZ9õßúûõûìž¾wc±W …žàôõôéÆxÎ=¨çóýGÉå÷1ßØˆ‡ëŒõëŸaÇn”¹üØrWìHú•þ'üHã¨úþžýÌ\ž@º"ä�€§ŒñÇNœý3ùQÌûþƒäþµ/A£¢`múã±ôãúcÜÒsÒúüÊQ×¾º�Ÿ–  p÷ç¹Ééß²núõe¥åýZuüØ�*��\�§ùëØÏ¿#céþOäiÇ�Ÿ—õýÀ8›lméçþž·¯nüž•ÛJþÎ¯ýy©ý}æ2ø£ÿ _"zep@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ F­NàBmÇ#\Vþ¿¯òöEîùüéßÏúû„×¯áÿ  >Æ¾ƒç½þ®õü?Ìšþ¹£˜9}ó±¯µõûÂÞOðÿ 0ûzzQêáo_ÃüÄ6iùt£›ú¸[Ëòÿ 1~Æ¾Ô_ú»y_x}�Oÿ ZŽoêáo/ËüÀY íúÿ úèæþ¿¤¾¿‡ù‡ØÐtÇùÿ ëçó¢ÿ ÕÂÞOð±¯µßÕÂÞOðÿ 0ûûQ_¿þ [Éþ}�xöý~´s¼Ÿà/Ø×9ý(æþ®õü?Ìšç?¥Áo_ÃüÃìi�óÆ1Ó­Âåõü?ÌO±¨ÿ ëóG0íëø˜¿cNàR¿õpåþ´ÿ 0û~¹ëútéO™…¿­?Ì>Æ¾‚Žoêáo'ø	ö5ÎýTs_Òy?ÃüÅû"ú
/ý\-ýiþg˜›5þÜÔNü~ÍéŽ$o_lŒúz
î¬Ý©×Šúj?�õ¹…5¬ÿ ëåEÿ “3µ³³]¸öÇBv�sÛœãõÀÏ\ò9ovþVíÝÿ —äl–»_ç§üQl— cÑ—ÛóŒþ8¨½Ðíëëoëôö5ô^½×ÛØôüý3EÃ—þAd¸è¿÷Ç=~¸ÿ ëQêádº0û’8^3Œ©ùÿ œQPåùýßä/ØÇBÿ ÀŸ<Ÿ^ÿ Z.._×úØAf=�AÊtÇN‡?�ÁËýKüƒìkÏÊ?ï�ÐrxãÓ¯Ö‹�”_±¨ì?ï�úàþ\,!³t‚~½IÏ·ÎŸ0rù±>Æ£O¹ÛúÒº×Kz*ìCÑ{?Ï¦:ç§#š/ëÐ\¾¢ýŒuxÿ gùr?J9½~ñòúÿ _!˜ä`ß>Ý¹öý}hæÄšŽ09ãî>¼Ž´_Ô9¯éö :ínü®}xúœžK‹—úþ�†È€ }déŸ_ÀÑÌ>__Q~Æ èOáÉïèúÔ\9}>Æ?º¼ÿ °^¿—4_×ï_øéö ð“�î“Ó'©"Žarïý|öf:ñÎ
sœväãßüŠ9¶/õý!˜þêäú¯N>¿áÉ4_×úþ˜¹¯Ã°}ŒŒ{ìçŸÓüñG0ù¯éØÁÏN}PŸ_òzQq8éÿ þAö =?)ÀÇ§b®xÑÌ5_À>Æ¸û œÿ sµõûÃ—îþ¼ƒìcŽ}Þ9ï×ÊŽoPåþ¿áÐ¿býÞ¸'Ï�1Áì)\\¿ð6ÓðìkŽƒŒÿ |õÎ{÷àúæŸ0ù|ßáþ_Ó±ƒØQ³Óžç&Ž`å±�EéÓf{ç×üõ¢âå±.qÇ¯+ÇÓéÏJ9‡ËýH_±ŒtSÔãg=xã=ºs/¯à ´ëÓþùàqõÇøÑ»úó_7ø‘"Ú€¯C€1Ï¦AúR¿õÿ Ðv,,AzN¤têAãžGãüËŒ”{óH‹ãò¶}ÿ ?_ëÓ¿>Ö·ùÿ _ëú±Å[ó®iÞ×úûvéü¸ÅvRþoúñSô1ŸÅúùÓ+€è
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  3ÆuÍG#þ_&íþÛtã¯ùúwVÿ —_öCÿ MÄÂžóÿ ¯µ?ô¦v¶\ÿ ÅÓýãï×Œ�^½¹ä}M�eè>‚ bÐ@  P@  P@  P@  P@  P@  P@  P@  P@ dß}Â1ÓpÉÿ ¼uüñœUÇ‘{w8xäHu‹	$!Qn–# ÜGosÞ»(ë‘Z¹Ò©¼ÞËð3žŽ/¢œ[ôîzup…  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P—Ç*M¬ßKG»”«�A��r;tÿ 85Ý[G÷�Qk³�5¾ôsÓêú:“kÑÊçs`>UúŸ¨�Ç9Ç|ôÈú›­Ù¬½ùÿ ?Ó¥@Å €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 É¾ÆÒrOãƒôúŸÓ“õ¸ïòýIðÇ—ë{‘X©*W$û°[#ƒÓò®ªnÍ4õW×úü¼Ì¥×Ï§ÜcÇñ3WÒaKko|"U¤/„P6å�üÄ y#œŒ`�ý•
­Êq”dÞ®œ”S}[Œ£5÷Yy©ÔŠ´dšKE%};&œ_ß}ãV §Øv‡¿ü|MÓò4,.ÿ Ïÿ üþRÚ¯÷?ðòbÂë¿ÿ  %¯ùo?nÝ>£ð£ê¸oúÿ ƒ)ÿ ò öÕ?¹ÿ €Ëÿ “|k¿8Î‡h	íö‰¿.€~´}Wÿ OßýÄ§ÿ ÊƒÛTþçþ/þL_ø]wÿ ô´öñ7ôüñé•õ\7ý?ÿ Á”ÿ ùH{j¿Üÿ Àeÿ É‰ÿ ®ÿ þ€vŸø?é… ÿ J>«†ÿ §ÿ ø2Ÿÿ *¸{jŸÜÿ Àeÿ É‹ÿ ®ÿ þ€–Ÿø?øž=iýWÿ Oÿ ðe?þRÚ§÷?ð	òb�š‡mÐÿ ÛÄþ¤qòŸOj>«†ÿ §ÿ ø2Ÿÿ *mSûŸø¿ù0ÿ …×Œÿ aÚßññ?õ_óü�ªá¿éÿ þ§ÿ ÊƒÛUÿ §ø¿ù0ÿ …×¨ÐÓ§üüO×>íUÂÿ Óÿ üOÿ •¶©ýÏü_ü˜£ã]ÿ ý í:ÏÄý}>ïëëø}Wÿ Oÿ ðe?þRÚ§÷?ðòbÂë¿ÈØvŸ_´NL}?:>«…ÿ §ÿ ø2Ÿÿ *mSûŸø¿ù0ÿ …Ù¨Ð
×ÿ 'éÿ |þ4}Wÿ O¿ðm?þTÚ§÷?ð	òbŸ�wøÏö%§þOþ‡ÿ ª�ªá¿éÿ þ§ÿ ÊCÛTïü_ü˜ŸðºõúZsÿ O3~¿/¾«†ÿ §ÿ ø2Ÿÿ *Ô=µOîà2ÿ äÅÿ …×ÿ @;L×Äÿ Ëçþ«†ÿ §ÿ ø2Ÿÿ )mSþ�ÿ à2ÿ äÃþ]þ3ý‡iÿ �Ï�óúRú®þŸÿ àÊü¨=µ_îà2ÿ äÄÿ …×ÿ @;_ü›ü9ÍUÃÓÿ üOÿ •¶«ÿ Nÿ ðòaÿ ®ÿ ¶‡hGý|Oý�ÖŸÕpßôÿ ÿ Sÿ åAíªÿ sÿ —ÿ &ðºõúÚwÿ —‰¿Ã¿çKê¸oúÿ ƒ)ÿ ò�öÕ?éßþ/þL?áv_öÑ-<ÿ ¤OÀõû´þ«†ÿ §ßø6Ÿÿ *mWûŸø¿ù1OÆ»ÿ úÚwÿ —‰½qéøÒú®þŸÿ àÊü¤=µ_îà2ÿ äÃþ^ zhvø7_OºãÐÓú®þŸÿ àÊü¨=µOîà2ÿ äÃþ]þ3ý‡iŸAs1þ”¾­†ÿ §ÿ ø2Ÿÿ )mWûŸø¿ù1?áuêô´ÿ À‰ñÿ  Óú®þŸÿ àÊü¨=µOîà2ÿ äÀ|kÔ;èvƒþÞ'?û(£ê¸oúÿ ƒiÿ ò öÕ?¹ÿ €Ëÿ “þ^¡ÛC´Ï½Äà~{OòÇ½UÃÓÿ üOÿ •¶«ýÏü_ü˜ŸðºõúÚgÓí{wÇ×ò÷£ê¸oúÿ ƒ)ÿ ò öÕ¹ÿ €Ëÿ “ñ®ÿ þ€v‡×ý"Ì|¸?Ÿò£ê¸_úÿ ƒ)ÿ ò öÕ¹ÿ €Ëÿ “ø]wÿ ôµÿ À‰½ztôæ�ªá¿éÿ þ§ÿ ÊCÛTþçþ/þL?áv_ÿ ÐÓÿ 'ÿ â{Qõ\7ý>ÿ Á´ÿ ùP{jŸÜÿ Àeÿ É‹ÿ ®ÿ þ€v�?çâËîÒú®þŸÿ àÚü¤=µ_úwÿ €Ëÿ “ñ®üÌÓ¦ãâ\wØÓú®þŸÿ àÊü¨=µOîàÿ äÀ|k¿ï¡Úëö‰¿À~4¾«†ÿ §ûÿ ÏÊü¤=µ_úwÿ €Ëÿ “þ^¡ÿ @+Oü›ü??OÆŸÕpßôÿ ÿ Sÿ åAíªÿ sÿ —ÿ &ðºõúÚàDÿ üH£ê¸oúÿ ƒ)ÿ ò öÕ?¹ÿ €Kÿ “þ]ÿ ý íïüþ™ôü(ú®þŸÿ àÊü¨=µOîàÿ äÄïûèvƒþÞ'þª(ú®þŸÿ àÊü¨=µOîà2ÿ äÅÿ …×ÿ @;Nýn&þ€çüúŠ_UÃÓÿ üOÿ ”‡¶©ýÏü_ü˜ŸðºõúÙÿ àLÿ ‡E?®(ú®µüOÿ •¶©ýÏü_ü˜¿ðºïñŸìKO§Ú'Èý?Ï´þ«†ÿ §ÿ ø2Ÿÿ )mSûŸø¿ù1Æ½@qý‡gœgiŸÿ ‰ÿ ?Èú®þŸÿ àÚü¤=µOîà2ÿ äÅÿ …×Œÿ aÚuÇü|MííëÇÖ�ªáéÿ þ§ÿ ÊƒÛUÿ §ø¿ù1?áuêô´ÿ À‰úú}ß×4}Wÿ Oÿ ðe?þTÚ§÷?ð	òbÿ Âë¿ÿ  §Lÿ ÇÄØúgŸáGÕpßôÿ ÿ Sÿ å!íªsÿ —ÿ &'ü.½C aÚc×íÿ -¿áïGÕpßôÿ ÿ Sÿ å!íªsÿ —ÿ &ð»/ÿ èi×þ~&éž½=2hú®þŸàÚü¤=µOîà2ÿ äÅÿ …×Œÿ aÚuÇü|Mþ¼}hú®þŸÿ àÊü¤=µNðÿ À%ÿ É‰ÿ ¯Pÿ  §þMþ¾«†í_ÿ Sÿ å!íªsÿ —ÿ &/ü.»ÿ úÚàDÿ üOO¥?ªá¿éÿ þ§ÿ ÊƒÛTÿ §ø¿ù0ÿ …×ßC´ÿ À‰‰ü±þJ_VÂÿ Óÿ üOÿ ”‡¶«ýÏü_ü˜Ÿð»/ÿ èk×þ~'ÿ Â�ªá»Wÿ Á´ÿ ùP{j¿ôïÿ —ÿ &/ü.»ÿ úÚàDÝyã€}=~¸î}Wÿ Oÿ ðe?þRÚ¯÷?ðòbÂëÔ?èißþ^'éÿ |þ”þ«†ÿ §ÿ ø2Ÿÿ *mS¼?ð	òbÿ Âë¿Çü€í>ŸhŸú¨¥õ\7ý?ÿ Á´ßþámSûŸø¿ù0?ïÿ èißéöÿ €œfŸÕpßôÿ ÿ Sÿ å!íªsÿ —ÿ & ø×¨ù�ÚàLßáùŽ£Ò—Õ°¿ôÿ ÿ Sÿ åAíªÿ sÿ —ÿ &/ü.½Cÿ aÙçÓí3@—éGÕpßôÿ ÿ Sÿ å!íªsÿ —ÿ &'ü.½Cþ€vŸø?ÿ ÿ Ö§õ\7ý?ÿ Á”ÿ ùP{j¿Üÿ Àeÿ É‡ü.½CŸø‘Úÿ àDüóôühú®þŸÿ àÊü¨=µOîà2ÿ äÅÿ …×¨ÐÓ·ü¼OýTÓ¤u¥õ\7jÿ ø2Ÿÿ )mWûŸø¿ù1?áußÿ Ð×ÿ 'ööÿ 8§õ\/ý?ÿ Á”ÿ ùP{j¿Üÿ Àeÿ É‡ü.½Cþ€vø?õP)}Wÿ Oÿ ðe?þTÚ¯÷?ðòaÿ ²ÿ �ø‘Úr?çâðôçéOê¸oúÿ ƒ)ÿ ò�öÕ?¹ÿ €Ëÿ “ø]š‡ý ­ð"oð¡ápßôûÿ Óÿ å!íªsÿ —ÿ &/ü.»ÿ úÚàDÞ¸ôôæ—Õpßôÿ ÿ Sÿ å!íªÿ Ó¿ü_ü˜Âë¿ÿ  §ùo?ÿ Oê¸oúÿ ƒ)ÿ ò�öÕ?¹ÿ €Ëÿ – ø×ßCµuóçÿ óŒÒú®þŸÿ àÊü¤=µ_úwÿ €Ëÿ “ülÔüÀí?ð"þ'ó§õ\7jÿ ø2Ÿÿ *mWûŸø¿ù0ÿ …×ÿ @;NŸóñ7ø~?Nhú®þŸÿ àÊü¤=µOîà2ÿ äÇ§Æ�AÎ?°íGý·œÿ AGÕpÝüþRÚ¯ý;ÿ Àeÿ É“Ëñ#XÖ#û4VÐX, £´%ÝÙHä|•ôàƒŽsŠ*4Ÿ4#'%´ªIO•÷IF¾ÿ •·ÐNu'¤šIïÊœ[ßFÛm_ÊÆ×‡÷e]úñ’GV9îsßÓž}+žz·w¿]õësh/ÌôÛ…p{÷çü*å}vóýQª½ÿ [ú`TŒZ (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  Ë¥ÊôêNÔzçÛþ-ØâÖ¿×õÒÿ ®š‰«œ³k¸7ÏG ù»çÖ¶‹þ¿¯‘›_×ùSªØbv›Žœ�8\›€á‡pGr3Õë±‹_.ç).šÙá=q�GáìNõª’·ÏRm®ßðH³˜gä—NqëþÑuå÷îNŸÒû5±÷?qúõüÿ úï™yz]_xiÝýÌ?³X¸Lg©'=ŸäRæ^_×˜öÿ †òû5ñ€ƒíŽ¿OÔzQÌ¿;�Øf¾9Œ¨çúzŠ9—õþa§ô¶i­ýÁÓñÿ ?L~9//Àÿ ƒ 5û çŽp=ó×ÛéG4§ýw?¥¶âÿ f¶>èéÐcúŽÜöéG2þ­oÌ4óû„:ks:�Óü}}hºòûÐ®¿¤'ökÿ pëžžüsü©ó//¼?Mv·õa³›�Ý�õïŸlö]y~}ëÐ?³œ çÿ ×ŒûqÏ?¡¥Íëþ4û5€æ?§ëE×—áý|ƒOé_ä'ökã;åŸÓ<}hæ^_x¼ïøÓ_pûsüúžß§4sGm?éoøòìçë³ž¸Áï�óÿ ë§Ì¼¾ô·¿£û5ñÌc®8Çÿ ¯ùÒæO¨imïòt×ù íØÿ “ý1B”|¯ý[®ÿ €¿Ù¯ÿ <ÿ N(æ^^—;¿ºáýšÿ ÜŸþ¹ëè;}:QÍ–ûÐößòté»ÿ Ç}?Ïù]|½Pioø˜ÿ ÜäŸ©íúvÇÔgŠ9“í÷þ íý!³[äÏ¿_©ö£™v_�ißðìæþàÿ ?ýnSÃºòü?Ì4¿üÔ?³\ÿ ?ùb—2òü?1+>¿€§Mîvúvõì>�(æ]ÿ -§ô„þÍ|ýÀ{`�ÇßÛ‘øÓæ‹þ—ù‹Nÿ ‡ùösuòÆ>™ÿ =GçK™y}ãÿ †Ûúòì×ëåõé�Çøÿ *|ËËï?¤Mq�³éÓ�ù�.eÿ ioÉ¿óû5ó÷0:ÿ Ÿòió-6ûÿ à†žsý˜äcË=Ï½8ëK™yy/Ÿtwü,'ökõØõçüÿ õéó-¿È4ïøýšã õü?1Ö—2þ˜iø�þÎqüùã·ùÆ9¢ë¥¾ýÅóüþÍn»?N?ÏãÛó|ËËÒè4óû˜5€û€ôÇ©$žôþT¹——áù�M?Ë×ú·�ïìÇÇÜãðïÐc¿ãÐþ4s+ÿ V;‰ýšØ? ã�Ëÿ Ö(æ^_€iý-„ssóÇùýËËðÁ§?d1Øuëß¶:ýhæ�ôÃNÿ †¨_ìÖ+�˜úú¹þ�½hæWÿ †·æ?ÀOìæþàäzgü÷Ï¨ü(My}ëúÔW_Òì×þæyôúzþ¿Z|ËÉ|Ðÿ »XOìæþâûúý1í×�ËŠ.¼¾ô/?Ð_ìçùíž1ì3ŸóéK™>ß×Ìzy€Ó[s¿|{Ÿéô¢ëËðþ¾A§ôºÿ _ s‘�ƒ¦ ÿ ?Ž(æ^_õ÷MïøÓ_ÆxéÏ×¯hæ�—Þ‡uoÃ`þÎ�ÿ éíþyïO™.ßz,·û˜f¿t˜=úã¯×JJK¨iëò¦¿? ôìzqùçú£ä-/¿àÙÍÓË¿çÿ ×G2òûú†�ÿ þ�ýšÿ ÜÏaÁÏëü»J|ÑéúúØqÓœ�õ`}G§ùíÎ=³JëúauoÇa£Mîu'§_ò:}xíG2ò·ªŸÒþ¿ þÍ`>àþ^:ŒQÌ»/ÁOéösÏ1þ§òüx|Ñòü?Ì4ëù1šÿ ÜÇ¹Ç×;ôëÓñ¥Ì¼¿ëúè-?¥ý[þÍî^žŸ¦zýqÓs%ý-ÿ ¯øq«iþOQ˜àòŸ—?™Ç_ÓÒŽh¿é˜ißð¸g7÷9¿×éG2ò¿¨´þ—¨f¿_/éÇ^çü÷¡Éy?˜ôþ–àtæÀ?/çÏáø¢Ÿ2òûÐißðlOì×?ÁéÈý?Ïò¢ëM½.ƒO?¹Š4×#9=ÈúŸ×·n(æ^_¢ý³Ø03ž>½ûœÑÌ¶ÿ †�ÿ ?³œt@Oôüÿ OÒ—2þ˜Ÿô‰âÓIþN@Ú2N ï�¯ëÛŠNOË[�.¨ê4½=ƒ¯
€9ç' $d{žÙ¬å-?®£ŠÕ~g­hÖì¨¡“£#öÇÏ\õü»“Ë7~½?¯ë¹Ñ¿´Pª:çŒçÐcŸ§©çÓÖ°wØµÿ  Ð©P@  P@  P@  P@  P@  P@  P@  P@  P@ W•r>oÈr3Çc×“œc^ÌG;}eæ8#¿sÓ–Ç^s‚O=+Dÿ ¯ëóþœ´qwz0vl®}ôp	Î8=Ny;Foç·ü/_»rÿ ‡±�'‡sÎÑŽ½r3éÔ¨íÓ·|Õ{NïúüÉåõ!ÿ „|Êä{Ž‡¯ÿ «®){Eý/øÊÅã…ãÓéŽFzçß×µÑ_þü å×ü8Â:F9ÏËì3ùzþ]hö‹úÿ †FÃª3‘ÈÇEýÏJ~Ñvü?à#ìÄÿ „uAÆ9ôÀãò{EÑ~ð•ÿ _ðáÿ àÎ6óŸOêF=8íÒ—´_Òÿ €¬_øGWû äu#ü�þ{Eý äøGTWþî{öãÔ§lSö‹·áÿ  9ŸðŽ.wcñ#’=‡×ñõ4{EÛòÿ  äbÿ Â8¼œœãåÿ =1ÜRöŸÕ¿à+øtdqÏP;uã¾âŸ´_Òÿ €�Ïúù‡ü#«ÏËœ‘·�8ç§¿ÿ ª—´]¿øÊüÿ ¯˜ƒÃ ôxà}¾èëÇøSö‹×åÿ  9XááÁýÞ™ç9úvõöÍ/h¿¥ÿ  9õù~§œw9ãé�Â�h·ü—ü äaÿ èÏNG^;~½±úQíô¿à/õý?�ŸðŽ3·Œgî¯cÏcÒ�h»kéÿ  9¿ð�>^9ÇìóÛÓ?™Àô=¢ì¿?Ð9XÂ::íô€:ôÁã×Ö�h¿¥ÿ  9XÂ6~_ÐqþHÿ <dö‹ú_ð•‡ü#£œƒê~_ÓßþØ§íô—ù#þÑÉÚ8ëÁöÿ  vüi{EÛðÿ €ŸðÂŸçøzvÆê9ü?:=¢þ—ü äøuGQÏQÀþ`žüQíW¯Ëþ r±O‡AÇËôàc z‘ú~4{EÛðÿ €¬AáÑýÜñè:c<àgw£Ú/é+áÜc+�\n½n�8ïØÑKþ 8‡ü#ËÀ ûzsÈÚ�h¿¯ø`åb§9>ÃüGøúŽhö‹·áÿ  9X¿ðŽ(?w?‡äxŸ·~Ñtü�r±G‡T©û¿ýaŽþÿ Z^Ñ_ðÁÊÄÿ „tc%z÷Ç4{Eå÷ÀVðŽîã¿CÀ=ééÓÛ{EÛðÿ €Œ?á^N3Ž¼×è?:~Ñy}ßð”_øG—äëÓ8ëŒú~]‡4½§ùmÿ  9X`d=8>ÝÆsüèö‹úÿ †VðŽŽ>Aî6ç çÛŒþ=ºÑíô¿àz‡+áÕyÀãå�Aô§íoÃþ r¾Þ¢Â: ò¼žÛúÔ½¢íøÀ_ëúaÿ ç8Ç# À<}Jþ\Óö‹ú_ð•‹ÿ òÿ t÷ÇëíøûÒö‹ú_ð�‡W?2õö§áôúv§íoëîþ»#þÕ';GÔ¯QÆqÛ©½§—áÿ  9¿ðŽ© mäôàQŸ^Ô{EÛúûƒ•ÿ ÁþÕÊñÓ‘ùžž¸îÑKþ r?ëþ?á_NÙÆÑÓ×§õ§íôƒ•ÿ _ðâ©è¼ôàõ»þ™>Ô½¢õùÀWýÃŠ<89ùzgœtÁëÐôÿ 9£Ú/éÀF/ü#½FÞÝqœà~½(ö‹ú_ð‘‰ÿ èúì?N1ùu£Ú.ß‡ü å×ü8Â8¿ÝÈ ÿ í×·§­Ñvü‘‹ÿ è  ¼sÛŽžãñý(ö‹²þ¾AÊÄÿ „tqœAÀü =N?hö‹ú_ð•ÿ _ðâÿ Â6~^ÿ Ý~}y¯Ò�h¿¥ÿ  9XŽr¾G§>ÙâŸ´_Ò_äŒOøGG'oOö~ž öØr{Òö‹·áÿ  9E>óÐäý9ôþ´{EýÃ ‡Ãª?‡Çýnßþ¿sÚ¯éÀVðŽƒŒŽ½2?Ž?ÏoJ=¢íøÀWýÃŠ<::…õíÏøö4{Eý/øÊÀøsÈÀ˜=ºãoøu£Ú/é/òA?á^ËÁÿ g®9é�óùÑíô¿à#øu3ÈÇÐwüº~`úw£Ú/é/òV;þÅííéïÇn¹ãü;ÑH9X¨íÉäeGnsž£Ú.Ÿ×à¬OøG”ó·ñÇëÓüãéG´^_wü åaÿ Øë´�âãë×ß¯áŠ=¢ÿ †_ðr0ÿ „y@è9Î ëÁçOLÓöŠÿ ð?à!,~=BäñŽH9ê>ƒ¦}J=§ÉH9z–z/–ëòÿ xú}ÑõÇ8Á`õ‡=õþµþ»”£ù}ß×s±°³¨#Ž˜ÀÏùçŽØ#�ŒŸüh•¿_êÿ ×çÑB»F^üç×œ~ qÏ¿$TX¤@  P@  P@  P@  P@  P@  P@  P@  P@  „gÿ ÕŸÒ€+I|åqœŸQÐ÷:qïÇzw¿¯ëúØ£%’¿u\úŽçŽä|ÇÇ5I…Ší§(�|p:Ž½@#$ú¥ÛÁ&Ëóþ¿«þÎg¯ps’ObÂ�ßõqÿ [Áû5yùG@zúç¿ùéïNï¿âöV_æ'öhäãê=qõÇáŸ^(»ïùüƒ_é/ói¹íÓ¨{þž¼qÖ‹¾ÿ ×ÞÖÂ�7¯ËúçÛëß>ÿ J.ÿ «‡õ°fËÓ¯?Ëùñß8íJïü÷ëaš1÷~¾ùúûÿ úù§wßó?é v7dvß'éø�nýé]÷ëoø!ýœ1�¸=3Øž=ýyôâ‹¿êágßðìßö@ç×óÏl{ñøŠ.ÿ «ŒœFÜv9à{vçÛ¯©¢ïú¸­øaF™þÈüÇcÏóÚ�ßÌvþ¬NŽ Ï¸íÿ ×úút¥ýu¿Òÿ ‚'öp?Â3�ÔûpF?Ž¿™Áwßó9F>^½¹àúõóEØký h9ÂŒ÷ç¿Ó¥;¾ÿ ˜[ú°¿ÙÊ9Ú3Û©ïŽÜ~ Ò×ú¿ù‹_é	ýœ:lÏ\ãž?–9þtîûþcþ¶¦�ü#¿pqü¿´]÷üÅýtÿ 0þÍ¢þ9ÇÓñüh»þ›ë ¿Ù£Ÿ“õìOÿ §nE+¾ÿ ˜õþ—ü�žvõ=:}ON�Mÿ Wõ²ìáÓoo_OÓ�þ·ZwþµV§>\g dŽ¸þ]ÇN¼ô¥¯õëÈ-óùÓ¸/\c¿ltÀÿ ùÇ$»ïý|ÿ È-é÷Áìà?‡Ÿ¨Ï'ã×èißú»?é!³ ÇÊ9>£¿c×¿zW}ÿ 0·õ`þÎ@q·¦O¶Ñ‘ŸÏüš.ûþ/þ[ú²û4JýOùç±=}>´]ÿ WV@tá‘òúpO'œ~ý?Z.ûþcþ¶û8tÛÐ€qêxã®OO§ç‚ïú¿õæÖÂÿ f�‘´zóßþ¿Ã½;¿ëþVÒAýœé“Ôqß�^ï×µ+±ÿ [öró•éôõãÓ�~½p)Ý÷éæ+?éöp8ù:ç¡ÎyÀõéúÿ 5wÕþa¯ô¿à‹ýš2~PxÎsØñþ<uã¥ÕÂßÕ—ù�þÍï·Ž½½pGÓ¯¿¹]÷üþCþ¶ÿ ‚(ÓAão#¯oÐ^ôîûþ"×úBÿ fŽ~^¹ïžFGõüqJï¿æ0þÌÝüÈç=ûzwç¸µþ—ü¿ÙÃÛžyÆ9ÿ ë“�ËÞ‹¾ÿ ˜[ú²û;nr ã‘ßë�Ï^1Û¾)_æÿ Kþf�Á^HÀ9'9ÿ ?NqEßôØ[ú°¿ÙŸìŽ½3úçÐûÿ ú‹¿êã×¿à4iÀñ·ŽHîFNœ�_éF¿Õÿ ­Åýmÿ pÓuñâ?Ï¥;¾ÿ ˜[ú°‡N
xP9�°Ã×ŸZ_?Ì5þ—üFœ§(Î~Ã¾1ßÓ¯OZ.ûþa¯ô„þÏQ�—©ä{�Óõê.þ}Çýl(Ó?(ÈíœÉü:qNÿ ÕÅoêÂg(þœñÏpGùüikßó¥ÿ ?³‡/\ãŸÃéÇCÿ ê§wýÃÜÖßð@é S®GQõç·@h»ïù‹úÙöh áqïžß×ðÏãEßõpû8g{øÈéÓŸËô¥wßóÿ 1ÿ _Ö¢fço_§=1ôü~´_ú»õ°8tÛ�Ç·SíÒ�ÂßÕƒû9x;}¹=Îyxü{Ò»þ¯ýyßÕ€éÁGÝ¹ç“ôõúÿ …;¾âþ¶ÿ ‚M —õ¸#ƒÜƒúQwßñ×ôÂßÕ…:hí˜ü�·ùÍ+¾ÿ Ÿù…¿« ÓW8ÛÏ×°È9íœû�Ç¹wßñaoêß×ôÄþÍJýyçõý9¢ïú¿ù…¿«Ó†GËéÔò.™éÓ�¥}ÿ 1‡örŒå~î2FyÏ§®=¯¥Õÿ Ì_Ößð@i½¶ûòGAùzÿ \t¢ïú¸[ú²û4«œdã=±àÃúÑp·õa¿ÙË‚
ûöèqïùŸÊ�ßuø…¿«]<wè¹žGâ1�õÆ{šžoë°¬YK5Lž8620zŽ½;ïÐu¥Íý_ùŽß×õê^H@Æ8÷éÇÐúŽ½sƒEþîÃ, OóŽŸç½HÅ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €¨=@?€çë@>£éÇáÅ ÷?Ÿù?¯õ ÛêIŸçùPãëùš M£$óÏnßçüŠ ]¾í××ô Ûîß� .=ÏÓ'ÿ ×@>¿×óëúý1@¿æÆ€®{·çþÏã@�r>„Ðm÷oÎ€c'®sžh Ç¹C×ëÞ€}3þ4 cœäý3Çë@	´{úŽz}OÒ€¾çéŸóÿ ÖíŽ( ÛîßLÿ “@·Ý¿3ÿ ëÿ ?L ÷=1×?�=ÿ Oj 6û·çþ?çô Ûîß� }ÏçÓüûÐãŒdýs“úÐçö=O÷‡òê=èÀd[œ¦€o»~f€{ŸÏüŸÌÐ·Ý¿3@	·Ý¿1þ ¸÷?ž?–?ÇÞ€{·çþÃÒ€hõ?\œš \{·çþ"€®x$óôÿ Ò€ç·Oñï@	·’ryÿ ?ýns@ßvüè ÛþÓ~t ¸÷?™ ç¿ç×õúb€Ž	Ééê}( +žíùÿ ŸÖ€hõ#èOùí@	·Ý¿3ÿ ëüèqî?óþOÓ =ÈüzýO_Ö€}3þ4 c9?Lä~´ ›G©ëž¿�Óó  ' ã<tô ÛîßLŸÿ _ë@:òy÷þ_çëš 1îzzþ¿ç�j M¾íùÿ Ÿóí@
F{°ú M¾çóý~´ mÿ i¿?þµ !9<õçÝGõ'ë@·Ý¿: 6û·_SùPãÜþäþf€¾íùš M¸îOðæ€çóÿ ÿ _½ g¹ü 7ã'ë“ž ÿ @Ú;äýIÿ õP�éíÇùâ€€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 ÿÙPK     o‰U]8ƒv� � &  admin/images/upgrade-welcome-cloud.jpgnu „[µü¤        ÿØÿà JFIF  � �  ÿÛ C ÿÛ CÿÀ ,^ ÿÄ           	
ÿÄ µ   } !1AQa"q2�‘¡#B±ÁRÑð$3br‚	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ        	
ÿÄ µ  w !1AQaq"2�B‘¡±Á	#3RðbrÑ
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ   ? þþ(  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 ãüQ®\Ù]7LòŽ£çò+²ÚA”²ÎÛ=®mðîc¹£8ŽL®¬=(8Îµkû:v²V¼äîÔUÓÒñ´´Òû£*’•Ô!niu{EiwÓ]n½6gþ°»&MQ[T¹c¹¦¼*Í’O	å¤XPÄ3*Ë1«xêéÚ‹Tc²�;¥eÞîZ÷zk{[bV›ÖkÚK«–¯ðKA¿ð‰øwþ�¼ã³vôù»þ¾¢�¯ãè"§Þ¿ÈW¡ÿ >âð‰xtddZg'¨o¯]ß– ÷¥ý¡�ÿ  ŠŸzÿ  ú½ù÷ÿ „OÃ¿ô´íü/í“÷øëÇóæ�¯ãè"§Þ¿È>¯Cþ}Çúù‡ü"^í¤Zß/ôþÿ Oæ{Š?´1¿ôSï]ýêô?çÜDðöOüJmxÏ÷Éü·z÷ü=éÿ hcè"§Þ¿È>¯Cþ}Ä„¼=ÏüJ-9ßÇ¯ñŸ^´hc_üÄTû×ùÕèÏ¸þ"Ÿø{9þÈ´ãŒa¹?÷Þ:tõã¡£ûC·Ö*~üƒêô?çÜ@xKÃ¿ô´ã=Ÿ§^ïÏôéîWö†7þ‚*}ëüƒêô?çÜ@xKÃ¹ÿ �E¦O³ãðùøÈü�Lô§ý¡�ÿ  ŠŸzÿ  ú½ù÷ÿ „KÃÝ´‹B9$•sŒvûÿ ×Ÿæhcè"¥ýWùÕèÏ¸�ð—‡±Ÿì{NxèØïÓæãêGn˜æ—ö†3þ‚*}ëüƒêôçÜF�	xxÌ"ÐžùŽ¿ïuÇÿ [4ÿ ´1¯þb'÷¯ò«Ðÿ ŸqüGÂ%áìÈÐûíþ(þ¥/íoýTû×ùÕèÏ¸‡ü"^ÇE¡íÑóÏ§ÍÏåÇ´ÿ ´1¿ôSïVüƒêô?çÜ„¼:ækøû?ç©¥õüoýTû×ùÕèÏ¸‹ÿ —‡»i÷Ëþ<nç ú�^Úßú©÷¯ò«Ðÿ Ÿqá?ãþAœçWã�]ÿ þ®žôhcè"§Þ¿È>¯Cþ}Çúù‰ÿ �‡sÿ  ›^Ýœý¿Ô}iÿ hcmþñSïWüƒêô?çÜD>ðïýmzóÃôöËúsÖ—ö†7þ‚*}ëüƒêô?çÜ¯˜ñá/²,øö×.:œb�íoýTû×ùÕèÏ¸ÿ _1§Â^ãþ%ž§‡ïÏ÷¹ŸÊŸ×ñ¿ôSËXÿ �}^‡üû�â)ð�‡¿èiÈàañž;Ï?ç=�íoýTû×ùÕèÏ¸ÿ _0ÿ „KÃØûÓ�gçxzþ}øÅ/íoýTû×ùÕèÏ¸þ |%áÜÈ"Óž“ëüGÿ ¯éÞ�íoýTû×ùÕèÏ¸€ð—‡{hö„�g<wþ1“ø}(úþ7þ‚*}ëüƒêô?çÜ@xOÃÇþ`ö�ú+žü×ÿ ­Ò�¯ãè"§Þ¿È>¯Cþ}ÇñøD¼;œ"Ó¯÷_>Ãïÿ ‘Ç=hþÐÆÐEO½�}^‡üû�õóá?÷Ò-?ï—ÿ â¿!ÛÔÓúþ5ÿ ÌEO½�}^‡üû�âÂ^çH´úm~žß>3ëØñÒ—ö†7þ‚*}ëüƒêô?çÜ@øGÃÜÿ ÄžÓò~;úñï×úÓþÐÆÿ ÐEO½�}^‡üû�â ð—‡‡]"Ó¦s‡<žŸÇÓ­Úßú©¯šÿ  ú½ù÷ëæð‰xtsý‘iŸL9SÎ3÷Í/ígýTû×ùÕèÿ Ï¸ÿ _0ÿ „KÃ§ñ(µês€ý:ÿ |qÐtúzÑý¡�ÿ  ŠŸzÿ  ú½ù÷O„¼;ÿ @‹OÉÆñüûwÇ½Úßú©÷¯ò«Ðÿ ŸqøDü:8þÇ´ãÔ7n9ÃóÏ�¯ãè"§Þ¿È>¯Cþ}Ä„|;�ùZp=ž{ýáø?´1¿ôSï_äW¡ÿ >âÂ^ÿ  E§?ì¿éóÿ ú�<Óúþ7þ‚*}ëüƒêô?çÜÿ „KÃÝ?±ìòìÝºdïùþ�)}ÿ A>õþAõzóî"	xtŸùÚ� ~ñÿ ×ôèiÿ hcvúÅO½�}^‡üûˆ¿ð‰øw?ò´ÇÂÿ ËwùëÏJ>¿�ÿ  ŠŸzÿ  ú½ù÷>ðöyÒ-FsÐ?Aß‡?�×<RþÐÆÿ ÐEO½�}^‡üûˆÂ%áÑÓH´?Pÿ üWçð?´1¿ôSï_äW¡ÿ >âð‰x{¯ö=¦8çkãßøñŸNý½hþÐÆÐEO½�}^‡üûˆŸðˆø{þ%œŒÿ n8ù‡~Ýÿ ™ý¡�ÿ  ŠŸ‡ùÕèÏ¸‹ÿ —‡xÿ ‰=™ÿ ¾�òcÏÔG×ñ¿ôSï_äW¡ÿ >âð‰xwŒé™ôÚýÿ à|ÿ L÷£ûCÿ A>õþAõzóî"Â%áÞŸÙ�ùÃçñÃŽë×Š>¿�_óSï_äW¡ÿ >â9|+ ¡Ý›»$Y§ÕKêT“éÒ�¯ãŽ´äºÆZ§ëk~aõz=)Å>ës_LÕ¯ôËK[Û–»Ñî¤KX¥™KÜYÏ#{¡Ú¾Fß3“nB¬q†”0ËÝ¡Š„ÚŠ…xG™¨é‘Ió?zíJü¿kVÝ—i÷©J*îTå¥Þñ}–Ó~�¦§¨‚r}"¸�h  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €p3@];ùþ/×ƒ|ÂÞÇDgøDÉ¨y˜ïóyI’1�¼äWlôÁámöªâ9¿í×K—î»ûÌ#üz¾Q§oš�ÿ #GhÇAêxééùõÿ õ×%÷þ®n  z{ÿ ‰ü{ŸN¹¥þ{ÚßÒvô'‘øœ{àúÿ 
}×õéæà1ôŒƒÐý˜éÍ/¹€˜?*àc ã¶qþ<zæ�ºuïå`hÈÂŒûtçú¯éGÎà�?Éíïþx¡ú ŽÅ@Ltôÿ <ýh·ü=î`zôéÏùöþœQ÷~¿×p(ì Ïéþqê @Á<c?LþÏ?§>´¾Vþ¿ F8éŒzÿ #Þ�ëþÐhíúóþ{S�õ°
 Î>§¦!þG¯z7ü<½u6�AÇnGNzgñÿ  Qúõ Àë´síÇ>¹ÿ z4_æíã tÁ;�Ó¿øçšZvý@@½3�©ë×óÿ &�ÿ ÌÆxÆG_^ýñ×¦;:_wù c<àg<ã©úã·ééÍ=?­ 6Œ:sŒg¦ÿ õcõ£îþ¿­@6‚�Ð�ñëêO¡¨^šë÷€€ ®?ÏÓÿ ­Íîþ¿ÐÇlcñÆ1ùc°ý)]À\vÁ}NOùÿ 8èþà?tgéÏ=ÏéôÍ|ßà€1Ç@=³øcçñ£ñù~ Gqú“Žù®1Ó”}Þ¿ UÉÀÀŸë×õô£î¾ !ÞàdöàãžŸË½.�§ü8·#ÔþSÛó¥òí 	�éÛûôÿ ë{tõ§óó Àñôïøðühð{ £ÓúœöüQGn�ú\hÇA�Ã¿§óÅ«y »G\ AÇ¡÷ã¿_ñçš:ùzèŽÄ˜÷ì~¼ÿ ZZ]¯ÀÀ8ùz{zÿ �§õ¦½móÿ  ¿ìó“Û¿óÿ Ö£úôù ˜è3ýÇõ£åýy à£��ÓÓ#Ÿðî{zdf—éÓúêí =yÏo××?áFà4¨ã+ŒzçŸ¯sþ}¨[ÿ _€=ºvè9ö§åk€¸à}2xõ¹<võÏZ]zþ 4 ;Ëñüûÿ õ©ïßü€\“Žÿ äQm-pôö�Æ?Ï®hõ¿@hÇÝüt‘ùúõâ‹ïåø�…â\.ƒ«H •ÄÑ7ñG*Dæ7SÕYOÝa‚;bºpWxª¤ªÁ?8¶®½S*ÿ Â¨ú¨¶¼�´g©Y>ûKv'$ÃyÏ>Zÿ ŸçÎkš_¿Äÿ 3E²ô_‘j¤a@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ 2O¸ßJ òøTŸxŸ8è^äúÕ1õþ¸æ»*ÿ ¹àÿ ëæ/ó¢cãVÿ /ýÈnlëÓžùãŒõ®[]�ƒÊ8Æ88ã?SôéééÖ—@ƒ€qôÏO¯¥;=ý _,23Žzç“ßùuô£æ€6½O?/ãŸqíùÑúzìåŽqŒg?×žÜž)uþ¬³“ŒqÏ<vëþ<÷
t$Ž;g×ü?¥5÷ýà/–8<ïý=ýM/Êà^:9Ï®F9÷É'ðç®iö¾ X+Ðr_¨#ËZÝ€;c `ÿ ŸËëK®«î6ppWôÆóÖ‹= còäNÇŽqNÏúëú mäç‘Æqß¿ò¡­¿¥pF9 �§Bsž¿­'ëúü P�99éŽ€õíÓÖž÷{Ã€¢0:àg·ûséÿ Ö­Ûúþ¿~8éŽ?úÞô.ÝìðAÎI°ÿ ¯¿J…¬ cÏ÷O¸>ÇÓüô¥÷ (88Æ~ôüûë÷ ¾^ðŒöÏ^Ýéom 
qž1‘ôôÏáÓéC° Aí�Húžô~@3ÛIßÿ ¯éG_ `'ør@ÿ ÌœÓïý/ó|³“Àì?ð¥ÿ `ð0L~_�QÞ�¿@GŽNÇ·>ütïþy¡þ½>@8ÁÇÜôíÎ9£Ïú¿ü8°Æ8Ï§·¿#�þµ-À<¿aŽ3À÷þGó¡u< }8Æ Çâ?Ï~ôï`gn=pŸ~OçI€ÆrqÏV÷è:þVêy~Ãžüw>ÿ çÒ�/¯Üˆù9#®{dÓüûô§éÿ Ô D;ã§ÿ #§~þô¿¦lÿ w=1Ç¯ùÿ õÓéýt ØG~ø Ž}úò~�)}×óvøÏ�Ð{œÐJŽ3ƒüÇøS³û€Qé×¯ç×ž§¿€y`ñÇ'§ÓœñÓ½é¾ŒË\1Ó“îzöüi~wü _,³þzZ=?®ÿ ˆÏM¿QôëÓß~;ÿ _x	³èr0NGoÇß<zÓ³þ¿_ø `x¦0<;®Ž4Û¯Lñç§ùÏ¿Nýëÿ _¡kˆÊ¿ðjÿ ‚_‘èºQ&ÆØŸùãþ€¸öõ®iüRÿ üÙ¤~è¿#F¤a@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ 2O¸ßC@ch3âÏÓìžÉôÊê¿­vÔÿ sÁùTÅ~tLaüjßá¥ÿ ·�ÞžØëéÿ ×ã“øW-·ó6®x$þž¼QklíÇùä^hkþÈi#ûãúñþEþ» lã‡8Ïûtô£O×ï Ç¿|ÿ _çÍïØ Žœó�N:ÿ _ÓëE·ÓÐÙÓ©ÆqžÃ�þx¦!ÛIÇ¹ãüýyé�jžý_õùŒB¹ã?�ÌñÏoÎŽßÓ ÛØ“ôã€?Ôÿ ¯Q xOON¿§ä(ßúîƒØþCùúçÚ•¾ha·zàöÆxíÛôíýLÛŽœ~YéCB §×œc�éõÿ =°Y\cëÏaœÿ .[·âcò9Î}ÿ —­Bœzúœ?Â•µùÿ Ã€�zx9?ÃÞŸùþoàF{1þ[O'÷Œ6úãÛ#¦9üþ´}â ½Ó¨ÿ =ºZm qß‘øûqÅ.½tþ˜–Hî^ã×ü}éÿ �	åà{‚?¯>ž£ëŠ/ëA	·çõþ�~´ ü¾¿®?úô’C´`óÉçüöúôx€¯ê1íŽ{{ž(µ¿àŒ]§¹üùÏ¿Ò‡ßúù€lã©Áœwç9<õÿ ëQ`©<çqÀÎöö¢À0	ÉÁ<ûõïþzÑå÷ »Gg=ÿ Oæ?}h·Ýý|·6äç<Œÿ ŸÃõ¢ß˜
WÔý}úõþ”ÄqÏl`qÇáîÉ¥a�RF=³Ø÷ëéõ¡ ½û÷÷ÿ $zæ‹i`‡§¨è1ëÎ1ž¿hÓÏÕ€8äò	íßùqè:õâ‹yn·89ÏoÃüyÎh²·õýh• súõ#ðãüô4¬¼ÀiSÏë‘î1ù:¯ëúüÄ8©ïÓ§OnF}ÿ ýT­ú@¼pF8íÐó×ò?ÏZõ ÙÁÎNO'×§ÓúR¶ß×áù€mè:ã¦}?O¯?Ê�·óŸñPÿ Šo\äÿ È2ïÓþy7µtà—û^þ¿Có2¯ü¿à—äwúQÍ�¿ýq‹‘Ÿî/­rÏâ—øŸæÍ#ð¯Eù5#
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (¯÷[¯CÓ¯á@kcÏ‹|UÆ´ð÷Ÿ.«Ç¾?Zí©þçƒÿ ¯˜¯Î‰Œ�[ü4¿öó¤#?ŽsÛ­rþf¡·® �á‡çþy|Æ|³ûSþÔžý™|.µ¬Ioªx§Q‚ê/x^=B+kíBê…<çg½š+X%¼µydk7‰�¾]U\�‘âî/Àp®×®á[V3X\"©Ô«(¨«¿v£ŒSœ.Ü³z¤›_�ø‰â&UÀT±X§Faˆ…Xà2øÖ�:ÕªEAs5ÉZQ§	U¦Ü�'¯v’lþw~%þÞ´¿Ä]Zúú‰ž+ð]•ÅÌ’ZiÞ
ñ&½á”³·#d0ÑuæxâæMäEçÌv�Y°?™ó_8«3­R¤s\fœ¤Ü)`1XŒ"„6ŒoB­5&•¯.UÍ+ÊÊçðþãç˜šÕ¡ŸæYUÎN•§ŒÀ*Tö„/…¯EJQ�¹¦¡yÞm&ì3á·íåûL|;ÕlïßâgŠ|emnäOaãë¾)†æFI�kR½ŒIµ³­†'Uu²¿8«,­
�5Æc¡ïSÇâqÈÎ/uûúµû6�ž¶CãdxšU¥Ÿæ9¥:oß£›cq™„jE¦šZ¯U)kîÉÅò´šZÐ§ìŸûWø7ö�ð€¼ÓÌ:OŒtkm=<Oá·¼Žk‹{›«w&âß6Ö2\[Kqk~#h­H�nóXý)Á¼c�â¼=78ê§õ¼+š”£)EÞP¼i·J5å…’�ï®ŸÛ^ø“•ø�–{Z.8lÓN‚Ì0¨¥8T©	>zw§EÎœ§Jµœiò¥ó4ôúØ¨#ž•ö‡éC±íïž·_Z•eý1™/­è‘ß.™&±¥¦¢ø	§I¨Z-ëeŠ®ÛF”NÙ`Tb3’ŒUrÊÍ¨ÊÝìúùŠë¹«Ž1�|cÈí‘Å˜	ŽsžùÇNzuÆqŽ=ýh ÚyÇLcŒ\zñõô¤ôÿ †»qÛ>˜Ç£OŸâ Ž¿1ìxÎ?Ðö»zä{céÿ ëúzQ{ÿ _�ÄÛÓç§·øQ§õ¸… þÎ@àà`sþsÏ½
Ý¿ÌeušÞYç…å‡X£’6– ÄíóX¼y*@ÜJ‘ØàÛ£³ëaæÔ´ëi7…ŒŒŠâî¥À ²I"°Ê�FTeO~)¨¶´OÊËü‚ë¹u9d‰’HÜe$Œ«£™WL‚3ÇŽioÝ>Û]‡ ‚r;œ7°öü(ÓÐ¦{úc�J?Þù#¯#ŒƒÛ=ÿ Ãó `óÇ×Ž}¨Óúý M�êÇðíÛñœõ&‡oëõcjó÷@$“ÐäŸçG_é�—a­hš´“C¥êÚ^£-°SsŸiw$‰T3Ço,�f)�(b3ƒMÆQµâ×fÓùî„jíã¦ Çlu9ü�- \žçÛ·×üúûÑ·õýzKM4I<¹1BÒ"Ë Efad‡pŽÐ@
Äð§ž¶û×ù�§=}€zŸ¦(ÿ ?éŒ\tàŽ¼zçÔcñöïGõý10ë:$÷¿Ù°k:\Ú�Ì³â¿³’÷®í‹U•§ù9¿wÂ£€§ã$®ã$»Ù¥÷Øb¼cOËõ©ùê2Ž£©iš5±¼Õõ.ÓpŒÝjWvöVûÙYÂîdŠ-ÅQ˜.ìíV8Âœ8©Iû©·Ù]ÛÏOòt'Ô÷áqÐý?ýt€R‡'9ëÜd~úñÓÓÔ^þC ¤ñÔú‘ž§ÓôÏnØ£úÿ † ööíúŸ¯½_Öà&ÁÁôã·?Qüè¡NsÏ?†;`ÿ �Æ0(¸$žœc§QÆG©üóøQýuþ�Ãiã“€:Àþ^þôiý-@B›ŽsôíéFÂz�—“éïÇo^¼Ñý&0#ß§Py¾þ´Äsì=†9äuïÇoòW_0:tÏ¯ÿ \þ´?“üÆ,zqÿ Öí@Ž{Å‹ÿ Î»ÇM.ìð£?ê[Ÿåô+§þ÷†ÿ ¯Ôÿ ô¤g_ø5Á/ÈíôŸøñ·ÏQyÿ ¿jzúóÍrÏâ—øŸæÍ#ð¯EùU#
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  ”<Oûn~Ìþø‹eð¢ÿ âvƒsãëÏZø&Oi÷¶SßiÞ%»ÕáÐ“MÔbšîÞH'�S›ìÓ"$Ò#Ç(Ì¡Oë™W�ž'æü7_‹pü-˜Ráú9Elò9–&…zt1eñï†œ(Ô�HKi	JPŒ” Ü’m¯
¿dØ|\p3ÆÒx©WŽØÂQs�iTT”$œ“MMÙ­^�K�í;ûPü;ý“þiÿ ~$Xx³UðÞ¥â}3Âvðø3MÓu]Pj®™¬jÖ×[êºÎ…l¶k¢]‰f�*Êöè¶î²;Ççx[áWx¹Ä¸ŽáœFQ„ÌðÙ^+7©<ïŠÂa~­„Å`°•iÆ¦�ªñ®:‹„Ôn¤\ck�gxL‡v2êQ�xPKTŸ=HT©ÕJ”¢¡ËNW|×»Š³¾”?e¯ÚÏá§íwà?|Døa§xÃMÐ¼7â›¯ßÃã-/JÒµ)5K=G×%’ÖßI×uè$³6zÝš¤²]C)�gC¢$’tx­áx;ŸåÜ9Å8œ›�ÌòªYÆy.+‹ÃG[ŒÀB5jbð}HÖöØÎP�)ÁStåí¤ãÈóì…­‹ÁC
TkÊ„Ö&á78Ó§U¸ªuj§Z‘ÕÉ;ÝZÚ¿Ÿ¬à¨¿³¶¡ñîÙÒâ¸ñÜgøj÷²xoÃ+á£â}{þÙ'[ñãFÔ–oÎõ¸:H¸6ß¼6�ÿ u_¡×ú*ø‘‡ðþ$TÌ8Gû§ÓâxÐŽgš<Ïû:¦_ý¥oòE‡ú×ÕôtÖ-Óö¾ï¶q÷Ï*<m”O5yB£�úÒÅ¼3£CØûUWØ·Ïõž~NmoìïË¯-ô=çö¥ý®þ~È¾Ñ¼Wñ?Lñž¥¦kš’éVqø7JÒu[´¹hå”5ÄZ¶½ Æ�í‰�hæ•÷ù1’¿ŸøSàïøÃšcrŽÅd¸lV
ñu¥�bñ˜J2¤¥5NxL¿0”§y­%+'ïlŸ©žgø,‚�:øØbg
³öqXhSœ¹¬Þª¥ZI-:7èt_³ïí+àÚOá‹|Xð�Š,¼6’^Äm¼O§iÚv±ºÂ#,Ø¶Óõ�^Ó ˆÉ¿›ïl×�â'†<Cá—®âùU|ÍÆ„½®W‰ÄâpVÄIF½Ä`ðu®›N_ìú-®ô6Êsœ&s‚úþ5ãEs.Zð„*{ªïÝ…J‘é§¾|Õð«þ
}û<|`øÍið/ÂúÅ[_Þ^ê–Ýë^ðÕ®�çéÍqt^öÏÆZ…êÆÑÀæif;C¬yãôî-ú,ø�Á¼W�s\Ã„ªä´ha1¥�Ì³:¹‡³ÆT…:IP­’áè9)T�:úÊI]ÅË¯��ã\§0Ì£•Ñ¥ŽŽ"R©*´hÆ•é§){ÑÄÎvi;{ž¶=;ö®ý¹~~ÇSx>ŠšG�µ6ñ´:¬úAðV�¢jËhòÙEv/¿µüK 4,Í„B·ÔI¹�¨òÞxÆ~3Ã9Ÿ	ã8
²9á)ãy�Çaž65çEÐúžY˜)¤°õ9ùÝ7Ëe+¶»sÞ&ËøyáÖ:ž*YStþ­N•K{7.oiZ•¾%k_©ìÿ ~8ø?ã_ÁŸ|sð�¦½oàÿ èº¶»§Ùë–vVzúZh×ÚžŸwÕ•¦¥cË\iW>JG©Ë£DÍ4e˜'Äñ�g<Æ¹�ç²ú™ÎW�Áà15°ëÖËå[‡ÂâhÊ•zØl=ySTñt¹Ü°°”d¦”%dåèåùž2Ë¨æxxÕŽµ:•a±Œj¨Ó”á%(ÆsŠw§+ZmZÚ®Ÿ'þÎðS�Ùëö¡ø™§ü)øw¡|TÓüK©ÙjwÖ÷,ðç†ôÝ C¤é·z¥ÊËu¦xÇZºYÚÊa[&V”¢³¢±uýsÄ¿¢çˆ¾p¾#‹x“ÂxŒ³_‡©O(Ì³<N1Ï‰£…¤ãK’ài8ªµàæÝtÔ9šRjÏÂÉøÓ)Îñ°Àá)c¡Zqœ“¯FŒ)Ú”ÝåMY^Ñv÷w¶Û�oíOÿ ø#û!x‹ÃÞø¡¢üGÔµÙ^ßiòx3BÐ5[D†Ãû?Ï[©5oh2Ç!þÒ·òÄpJ­‰rëµwy}øëÆ<·1Í8WÃXl>Y^…Ds¬~a„¬çˆúÇ³t£„ÊsJ?ìµ9œªA«ÆÉÝÛ|ó‹2Þ­FŽ6–2r­JJŒãhr_™Ô¯I§ï«Y>¿?y´øùà«Ï‚	ñö?ŸI£>¸¶mcb¾"ûjm¥2íO°�rŒÛ?µ<³Íæîù+óúÞgt8ê^N¶]ý¹lp²¯ˆyo¶–bÔ½¿Õ~±ìý“K›ê¼ÜúrÛÞ=Xæ¸ie«5Q­õgOÚòòÃÛróò[—Ÿ’÷éÏkuè|ýû.ÿ ÁCþ~Öþ*Ö<!ðËFø‘¦êš%�½õÜž1Ðt.Íá¹�P‘é^+×eyé³ïY ˆÑa›sýÅ_£—x?•`³Ž)ÆðÎ'Ž­R…ä¹†a‹­Ò–2u!‹ÊpŒ[ÄÓ³�I6”î•—7“’qnYŸ×©‡ÁSÆBt¢¥'‰¥JjJoGN½WqÞétùd~Òÿ ðR�€_²§ÄøVÿ 4/Š†½ö]GÏð�‡¼9©éžEÝ­­ÜCí§‹ôKŸ0EwuûÐáÀvP¬Ýž}<Bñg‡¿ÖnÇð®/úÅ\7³Î3ËŠö”jÕ£7ìð¹6:Ÿ+•8¿mwÒm¥žuÆ9VE‹úž2–:uy#;áéQœ-$¤µ©ˆ¥+ÚJþïÌúcâ/ÇÏü2ø¬þÐ^ ³ñÇ‚4?Xx¢òÏJ±±¸ñéÚ�Õ•¤	ocuªYX=ÒÉ	–'Õ"�Qd+3²ª¿åü7áöyÅ<y‚ðï.­—SÏqù–#*£[^½<µbpÔ«Ö©*˜ŠXZøˆÒqÃÍFQÂJNN)Â)¶½¬fk†Áe•3j±­,5*0¯(ÓŒ]g	¸Å%N0æ¼ÕÓšV¾§‰þÊ··ÁÛXñŽ‡ð¯Hø…¦^x#LÒõ]]¼k¢hzL[j÷WV–Ë`úG‰ü@óJ’ÚHfYã¶UFB�!,«÷>.}¸ßÁ|KŽâÌgâ¨ç¸¬^²<v?Rpt©VªñÆeyz„+G‘ÂU[’’”b’oÍÈx§.â˜Šxx¸K
s©õšt©¦ªJQ�'³¯Y·x»ÝGKjÎã‡üãö{øñ‚çà—�´Š—ž.µ:0’ïÃ¾ðÝö„·"Ž[=——Þ2ÒïNÅ•EÆí9v0;<Ñ‚}îú.x‹âÒãœ�0á:9=o®òÒÌ³,Î†=}Br…nj8|—As8·NØ—ÌšæåwK“3ã\§*Ì%–âic¥^>Îò£FŒ©~õ'zX˜K®¾æžgÓÿ hÏ|øHÿ üicâkß	Çm§]oØi÷Úß—©Û‹›p-/õm.ÓrÆÃÍP[!KŽkòþðÛ?ñŒ#Á9%|®Žo*¸š*®eˆÄPÀóaj:U/[ƒÅÖ³’÷ÕõZµ�k3Íð¹Væ8˜Ö• ùhÂ«i«¯vu)Çmýó‡ý•ÿ lÏ…µö“âgáv™ã}6×Ãw‚Æý<g¤iTï3G Ú¦“ây$�mÌyi$…³¸màïx±à§ø7ŒË°\UŠÈ±5s:¾ä˜Ìf.œ`¥Rªñyv_(Êô¥¤c5kk®œÙ`x‚�Z¸(ba2åšÄÓ§Ý“÷}�Z©­Víz-âø*ìíá¯Ž©û=jÅwñÃøÖ×Àbò×Ã~“ÃƒZ¼ÕÆ‹¦þOÃýž.ÎçœiFaÎ-™ÿ w_o—}üGÍ8^#a³Yr:Ùû¡W3Ìã™ýJŽëÓ‚ÃÇ$žëŽ‘§õ¿fê{®ª^ñçVã\¦†h²‰ÒÇ}eâc…ç�.�´•OfŸ7ÖTù9ºû;Û^^‡Ðß´×íWðßöQø{£|Kø•§x»Qðþ¹¯ÙørÎiš^§ª%ýî•©k½Å¾©­èvél-t«•yîYf‰,¬Ò'ç>xMÄÞ-ñ7†8c“á³_[2­S8Åbð¸Yaèbð¸)Æ�L&RU]\]'ÊŒ"à¦ÜÓJ2õ³¬ó‘a)ã1�ÄN•J±£‡„'>iBuÕJ´’\°zó7{iÔ±û/~Ô?¿k‡Wÿ ~Xx¯Nðö�â½KÁ×þ1ÓtÝ/U:®—¦èÚ­Ì‘ÛiZÎ»lÖMm®Ù¬35âÊÒ­Âµº*#ÉŸŠ¾q'ƒüI‡án)ÄeœÇ”a³ªu2\N+„XL^+„§TÅà°UuWYÎ
‹‚ƒ¦ÕI9J1y&w„Ïð“Æà¡^¡^xv±„*{HB�FÒ§R¬yyjÆÏš÷¾ŠÚüÛkÿ Gý�nÿ hI¿f¨´‹Çð|Z¸ø2÷Ïá¿�ŸÛxÄøK¥ÔG�Q:!ÖÊ·gG†Ã÷ÇO£Wé•~Šž$Qðê'O0áõz§SãXÐŽgš<×û&®J³ØÒxg’,7×¾¤ù®{ˆ÷%Ã÷§�7Ê%›<™QÇýicÞ]ÎèÐöÞ8�ª¹sýgŸÙ{My½Ÿ7&¼—÷Oyýª?kï…ÿ ²…ô/|QÓ|g©iž!×í¼9cƒ4­'U¼Kû­;XÔã{˜µm{AŠ;ao¡Þ+ÉòÈ%xBÊîñü„þqWŒ™®?'á\NI†ÅeÙ}\Ê¼³¼^/	FXzXœQ¥<&_˜NU]L}£*p‹‚¨ÜÓŒc/S<âÐ¥ˆÆÃ8U«1Xjtç%)B¤Ój¥ZIFÔ¥v›wkM[]À?Ú_áÿ íð¢ïã�,|Seák;�JÒ[oéÚvŸ­t­&ÃX¹)i§ëµ¡FµÔ`XIÔ´ë*2¢*Èþoˆ>q†Ü[Gƒ3üFU_6­KZr¼N'�QÅâñ*JU±,e%WQÍ,;J-9I¸­²¬ç	›àe˜ac^#)Åªð„*^áQû°©R6åš·¿½újþpøYÿ 9ýž¾/|jÿ …á}â¥·Œÿ ·5?ý¯Yðç†í|?öÝ'TMËý¶ÓÆW÷ßfk£ºþÌó�âFù+ô®,ú.x‹Á¼¸ÿ 5Ì8N®Hð8\ÁQÁfY�lÇØc0¿\¥a[%ÃÐöŠ–“�Ö¹TôS’÷�Æ™Na™eÐ¥ŽŽ#ÚÎ—5J4cGšœýœŸ4q3�¹¶|—¶é=Hý«?n�ƒ¿±íÇ†-¾)i>>Ôäñd2Ï¦èº&¬‘¤/q‹Ã«x—@11ki6ˆ„à‚¹#$›ð—À^3ñšžiW…1œ=…ŽQ8SÅ,ïŽÂ9Jq§%ìV,ÌÕªFüî›½ôz_³=â|¿‡�Ž§‹›Ä&áõjtªZ×O›ÚV¥mº\õï‡üñOà…§Ç¿Yø†ßÁwÞÔü[ž­ccmâ%Ó4»;‹ëˆä±µÕ/lEãCm Š%Õ'rªó¢’Ãã8›Ãìï…8æ¿‡ù•lº¦w‡ÍpÙ<ë`ë×«—<V*µ:åõp´1Š�H¹ÍáTÔSjœ�“ô0Y®–Ç5£±ÃN„ë¨ÔŒcW’riÆ3”y¬�—=¯Ôò¯Ùwö‰ð/íKáýâÇÃ«/ØxjîöÓDŠÛÅš~Ÿ¦ëóF}J·’×LÕµ«Q<Šau¾gp	xãÀÔñCÃlÿ Âœò�ñ%|¯šQÃÇ:™F#ŠÁ:8ØÓ�¸¬&«¨”_´N‚Q¥¹Í’fø\î�L~5¡FR�%ð„*sSsR¼aR¤m®�šýÒ>£Û×œþ¿'ŽœŸðÍ~k©í‰ŒrŒûþ¾?úÔvîò�ÿ ø™¬|Iý¦üw§]\M5§�uÍ_Àš]�(!„èZÕþ�#ÅATMsäÀ%‘�šO*1+±Q�ãÿ 3jù¯æç7(eøŠÙ}*jÜ±ú½z´Ÿ*I.irÆïâ••ÛÐÿ 8üjÏñY÷ç*T”ée¼NQ‡¤­Ë©âëQn1ŠKžj0SmsIÅs7dxŽ>üUøuá�	x¿Å¾Ô4½Æ±ùš%ÌÐ\!rþcZÅ8–‘%¾·ŠK»5‰çÚ©‘™Û_9˜pîo–a0XÜn¥>=_9FJ÷»‚•â’u"œà“•â®ì|foÁœG‘åùfg™eÕ°ø<Ú<ØJ’„ÕïwN3æŒR•XEÔ¤£)óSNM­�Ðo ~Ãþ|ñ?ÆÚžþoßj6¾Ð­îu]KK�ç°ŽÊ{›·hpÜê7SµÌ§ÜKuk„©x¯%ÖËxÿ HË|?ËrÞÅç|]QáªT¦þ¥‡ŒêÂ­9STå(ûL<gVrr‹§)N
›SMËEû^KáK’p^cÄþ"V–
µj-e˜8T¯N¾ntU)Tƒ­ƒ…Jõ&êBTg*”áFJª”ª{‘ùgöø™{ðÏö˜øw&™wwý›âŸiº¶i1ÞÅâMJÖ[»`ï“[.¥+Â	v†IÂá˜“ò\šÔÊ¸«-tg5K‹£�œoÊ§UXáã)Á7(ª­Çwß+êÿ <ð�?«�qöI,=Z«˜æl®¤åUa�ÄC	NUi©8JPUå(Þîo–I»ŸÖ¶ã‘Çoñ#žõý‘øÿ [Ÿé9æ?ÇŽSáG�›á«Æ¾:_êMá£,b@u	 $fÖø<íš¶¨m¥rbf|ÄÖ‚¦ëRöË÷|ëŸ_³ë¦�É•ù_.öÐþR>j³Œ|)'†ÿ hoÚOãoÀïÛÞ-r7ÕüIñâ_Œ|;¢hßhöé–ž±ø–Þ¹Ñm<aÕ·Øn|¼¶Ì¶²é>Aû*}�u‹§>l6†#.³Q�*4ç)QKwQÑçRp³º©¾Ìá�#V”å—WnM%/Nko½ÑûËã¿ÚãïÂ/üøaðŸá^§ûLüA×¼e}©üHœ¾‡ðÝ´Ý:ÛN³]OT×4++Ëû}GUmCO»µ‚ßÃSEql5‰n"š£¹ùêxl5yâ*Ö­%8Í¥I{ÕT�Ý”edÒ´“÷•�’[Û©ÎQQQ‹›j÷ém;m{öî|Û/ü³\²ø!ã‰zÏÀ»ÍÅßþ0é?¾2x"ûQ’3áÛmgLÐïìüI¢]óê6-'‰´rÚ�¾”w\Ï¶2!€ÝõbÅâ!F8„éÖ¡*Ô*%ñ8¹'.�Ý–Ííç¤:íEÉÆÎ2Q’ítžŸz> ø×û~øsá7ÇOü$±ðÛx�IÕ~x¿ãŒ¼WÊEoáŸøgÃß‰í¯-Õge¹¸Õmü7¬Û[%ÚÙÚ›ˆáCxŠ]—’†Y*ØiÖ”ÔZ­
á¯½RSŒ,ôÒÜñz]Úú*©IE+Þ.MöI7øÙŸ5�ø*‡ÄFðÿ ÇþÎZ¦‰û&ø«Å±øoIø£m}q7Šmôùîïc·ñN±¡\ˆ<7máùì4ËÝRËOÞ³YÉg#@»çû?Wö=')aéâ”±´áÏ*-%Ù^—Äåy(ÙÅk+Ï·vRq´²—_&ú[Mî~œüiø¾~|#Õ~'h^ñ7Äk¸l4Ë½Â^²·¿×µÙ5k›(mã´µ›P°ŠE†Ã{såÝo[KyÞžEH¤òpô=µeJU!I]©NnÑ�*{»>ªÞ­Ê\±½›ò[ŸŸ>ÿ ‚Šü]ðÿ Å�áí'û</Â=oÇñ��¾^éú¾¥©é÷çÁžÕ¼M¨hzüšÍŽ‰>Ÿ«ˆì-mLj0¬×c7;
È}9åT'FU°¸¯l©Ô…:‰¤šö“Œ£ÊäšÕ»»^ÛªÍIFqåm6¾I½t<foø+—Å«ÿ ƒž øïá?Ù?\ñÃo‡>&ñÖ‘ñO^‹P»úF�àßëZSëÞ’šßR‚+
úm]5;�$XÞ,PÆ×ò›ˆ¶Y-^8iã#µ!NTbÒÖU!rÊöi·%Ënk®ÏB}¼¹\”•îýWüsø¯ÿ 2¾O|'øcû6|Ö~4üCø•á|>•q?öv› xTÝk:uÍÅíî�>¯|·°êZJÚ¤_ÙojÂòÝžò7sóÐÊW%j¸ªñ¡J”ý’’Wr�¢ÒJI+ZWøºmÔ©VÕFæm_µ·ùôìxOü3â÷�¾+~ÝßðPsãK?øYô{?†°·ÃïjòÙøWXo|W]N=M¸½¹¶¶µm°Z­Ä0ZMp–‰ð … éÍ¨S£—åžÍÓŸ3­ûØ$œ×³£nf•û½Ú×MÈ£)J­[ÝYGG²w‘óÏí&¿¼gÿ gø±àÚGã'‹þ|,¶øWáGI·±ø¿ñáÆ�¼|á	ax—Á¾)ðòI<ÒÍq3Æä¤Ò34ªìÙ®œ+¯O&£<-
uk{Y§z4ªË—ÚTÿ Ÿ�–š/Ó©3åuÚœ­Uöœu²ìÑgö,ý¦<9û:|iýµæÐ¾3x·ãìIð‡Ášˆ|3â�S^¸ñ±·ñ­ñøMm&‡¥x«Å:Î¡«ÝH³ø‹ÄJöW¾$ŽÜ.`oÃ„–*†š…:9…i¸ÊŠ§zkÛ{ÎŒc´!ª…ö
Så•_yÊ’WN÷×Ýêþ}O¶|ÿ 'ø©¥xŸáßíû8ßü,øGñÏW‡Eð/ŽlõËýGN¾Ô’(4Oéú´:N›¤\jšÅþ•¥"iš¦´>Ñ|6vòÕüùåTe
ËŠU«a—5Jm%—ÅìÚæ”¹R“ÕGDh«;Çš6Œö•û_CÜ¾þÜ²|hÒ?l=M¼Ž?e_ü@ðjÆ—òL|R<¯xûEk¹7(û½ÿ „$M±ÂÒÄc<øœ¿ØK•G/®S¥7§ÁÏr·�½§ár£S›Úið6½lÚýž$ÿ ‚ªjz÷ÂŸÙ«XðÂ[m_âÿ í3©øÎ×Â>Öu‹‹
YAàïüGð…Ãßk¶jZÊ]]7€%¼Ž}
ö · ‡–qÒ²hÂ¶)U¬ãC çR1¼ß=:UQvV^ÒÚÉl´ÔŸouFò›v]4mo¿NÇ­]ÿ ÁB5ß‡Ÿþ#üHøíð;Å¿~!xÆºoÃÝ7À¶‘Ç{eã¿kú·…¼9áù<¨j—ÚUæ§¥ÝxƒÅð\Ïqeau�¼óÁg=Â}•±Yd*â)RÃâ!V•Jr«*�GN1Œå?h’j-FI6¯k¾£ö¶Œœ¢ÓNÖ]od­6g|$ý¾¾(Oñ“áÂÚ[à,Ÿ¯þ8è×·Â�^ÃR¿ÕtýRky|=š¶úÕ®‹%†½x³C‚{-:ßU†;¶¼ˆ]²Áo%Ó­–Qö«á1
ºÃ´«Å¥%ïG•Êñ÷$Óvº·}Õ|ÑŒãÊä´ü4wëª<óþ
qñâo‰þ&~Í±ÂÏê¿õ/Ú#Åj<Qâí%Å¥ÍŸ„,to\][Aª[+k\òêú&’ÂëJ–Îãfa7k²Æúå4iBŽ/0­N5Vå7ªsnšM§îËÝ”´•×[7²­&å
IµÏ»ò×¶»¡<Oÿ ÉñwÁßü?ø™û|Zñw…¾ ø[Äzdž(Ñ~+üUøŸâÿ xãÂ—Wö–>&°Ô-¼_©üF´²½O]k²hïk¡+¦±ö[Ë+û29´+B¥,}
s¥8¾YQ£F)Í&à×"¤ÚçåR¼¾èõLt\ZtäÓO^iI¦ºîÞ¶¿MÎ·âü+â�ßÆ?üýš~ÃñÃÅÿ ¼=§jõwÖ5x{VÔmõ?³øs@Ô4{VûRÖn/¼/âÛmum#E�îtëDó”Orlâ–WGØCŠÄý^æÖ*)ÎI5ïIIÅ$”àÛŒ¥£}µn«æq„yœW¼ú//Áô9]{þ
ïà‹_Ù«Ã?ü9ðÓÅ:ïÅ_üFÔ>Z|Xì“U´øƒ§Üøö),oš^[˜´éað¥uÌ1ÏzðÞX3XFe˜[TrJ�:2«Ñ…(Öuõåtš§ªºµÿ x•�–�^ëÛ®E$�ÛqåëuþEŸ)jŸ´ÏÆ¿ÿ ÁU¿bk?�>ñ�Àá§|0øÉ¯x³ÀöúÞ°þ	×´Mà¯íªÃ­y7²é‘êóÃ}¦ÈbmGH�a“D³�'Y`O+¹a0ñÊ1ÿ W©G5Z…NXûHÊXŒ,ytR¶�£ûM[RäëSæN:I¸ôvŒõþ»IÞÁS¾#Ï¡ø§ãg†¿fÍWYý”üã�wÃº×Å}rž!—ÂþÕîíõ�iz<+7‡ît{mÊ]tMqâKOôg�¤HÖFdäY=%(açŠQÆÎšœhÙrsÍ+S”¾%''Ë¤^»ë»9(7í~¶îºm®ý�»hßüCñ?ìoñâ/ìÓ,×õß†vÞ"ø^ÐÚ[_\6©¨››dû$ÖÚ¥¤óÇ·Í¶¼�e�ÕCí^v•(c©ÒÅ¤©F¯-mZV�ïªqih­ªÑšÍ·M¸nãxüþóùÂýžî?cÏxá®ŸcûY|_øûiØk+ê:ÏÅŠ~5ž×Q×WR±}GAŸÁšŸÄ¿xjKm[EþÑÒ-™ü.\Þê9KxÞ¤úŒRÇS©U¼FÆV�Tî£gi*Š”'xÊÒ~þË­ìrGÙ¸Ç÷’�M5”Ÿ—NfµW[°ÿ oÿ Šÿ ¾=j¿²W‚¾
Þ|nø·áoƒüi³¤O%¶‘âMc]ðÎ¥w«ÜjBÂ>—§>¥¥Ç5¼¶Lù·º¸ak ·Š)<JYm¸hãjWXz3ÄUƒRÖQŒf”m}¬õ¼ºnîtJ«RpQæ’Š~·½ÿ #äïŽÿ ðQ|hýŒµo|Tø/â�/Åßh]á¯Ä�†6>7ñ7‚ÛGñ-ß„~&êú,öÞ$ð®µ¤ø†óOºðÎ“Ü¶·ëeÜj�Ëö)M�­Êöá²º˜|r…ðp­†•ZU]8Tæ‚�(É8N.)óÉ¤Õöjú´g*ÊTÛq~ìùd®×Fôißnÿ ðO¥|]ÿ 0ø«uûDü{ý›¾þÍz§Äßü˜És¨Gw‰q¥ÂÑ¼·:�ÅŒw—–Áìt1iÒÇq¨}†	f‚+‰gƒ’žSGêØ|U|\iSÄl¬œ“}¯dÕìäî¬¯»ZÛ¬ùåÁ·™¾ÿ ‚Ãi? />)ÍðoÄp|AðÅýàïÄŸ…—-
kZ‰/üK¥øbþ-!P’MBTÔgÔíôÈu¥Éyqb‘Í·˜û-drx•EW‹¥:­JªÚqŒÕôÓN[ÚöOK‹ë—›•ÝIEÇ³½¿«�ç€ÿ à¥=ƒã¿Âo„¿¿g}{á‰ñ÷ìÐüñWŸ-ÛjšŽ¥>˜tÛ/Ûêo¦C§I-�íÅÄÿ ÙrkF&²‘b!ßYÔÊ©<=jØlTkËüxZÜ©'w¯}RJü»�V|ÑŒàãÏð¿7µÿ à\å5�ø*7ÄÝrÇâÅ?ƒ_³^¥ã¿Ù»á–½‡¼Eñ
ûP»±ñ&£sæhË¨_xkEÓ¢Ôt-CL²‹_°w¹¾ñ›(ò5Ð…·…îj9E(Ê�ø¥OZ.P¥œ÷¬§'i&ù^ÑwÓä�g«Œ/»6þ[[N«©á_à Ÿ´Ÿ‰¿loÙÏà‡…¾Õð?ã_‚#ñ¦‰ ê"Ö;ßh °ðþ¦5NâßHÕî4»Ÿhú�½ÿ Ùô�ZæÖy¯¤ŽkƒQË'M·	5â'þÑB£§)+Ú‹”yRæŠjRVÖ)«|‰•Yº�å^ì’iwNÞ]=O¤üMÿ #øµ­üHø½à€ÿ ³¡ø›À-;E›âa½Ö5?]›UÔ´-7W¸Ò¼¦i6Zµ¾¯=¼×WVqÿ k^hfF·F}›ŸËä†UF4¨ÔÄâ½—Ö\•XÅÅ%&”ªJN.*Öz)n[¬ï%_—}{¥µ·ßÈýGøcã9¾#xÃ>6—Ãº÷„eñŸöÙ<7â{8,uí!Öâ{v¶Ô­-®ï¡‚baóQRîlÃ,LÅYŠ/‘Z—²©:|ÑŸ+·<q—]µÿ àhmÌ“³Wèúàsœç1Ó¶=9ëY[oëñ(6þ?ÝÏüºÓþ½~ÿ ÔBõî9ãß9ëÛúQ¿•†.Þs×úzÎ=óÿ ë£Ð �O^ÿ áÓðéE¾ðh'�NŸLçŸ¯ãùŠ?êÀ.ÑëëØu=~¼zÑ¨ŽsÅÀ¯†5Üt:Uæxÿ ¦,:õçž>½ºtà¿Þð÷ÿ ŸÐÿ Ò‘�àÕÿ ¿#³ÒŽlmÎ1˜bè0>à®YüRÿ üÙ¤~è¿#F¤a@  P@  P@  P@  P@  P@  Pãßˆž
øaá½KÅ¾;ñŸáÍI³¹¾¼½¾‘É[{HZyÌ6ÖñÍyu"Æ§ÚÛÏ3±THÙÝTû|?Ãyßæx\Ÿ Ë±–aŒ­J…
#jVš§zµ%
4¢äõ�Z�„UÜ¤’msb±xl×ÄÕ…Tã)JR}"®ì’rnÝmè’»Gžø÷Äþ,ø‡ð;VñOìã¬èÚ�‰uÝ[ïjšŒWQé÷sË‚ß1ÎÚ|ðÉç.�¿—²E“c��£áü¯(áÎ;Áå^%`±¸l³˜Â†}„ÃÊ”±4©Â¤}­¥ˆ„ãìÔ¬é*œÜÑqº91U«âòÊ•òŠ”çZ¥',4ä¥É)4ùt|­kkóZÚÞÇŒþÇŸÿ h…v¾$Öÿ h‹#âO‰üY#ÝKm
F–ºDÄiñ¬pùzm˜;c±“¤÷‰þös·í|eã¯8²®Y�ðó„eyDU(Ôœ¥*¸È/¬IÊ|Øªö¼«Çþ]Ów§¶ºùÜ=–æ¸Ö«šãþ¹Z»æåI(Ó~â²´#Ò=å¹ë­û,þÏòxïPø›7Ã-
ojšºk×¾%’MI¯æÕc¾—RŠïh¾ÊñÞÏ-Â…€.÷;�P |zñ_Ä8ä~‡cá�apoC,„pÊ„0’¡4èßØ:®2¡NÝê7Ë,îß¡ý‡•<Tñ¯Iâ§SÚÊ³çæsSsRø¹t“ocÝä³´š·šÚ	 ‹o—Ñ$Ñ¦Å(…V@ÀBT7P	ä×ÀÆµhNU!V¤*NüÓ„å	>gÌîâÓ³’M­®—cÓq‹I8¦–É¤×n¾C ¶¶µCµ¼ñ³d‚(áBä,V5U,UT#$(ÀªU«VJUjT©$¹TªNS’I¶’rmÚí»mvßQ¨Æ*ÑŠŠÞÉ$¯ò"vž²ùëaf'ßæyÂÖ/˜[y“Ì	¿~ï›~wnç9æ­âq.Íâ+º|¼¼Ž­G[[——›—–ÚZÖ¶›’æä�ï{ò«ß½í{’Ïmmt¡.mà¸@rx£•Aã�²+ x»
Î�Z”Ÿ5*“§.ôç(?¾-1¸ÆZI).Í'ù‹½½²yvÐCos²’$É$“¶5Qœ’zu&‰Ô©UóU©:’þiÎS|›`£é¢»$—ä@šn�‚hì,’`I¥¬ $$H¨¤ƒÏ �x5£ÄâeIb+Êx:µ]�×ºåm¾Û‹’	ÝB7ïÊ¯÷Úä·–—{EÕ­½ÈLìÇ6ÍØÝ·ÌVÛ»jçÎÑž‚¢�jÔoìªÔ¥Ínog9Bö½¯ÊÕíwkíwÜn1—Å/TŸæI0ÛÆ°ÁpD™Ù(±Æ»˜³mD
«¹˜±ÀbIäš™Îu$çRrœÝ¯)ÉÊNÉ%yI¶ì’JïD’”U’I.‰Y}È¯�§ÛÈ%·°³‚UÎÙ!µ‚) ©Ã¢+©*pyƒÁ5¬ñ8š‘p©ˆ¯R×ŒêÔ”]šjñ”švi5¦é1(B.ñ„Sî¢“üùì¬îŠ›«Kk’™Úg‚)ŠîÆv™±�«œc8è*i×¯Jê•j´“µÕ:“…í{_•«Úî×îûƒ„eñF2·tŸæ‰R!CÂ� 	É0`’IÆNzÔº“söŽss½ùÜ›�ö¿3w½´ÜvVµ•»[O¸†fßmeinä`¼ÐÄÄsÆèÑN9=ûšº˜ŠõW-ZõªGµJ³šû¥&„¡ëÆ/ºŠ_’	ì,n_Ì¹²´¸|c|öÐÊøôÝ"1Ç¶h§ˆÄR\´«Ö§ùiÕœûÚ2H!-eÉùÅ?Í4¼F†'€®ÃF�Oî˜È(Wý’1íPªN3U#9ª‰ÝMI©§ÝI;ßÎ÷I«4šÚÍioMˆ­ì¬­K5­¥­³8šÞÞ(K rÑI òÈÍUJõë$ªÖ«U'tªTœÒ}Ò“v~‚PŒ~Æ7ì’ü�Ùtû	äóg±³š^?{-´2IÇO�Ð·¹ãµ8bqãÉN½hC_vgë¿º¤–½t7w·ÝÅ7÷´O$M“,1K ò¤�<€60+€8*#R¤%Ï	Îßž2q•÷ø“OñI«4šìÒkî¥¥¨"ÖÚÞØ1Ë!ŽÇŽH�W'�×ÐzS©Zµ[{Zµ*Ûoi9NÞœÍØJ1�ÃÇÑ%ù¶�§¼¾{ØÙ´ûÄžsZÀÒï¸?˜P¾ðß0lçw9ÍZÄâcf±Õ;rò*µ9mn^U+ZÚZÖ¶€áîáû¸«ýö¹4ÖÖ÷("¸‚ã0Žh’TPÁYA
Ä@$t&³…Z”¤åN¤éÉ«9Br„šm6›‹NÍ¤íÝ!´¤­$šìÒkñ-­íPÇmo¼e‹”‚(áBä.V5U,UT#$(ÀT«R«R«Rud—*•IÊm$Û²rmÚí»mvû‚Œb­¢·²I+üˆ³´ñ7Ú…˜ŸÌó|ÿ ²Áçy¥·ù¾fÍþfÿ Ÿ~íÛ¾lçšÓë8žOgõŠþÏ—“ÙûZœœ–åååæåå¶œ¶µ´µ…ÉórF÷½ùUï½ïkÜ–{[[¥umÊ©Ü«<1Ì¡€ 0+ @fà‘ÜÔS«V“n•Z”›VnœåÖŽÍÅ«­žHn1—Å/TŸæ,VööñùPA1“Q$q’@ìEUä €jS©R¤¹êTœçüÓ”¥-5^ô›z=w•’IvI%÷Ç§iñKçEcgÙ-æÇm
K¸œ“æ*É<“œ“ÏZ¹bq�$ëÖ”-nIUœ£e¢\®MY-6„º„Sî¢“ûì>{;;­¦êÒÚä¯ÝóàŠm¿îùŠØü)S¯Z�ý•j´¯¿³©8_×•«ƒŒeñF2õIþcÄÇ‚8¢ŠŒ¢$� ¤WËPiŒb¢Sœ¥Ï)ÊS½ùå&å}ïÌÝïçq¤’²I-¬–Ÿqç:5¼6þ)ñ\VÐEeðéÙi+«e‚ P	îpIï]ÕêN¦	:“�Ióâ—4å)JÉÑ²æ“nÝ»ÓIV¬’IrÒÑ+/·Øì6Ÿîçß<sÓŽ¿—ë\77¤wïÏöïé�ÒŸä#ù6ý¿~jÿ iÿ ˆ×7VÓCoã/ë>9ÓîˆÉâwS¿) ÛæD�I&H÷®ð-ø�–UËx³3”âãv&¾aN}$±8Šµ4kK««­ÕÕ÷?Íÿ ²LFIâ{:�”!šcqY½›ÆK‹ÄVV–ÜÑN.QÞ7WÝh~É_ðQ/é>O‡ß´zE}oàË¼ðn½ý™{wq}-Œ¯oc£Ü­�»U»†ÊøÛéóý†ÒÎ;;ûeÃÜ¼o'Üpw‰x*9zËx�*‘ÀÓSÀâ=•IÊ£¦ÜaBJŸ:SP©ËN^ÎÔ)µ99´ßêžxß–a²…’ñÌcZžUEUÊñžÂ­IÕte(RÂÔTUEícJ¯%ûTcJ”½¬ÝFœ¿?¿j_Ú—ÆŸ´Ï�YÖœiÞÓ‚[øsÃ–èÑ[XÛD×³J¯qtïtïu8cçùb2€F®	?�qwc¸«ë×~Ë	JÑÂáb­qNO™ÞSnmÎ_jÖ¶—?ñÄ<×�³Yb±MPÀP´08'Q§6¥$çQº�Ô�ß=­mW6?a�†º¯Ä¯Ú[á•¶Ÿd×PxcÄú/Œu	K†ÖjVÚæù™@f]:Sgt¬…TÅmÀ]\ÓŠr¨Óƒ”p˜ºê’Ñ(GVîÛi^Ôß*ÖíY&tøE�â3Þ=È!B“œrü~4­-iÃ/ÄSÅÝ¶Ò»TeÊ·“VI³úä ñÐžœŽÝr§·©¯ìµcý*8Ïˆv>*Ô<âk__Ã¥ø¾m*ãþëÛ•/o§Ù`Y€VýÜÅx K’È>eÒ” ªAÔW‡2æ]ãµþ_ ;ÙÛsðCã-§üãßÁmSölø·û
è¾)ñî·¡ê~_�–ž,øwcá[�ON]!>!Çh~0¯‰�Õ•Ú¿ˆÚ4É¥c	�$»í$ú*,Ã×Xª9„¡N2Sö\ÚO›Ù_ØrYü7O½ßS–^ÖQä•;»[šêÉÚ×ø¯æqž8ý‡?i?ë_³ç„<wðS]ý°~øKá-×†¯þøKÆžð‘Ñ¾%j7~¾‹QÔ¯<Wã]^ZZEoãNŸ}s
G}˜do*dÒža„¨±S§ˆŽ:Êj¬áR§5$¤š\�¨“~æë �)®Dãí £ªM+7ní_g±ê_±ïüËâ�ð£öÜøCñcàÍ§ÂO|kñ=®§àØx�HÖ4³caáï†÷zi´¹·ñO‹¯ìŠx—Ãipš¶ &ŽæÚŽÅí$8ã³:N¾½î´ððj¤å]ÊªwNOÜš·*jÖ¾·*�&•HÊ<ªOK[´|ßU×ï(~Æ¿°í%âo…ß´ŸµÇ†­|ñcÅ_,¿fï‡w¿Û:¬!Ð|+¢xÒÓDñt²xXñ²mOã«˜uHä¸ŠàÅ`V-6Å‚´•ŽÌ°°«†ú”ùèÃñUW,£ïMÓr‚RŒ_º©®Wn»¾Š�)µ>ufãÈ¶é{==á�™þÿ Á=ü} øwÂŸµÏø&?Âí{Ç:7ˆF×~?|AñÜÚ�ÂßøJÊú{â‘áŸü~Ò¼i£wfú~¦";bÑdC#ÁoU\Î”å<D3jÑ„£xá©ÓµXÍ«òsÔÃ:m'uñv|Ïw*”’Pö1m=fÝÓ]ì¥}¼¾GìŸüWà÷íñ3öN¸ð?ìáüVÖx`ÞøKL¿Ò´áâ]L¸Ó×Rðæ›©x¦æuX¡3Ã.£}’Akåùïq"Ç/…–WÃRÆ{L_Àùí6œ¹$ïiµw{ëeÖú#z±›…¡¾šmuÚìü’ð×ìñŠûö€ø=ñ_á§ìEwðÁºo‚>.è~0·Ä?ë~,¾×uÿ ‡º†™¡ßëÏâ¯‰ô©´Ý[Q¼ŠÓLE¥¥Õ…ïö“k+¤Ö²�ny�†¯F®`±J§jSŒcQ9(ÞŒ]â“ošé®^]o|)9FJ—*´“»WÕiö¿­O¯¾þÉ?´/‡?à•Ÿµ7ìï¬ü8¸±øÇãý7ö›‡Â^}Â2Ï­Kã¯øëUð’Å­[ëÓxrØêö¶Ÿ<Fÿ X¶[_´ˆ¯ZÖxæŠ>Øì,óŒ*5S¡Iá9êrÏÝTáIOÝqç|®/hëk«šFö5 ãï>{-5»muó<{AýšlÙ?âÏÁÚ;á/À·ø­-ÏÀ£ð³ã7Ããâ�Úk¾ÕÆZÖµi¨i7:§�<3£ÜZÅ·‡MÇÙµRB..Ikm¥‹Àã(â0•±
ŠX�m‡©ÉQÆQäŒZj4ç$îçk¨í÷Â…JrŒÔy½ÛI]]jöÕ.ß‘ô�üÇàwíYá/ÚßöÌøíûH|1±øañ¿Iøwuàïì½kÃÚ�™}?Äÿ 5mSC–ßIñO‰omïth¼Acç\]H¶WqÝCö‹—†äCË™âpSÁ`pØZÎ«ÃÊª©xÊ/XRŒd¹¡ir»[UmmtiJ3U*JqåRå¶©õzhßr-{öñ/Ä¿ø*Å_Œ¿¾Ûx�ö{ñ7Â]ÃÚGŠ5kEkK­v×Á~ÑîmSH°×“ÄöòÃ{a¨[‰®´¨m�•æ,¯°É!Â²šT(×qÄÆ´¥((Êê.siÝÇ‘Ý4ì�ü„é¹V”¥Ã•$ôÞÚìïýz8øGþ	ëûFY|ý±ÿ a+¿[Ùüñ,ßð•þÏ¯õ¿Ï§Ý_ê‡…5ëÿ 	jZu†²þ(†¯µoÚÇ-ÿ …¬¢¥Ç�BDkw»ëžg…uð9‚�ñ÷14dšIN*jN<—j0m)¿‰é¹*”ùjR²åwp—Í;=oß¡Ä|ý‰üawâÿ ‚šÿ ü÷áÂÝoÁ:Æ�­|Gø³ñ#Çw^$ÑRãBš=RËUð—àOÚUÕ-µ‡Ô4â¶GZÐõo'±’îÛì‘]3^#0‚§^k6«Z5"ãN�*|ŽÒÑªŽ¦)«=yd›W¶¶)»Å{ÆÎîRwôjÒzúüÎ÷@ø!ûsþÎ~3ýº¾|?ýžGÄÿ þÖ^7ø‡ãüOÓ¼Uà]?Nðºxã]ø…«Üiºç�ü?­±Ò¤ñí’„±Ñ'yO»‹¢Ð<‘,F_‰§—Õ©‰ö3ÁS¥
”œ*7?gQ\®4¥U7¼•®�F¤X¨ÝMÉÅÝi~k^íwéÙ™Zwì£ûGxWöý”þ|SýŒü!ñòÇÁŸÄ{ÏŠ¿�Šô�7â·ƒõ}sâŸÅÏhÞ"ðWŠ“â§†ü%Œºˆt’Ö×íÒ�uÖH#’¿³ÛÆag˜bëÑÇÏí=Š£S’N•E4c(Ô‡±�K©Eëh¯w}®(MR„eMN×rWÕ>ij½ä¶~{žqkÿ Ñý¥¾'þÍß´-CÂú·…<=/ÄÏ
øëà_ìóñÄÞÕõ(´mÅ^ÖõýÄÚÿ „µ{­â×ü; ÜhfØ=½ü-q<¶öÏçW›aibèIN3—²�,F&”gÌáR1”#8©{²’–°wZn%FnMY9'¶¶M]6›è­ºùíû,~Êä¾x†ßþ	§ðïöu±øy=ž¥âï‰ž5ñ½ÏŠµŸøHt�CC¸ŽO†vÞøíâ¤²–K�;T»�¼QáëËC$z8¸b¢æ99±˜Èý^´µjâ�]!JÔ,”—ï¹ðð¾�+BWÖVèT!ïEû·“wwVµ­'ëªì}…ÿ ý’þ/|c¿ø/ñßös¼°�ã¯ÀC¯xwKÕç†7]ÑÛHñ^�{¥Å$ÒY"_Ë?ˆ£™ëU³µò-åVo7`~,³B‚¯†Å_êø˜8ÉÆ÷Œ¹ ÓÒúZ?ÊßâiZœ¥Ë8|pwWê¬ôüOÔ~&ÁR?hÿ ü=ð^‰ð3Pý�ü)câ]+Rø›ñ+Pñ7Ã�vþãIÒïí5mCAÐm´ˆ>;•W[´ÓdÐKÝøvì"ërHn-–3uoº¥“áaV¤±7	*4¹*Á&ÓŒe'*T×ºß6’_]œóV›IEÓW»•âô]¬Þûmþg5cð¯ö´ý…ÿ iÚ[Çß>j´Ç�¿i˜ü5®.¯Š<£êÞñï‡®|¨ÂÞ ‹Ä~4ð¸Ñõ�_â3½âhör-¶�r±\Y¼–ÏsN¶0Ãa)â11ÂTÂsG—’¤£:RökÝä…[J1¥§3ZË_#–tç'¹©ÙÞêé«ïªÑ·ø-Iÿ Êý«>|øuñ»Á›â¯Ú—Dý¥îþ<êÿ 	çÖt+[i�ü^�4[«½_K°:”Iâ¿³»xÆkbMøçh‹¯û_R½\<äá„–aã[–NNKØ>f’“ånÚšé§|ý„ÔT’¼ùùœn­o{ü×SØµ_‚ß¶ÿ íSû{~Î´Äÿ Ùå>| ð×Â¿�õ£?Š¼âÂað[ã¿†´�_X�Gñ÷ŠôZ†»ñJÑâ�D´¹–Úqö»»hl[ªÆ8Œ¿—b°Ô±^Ú¼ëP©r¢Œ¹+áç(®jPµ£IÊòjëE®…rÔ�XIÃ–*2[¦Õã$›³{Ý/øoþ	ßã�…Z?ˆ>	Íÿ Óð_ÇOÇâýnÏÁß<UñÎßÀŸ…'Õ.l´½{ÆÞÓþ:øCÅSµ¾ž4ý[V¶Ñü?¦]\$×ðÙX‰Úhzå™Ó­(×Y´ððä‹©‡…6ê*œ·q§7‡œÝã)´¬®ôl…IÅ8{'wË&ÕšéuÌŸ›Ñ3úÖ¾|NÐ?eë‡ÿ ÿ áøoñCIðe�§†-mcÕgðNƒ¯2,×–1Ç{}¨jòhðÜÜ]ƒêSÝ|±Ÿµ:ò~n5¨Ëêb9êÒsnwqS”vNé(óZÝ-äuµ%FÊVÓ²Ž‡â¿íáßÛÿ öÀø?iðâ/ì¤øKÇúÞ¥àøuŸŒËã†ë øfÇÃþ4ÐüWs«iºgÆMO[if‡H¾±òæÓ59OÚÔ`	‘=Ü,òÜg‰¥˜ÊtÒ›�J¼Ó”éÊ­ºŽ—OâZ-Îiªµ#ÊéYéï^6I;Ý{Ý�±¿fÙ'ã?ÁïÛ‚ëÆÞ ðüš�Ã=öKýš¾Ø|Hm[A–x«á‡Ãïø[Ä¥4¸õñ/öélå{›­ÎÚàÞ+Àî±Ê"áÅchWËýœ$•Yc1uÝ+KÜ…j�œ=ër>ªÊNÖ4„%··º¡ói«Šk×ð?9¾,ÿ Á=ÿ l|ý®<1¢|¿¾×~$~Ù¿¾(x*Àx»áì®xFø)ã�
ê~ ŽkŸÁmg¯ˆ5m?O6ŒÖz¤¦äOŒ–‘Íq©G3ÀÆ¾
r®”i`jR¨ù*ûµ%^œÔl Û¼bÝãu¦÷²2•*œµŽõ–«UÊÖš÷g¡|1ñ×íð×þ
)ÿ ñ7Ào„Qüm»mjÚÃSðe®© hÚÔ2Éq£EgªX_xŸÅ~Ñüˆ®o-¦¾ŽkÙå{+¸íà[™-Ù²«OW,Êã‰¯õuk©µ)Gi^-BœÝôvÑ+µw¸'5Z³Œyµµ´½¾õÿ |ÿ ñÃöløùð�àF¥ñâ¦‰£øOã7í/ûtü.ø¡oàI.í5+
êÚÿ Æ¯x‹JÒõ[�UÕleH5oµ•è°×¯ŽÒ_.äŽyzpø¼=lB¡FR�&_Z—´³Nj8yE´œbö�Õâ·Z(N0r’´§V.Ý¯+¥ç¿sî�Sáí‰ûa~Òÿ ²®¡ñSàT_¾þÌÚŽ‰ãMÅºŸˆü!¨§Ä=OL‹O·²³ðå�‡<qâ}bÎ^ÃPÔµWWÓlM´6ëäÐ]…†n×Àà°˜ÅGí«bã*q‚�Hû$ÛmÉÎœ"ìÒZ7wµÖÚòÔ©(sG–0³nëÞ~VmìúŸxþ	¿ã¿�ºWŒ¾ø‹þ	Ùá¿ÚkÅZŸŒ¤»ðÇWâ™¦xü9}Žn#ñŽ‚Ÿ¼âid°’ÛÄ¦øzÁ˜K¦¨…•OmLÒž!Â¼sIáav«‡�7*œëšÞÎ_W©oäõ¿s8Ñp¼]%6Þ’ºµŸy>ý÷ÆÙCö‹ømñ«þ	ýñOàŸÀ�x»Iø+á	üñÀÿ õÍ/@ð×� ¾Ñþèw3x}>#xâÃV»Ðl`°Õ¿± :Æ¹«­¦’‚üÜÜÊŸhóècpµhfTq‰BUçí)T©)ÔjUeï{*n*Nñæ÷c»«#WNQ•)F)¨«IGD¯m®ö]5<?öÃý—>6|TøƒñO]Ôÿ `câ_ˆ~-´Ð‡Âï�Ÿ<àßÞYÝÿ Â1¦Û´?¬¾#|^ho¯ô+˜¡Ò£¸ðÿ †ì,d]"YCÝ­ÄW2t`qxz4éEf<´ åí¨W¥9¦¹äïIÒ¡¢’ÕóM¿yuV"p“”Ÿ³»iZQitëy~K¡û‰û(x;â€g…~øÑ¬Éâ‰ú‡^ÓÆËÉg$—š‹jš…ÄEŸOD³sŒÖ–û­ÐFD@�œ×Ïã*R©Š«:P£)^WÑYwÕk®½Î˜&¡-ZZ³èb	8 ücŽ1Óÿ ¬85Ìº– vúzóø~@OCÓ¯´~bª?Ãƒ“žAü‡nýèßðÝ‡'ôüúzÑq
AÛÂŸîóÛœž{“×ééGóù@‡û¹ç¨<~#¯åÉýi_õü;Îx¼øEõòGM.ïÿ å‹gü89çžõÕ‚ÿ {Ã×è~kúÿ †2¯ü¿à—äuºVŒÇú˜³ŒãýZúûW,þ)‰þlÒ?
ô_‘¥R0 €
 (  €
 (  €
 (  €
 (  €
 (  €
 ùÿ ãßí3ð“öpÑ´ÝWâ_‰-téõ�COÓt�cŸZÔeÔ/£±Ž[m26{Ù-cv–InRÝáD¶¸.ê±JÉú‡þñ‰xÜV†2Ê¸˜`°ØŒN38Êž5	W”*â¤£B5d”#R©·V�¢Üâ¥åf™Î'§
˜ÚÑƒ©8B�4ïRnrQMA^N)ÞòQkGÙœÇßÙgá—ívŸuŸêºÝÏ„¼54þ ‡AÓîÄZOŠ!Õ‰ydºµ´‹5µÍ´CJCåMâHî¦@cÜIú|Wâ�_à²L&–qšBž]<ÃEË•Oõê5ž¬\*Ó«'‹’æ„áË*P“R²K—5ÈðYÿ ÔªbgRXz-ÕT¡+S¬§ì¥x»Å¥ìÖ�;©=�¥üàïøÃZG„<¢éÞðæ‡j¶zn•¥YÛXÙÛÄ	wd·´Š³Ìò\\H±©šyd•¾g&¿0ÎsœÓˆs<fsœã±9Že�ªëb±xºÕkÖ©+(Å:•§:Žà£Nœ\š…8ÆD�g‡£…£O‡§
TiG–áÆ)nôŠJíÝ·m[mêÎ–¼³` €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 kýÖã<t >Ò|YâÜäb×Ãƒ9.±íÛÓŠí©þå„]êb¿:&0þ5oðÒÿ ÛÎ¸¨ÇŸ ï‘Ç×žžÕËÒÆ  àœòqÿ ×Î1ø~4w°Ï’?kÙ3Â´ÿ ƒ?³ïÊi^0Ñ-u)<+âí ž[kË˜­˜[Üîki¥µ¸›O´‰Ño­‘c2î,­ÇÆq�àø³ìªòÑÇaãQàñ*rŒæ¢ù'w8IÓ‚kž)+ßsó_|8Ë<@Ê½�n\>g„§^Yv5S„¥N­HÁòT»„åNr£N-*´Ò‹•ï}?��‰ÿ °í+ðÏV½°“áÇˆüYinìmµèú‡ˆã»·Ø²E/•¢C©exÝw[yÒ<rï„–tjþjÍ¼=âŒªµJo,Äã!ùjà¨UÅ)ÆÉ§jª¢ÚzÇ™´ïÝÄ<Aàÿ äš´e‘ã³*PmÓ¯–akc•XYJ2åÂGÉ&š¼¤ã+Å»¦Uøiû~Òÿ õ8,mþø§Âöîø¸¿ñ–‡©ø^+xFÊ]¶Ó„Ìªr±,¨ÒUNj2® âœÒ¬iÇ*Åá"ß½S‡­…Q]]«ÂŸ3ì“Mìg�øGÇ™ö"�d†_	?~¶g„¯€Œ#k¹[
í-¢šmèµ?¢/Ùö>ð‡ì½á&Š·×|u­Adþ#ñ4–öÓ´°[È�–òxm"žîô*}ºTd”( Ïý)Áœ‚á<#Œ\qúêŸÖ±n”bÜ£¹)ë9F
S©§´’´­Ý¿íÏ<2Ë<?Ë\`á‹ÍñP¤ñØùQ„&åI:Tµ«8SŒêU²öÒ‹Œ¬º¹}�· “Û±Ïùï�·º?O¸ôÈÛøtïïG�ÃosøóïŽ!úÐº€ÛÇRqŸ^;Qn }ätÁ$û>ù£_ëó Çÿ [ŸÓ§'éGü6Ú  tìyÇ8î:Nxÿ &‹jÜ`sß¡ã¦1ÏéíG–¿  ½2G^G§¶OåC},ìõãÿ ˆþ_�%é.Ö ÚG©úwã×?ç¥×ò 
@ç?þ±�Ïÿ ­Gõ·å¯Ü`õ9ÆqŒtÏqÛÿ <ðÿ ËïJqÇ_n§ãŸÂ„î·9cÀôü¸éÓ¿õ£·çå÷€˜`‘“Ï\?•ÿ ]@R¿\vãŸÇŒûçðÇ4¯ßü×æÀÈÈëŽãê?ÎiôÔÚ=HõùOùúÒþ·@&Þ==ÏCŸÃ·ùö}oø~ .ÜåüÎ?J>_× 
PzŸÀzzõëþ4½:ï·ÜU	ç<G=¹ëÓ¨§úV q×œž;vÆ?Ÿj;ïëýu Úqž§=1úŒuãé@ƒƒè=G¿J>~mô»zã¯ùÆ;þ¾÷ýmê·ž¸êxü½¿§­>Ú?ë¸ O|ûÿ ú‡oNô¯¶š�å^ø%ðËÀÞ9ñÇÄ¯
øGFÑümñ"ån¼iâ-6ÂÛS×¦CS¨^ÛÚEwyƒmjžr¥AoSZ¥:tg9:t•©Æí¨ú+ÙoÑ£Ü’ÕîËÿ þü=ø·a¢ißü/¤x¦ËÃ¾"ÑüU£[k:u–£†½ jvz¾‘©[¥õµÊCuc¨éö—pO¤ÑMRE":+J½ZNœå(8IÅµÍ§'f´i´*[¤õOæ�ÑèðEmVÐ¢Å¼QÁa@Hâ‰Fˆ U@P F ÅdõÕÝÝßúýJ%ÛêN;ž§ôzþ4¾vü 01ùž¼ž:wéßÓù¿Ÿ`��üºÏ>ÃÒ—áéý}à.ÞsÇ¦9—ûÛïÑ€Ò:qÏ íõã¯¯J?­@]£žrqÓðïýó¥wÛúþ·6œ�Ë?€ éúÓ[wù »A)yÏ_lzdýsG^¿%ÿ Æ8È'¡ã¦{äþ”_üÀ Ï^0®O§Ó=i~¿pÑÙ³øtëÁô$ð=Í;XG7âñ�
ëääcI½	0¸ü9ÀÇë]8%þ×‡×þ_Sÿ Ò—ùWþOðKò:}$ [ŸXbü~E®YüRÿ üÙ¬~è¿#J¤a@  P@  P@  P@  P@  P@ pß>%x#áG†§ñÄéþðå´Éo6©©Ï½ªNðÏp‘™$e]í¬òŸ»Õïpçg¼]™ÓÉ¸w-Äæ¹•X:�ÂaiÊ­WÎ�7.X¦ùTêÓ‹vÞk¹Ë‹Æa°^#Vh§Êç6”nÓi]ùE¿‘óÿ �¿e�ÿ þ(øãÇŠmçñ]×…t±o¡ØÏ«k7>¼‡:ÛCtÚ@ÕSFyaŸYšT™ôÉd/oó0‰³ô.ñoŽü?á^!àª¬2šY¶+ÚcëÃ	‚¥šQ�°*t–1á%ŽŒ'8¸G¥R~íå.o/‘e™¦;šW‹¯*ùiEÔ©*2_¼´½Ÿ´Tî�G«ƒz-tVúÒ µ‚khb¶¶·�!‚ÞÒ!†5	PÅXãŽ4QUU@U  +ò*•*UœêÕœêT©)N¥J’”ç9ÉÞSœäÜ¥)6Ü¥&ÛníÜ÷RQIE$’²IY$¶I-]‰j P@  P@  P@  P@  P@  P@  P@ 5¾ëgŽùÿ ?… pZ('Åž.öµðç^½5Œuî>µÛQÿ ±àÿ ëæ+ó¢cãVÿ /ý¼ìBúŸ¨Ï¹þþªåü?­µêl EëÇGoþ¿~Þôm¦¬=p¶ÏO¯¿µ-4ÜÙž¸cïv?Oçøv§_ëÔÚã·åÁéÐqþzÑk í£Œ ¹è?Èÿ ?Ž*oçéýy 2ñÐc¿9þƒôëM?ëÏþ	³=p{õôúŸÔQ}@P¸8ãóÇ^ƒëý(óÛñÐ3ü>ƒžÏ<vÅ;ù0 €t×;ºû{víÖ•ûßÓ¯èåÿ ²?L}Ïô§p¸=²¯oéžÝþ®å€@Ç\çŒþ?çéJý·þ¿­À6t8ãÓ<ôê9üÿ •ù Ï8€çŸ ì~¸ÇZõþ~@@9Ç?QÏcß¿éOÓúü€]¼�CÎ3Ûùçüæ•ôßÈØ:•ñû£ëÿ ë¢úõ»}†{r03éÎyííG§Ïú°Þ;r8äzóúg?Z6ztþ¿á€ô�\ûSù€lÏ½ºýz~½qJýïÔaî:{�À�óøÑu¶¿€Ï¡ìyc=>}³Eÿ K lôö#>ßç�¥}¯P¹çŒzäqƒ�Gÿ «·­=6×úþ´ Ûœp9àúóÈõïÒ•û÷ÐÙÏL}HÏ¿Oð¢àO Ž¼‘ùŸ`8ü(¿ËúüÀM½:c ÁÏÿ ¨ú{Ñßï ÛÇëØôíôÇ¥ÖÝÀ]¸ôüñŸ~�¿Ïj/ývýà  $dŸÇõÇáš/ý_¯ÌØ;müÇåøžGÒ‹ú€ úg·QÓÝ?\Qè¿¯óò Çn§¿=aõÏ8ôç4iÕ>ÿ çò ÙÏ!?þ¶søQV pïœ{÷ëÇöÑ·åúÀ ½Ôtã§qÇn¹íž”=?¯¼ §l�Óó¥u÷ÿ _ðà_—>Ä}NÓ�Ö‡èÿ 0 ƒ® 9?6q×·|úúc¡£¾¯îþ´ ÙÏ<ãüã4Öß€·×ñçÛúQ~× Aêzvç§§´Zõÿ €´dt9#`ñùRèÿ ¯øðà8§' Ç¯éßÜõúð¯§Ÿ{ ›rOLþÈÿ ÿ UWÏü€æ|b£þ_tÈÒo^¹…³Ó©ô÷®¬˜¼6ööÐÿ Ò‘�àÔÿ üŽ‹IÇØmñÚ»cøãÚ¹'ñKüOóf±øW¢ü�*‘…  P@  P@  P@  P@  P@ !!Af  	$œ $’x I=(I·e«z$·l„¿kŸØÖÛö·×þK­øÒîÇÀ>Ö`½ñG„í§‰m<Gkš‚Í$2.™xãSŽ;·µ�žòT�¦ÂòaûçƒÞ5Uð/â¸`rJ5øƒ9ÁN†W›Õ§7[-«8áÜ#8¼UýZR£ÓQ£:®J“QrOæ3þŽWêâe.¢•zjÕ¢¹Ó³ä“æ´¹W¼£kÝ^ÇÜv6ºe•¶Ÿe†ÒÎ‚—¢GÚ£úŸzü'^®*½\Ey9Ö­9T©7¼¥'vÏ¥ŒT#ÅZ1I%ä‹u‰A@  P@  P@  P@  P@  P@  P@  P@ßtýò Cño‹³œ‹OóœàíÖ?¨éÛ¡®Ú¯ý‹	ÿ _1�·øiîCµÇçëÆ•q›Þ ãÿ 8üsÖ‹«·¨ç=yàuè1þO==?ËúÜdÝ	#žyÿ =ûQ×óò Ô{cË9ýó>ðÀëØ{cñíE¿à_¨$g“íÛüóúRíó #œûœ{þ”ôÚÿ ×à‘îyú…/óÓÌÇAÛëÏÐñ‚=}›üÿ  ¼c'§N}:ËÓ¡˜Þ‡øNqë“Áü?­éè´c‘þÖ…»» ÇqƒýIäÿ úÓ¿Þ÷Áú~>þÝ¨õþ�ÞOË¶�ÿ 9§ºþ¯ó1Ž9—×ß¯ùÁ¤÷þ¿Ì	ú“éÓƒŽ•ZþÓøüÎ1ÓžÜÿ CSýÃ_ =~ƒsî3õäûQ¿@£9èyýi·Óúéæ·'ß=xçÓ<véÿ Ö£îí×¨Žœ{öÿ ?çŠVÿ /ëpˆÆzûv¦ûüÿ @þƒÓÓ¯ÿ [ÛÓŠ-}~~ ÈÇ®=?ýT¶`ôÈÆGNü�ò4ôéuÜ=½ÝhÓ]u Ûž¿�ëŒ�ùý(ëoø`ã�^¿áúÒV¿æÐúóŸÒžÚwü€6ƒøñì?.h_Óóÿ †qéÇÜòsút÷ëÔQd GâGÓÓúûQ§O˜oÊ–‹þ~|ž:‚3Û®:qNûv6ò:œñÔ{qŽ8ü(zy ¸õüŽ8?….½?'ôîG¯_Lÿ žiéoÄÿ ?çüþœRïý_0i8n8ê=2xÇ¾:ž˜ü¨ÓÌ“Ï?OÃÿ ­úÑÚà Ó§lã=úÿ ž´Û^`qœ}yägùçü#ú`(\üá�Onœzž88£Ïåÿ ƒƒŽÝÿ .¾ùÏøRÒàúó× ú‘Ç^ü÷§m»€„Ç8íþ}hÛÔŸ¯ÿ =©]mè3ã5?ð‰ø‡€âS|Në‹sÛ�_^+«ÿ Úðÿ õöŸæŒ«ÿ ¯ø%ùºHÅ�¿ þæ,ãþ¹©þF¹§ñKüOóf‘øW¢ü�*‘…  P@  P@  P@  P@  P@ x¯í©x×KøñVo‡:6¡®xâ øÂËÂÖšTóÁ¨Å®ÝøoT‹I¼³kh..^æÓQ6²Áº¤ÒJb–7*Ãíü6Ãdx®;á8q&7�È©ñM_5­‹§N¦X
9–xÊ5•Z”éF�l2«	Î£pŒ9œá(Ývo<L2ÌsÁÓ�\KÂâ#B0mOÚÊŒÕ9G•J\Ê|­%fÝ¬Ó<�öðÅ/þÏ~ƒã7‰<Y¯üBÖ.¼E«k–þ,Ôuû�í^,ñÆ�§Ú®§ss=¬#H¸ÓÙâ ¸±xQö>=gü)Ÿx‹šÔà¬³(ËøsK-Â`*el6–;Ùem<N&«ÂÒ¥
³xÊx”¦ÔšNÜÏwçðÆ…Êh,Æµz¸º’­RªÄNs•>lEgÇÚ6â½›†šj}�_‹ŸB P@  P@  P@  P@  P@  P@  P@  P_;N:ãŠ à,æ];Æ‚\ŸÛööIo#‰æéŸi=Ì6—™¯ÑcMÁ�²1Î;mípp³×:ŽKwjÜ®öÞÑöwo¥õ±…ù+;ÿ ËØÅ'Ñ8_OŸ7—•Îôžp=¸Á˜ýsëÚ¸ïýw7 ½²qŒúgðë�~ý(ÿ † #§øzç€çŽý<Ñv‘ž wÓ×‘ÇJ>l €r9É#òã>ý… n9''¶yŸOLg�­ .‡'÷ëßë’Op ŽGtàuü;ý;c4 …AäÇ§¤z�Â€8ê3ùgïÜúûðh@éÆq�r0Fyïéýx¦÷1ž¹ãÙ$ã¯<úžüt ÛÇNØçœ{�×§SÈ£úõ§ã€Héž”€R=¹àŒ}={oQÖ˜	ŒãÔ}ìã{ÿ <õ£¸	�ÄåH#ðÏæ;úŸJ:_x´y?ýoÃ¹à}x£¿ü?_ÐÇCÇn úñíž‡üŠ@7ë��yí’zuçÛÒ�À\×œã<ŽÜþ8Çåš7òòHFGnÇè9þT€0 ÆOþ8õÇÀByäqÛ�^ßþºùþ .ÑÈî}»wÛùûÒ8ÀàtÇsý1Ï8üy§ýj×sëôãñã®ÿ †@ÇCíŽ3×¨#¸ëÓ#§¥ ¯pO=ˆÉúþäóMW Ç¯ÓÉ>£ðõæ� ® ÷íƒÎG¸õÏJzw 
:å�9Èü(û¾ô�?.8íÿ ×ý~) ƒŒôÿ gŒs×�Ç�Ëž”À\ÇCÏlõçƒÆHý(þ¿à€�sÛ'ê=?n;PÀnÒLàþý9¡zþ=@PìŸb=2yÀúúèJŒ÷õÎ2:ôÀÖ€/\~~#žÝ³ý(Úß¨
¨#œtãùôÒ€:ãé€¤ƒŸ_×¿j çŒú@ãüý>´}à/\äç©ºûžÙ=) m�~xÿ 8ýjz€m8 }G<ñÓ?SÏlzÐ ;òp:¾Ç×úÐc gð�ùò?ÒŽ»€ r3�øõõã<“Ðû~_ÌCÆ·º-Îš´úÂ¾�k�Å®c‘7mmŠv†|lBË¸�ÂºðJÕ£VZF�ï[{{­4¯ÝêÒÝÙØÆ³¼:Ô÷ë®—ôîtšbì³…Nr± ä`œ(?•rKYI÷oó5Z%è‹ô† P@  P@  P@  P@  P@ ñ_íû\/Á�Ÿ³�Á­?Â£ÄÚ‡Ç_?†oï>ÔÐÂ/lußèÐjm{Œñ2xÂ{™¨
ºvvöÇíþx<øë�üKã\Flò¼? ä±Í0ô}’©ý«Wêþ6xU)[ÙÉK&§J-7w‰»·*>s6ÏÖ[™et({iæx‡FRæ·°^×MNÊ÷_í»ÿ '™ö˜Îìg8äg¾	ÁÆzd
üAÚîÛt¾öó>ŒZ (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  # Š áüI¤%ÞÓó,±¿›È]$‚dette �Q¶“µŠ�À€q­*Ò£.hÙ¦­(´š”^�;§ºm_u}	”ÕŸMS[§ÝÐk>-±ŒD!ÓµUŒmYï&–ÒR2X[k)²Ý�˜—{ÄÖíà§ïIV¤Þñ§ÔWòs©ûhôZÚ¼tN]›‹ÿ Ébý	GŠ<]Æ4Mÿ Wüå:Ž\üýÅàš_ü¼/_ù)àrÿ äÿ „£ÅÇþ`ºã©ßŒþzu.\üýÅàš_ü¼/_ù)àsÿ äþ�àÿ Ä›A=õ;ñíÿ @ìSåÀÿ ÏÜWþ	¥ÿ ËÂõÿ ’—þ?þ@Š<\r?±41Ž êWãÿ qßç½¸ùûŠÿ Á4¿ùx^¿òRÿ Àçÿ Èü$þ.Àÿ ‰.„{…þÒ¿'òþÎôý)rà?çî+ÿ Òÿ åÁzÿ ÉKÿ —ÿ   ñO‹�Øš§ü„¯ñÿ ¦ê9p?ó÷ÿ ‚iòà½å¥ÿ �Ïÿ •‹ÿ 	?‹¸ÿ ‰.…ê?âeÇþS¸é�­¸ùûŠÿ Á4¿ùp^¿òRÿ Àçÿ È<Oââä¡úêWàãƒÿ îhåÀÏÜWþ	¥ÿ Ë‚õÿ ’—þ/þ@‰ü\	DÐÏoù	_øÄ»¡£—ÿ ?q_ø&—ÿ /×þZ_øÿ ùXø¸gþ$ºõ¿Ççý�ø}håÀÿ ÏÜWþ	¥ÿ ËÂõÿ –—þ?þVð”ø»þ€š×ûJÿ ÿ •Ý¨åÀÿ ÏÜWþ	¥ÿ ËÂõÿ ’—þ?þ@Š¼Zæ¡àÎÿ Ÿ§üK½xúÑË�ÿ Ÿ¸¯üKÿ —…ëÿ -/üü¬?á(ñpþ$º¯•ÿ ùNàÿ œÑË�ÿ Ÿ¸¯üKÿ —ëÿ %/üü€£Å.`Oö6†9Æ´ïúŽèúSåÀÏÜWþ	¥ÿ ËÂõÿ –—þ?þVÅ.ÿ  .…×ò¿=¿æÎyÅ.\üýÅàš_ü¼/_ù)àsÿ ä>(ñxÏüIt>:ÿ ÄÎÿ Œuÿ ˜wÿ [ð£—ÿ ?q_ø&—ÿ .×þJ_ø¿ù£Å.ÿ  .‡ÉÏ:•ÿ çþ�Ý?:|¸ùûŠÿ Á4¿ùp^¿òRÿ Àåÿ ÈñO‹³ÿ  ]�MNÿ ¿ýÃý:RåÀÿ ÏÜWþ	¥ÿ ËÂõÿ –—þ?þV(ñ?‹°?âM¡N3©ßçëÎ�Üœ{š9pó÷ÿ ‚iòà¾#ù)àrÿ ä(ñnOüI´,õÉÔï¾œÄ»¶0iòàçî+ÿ Òÿ åázÿ ËKÿ Ÿÿ +âŸãDÐøã�Jÿ ôÿ ‰wnþ”¹p?ó÷ÿ ‚iòð½å¥ÿ �Ïÿ •‡ü%>-ï£hCë©ßƒÿ ¦ïÊŽ\üýÅàš_ü¼/_ùiàsÿ åaÿ 	G‹ºbhx?õ¿Çþ›©òàçî/ÿ Òÿ åázÿ ËKÿ Ÿÿ +þ�ÿ  ]�]Nÿ ôÿ ‰u.\üýÅàš_ü¼/_ùiàsÿ åbÿ ÂMâòþÅÐº�í;üþñ.ïÛ×4ràçî+ÿ Òÿ åázÿ ÉKÿ Ÿÿ   ñ?‹€Ïö.‡ë�í+üúp?³»�¸ùûŠÿ Á4¿ùx^¿òRÿ Àçÿ È|QâÞŸØÚ8ÇüLïó–ãþ�ÝFyúÑË�ÿ Ÿ¸¯üKÿ —…ëÿ -/üü¬Qâ�ò?±t>?ê'ÏÓþ%Ü“ÛÖŽ\üýÅàš_ü¼/_ùiàsÿ å`|OâãÇö6…ÏýDïþ¿ô?J9p?ó÷ÿ ‚iòð½å¥ÿ �Ïÿ •Š<Oâò?ä¡`‡S¿éôþÎü~”ràçî+ÿ Òÿ åázÿ ÉKÿ Ÿÿ  7þ�ÿ  ]Ž05;îüçÙß‡ÖŽ\üýÅàš_ü¼/_ùiàsÿ åbÿ ÂQâîÑ4>G}Jÿ ëÿ ê9p?ó÷ÿ ‚iòð½å¥ÿ �Ïÿ •�ñG‹¸ÿ ‰&‡Üø™_õ÷ü¨åÀÿ ÏÜWþ	¥ÿ ËÂõÿ –—þ?þV'ü%>.ëý‰¡çþÂWùÿ Óu¸ùûŠÿ Á4¿ùx^¿òÒÿ Àçÿ ÊÃþŸÐCú�Nüý7QË�ÿ Ÿ¸¯üKÿ —…ëÿ -/üü¬QâŸ?±´!õÔïÇþã¨åÀÏÜWþ	¥ÿ Ë‚õÿ ’—þ/þ@OøJ|]ÿ @MŽÿ ÚWÿ §üK»ÓåÀÿ ÏÜWþ	¥ÿ ËÂõÿ ’—þ?þ@wü$þ/èt]}u;ÿ þWRåÀÏÜWþ	¥ÿ Ë‚õÿ ’—þ/þ@OøIü\ü�t.yÇö�þyí�§�>\üýÅàš_ü¸/_ù)àsÿ ä ø£Åãþ`ºOoí+üý?äïÅ.\üýÅàš_ü¸/_ù)àsÿ ä x£ÅÇþ`ÚÆF§œ�û‡SåÀÏÜWþ	¥ÿ Ë‚õÿ ’—þ?þ@OøJ|\‹¡ŽqÎ¥�ý7w£—ÿ ?q_ø&—ÿ .×þZ_øÿ ùX¿ð“ø¸sý‹¡zdjWÿ ü®¥Ë�ÿ Ÿ¸¯üKÿ —…ëÿ %/üü€£Äþ. ‘¢è^ÿ ñ2¿üÿ äO—ÿ ?q_ø&—ÿ .×þJ_øÿ ù‰üZG:>ƒÛƒ©ßóßòü)rà?çî+ÿ Òÿ åÁ|GòRÿ Àåÿ È|OâåãûC=Æ5+ó×‘�ø—õéµ�ÿ Ÿ¸¯üKÿ —…ëÿ %/üü€ø»�ø“h|r?âg~=Gýý}‰¥Ë�ÿ Ÿ¸¯üKÿ —…ëÿ -/üü¬Ä¾.ueþÉÑ#ê¾bj’¼lAÁúvÒG`Ü 4í�ZûLKòt©¤ü›U›_ ½å¤¼ÔäíçgH4í:þöý/õ[—¼¼äùvC–_‘!EŽ�‘ƒ/’²¹?36f®!8{*Pötº­å'®®Nòêôæk_$8ÓióN\Ó×]’^IYvÖ×=>Ø‹ôúzvì~œW)©-  P@  P@  P@  P@  P@ á~)ø?ðGÆ|%ã¿iZ¡ñWÀÊ×¾šMSÝ„m.™uÐÒÒñ\Åš=”±JÖ›?s–,:}îUÆ\s’p†q�eØ¼ÃÂYô£C2„p·Àâ$¡Š¥*Oè¸©N8Êð”noD™æWËòÜN?Š­N”ñØ_z‹çýäá$ù9¶NœZ|½t¯‚=0 €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 ()!Ix|‘ÏáŸOOÊ€3›LL¶Ñ·=úƒêHç9éëéÒ€#:dg!î Ààq�ôÉ4 ßì¸ó€§Ž¸¡ç¶{q@þË�û§g…ç§·oÒ€¥¡ Ž1Œ:ðzvì1×’q@4¸ùI9ô^œúþ„úÐ)ð“ÈìÛ¶?—ˆ¿²ã €‡=˜mãðÿ ?J FÒÐ¨OöÐvçÜqÛ¥ 'öZc=±ÆHõëÇäxéÆ(³blËÎ@ óÛ¯ õ m1K· vÀëôA?þ³@þÉ^¸=}�ý:~^˜ .’œ‘ŒƒÀç¯##ùŠ Q¥Æ?„œ¸ ÿ “ëëé@þÌOîv™ì9?N¾ƒŠ Q¥¨çi9<.sœçÔz{Ð¶˜�”óŽ¸=¹În�¨§KBz‘Œ`z`xÏ~?Æ€ý™tã<(Ï¯·__lP.—ÇÊzuÚ:äûØ^´ §KŒœ…#,;/oÃ§¡öÅ 4éHÇ8aÓŒØ¹ç’@õÈâ€ý—?)ëÀ cêHçé@:Zd|˜ Ž0@ïÓ?OÇ‘@
4´çåãðõô� 'öZsŒzçòï@
t¸Î>R;ó·'º‘@4Ä�¤t#§=Ã§Z Oì´ùFÓÁ98^r0(ÇLA�ªFs’1Ç½sÎ9ÿ ë€4é‘ñ•<`ž‘Ðöã¯çÒ€éiÇÈxÏaøt>¹ú�Î€û.3‘³ÏP8ãðü3@ö\xÆÂOà,�µ 'öTx?+g<.:Ž?Ïù€'ö\Ý=sÑ.çùzt :dCªž‹þ§¯å@þÍA‘´ŒóÆÞ?,ý?�  Óœ©ê{cßß×®xÅ ÙqŸà<ãž={ûtëš ?³�”þC�óÍ /öd{‡Èx9ÏÜôëÿ êÀé@	ý˜„«Nzg>ùõ=ø þÌAÑHÈì¯CÇ·ò9 ÿ e¡?w#¿žŸÏ9Í KNFÂ3Æ~\ÿ .ŸäzÐ 4Ô-‚;ã?äg“Ž?M <iq†àwÈ'=px‰gõ °ZE*¼ÿ úÿ ™$öÆhÝ  P@  P@  P@  P@  P@  Pæ°ýœ¾-�ø)Ã~ÒƒD³ßàêøAµÁ®i?lmytƒh¶ÇAû_ö¹�g%EÏØþÎ-æmæ¿§‰\þ‹‹Ã'Ž­þ¹G�p°PÆ{—¼b¬ê¬ÃØýO™ÓIº^ÛÚ_N[Ÿý‘�ÿ ]?¶}œ³Þ_õwWÚÓæöªŸ//²æö–¿^[yŸ¥5üÆ}ˆP@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ÃZk_ðÞðÈ_ð‰Yaÿ Â³ÿ „ïþÿ ígûwÚ³~Ýöì�ìß/ËÝû¿?ûO8ù¼žÕûÏüBü@øŒÛþ½þ´`c}R>ÃÙýgØ}cëŸZææ·½ìþ«nœýO˜þÞ©þ´ÿ «ÿ W�²ú—Ö¾±í77'7/³äµº_Ÿä}Ï_ƒN P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P†ÿ Â5ð3þÇü$ßbÑá|ÿ Â3ö?·}£TþÛÿ „gìÛ<¿³yÿ Ùfû7þÏçmçvîkîÿ ´øóýAþËöøßõûOÛ{e…ú�ö§µææö¾Ïë~×Úôöœ—ÒÖ<Ïc–j{~Z_ÚžÇ—žóö¾ÆÛZü–åò½�r¯„=0 €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €?>¿á–ükÿ ÿ †­ûm—ü ÿ ðªá	ûú?Û¿´¿²þÅæÇÿ Ú<¯3ŸùíÇüµÇ5ýÿ [#ÿ ‰pÿ ˆKì+ÿ nÿ ­¿ÛŸXýç°ú·Ö½¿/û¿³æåÓýâÿ Ýè|§ö&'ýnþÝæ�Õ¾£õn]9¹ù9oñ^×þå¼ÏÐZþw>¬(  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  Ï¿øjOÿ ÃÄ¿á”¾Åeÿ ?ü*ŸøM¾Ý›¶ÿ ieý·ËÇöÚ|¿3�ùìÇü²í_Ññ
r?ø—ø‹^Þ¿öïúÛý‡ì?yì>­õ¿aÍþñìù¹uÿ v½þßSäÿ ¶ñ?ëwö,~«õ¬óiÍÏÉÍo†ö¿÷­ä~‚Wó¹õ�@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ xoü$¿?á|Â3öÝþÏü#?lûÙµ?íÏøF~Í¿ÌûO‘ý—öo³s³ívÞ6îâ¾ïû/�?Ôí_aŽÿ P?µ=‡·ö¸_¨ÿ j{Krû/iõ¿kí:û>Kõ±æ{l³ûSØsRþÔö<Ü¼³ö¾ÆÛó[’Öé{Û¡îUð‡¦ P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  PÃðÉz×ü7Ÿü5ïü%¶_Øð¬¿áÿ „?û%þÝöŸìß°ý¿û_ûKËò·|þGöfqòùßÅ_¼ÿ Ä^Àÿ Ä ÿ ˆ9ý‘_ëßëGöÿ öÏÖ×°ö_Yöÿ WúŸÕy¹­îûO­[¯'Cæ?°jÿ ­?ÛþÞ>Ëê_Uú¿#æ¿'/?´çµ¯Ó“æ}Ï_ƒN P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  Pæ§ü4‡ÅŸøy×ü3Göí—ü*øSŸð˜`ÿ aénþÝþÈû_Ú·~Éý±åùÿ 7Ù¾ÙäcåÙ·Šþ�ÿ ˆiÂñ+_ñþ¡_ýqÿ ]?±¿´>¿ŒöPúç±ö_PößRæöz{_cí/¯5Ï�þØÇÿ ®ŸØÞÖ?Ùÿ ÙßXö^ÊŸ7µö|ÜÞ×—ÚZÿ gšÞGé]1d P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P‰Âåø;ÿ Ïþ§öÖ�ÿ Ÿþ¿øH¿±>Âÿ Û_ð�}ŸíhûØö}ŸÈù¼¯¶go_jûŸõ+Œÿ Ô?õãêXßõ'ûOû7ëÞÝ}GûGÚ{?gì=µý§´Ó›ØÚÿ hó´rÿ í?ìßiOûGØûogËûÏeË~nn]­Ó›ä{m|1é  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ ñü2Yÿ †Ûÿ †½ÿ „©1ÿ 
ëþOøDþÈûÿ äö·}³;1ü~^3Ú¿mÿ ˆ¼¿âÿ ÄþÉ•ÿ ÖOíÿ ím_÷Ÿoì=�ÅýÞcç°ã$þßöëýÏê¾Ã•ßáåææÛåcí
üHú  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €?6áf|oÿ ‡šÂ¯ß®ÂŠÿ …=ý³³û6ëûþ_ì�;?Ú{~ÉöŸ´ÿ ËÛ÷|½kúgýWàOø•ïõªØõûýsú�þµKëÿ ÙŸ\ä·Õ/í½—³ûvå¶§Çýw3ÿ \þ¥ûÏì¿ìÿ ið?eí¹/ñü<ÜÝ7?I«ù˜û  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €>yÿ †‚øSÿ ÿ í‰?ámÂ'ÿ 	^~Ákåÿ aý—íXþÐó~×Ÿ#þYy[;gú7üC¾-ÿ ˆmÿ OõCû_û#øõoõÿ kì¿Ýù}�¹þß77•Ï'û[ý±ý‘ÿ 1þÃÛü*ÞË—›âø¶é±ô5~rzÁ@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ |™ÿ ¡áÏøkÏøkííWþ_øA?áþÀßoý“öO°ý‡í^_Ø¾Óçìù³öÝ›¿åž8¯×¿â-æñâýC	ý™ý¿ý½ý¡ËSë~ÛÛûeÍíýŸ'6–ö·Ú<ì*?Ûÿ ÛþÖ§¶ú¯Õ}•ãìùyyy­ËÍû{ä}g_�žðP@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@šoý áçÙþGÄ_øg�øSžoŸäxƒþ¿ü%_ÙÛöŒÿ Â=ý­ö®6ãí^w~¿§~¯áçüJ×Ö9øoþ"?úéËìý¦]þ³dýr×övþÒúŸ²ëüO#ãyó_õ×’ØÏìŸìëÞÕ~§íù?›ø>Ó›§Ä~–WóöA@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ |Áÿ Gà�øjøe?øE¼cÿ 	Ïü!ð›ÂWý�¤Âý›ö?¶ý‡ûGû_ûcûGÊù<¯ì#Ìãí~jýOþ!Vyÿ £þ"×ö¶Kýƒý·ý‡ý‘õœgößÖ}¿±öÿ VúŸÔþ­ÍïsýwÚrëìï¡âmá¿·?°½†#ë_VúÏ·ä§õ~N^n^ií9º[ÙÚýO§ëòÃÛ
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €"žhí¡–âf	¼²1è©–cø iÅ9IE+¹4’îÛ²vM½’»ùau­ëzäŒlf:V˜Ò9¢-öË•´M‚@"V º	-É+$gªœ÷5‡Ã.YGÛVÑµ/áÁÛá’·½®ŽÒÝ=¯¦?¼«ª|�èÓ÷¥ÒéßOšìUû¥�ù<Mž?æ!ÿ !ÿ þº�­¯úÂà©ÿ òÁûÿ ?«àkÿ ‘a©qŸøŸßþ&~ñåÐý{Š>¶ºa0ø*ü´^Åÿ Ïêÿ øù û§Éÿ „£Äøí�B yÿ Ÿ/Ë4}mÐ&ÿ Oÿ –�Ø¿ùý[ÿ _üˆ¢ÃRïâ�ƒÿ a?ù�­Çþ�0ø*ü´^Åÿ Ïêÿ øù>Á©ÿ ÐÑâcÿ q:ûr=F~”}n?ô	ƒÿ Ásÿ å£ö/þVÿ À×ÿ "`Ô³ÿ #?‰úÐB¯üùtÇþ¶O­¯úÁÿ à¹ÿ òÑ{ÿ ?«ÿ àqÿ äû§ÿ C?‰ÇýÄ =ñÿ >_^”Ö.?ô	„ÿ ÁSÿ å¡ì_üþ­ÿ �¯þD_°jXãÅ'Ïý„ õÇüù÷ÿ >ëëkþ�0ø.ü´~Åÿ Ïêßøùû¥ÿ CG‰ñÏüÄ Ï·ü¹còÏéGÖãÿ @˜?ü?»ø¢ö/þVÿ Àãÿ È‡Ø5,ÿ ÈÑâsÓñ0ƒúYQõµÿ @˜?ü?þZ?bÿ çõoüò l5/ú<N:óý¡oûrëž¾”}mÐ&ÿ Ïÿ –‡±óú·þ¿ùŸOøJ<OõþÐƒÓ=>ÅøzûQõµÿ @x?ü?þZÅÿ Ïêßøÿ ä@XjyçÄþ'çÚ}?çËŸÃéGÖãÿ @˜?ü?þZÅÿ Ïêßøÿ äCìž3ÿ 	?‰øÎâanßñåßô£ëqÿ  Lþ
Ÿÿ -±óú·þþD>Á©ÐÑân¿ôƒ§_ùò¿:>·úÁÿ à©ÿ òÐö/þVÿ Àãÿ È‡Øuú<OŽ?æ!öûçõ£ëkþ�0ø*ü´=‹ÿ ŸÕÿ ð8ÿ òöK¿Š<M‘×þ&uÿ À/Ç×µ[�ý`ÿ ðTÿ ùh{ÿ ?«ÿ àqÿ äCìŸ_øIüL}¿´`úÿ Ï—l~={Qõ¸ÿ Ð&ÿ Oÿ –‡±óú¿þþD>Á©öñG‰úÐB§þÜ¿CŠ>·úÁÿ à¹ÿ òÑûÿ ?«àkÿ ‘ì�ñTxŸÜÿ hAÿ Èt}mkþÉƒÿ ÁSÿ å¢ö/þVÿ Àãÿ È‰öKþ†�õÿ  „:�ùrïÿ ×£ëqÿ  Lþ
©ÿ ËzØ¿ùý[ÿ _üˆ}ƒRÎ?á(ñ9ç¯ö„ËìTþµúÂz{)ÿ òÑ{ÿ ?«àqÿ ä@Xj}üQâpsÿ A?/øóÿ 9ÈÍ/­¯úÁÿ àªŸü´~Åÿ Ïêßøÿ äCì—ý&ÿ Á„ä—4}n?ô	ƒÿ ÁSÿ å¡ì_üþ­ÿ �¯þD>Á©ÿ ÐÑâlvÿ ‰„ƒþœº~½þ§Ö×ý`ÿ ðTÿ ùh{ÿ ?«àkÿ ‘°j_ô4x›ÿ 0~?òåÿ ëëGÖ—ýa?ðTÿ ùh½‹ÿ ŸÕ¿ð8ÿ ò!öKþ†ÿ àÆþBü¿\Qõµÿ @˜?ü?þZÅÿ Ïêÿ øù~Á©ÐÑâüAÿ È_äûQõµÿ @˜?ü?þZÅÿ Ïêÿ øù>Á©ÿ ÐÏâ~Gý àúgìXïGÖ×ýa?ðUOþZÅÿ Ïêßøÿ äDþÏÕüÍ'Îxÿ Oƒ�;ÿ Ç�?­Çþ�0ø.ü´~Åÿ Ïêßøÿ äG}ƒRÿ ¡£Äý¿æ!§ýy~^¾Â—Ö×ý`ÿ ðTÿ ùh½‹ÿ ŸÕÿ ð8ÿ ò"}ƒRÆá(ñ7ÓûB0}¬ŽsþsGÖ×ý`ÿ ðTÿ ùh{ÿ ?«àqÿ äCì:Ž?ägñ>}?´ þcÿ ?Z>¶¿è	ÿ ‚§ÿ ËCØ¿ùý_ÿ �ÿ  ÇRïâ�ÿ a3ÿ ¤t}mÐ&ÿ Oÿ –‡±óú¿þþ@>Ã©ÐÍâüÁÿ ÈT}mÐ&ÿ Oÿ –‡±óú¿þþ@>Á¨äÅQâ|zÿ hA×ÿ  ¨úÜèÿ ‚§ÿ ËCØ¿ùý[ÿ �ÿ "!°Ôûx§ÄßŽ¡éþ…Óë�Ê�­Çþ€ðø.ü´~Åÿ Ïêßøÿ äCìŸý'è1ÿ ~åÌÿ ž™£ëkþ€ðŸø*ü´=‹ÿ ŸÕ¿ð5ÿ È‹ýŸ©ÐÓâqëþŸçÿ  éýmÐÿ Ü*Ÿü°=‹ÿ ŸÕ¿ð5ÿ È‡Ø5.â¨ñ?cûBO¹û˜¥õµÿ @˜?ü?þZÅÿ Ïêßøùû¥Ž<Qârì!ù%ëëŠ>¶¿èÿ ‚§ÿ ËCØ¿ùý[ÿ �ÿ "ÃSÿ ŠŸÄüÿ ÔFÏ&ÈQõµÿ @˜?ü?þZ/bÿ çõü?ü€}ƒRÿ ¡£Äßø1ƒñÿ —*>¶¿èÿ ‚§ÿ ËGì_üþ­ÿ �Çÿ ‘°j\ÿ ÅQâr}¡à3ö:>¶¿èÿ ‚§ÿ ËEì_üþ¯ÿ �Çÿ ‘ìŸ?ñTxœã¿ö„=?ãË¿8>¾Ô}mÐ&ÿ Oÿ –�Ø¿ùý[ÿ _ü‰<rxƒM>mž­w©2µ¾±/ÚUáŠ#Dm¾ê»’ª ã4*ÔjéV…:Qn„\Z}ß7´mwKVÎqÖ%&ºTwOËN[_î;½[‹[³óvyQ1ŽîÕ�Ï ð*èRE##lŠ7YW¢éKGÍ	+Âki/øëä]9ó­t’v’ìÿ à­zú›µ�a@  P@ s¾!×¿±¡�!„]_Þ³Çgm¸.æS´ŽIÊ‰¦ˆÉ—O•ŽrGE
*¯4§.ZTÕç/TÚŠþô¹]´zôfu&ãeyKH¯Íú+«ìp®ºýé3^kº…œ�–òt™¾Ë`œ*bU»Ýµp† ¾[… ^"Œ©a©N:k]9Éé«¼\-w~š©NZÎ¬ÓíMòÅyY¦7ì:—ýþ'ëÿ A|ÿ é?Z_[_ô	ƒÿ ÁSÿ å¡ì_üþ¯ÿ �Çÿ ‘°jYÿ ‘£ÄçÓþ&òåGÖ×ý`ÿ ðTÿ ùhý‹ÿ ŸÕ¿ð5ÿ È�°Ô¿èhñ?QŸø˜AÐóÿ >_—­[_ô	ƒÿ ÁSÿ å¡ì_üþ­ÿ �¯þD†§ßÅ&ú�BëeÏÿ _Œš>¶¿è	ÿ ‚§ÿ ËCØ¿ùý[ÿ _üˆ}ƒRÏü�'Ç?ó·íëþ…ß�§z>·úÁÿ à©ÿ òÐö/þVÿ À×ÿ "ÃSíâ�ç<ÿ §Àp2éÎ�­¯úÁÿ à©ÿ òÐö/þVÿ À×ÿ "`Ô±ŸøIüMêö„ˆÿ �/­[�ý`ÿ ðTÿ ùh½‹ÿ ŸÕ¿ð8ÿ ò luÞ(ñ9ÿ ¸„ü…ýqÆ:Ñõµÿ @˜?ü?þZÅÿ Ïêÿ øù~Á©ÐÑânÿ óƒðÿ —/óïGÖ×ý`ÿ ðTÿ ùh{ÿ ?«ÿ àqÿ äDû§×þñÎ¡ô‹ñÍ[�ý`ÿ ðTÿ ùh{ÿ ?«ÿ àqÿ äCìŸýþ&éÿ A8=¿åË¯_n:Ñõµÿ @˜?ü?þZ?bÿ çõoü?üˆ}ƒRãþ*�ç¿üL ÿ É>Ô}n:ÿ ²a?ðTÿ ùh½‹ÿ ŸÕ¿ð8ÿ ò!öKþ†�ý´-úgþ¼‡ÐúvÍ?­Çþ�0ø*§ÿ -±óú·þ¿ùû§œÂQâséÿ =¿ãÈÑõ¸ÛýÓ	ÿ ‚§¯þU±óú·þ¿ùŸ ø£ÄùíþŸáÇØé}mÐ&ÿ Oÿ –�Ø¿ùý[ÿ _üˆ}ƒRÿ ¡£ÄÝ¸þÑƒ�_ùr£ëqÿ  Lþ
Ÿÿ -±óú·þþD>Á©ÿ ÐÑâlØB¿øëøãÞ�­¯úÁÿ à©ÿ òÑûÿ ?«àkÿ ‘°j_ô4x›ÿ sÿ ’_ç¿j>´¿è	ÿ ‚ªòÑ{ÿ ?«àqÿ äCì:—ýþ&ÿ ÁŒü…þsGÖ×ýa?ðTÿ ùh{ÿ ?«ÿ àqÿ äû¥ŸùüOÿ ƒ8ü>ÅÜÿ œñGÖ×ý`ÿ ðTÿ ùh{ÿ ?«ÿ àqÿ ä6�ÿ ™£ÄýÇü„ ü?åËŽ„Qõµÿ @˜Oü?þZÅÿ Ïêßøÿ äDþÏÕ?èhñ?l§ÛóŸûsÿ õÓúÜèÿ ‚çÿ ËGì_üþ­ÿ �¯þD_°j_ô4x›§?ñ0ƒqÿ >]ÿ úÔ¾¶¿èÿ ‚§ÿ ËEì_üþ¯ÿ �Çÿ ‘°j\ãÅ'î?ä!×wüy~”}n?ô	ƒÿ ÁSû¿Š?bÿ çõoüò!öGÿ „ŸÄùôþÐƒÿ �¿ýT}mÐ&ÿ Oÿ –‹Ø¿ùý_ÿ �ÿ  ÇRïâ�ÏüÄ 'ðÿ Bõ£ëqÿ  Lþ
Ÿÿ -bÿ çõü?ü€}‡RÎ?á&ñ?\ÈFþB£ëKþ�0Ÿø*ü´=‹ÿ ŸÕÿ ð8ÿ òöK�øª<OÛ?ñ0ƒ¿ý¹v£ëqÿ  Lþ
Ÿÿ -bÿ çõü?üˆ†ÃSíâŸ÷ë¨Aøc]èúÚÿ  <þŸÿ -±ÿ §Õ¿ð5ÿ È‹öOþ†Ÿr?è!õçÍ[_ô„ÿ Ásÿ å¡ì_üþ­ÿ �¯þD?³õ,ÈÑâp{ÿ §ÀöÏüæŸÖ×ýá?ðUOþZÅÿ Ïêßøÿ äEû¥Ÿù<OÇoí>™ÿ �>>”¾¶¿èÿ ‚§ÿ ËCØ¿ùý[ÿ _üˆŸ`Ôùÿ Š£ÄþÃûB8ç?è~¼œÑõµÿ @˜?ü?þZÅÿ Ïêßøÿ äCì–3ÿ 	?‰ÿ ðcóû·óô£ëkþ�0ø*ü´^Åÿ Ïêÿ øù –9ñG‰³ÿ aáÿ _¯ô£ëkþ�0ø*ü´~Åÿ Ïêßøÿ ä@Xj\çÅ&öPƒùýŒQõµÿ @˜?ü?þZÅÿ Ïêßøù>Á©ó�xŸ·üÄ ãëþ…ë‘ëÓ·4}mÐ&ÿ Oÿ –‡±óú·þ¿ùÆÃRÿ ¡£Äÿ ø0ƒéÿ >]ºçð£ëkþ�0~¾Êü´^Åÿ Ïêßøù>Á©óÿ G‰½¿âcçÿ ]ý3GÖãÿ @˜?ü?þZÅÿ Ïêßøù—x›ÿ ÿ ä—oOþµ[_ô	ƒÿ ÁSÿ å£ö/þVÿ Àãÿ È‡Ø5/ú<Mÿ ƒ:óÿ N^ŸýlÑõµÿ @˜Oü?þZ/bÿ çõü?ü€Kþ†õ<ÿ hÁÓð²ô£ëqÿ  Lþ
Ÿÿ -bÿ çõü?üˆO9(ñ6=õ>ŸóåGÖ×ýàÿ ðTÿ ùhý‹ÿ ŸÕ¿ð5ÿ È€°Ô»ø£Äþ¿ò·ü¿ãËõ£ëqÿ  Lþ
Ÿÿ -±óú·þ¿ùû¥ÏüU>&öÿ ‰„}Ð¨úÜèÿ ‚çÿ ËGì_üþ­ÿ �¯þD†¥ÇüTþ'ëÿ A?ù=}ºûsGÖ×ý`ÿ ð\ÿ ùh½‹ÿ ŸÕÿ ð8ÿ ò l5?úüN=ÿ ´`÷ÿ §/^½ý(X¸ÿ Ð&ÿ Oÿ –‡±óú·þþDrYê‘�Éâo»¯Ešö"nÿ 2T$}tëCÅEèð˜T¿»Niü›¨ÿ  ö/¥j×ó’kÿ I_™·£ø–þÞö/]XJÜ–£äY¤Üª‘N­$ÇÏpÃçÌJÆ9 R6“¥J­9T¡Ì¥jRz´¬îâÒ^êkmZºWe8IF¥šzFjú¾ÏW«ù#ÐkŒØã|spðèE#$}£PÒí$ ‘û«­BÞ	U±Õ^9Ysó)*x5×‚I××ìÒ­5ë
R’ôwJÏ£ÔÊ³´=gò”Òƒ3"�!Ž8‘Uc‰5@UB¨À< éïŠç“r““»rm»»îûõ4JÉ.Ä›Wòãžô»[üÿ ‹´tîqÐž=ºàpzÒùy ”gÐp1ÏLôëøS·p¦~§§ÐqëÏ=è_ð P vr99ÿ õQnÀ8 ‡<c¿OJ,»ÿ ]€6�ØÛ©èsõàÐ­ÞÀ& Çq�¯<ÓúPÖŸ×Üm_Nþ§ò÷ÿ >´kù\ (ì;{ô£ðOôJŒ�œç$gž3Æ
]_â€8ÇNŸÏóÿ >ô­¾½?«€õ9ïÆyëÖ„¿¯@hÆAìA?ãú’ýuóò *=0G¿O^úÔ­÷\jœqÏs“Ïëþ•[P žƒòÉüé5¸· ñ�Ðã¿×üúR·ù€Ð¸ÎÓ#¡õë×üóUkú€í‹íÇ)=ºŸñ>µ;+w1Æ=±Ÿÿ _ééÚŽ¾W ßƒŽsŽ~½}éÿ ÃZÿ ×õ÷ ÐuÉÉýyô§×ÈÆs×�¯n´š]@]«éëëø¾¹ÿ ëÑ×K ¥ ì	ô?ÏüúPµ½ÿ Èh_áçùsÛŸóúÑ¿éý]@M£9¤ž?#íÿ ×¢Ú äçŸSùã?­|­ý Ç=Ïøÿ ŸÎ‹_oé€màwëž�øö£Õ|×@ ˜tïúöÏnô[Ñù ›G ü¿Î)kç°°q…úyç¿8ëOOë 	³§lcž½sœú~£M.ÿ ­@6g vÏùïBH
:ä�yöõïÛÓ¥éÛúÿ ‡ ÛÛ?NýûsøQ�º÷þ®°8<{ŽrqÓÿ ×Fþ]~ðƒóç9ü˜¥×Óúù€*�žþx÷ç‘ŸÄ{�ŠnÀ7`àN>€Ók·Pµº:ç¾GëŒ{~•6»Iü¸éý9ý=éÛ¶þ (A€ïÉçü{qEµôJŽ€‘�Ü�þ½/Ë·æM	…¯‹® ŒKÍKÙÂ�¡§ŠòÎÕ�Áa…r@ã¥vKÞÀÆO^LB„|£*s›Wÿ ¶0Zb_j—3õRKò=.¸�Â€
 (  €p3@_y'Û<]ª	FõÓ,´Ï³ùÄfýnþÐcÏú²ÿ eˆ¾Ìy›WwÝÛ/sBÎÞÖ¥nkidéòß½¹åkíwÜÆ:Ö©±[þÞæ¿§Â�tÀ„c¯ëü«’Úoøÿ [›	±}·õïÏù<w5é×úê vÏóö£ðW°
@çŽ½3“�C×Óó¤’êÀ6�Ô¡Î>¿ýzvëó Ûê=ãÔý?JVô ÀÁ3Ð‚xýzsýiþ?åê´cr^ýé[¶À&ÕÇ#'¹ä~Ï§ÿ [VÔ ¨öþgóÏšÜŒñŽ1þ?Æ•¼þà þ§·~qÖžþ¿ÖÀ?`>‡‚xÎNúüûRÚúXàé×ŸLýOéÐÑæ žp{ôç�|þ•[•ÿ ¯¼Ú  rÇò¥·£°8Ïàpq×ŒÐÒêíSÛðõüèíoÐ  àzã?ÏëFï_ëÐ ¨ùyô?þ¼…û ¿Ó>ø^1E»  ™ÜsïŽGÿ ¯úQÛñþ¼À\Çõ9þt[p=QŽ¸ü}}?J^OþØÎ0r9ý=?ÏÖŸãÛúó Àô\LÑ®›€lR8^üIÎ:uÿ >Ô+ ›0z>§¦0xöÿ ëQÓ~ .ÐyÇ~¿_Z_ä6�\ã×ëÏÃõëG•½;ÿ _ ·ß×ðÏ§=±G¢Û�Ú1ž=zŸòÂ�ÿ ?¸ ¨<ã¯nyÀë×Ûé×¥+Yÿ _ÕÀŽx�Nž¹9ïÿ Ö´Ý¿¯ë 	·ŒGaÈÆvü~@.Õì£“ï‘Óß§ùÀ©·ü°g>Ý=ýÈ§eóB�œóÏ^GáÁÇ>”[U÷€¥Tc¡ž??ò}(åó»:d�ôéþy£KZ »Ga�\�ÇõàsõëÞ‹}ÿ æ´`ÙÉü¾¿ÖŽš^÷û€] ñôÉÎpyÇÓ½ôôý B¼c§�?ç§øR·_ë@ Œvéžz÷=)õ` P;¯9ÎsëÇ”[¯õp€{g¸ëÇ¿Ö‹.àqÏÎHÁ#=óžAüÿ 2iÿ Ç ŸO^Ýúô[ÏñÄˆ©£_]*�6Â'¾·cÖ9íÑÚ7SŸ•�ÉŽÙÇ=X&þ³J:òÕ’§%ÑÆRIß¿¡�áMõŠr^©hz­œ¾m­»ç%¡ˆ·Ô <òyük–_¿Äÿ 3U²ôGãïùÀ1�ÚÆ„ä5k2rCù×VøÒÿ ¯Ÿý1PÊ¿À¿ëå/ý9@˜3×òg�õ5Èïýt6~1Üóÿ ×Ç¯ò¡_åý~ _ äŽ:cëíG_žà=³×<óï‘×ôã¨§¯ùv òÇLøçñ×ŠZÿ ^@'—íÓŽÙÏ|gÔzuâšý6þº ¢3×Œg# Æ	ëIýÝÿ Ìòúp:�}7~>´0¡éŒdúÿ õøÈQ¿ây}°?^Ÿçó§éýXg§¯9<ñØþ>ßÐÑæÁõÿ Jÿ ×¨å‘Ô„ŸóùôãœSÓÏuè³¾?^ã×žÃ×ß4»þ &À01Ó�Óùúý©Þÿ ×åæ˜ñÛ'§¿¯ãÖ�ö. !OnÜ÷àc�nÙï�­+ÿ À|°s€8ëÇ>ŸýoÂ�v òûñÛ<Œ~<õäòhþ¼ý |àø~^¤Q¶ X8ã©õõ?¦ýTõÙ~ &ÌŽ öä×·ò¢ßÖ¶üÿ ÈË¨ý{ã¦ÏlÒýá€<¬g qß9?–â>�E;íùLgAŽÙôëŽ}?QK]€6N=yÿ õÿ ‡^)ëý] _,1Éççüÿ >Ùì¯ëpÇÆxç¸<õ÷úóÛ&ž¿wëøz y}~^^Ï#ôïF¿ä°q�Ôzþ?Ò‡}ÀS{ï‘þ­%ò ò¹è§#“ž?¨?‡Ò‹ù½¯ÈË$ò?^ƒóõüzÑæ€Bƒ®OçÓúý>¸£^ÿ Ó Ùè03×ßÛú‘øõ§gýÀü¼ÀP™þ\õ=úõý:[[¸Œq�NF?ž?:<¿¯0/“Ó×®1î>¿þ°)ë§ü+œcÜóÀÏùÿ )tý@O+§¾0xÇãÿ ÖëNÿ Ó|¾zg>ýNÞÝÿ ­ÿ ­{°`Éã ä}_Æ�—ØÏLõ÷=:`uü³G­ô òÇ'Ž¯Nƒùü±Ó½=>à/—Ÿîôõä`úzuþ´µó<°Ý8Æ;úŸóþx§¯ª òý²{sÇ éùëïFºy}þ{�“còxÞ�ù–®zvÿ ‰¥¨Ïæ:Ÿé]_ó/öý37ú˜ÿ ÌBÿ ¯/ÿ KG§)ÈzW°´ P@  ×ÉVÇå�Þ-ñ?Cþ‹áþ{g¦vUÿ rÁÿ ×Ì_çDÆÇ­þ_ûyºSè3Óžã§Óüæ¹7µÍƒËÇoNþ¿ýóŠ5ééú€½:÷É÷Áü;dõ‹óí§Ï¿ü8–9ÂôãüçüŠWóódÀÏ^¼ãqëôôïÖŸßÛËp`<ú{úŸ¯¥-Ÿêl·Bóøõü8/»úüÀS;g�ÜýùýË¨	åôã¶ÿ ýc×Ò•÷|¿@=øéïúñF»\Êä8 uìyç×·éŽ(þ¼þ@<ô×ƒŽó?¥k¯�Pu#¯}8éíô¦¯þ`_lqŽ@=óJÖý@<¿PsÆNÏ¦Ÿ¢Ñèå`ž¾yõÇù”_K]PÌ•þü½ÿ ÉÍ.à<:óëÇ¯åúS×¿ÌòÀê:ôþŸ×ùö¥6åŒgÝyúôéùx§¯ëÛúÜòøàõÇÿ _áF· Ø8ã¯zöõ÷þt;ýÀ/”qÓc¨ÿ Kåó òº}ÓÓ¹ë×ùr==1Eüß_¸1’y¸þ½þ”ztcŒ�ÆN?úüQwßó6qÀúŸLÿ SÓ×Jvæ„Ïá×'©#ŸÎ–ß~€0N=�~}þ½h òùè9ç^§üqúÑ¯Ý —ÛÎ_NçëëßëF×û€C;gŒÏ9üsÅØòú{ôç±?Sý3O¿õ¯Oé ›ztÎqýúýsKõ Ùè9ÇLçòéÛüòv½ôèåŽ£ þ|~'ÓÓÒ«ú[ì¼¼ãîãžøÇ>ßN¿­N¾}€o–q�Œœÿ Ÿþ·áOTåûgÓŸÓŽ¿©ÇÒ�l¿¦åœ``gŽß�^Oø÷£þïïØòñïÎ?OóôþiÜ`<ñ�®1×�_Ë­€ž^@8ïÛ¡?�lÿ …ú€N}GoÓ�ÔÆŸŸOó Ø1Ð}éòÒw<®¼~g×¡äöÅ5þ?ë¨
#<žç9ÆAã'4Ÿ¦ _Q�Œ€yãœ�oÎŽßä PŒñ×Ž¿©üúš;z��â˜ñáÍoƒÿ  Û³×þ™7ù5Õ‚ÿ {Ã×è'ÿ �#ÿ Á«þ	~G£iG66Ü“ˆb#¯È¯½sOâ—øŸæÍcð¯Eù§�þÊƒÓûkCúøœYõúŸZêÀÿ _ö‰ÿ Ó«üþ¾Rÿ Ó‘-`‘ÐrsÁþ^ÿ ‰®oÀØ]¤ÿ ú»Ÿ^ÄzQ`;ç¿N?*Vû¿¯0¼go±ý8ü1Û§lÐõÿ †`aøžòm3Ãž Ô­ö‰ôýV½€œãÎ´°¸¸‹ p$EÎØŠôrœ5<^k–aj_Ùâ³§ø+âiÒ�´zòÉÚé¯&rcëK�Æ×…¹èá15a}¹©Ñœã}WTº¯SüÞþ;|uøƒûC|C×>$|FÖfÕµ­fîiÕp·°‚Y¥�l¬ÒI'•-¢–y�k‰äWÌ­šÿ ª?¼;áŸx_.á^ÀÃ€ÀQ…7%ok‰©
p¦ë×”cN«8S§8R§¡qá×qvuÆ¹Þ/<ÎñRÄâ±Ue4�Ô(ÂR”Õ*IÊrTã)ÉÅJs~ó¼™ãu÷GË…  PQàßøŸáÿ ˆ´ßx?X»Ðµý&a=Ž¥dÊ·8àì.®¿2’­ÇÝ'¯#=Èrž%ÊñY6y�£˜å¸Únž#	ˆMÒ©×2‹OGfµÝ†WšcòluÇ,ÄÔÂc0òç£^“Jp}lÚ{­›3ýÿ c‰^"øÍû,ü	ø©âÉ"—Äž<øw¡ø�Y’%‘"{ûøYæhÖineU$âVõzÿ ˜8K,àO|DàìšŽUÃœQ˜åxÍÁÎ8l<Ôi©8B”³wq§ýÔµ¾çØÞ(ðû„x‡1q–;7É0˜ìSŠ’‹­Z-Í¥)ÎI_¼äüÏ¥ö3�Àûqÿ ×úô¯Éöþ¼Ïº§9ïÇ9ÿ ëzuÈïG—ôÿ ¯QŽÁàc§QÐgÓŸÇêzÑmÿ 0 1žOùè(ûô_ ¹�‘ÓŽ?óÅõýD)ÝØþz§^zûQÊ†&yÇ†—ßnàoaíŸþ±ü?\Ó²ÿ ‡þ� ÑGãñÇô÷ý(·¨	†öçüOCø~X¥·}¿¥ýuBžpqÔž¿‡ÿ =hknÝº€¸ ðSžÃó
vº×p8ã©ç¿\ñïÿ êXù¹Ê�QþÏJZ.¬çÓ¡õÇ¨ôô÷¢Ûýß¨	óv ~=G§N�ºZ, ÷Æsž;qüý»Ÿjvõþ¿¯¸ =ûòO_®=3Ú‹_ˆ# �?ç¯^Ø¢ßð@°þïn	gè?®@tÏ>ß‡øÿ œQdà“ÈxÁ9þ\ÒjÛy€…Nz~Ç“þ<Ó_>à }NAïŽù£þÚ{ŽN9÷<œŸLñÇ¿Ö�»ö°Ö=”óÇøc¾ÿ 6‚0Ný:�Ã'·LgÚ�·íýHïÓ×ÿ ×øþu6@è:z<ÿ ú©Ûúè`�3ƒëë×·ùíF×ßðJœ`þ\�Ï?çü(ëÛüØ	†ì ë�¥ï~€lò{žý=ÿ úæ‹/ëÈÁúŽyã?Lcÿ ×ëÚ��òp9éÓ¨ç<}”¼¿ÏðÛ#Æðçƒÿ ÍÇ¸$ê¶¾œÿ õù®·ÿ "ö¿ê2?úff?ó¿ëËÿ ÒÑéã ú
â6€
 (  €¾éïÁþTåÖÀÿ Â[â|v´ðø<ÿ ³ªûcÝkº§û–þ¾b¿:&0þ=oðÒÿ ÛÎƒi<ð±ïõíÇ­rmæl=±øœ�ÛÓ=3Jß×õæà‘ƒøý=¿¦GøÑn«äJ“ÛŽü}:uÇù=…÷°‡Œã¿CÉþŸýj{\A·§ƒ¯§B8üòÓÃŒ]§#ñï’qü¿¥×å¸è=úœŸóÍ½¯�ÓÜŽžß_Ç þ?Z>ýD7 íž0?ŸçÖŽT0Ãu!x§â1ô¥·{u`nÜÓžß‘ÿ \Ó²þ¿¤€x<_óþ?^h·¨ÃAýNzã¦G½.þOôBœœyäŸÇÛžË·` Ïçüýzšvº0}¹äóß·L{zg®rÀó�1Øý:JËÌÁÇOC×õÀëÞ‹^ 'ÍØï‘ÆzŽŸ‰ëü¨·ëúØ’@çúÿ çž:S·¨}G¹üGaŽzõ¢ß×¯pƒ×9çÿ ×ÇëÓÞ‹—õÿ monyÇn½z~™ÏsÞ‹/ÐÁäŽœóù�ËëE�	‚z…üÈÇùô­¶ßæ�Àôäò>ß×ÛéIjº€Ð¤}	ç‘ƒôÅ7ýy€m'$Œñúôúc¯­y »[§ËŽÞØü9÷õõ¥éëúÐic¯1õ÷íÎ3OÓïþ¬þù?…+ ¸<}:ñ×üçÿ ­E¿¤vž‡“œõÛ§ùö£úÐ ©# wÀü{õ½ºö£¯Ëò ÁìS�óëE»ßï ÃtÀëŸëž�3úqïE—õå ƒõ¹ØŸ©<Qdm'°çŒ9#œ“þsG—éø iî;ŒàŽ}ñ�Ï§Ò�»yïýiù€¸=p£Œúÿ Ï×4yj´ñíØòGb>˜íü¨²ûÀ\;ñÀéÛ·O¦sÿ ×¥m¯ó 
xã‘“Ôtç>Ÿ—åéCÛþÜ*qÀwôý?’)Øi‡=ÇÄôÏà1JÚÿ _Õ¿¦†öéÓ·'§Ð¦iÛú@&aÜž¿€Çÿ _ôâ‹wûÄ.ÒOõÎ3éì=ÏéFËúùŒÀñH?ðŽk™éý™vz÷ò_žƒúu?JéÁÿ ½á¿ëô>ë£*ÿ Á«þ	~Lïôœ}‚ß×É‹?÷Âãüý+–¿Äÿ 6i…z/Èå¼wÎ—oÉ kZÆxÿ �Å˜éß×§Õ�þ4¿ëÆ'ÿ LT2¯ð/úùKÿ NDÑÀì?}ºçôÇnµÍ¹¨»{Ž9ë�lcúÑä0Æ06çŒsÆ=ÿ ¨ôühÓÐ w ŽÃÿ ­E¼÷–ñÂ©ðWŒ;Å/â„ãþA7cóÿ '5ëð÷ü�²?ûå½/ÿ 1´O?6ÿ ‘^gÿ bügþ£Ô?Ìn¿ëXÿ Â€?¥oø#?ì9ðƒÆß~'~Ñß´oÃßø«Ãšž�àØüq húÖˆtÛgÓÒç]´�Äv7VÝÚëf§¥%å´fHüÉáJ^Hü®ús} 8× ã®ð¿Âþ%Í²|Ú2ÂãsÉpþeŽÀcþµV8™RËëO+ÄQÄJ�\/	Œ•²Q—%:Ž“Q�EýÅôeð§†óNÏ¸Û�²la�’¯†ËkƒÃb°¾ÂŠ©‹¥m*”cRšðê¬#xóN>Ñ7(¿Â}gàŸÄoiþ4ø·ð¯àÏÅCàŽ•®]Û§‹´ßx§Xð¾ƒke*ÙjÞ(±ÑN‹iq:…Œ“%ÍÅ³¤wvÎñªÏô+Ç¼1‘brâþ9á,7c2ú5^KŠÏòŒo˜Ô“¯_”â1ÿ _­J¤ðØˆÂT©UŒ¥F¬T›§;&âx[:Í(æœEÃü1ŸÖá\>.¤eC*Ì18$R¥%K�¥…ú­9Â5©9*“¦Ò©â”ã¯ÑÏ�
 ÿ Bïø&Â�ø`¿ÙKŒçà×…9Éý�ó�§_Jÿ ™?¥_ü¤wŒŸö]ç?úv'ûCàgüš?ì˜Ë¿ô†~Dÿ Ál?à­Ÿ´¯üã�ìß¡xÁºü'ñì¾!Ô¼W«k6i}wâ­/Ã> }gLÑ®'Ñf]êÊ_Z«yõ9$–æ	šÚ6�b“òl�'Âæt1N¤åí©ò¨(»(Jj§+k›[ò§­´¹öæoŠËká£Nö59œÛWsQtî•ãîµÌÕÓ{®Çô1ð»Ç_Äß‡^ø�£ÝYÞéþ/ðÎ‘®Å=�Ô7¶žmõœR]AöäÅ#ZÝ›‹Iví)4FñÇ"2›«MÒ©:oG	J:«;'£×]UŸÌú:UZp©šœT®�Ö«]|ž‡òáð‹þññÇŸðWoøe�JÛÁKû(ë^$ñ?‚tvÖ}.]b-GIð7‹<K¢x„ëÑé¨/à×5Ëøqt…»�mY%¾]JõîNž¿YW‡iÓÉ¾´½§ÖãÔ”]íiT„e[èã)ó[ÊÊ×>V�T©œ}RJT”¥É[™5NrŒ¹­ª””ckù¦ïcúEý­>9éß³?ìÓñÓãÍò[Nÿ 
¾|Eñæ—§ÜÝÃbšÎµá/kž#ÒtD¸š•YµkÍ*;(BÚ^J^aåÚ]6 ˜ÁáÞ+C�•jÔ©¶•ùc9Æ2–ëdïºõ[ŸK‹®°¸jø‡¯±£R¢MÛšP„¤£ójÛ?Cñ'þ÷ÿ Qý¦?mo‚_µWÆ/�Þðûè¿
|B‹àMKBÒ“@µk¥†{}àE¥ù­ÄPM:Íª‰‰´ù#ki[È÷s¬§€¯„¡Br½h~ñJ\Îëª»ÑyyïßÃÉ³lV:†.µxFÔgû·Ê¬íî½5ÞòÛ·áwÂoø.¿ü/ö›ÔüFß³wÃ3âmžˆë6¡¤ü:ýšµ‰—~µ“ÈX¿µ.|/¦ÞË<“ÆâîÖÑdiQrF}úÙA„QúÕWIËgS©)?%9-¼›<9ö}Šrúµ%UGuO
ê¸¯>Tþö‘ï~ÿ ƒ€ÿ à©²O�<mÿ ý”<G§ø+Å:¤Q$ºÿ ÂÏþÏWz5­îšž$¿ðìÞ!ø}ªÿ ÂMuáûZÆâïMÓÌoæÝið\\Ù�JÞJçŸå8Úsyn.¤Ù«JRiò)rÔ\œÍ;7~¶NÍâ×R1ÂIBoíR–¸¦¹œy©¾gÓiwZ«£û&ø3ñóá¯Æï‚ý |+â-?‡^3ðø×­õË­WOM+OK{»�+U¶¼ÕÚhìcm'Y²¾Ò®ä•à1ÝÚKÑ[Î¯|M|=\=yáç	:°—+ŠNîêé¨êõ‹My3í(b)W¡D%e8ó)6¬µ³N[i$ÓóGá–·ÿ Xý°¿mˆ øÿ ¯ý�lü]ðûÂ—ÒiZ§íOñZ¸‡á�î¿kÔïü?§ZMðöûÃ6Ú%Î‡x¯Ä)&‘üCi³A2ÞûñÊ0X*q«›b\*Í]a)¥íT[²“ýâš÷”–´­î½w·ƒ,Û�©*yNNœž.¤¿täµqKÙ¸»EÅéQüKEÖ={â¯üû>h÷ÿ ¾"|.øûJxCAk:ßÃ�…‰aá�M¤i«&¥w¤èMáïüBÕµ«ëë¦°·ž×BÅu–³½ÚÃ�.ÄÉR¥W…œ­Õ­yÓRz)KšTãž®òÙô°J·a“«R–ûÒ§JÐ¨âµj<±¨äÚÑZ?-l~¨Á?nÿ ‡ß·ÇÁ»ŸˆžÑ/|ã/
j÷^ø«ðÃX¾kÍáÏ‹­/õKEÑ5“q¦èZŒSÞÙi««ÛGÃú4Íe}Gm$;™|¬Ç/©—×T§%8M)Ñ«hÕƒIóFÎJÉ»;JJë{èz¹~>žaEÔ„\'áV”�åNiµË+¨½Rº¼c£Û©÷aQíëžŸ_Ãùu9¯?úÜï`Ï°íïõïôþœP FFáÐÇÔ…`s5Õn<?àßkÖaæ‡á�{WµYck�3Jº¼€H¼å°¦áƒ�H ÕÂ<ÓŒ^Ò”WÞÒdÔ—,'%¼a)/T›?6ÿ à‘?µ÷Å/Ûsö^ñGÆ‹i¢Åâ]3ãßÅ_‡–I¡XÃ§ÙÅáßÏ£&‘�Ái5Ú¥üÂ{’ˆó�¥€Æ+ÓÎpTp¸P¢ß$°ôj>gwÏ>noÉiÐó2|e\vU«ró¬EZk•YrÁ®_�ž¬ýKùU¸ú{õÿ Ã­y/ÖÇ¬&ÞGOqŽúþŸ–sGÏñ¸Àîô?\{çßµ G ã§Ðÿ ?j`G§#Ôqèr)z ›IÁàcÐ}=ûQ¦ÝÀR=Oøúúû~”t·üøa†ÑÀÇóÔ}\gÿ ¯ž´u ÛŽƒ>Þ¿þª _§~žç×Û £î6Œc ÷Ïsëøÿ _­oû<wþžÿ ç¯©§p¾Àò1Ûþ§�Â�ëÔb€9ùG±Àÿ ?ŸÔQçÓ×¨TÀ}(l1ÉÈõçñî(þ»€›}Nx#8ä{ç=º
4]†.Õ'8ü;‘ÿ ë£úê ÀþèôëôúgÛ¶9¢Þ`s‘¾9· |1qòŽ3ÿ [~_\àßZêîþÂãÿ ¦feÿ 1þ¼¿ý-–½ÐW°´ P@  ÖR=¨Íl‚ÿ Â]â¬r>Éáüg¯MW§åõ®ÚŸîXOúù‹üèýæ1þ5oðÒÿ ÛÎŒ¨=€úŸÌtô®U¦Ÿ3ap=åþFŸ|Ð#É~2|eð'À¿ê5ñæ­maciíeh×6Ðßê×Q¢ì²Ó­æ•e»•å’ÞñÎñâ&6ÞŠÞ>wžåÜ?�©�ÌkB•8F\”ÜâªVš_(6œäÛŠ|ŠM9GFÚOç8§Š²~Ê«fÙÎ*�
4ã7J“©ÖÄÔŠV¥Bœ¤¥RNR„_$fâçu¶“ü9ø•ÿ lø±©ê×ËðÇÂú…4„�ã±“Yx|O<öñ�.;™#›EÑÚ¸#íig‘æHÌoÀs_³ŠÕª,§	‡ÁÑRjœ«¸âå(­Út(8ó[›•·Ë~[»\þEÏ¾’ÜIˆÄÖ\?—àòÜ*›�bœ3	Î\ª¤£,.ÁÎÜî—%ù9¥nf|7ÿ ‚·üYÒuK/øY~Ðü_¥n)yý�4�UÑ•gŒÃ¡ë,ÞK�À1æ…Ù½w¥•øÏœÑ«í\GjžÂQÁÊÏí.\=wîïËÖÖºCô—â\6"—öþ[ƒÌð×j¯Õgºi4Òœyp˜¦ù]Ÿ"·5­u{Ÿ·Ÿ~8ü?øùàë/xW³½ŽX-[UÒ’úÖ}OC¼¸�&6z�¤R‹gW2Â†êf–Ky€‰Z)|È8ƒ.â,<v_^œÓŒZ<ð•\<å.J±‹æƒNñ¼ãg{©¦—õ·	q~MÆyU,Ó'ÄÒ«B›Äa•jsÄa*N
^ËN/ž›Oš	Ô…7)BiE8´½Œ¨ë�“ëÓÓ¥{~�úÜú€ c…üÿ [ü÷£æm’0Lû�OóœqGÏúòvŽxÏ3ü½?Î1ÖŽúÛúê0Úßnzc=ºÿ Ÿ|ñGõ°Ñ“ÓŒc§ùüèé}X	´`wäûœ¯¥^ÿ þ¯§¯4h  ïÆ:žxúý1éô£M? hÇlûŸÏŽzñGõ¸°~“ßõôöüó@§¨Ùëþ{}(ÐØ0|õõöÿ &€g§>ùÆ?ÏùÅ 8.à7Ôc¦~¿OËƒCõ°Ä+Ó€2AÇ_~½Æ9ÇëŠ>ˆ…ÀÏ `t÷Ï¯ãÿ ÖÅ G×ü{ôö¦´z{ÿ ^G|Ò�W#°ú¯½°
G¶OåþG·JoëúómÀéÉêo\zž{QÛ_ø?×â´ƒÿ ¯ÇLÿ ‘Cèp3œñì1�ÏŸcùÐmð}Iü¿Ç½ .Þ€/××^¾ßáÔ mðŸŽ}Éõ£úÐãû£§^ùÎ?ÏëÔRùü¿AˆÊ@áUýHA°g§N£¯ó¥ýw6ã©ÏaÇ#8þ_¥pU?¦}ÿ ý~ß…×P= ç§¨öÏOC×§z>0¨Î@õÏ¦{qéíúö£`~îxõÿ õãØûcŠõýu¥G=ºsŽ˜=ôyM¸ç¹Ï<~_××Ö�6ÛúÜc€ƒHõ?Ô‘Š4î§¶|:~có£óûÀ
ƒùþ_ñ£g¿ü (ç<úöíÒ�Æ; :ýôÿ <w£úÓoø#À?_ñþx¡ióžñ`ðŒë¼ÿ »¾ßôÉ¿_zêÁ½áÿ ëô?ô¤c_ø5?Á/Èî4±¶ÆÜçÉˆœûÆ¼×$þ)‰þlÖ?
ô_‘Ëxì�ìËaÔ�kAÇ?âqgÇ§jêÀÿ _õãÿ ¦*Wøý|¥ÿ §"k…ã�=¸9ÏOÈÿ ^�«›~æÁ´q‘È>˜Ï¸Ó=E/E`ƒ€ ÇCžãÿ ÕéŠwïëÿ °zóØã<zcßüâ‹ü€åür€x+ÆÆ?áñ†4›¾ýF=¹ÏN:zü=ÿ #ì“ºÎ2ßýM yù·üŠó/ûã?õ¡þbµÿ ZÇø.t~ð®¯ãŸøoÁž….5ßëzg‡´x$gXæÔµ{Èll£vŽ9dU{‰ãV)ŒùQŽòó¼ãÃù>ižæS•<¿'Àbó,mH¨¹C‚¡<EyEJP‹q§NM)N*ëY%©Û–åøœÛ0Àå˜8©âóU2m)WÄÔ�*Qn*M'9¤Ú‹}“?®ïø(�‹ôŸØ;þ	‡ðëöwðsèÚÏ�!Ó|�%ŒòØE¯øÿ YÔ¥¿Õ.?´•¶¬&´ó£ógŒ\%´I ØŸâÇÑ—$Æ}">–\OâoJž;Ãµ1YÝ±‹ÙÃ<»û+†ð8Xað”þªßÔ1ërK’œ½›«9J·½/ôsÆŒËá'�/å–›Â†[|;ç•ã>½œb«ºÕçíÒúÕ)Óæ\Ò\êQ§¢økþãÿ ø}àí&oØ·ãÞ�§¿€~"ëZ€ðçˆ'Ó´¿ìÑ¨êú¦˜ú‰'°¼ß�ÂËG¾··ÕµÕu$ËgQÝGýôáú5ñ&wŒ‡ŽÞã±1â>Àáži–ÓÅbþ´ðØ,Æ¶.9†WOAËý¡‰¯�ÃÔ«ƒÃG…“„+Êr£/Ê>�1äùn^q~‹Ê3¬Uo©c%GìlN�„Ç5*5R¬ð”ia«BŠÏ])J’Œj.þ
Åÿ «¾ýŸu=[öƒøa÷Á__jºÎ»¢[Ýê×7ž	šì&¬eQ¨Et‡F�Kª<%µ©d†ÖÊ!œ`´kôŸC¦Äœ&Ã_qÃñæ[‡Áàrì}Z8:T3øQrÁ(?«NŒ–:.HÍ,#:¸‰¹×•”Ÿ‘ô†ú?VàêøŽ1áJ1«ÂøÊ¸ŒV/
˜Š•r¹T¶%µí£Q}Y©boŠ”£NŒyiGXŸ‚5þ‹È‡úÁ5”Ø+öQ<ÉðŸ?öîùã8õ<�zÿ ™?¥fŸHïm»ã¬çÿ NÄÿ h|ÿ “Aáßý“wþ�ÏÈŸø9ïöl?¿aÍâæ‘eÏ‰¾x²[á$¾r½·ƒµ‹	uOOE‹½"ð¦œÁdEG š 	?’ð®'ØãåEß“zÍ;Cÿ Kä}�a½¶VŠ¼¨NýtƒWŸþ�„ÿ ‚W~ß¶þÿ ‚"Ü|mñfªoõÿ Ù�Ã¾1Ó¼S}äX½ÌÓø‡TÑã{g6ö%àðö«¦ÁÉ
ÐÂ®þcæYm—sg¾Â´1Rƒ‚ÖÖöqR×‰6NaË‘ûyÊòÂÆ¢“Òï÷’q]ÔZì¶?†ß‡žø¥ðÿ Ã?ÿ nÝFâAá!ûP'ÃèõD–DÕ®<Gà]Àž?Ö�£û,6?b»Ð<Yef¬56Wkˆf´†“Í÷•*R«:øñýWÚZÞê�IT§·º”Ûç}ÂS§Zœ(ãßÁõ¯g}oÍÓ¨úZÎ3K{ùÙÏüïöÔ‡Yÿ ‚Mü¿ðõÔ¶Ÿí“á/øæÔÆ¶ÈßðŒ^øKÁzßŠ4©‘e–%ZÄ›[yÖÙgU ˆ®"$ˆáÜ.qˆRI¬êS{üju#½&úzkÄîl£âìñ°§?ûuÂšùª¶{úŸKÁ+¿føgø"æ‹í„V~4øƒá/ø¿Æ7
g&õ¯>)øÊoÌÆ`€y~»Ñá;xåÁó�ïäåÍ±_YÏWp¥8BV¥uÿ �©?êÇNU†ú¶IÕ§RœüïV|Ÿù#‰ø�ÿ ¸þÐ_¾x‹ö”o‹Ÿ|=à5Ö´]%t³¯O<"ô¥öˆXCä[Ï’¢IÝ�¸qÍ{ÜY†¯ˆ†ØÒ•NY>nT´Ò]Ùáð®"�	b}µHÓæŠ·7]b}Aÿ -þÛß±×ÆOÙÇÀß>øãÂ¿þ/�®½g}áôÐ-îü5>£õÕÓÙÜÛ§‰`XE´vö—É7ö$þ|–~\fã—…ðÚš•ªÓ�*<œ­KOi&¥f’º|¯{µnm.uq>;[N�)Â­n~dã«„W-õÓâ^Oáèdjÿ ~+~Ê?ðkïÁ‹9/µ=Å¼EñáãÍ	†mCIÑ<[ñSö‰ñÞŸ:]^Æ'µ^Òn"¸´cuSÇ.-ÚD§tq|W]ÙJ¡J¦ºEÊ°ÔÞ‹vœš³ÒþdÊ¥\'PWq�YÕ§~ª3«‰¨�ÚÒê)÷Ôþ£ÿ a/Ù·Á¿²¯ì·ðŸà×ƒt}7LµðÇ‡ã‹R¹±ŠC>±ª3˜¦Õ/îîA½¾¼–Ö;w¹»w�¢µ†6$F¸ùL~*¦/Z½FÛœ´OìÇ¢Ih•ï·v}V&•$”c«_j]Ûz·d•ßcëÖ‰Y•“k]ÊÊÀ†VVÊ²�pT‚¤d¸®/Nÿ ×ü9Øyv‰ào„¿,<gâøoÃ_ôÝfëþoêz]‚i¶÷÷–¶âÛû_S[u+$±Ûâ6•cÀ–`Y™Ž²�jî”¥QÅrÁ7ÌÒnü±¿ž¦Q…
rŒcMIóM¥dÚÒìü2Ðà¦¿·í¯âêðN_Ù¿À—Ÿü1¯Üør/ŒŸõ�cÃ«¯ëV}¦£{e§Yø#Iø§dÖ¢ÛR°O,vw-pÓ¤‘ÇE$žü²¬¿,ËQb''G.X¶ÒmÔt�îžš«|íáG4Çã¥'–á©¼<$ãí±”y¤’m%U[U®Ž÷Z•û?ÿ ÁSþ2ø3ö‘ð—ì}ÿ ø+¦üø­ñâ;áO�<s6³ðÃÇ·¢ìÿ ³KÄ2øcÄ6Ú–£}u¢Å§Áiàƒjòjð¬³[&eˆÊ(TÂÏ–×uéS»­N¢å«OKí8Ù%&ïRþïSL>mZ¨`ó
…Z–TªSw¥QíkÉÆWmÆÉSû]¡?à¢?ðSo~ÅŸÃ¿…ømâŸŽ_´§Æ;É,þ|(ð­¶“)Ô|¸ÙëVžÿ ÄÞº¶µ·M±{µ	?âa1gîóå¹\±Ê­Z•c‡ÂÐW«ZNZy$£$Þ�{m¹Ó˜æ‘Á:tiÒ•|MgûºQ¶¾m¹E­\V—Üø+âOüÿ þ
ðwáÿ ˆü]ûcÁ>“À_5ëšV·ã/…:Î©â]{Á’ëÚmæ‡¢ÜxšÃÆº—„4›[[�z÷J³�¬5NHá¾�á†iIŒz²¬ºµHÃ˜º¸ˆÎ2Œ+F0�E)IEÓS•Ôyš¼VÚ´pUÍ34å<f_ìè8Ê2�')ÊÉÆ.Jn	'&“³{õ&ÿ ‚ üYðWÃø%gÆ/�~(ÔßÀ^øõûL|CÖ5R'˜xoÃú^‡â;ù­ãškx$¸m6Îg·Iîmày6¬³Â„ÈP�\Ú�$êTÃái¥ýé9E-›Jï[+öL8~´)e5«ÍÚœ1ª’ÝŠŒ›õ²îÿ ‚‹ÿ ÁP¿m•Ô>"þÃÿ ³'ÂíöxMgX³ðOÄ?�:Þ¿¥jŸì´=Z÷@Ô.mì¼-á‰úu¼K¬iº„p´ÖÎÖÐÃ#¬r¼�¡S,Êp<´ñøªÓÄò§R�ÅÆ“’æZÎt›÷ZÝ=_Ì!™f¸ëÔÀaiGÌÔ*W”“¨¢Ü[J1ª–©ì×è}]ûÿ ÁM¼kñ¿ãwŒÿ cßÚ»á|ýª|§¾¹ý‘¦º^øÅÚŽÜÇuáíRûQƒÄ3ê—W’{{Ï
éV‹i¦4‰póqæU:!�ÂVúÆo•·¥HK]%¹mðÙ©·wØëÀf•+×žGØbà¹¬µ§8÷‹ošûï´ù²›8=öçùôÿ ?Jñ?/ëú×ó=¡6Aì{ÿ ‡4ï§õÜ ÐcÔãútÏ¾iyþŸˆÞØ\ã®F~¿®=hìõþ¿­ R¼`Ÿ\~£¿æ(Vþ®´qÓÛ<}z˜ÿ &‹uÛúó6ŸöqœôÁÆzgç×µ ¥yÀç°çü1Û¿ÓÕ®¬  ž„ž¿€é×üš]<¿­À‘ß×�;zsÓ×Œ�F� 	³œñ×Ž:�OOóô§~ˆ*0Fùÿ >žÝ)[ô×˜Ç#óõb‡úïýLÙ“Ÿsù{qõÿ 9¦¾`@è2{õ'×?ç¶úVÅ\`gŠ^`!_»Èé�ÿ V1œuÎŸP9•ÂøæÔ�3ÿ ÍÆqÇ?Ú¶Ø<s�ÒºŸû„¿ì.?úff?ó¿ëËÿ ÒÑé úW°´ P@  ×8V>Æ€<ãNñVx¯§üyøw¯ºêÜŸJí©®åSùÑ1�ñ«†—þä:b¼€éù}?Zäëøyëçø›Î8¯SœýzcëùsMkfòýÿ )øÙ¬|Gøù®x:;Ëˆ¼3ðæçPðÔZ˜ÒÙµ›JâÃV¾q^f¸m6Ì¨¸‘„&"a†ï»ù;Å,ú¾iÄXŒ
œã…Ë'W7J>Þ�YS­QÚî\þÊ›\ÍòÛÝŒnïþ}xõÅ˜¬÷Œ±y\jÔŽ#�l0÷JF¼èâk5¹ûGB“\íòòû±ƒr¿çíö‹ªé¶šmýýŒö¶zÄWi—…ÞÅk7Ùî’±O˜˜�>`@Î+óz”+R…*•)Ê®¥*2{TP—,œ}%£¹ø­l&'KZµÓ¥ŠŒç‡œ—»V4çÉ7uQŸºïmO¼~~Á~%ø—ð‡ÅŸ<gâ;?‡þÓté®|36¢Óƒ¬M¶Jn.„z]âC¥Oö‹‹+YàžK—ÔáIm¿úAý‡ü<Åf¹.3<Çba–á)R”ð²«Ízò‹‡½;R¨£F\Ò„%9º±åqŒ}åûø9�Ïøg2âœÓK%ËèP•L¾Uý¥ñR„©/iS—V1ÃOžt©Îu"²§oÚÁ<¾3k
hoømui¥ð·�5[êºuªÃqg¨ÞÜÉ¥èWq5ÚE5º[ÞjÒL^Õíä�|èn6G¯sÚù?á°¾Ý¼cZž­(¨Ê�Jµ$èáê.t¥Örn.IûÊVIO‚\UŠá¾7Á`&RË³œM¿Bš„éV¯V¤°ø:±uTgÂ®&Sæ¦éÊi®xÎÑŠþ¦¶.??óŽœÿ úñ_×‘þ‡eñ›Åšß€~ø÷ÆžÒ[[×<3á½GUÓt´
Ææ{h·!Ê¡Kd/u(lƒ-”�|�­F¥jtäùc9¥'Úÿ ç°¤Ú‹kV‘üùþÏ^<ý¶?k†ÿ ~þÞÚ.¦ƒ^´ýž¿á_ü2>Óàx¡Ö ð¯¬§ÁËïÅrYî4›»u½¼O(Í§$àO_K‰¥€ÁÖúµ\¶N‚÷~³íj©»]{HÇÛ¨µ´’Ñtå±ÉR¤y•UÏ¿',mèýÛŸ«?¿n
~ÌþøOá¯�'‰|OñÛÇ>·º¹øwðŽÃEÖu«ÛÍ>kmsW²·ñV·àKA¥&¥qk·™o$sêvqÇcEüŸž]<\«O(CNVUk¹F)=cá�šÉ÷Ùë}úU”¯ÌÖË=í§ùœ…Ÿü_ö]¾øAÆ«kˆMáhþ#Û|+ñšÚ?…¿á!ðoŠï,"Ô­¡ñE ñ¡Ó­-e¶¹°+&Ÿ«jwõ1ö]­#E£É±q¯õvésû'Z2RŸ-H'fàý�Ûº{Å-¢öðåæÖ×åz-ž¿©ôWÄßÚóàïÂ_‹^ø/â›�fOxÿ Ãþ&ñVœt»M6}/Ið÷„´{�wXÕõÛ‹Í^ÆòÚÒ=:ÎòxÚÆÃQfû,ÂEˆ-ËK^µ•áËÉJPƒæm9JmF1�¢Ówkv·)ÔŒd¢÷wztK]Oš´oø+/ì³¬øãOð‘´ø‘¥xWñ{xFø±ªhž‡á~¯âTÔ¥ÒZÂÃU¶ñ½×ˆ]–îÚñXËáxN,îÝÊ‹'SÉq‘ƒ�éJQ‡´tT§íc¹®ãìÔv·Ûêµ%WƒvÕ+Û™¥föµïúX~Ñ_~-üWð6™¤üøÕwðGÄCS·Ôäñ…‡†¼)â‡½ÒÚÎtûØ<cá¿i©ÒMÈš==.”fÌ­Ç…«F�I<Fb!f½›”áï]kzsƒî·ù5)%Ë.WÞÉþiŸ‰ÿ ²ÁB¾;~Ð´Ã}öèÕáÐ¿fOŒ²xõ#øEð6'ñ¦—¢x‚îÒùg’ßá<sÙÿ hÚiÒDd´šÊx�Ã</ŠŽ¾ö7û3†ÂÕŽ]l]h¿ˆýÛ”V½k;7×{u9éûYNiÕÒ·Ãlõû?×‘õoÃÛ�ágìýà¯Œ~0ø½ñ“â�ÅBý£!ø?6¡­ø+áž†<!â]gZøŠ«c§jš?ö�†­ÛÂú„ê»>³=Þâñbã­—ÕÄÔ¡N…
Te<+®”jU—<#Z¾u+OÞM(û·nïE{Uc')¹%>]TU›¿k]iù�aÿ |ý“.uïxVî‰:/‰t].=_EÑ5�ÂP^øúÍÞÍIð:Zøæî;÷�n®Æ¯&ˆ�4­H£³En·9<“hÉ:2„¤Ô¥NÔÝŸñ/M5Óáæz¯;W·†ÚÞ×KMW–¿�¶=Oá¯ü‹öeø™ðWâÇ[}[Ä^ðÇÃAô�hž3°Ñ,<W£êÄA¦™5–‘âsJš�õÊi¶HuµŽKðñÍ$0�9Æ®U‹¥ˆ¥‡å„çUsS”œ$µ»NQŒ¬’oáØj´\®ÒŽ÷µïÛ}Ìï�_ðRßÙßã¿Ä=+á~›¥üFø}âÏZCÁ¶¿´oéøßO2ZGÿ †_Ã¾2ñL×6Óÿ hiÏ½‚ÁÊj6…Ñ�c¬NSŠÃR•g*UaiºRœ�7­Ôù¡=×Ûp�hI¨ê›Úö×m¬ßsåø,çí+ûJþÎ~øuû3ø¾çÃ*ñ‡Å-7@Ôm­|7á>µ¤xïW½ÓÖßÅú»m;hvÓùö‘[Ý/Ù‚%Â$’¬�™	Š–!bà§RsMÊpå’�4�á(·ñ5fÚòêgˆœáËÈìÜ’z'¥ŸtûQ|gý¸4mþ	ÿ 7íqà¨¦ŠOø#ÃòxÒx,^ö|EÕtßø]äµ–æóN’[k_Ó®ä�ç½·u�kÅx¬`“Ž†_)fKS_gR^Ñ¦Òä§NZé%xÁ®�Ó¥Ê¯î½¢ê•½[²üÏ�ÿ a¯ø(†µá_Ø‡OøÅûgø¿Xño�î¾/øÛá½�†‡áÏiÞ"Õõ­7ÅšÖ�§øsJÒ´Ø| Mq¶0é±Iq-¬²ÌÐµÄ¬ÒK*öæ9\g˜{#
J…:­ÊsqŒ\"ÜÜ›©+4ÛÒþ]¥VÔ”ª=\šÙ&ÚoEk+Ÿb|0ÿ ‚™~Î¿t�Š7¶ºwÄ?kÿ |><WãøÏGð½‡�!ðÓ^è6	­YØi2×t©l¤¹ñ.Š¨÷:Í¤„^¡1©àðÖÊ1TeE^”á^\�©NSpæ´Ÿ+r§^Ð—ÙkCEZ›tâ®ÓZÛO?4yv‰ÿ ‘ý�õÝcáÆ›_í4¿‰—öZ6�âÛýÂøcLñü©¿‡µË«ÜêÚ¿›s§#Ea¥êVàê–nœI)‡ydXèÆ«ýË•$äà¥>iAo(ÞšMh÷”_ºô%b)¶–ºé}-~ÛþW=Wãßü·ö|øã}Gáæ§£üIø‰â}AƒÅ,µøa£xWWOxvêÆNÓWñx—Æž’ÞÖîÂI®¡k8¯˜ÅgvY¤b\0ÙN+V.•(ÊNuœãÏ4íËJs»Mk{nŠ•XÅµ«i]ÚÚ}íž<ÿ ‚�þÌŸ¾ øöŽÔu­wVð'ÅZmÁZv…c£Üø£ZÖ-¦ñµÖŸ•þ¿§i?i¶›Âºäs/öÑ Ù8yÚ©å8º¸š˜Uª´cÍRRmAFÑwº‹•Ÿ<~ÏPu ¢§­ž‹kõîü™æ>ÿ ‚ž~Íÿ n|Sð“Â7_¼'ñëá—Ä=vìjZƒ†©àøG<âoêMmŒ5{C¯é6:ÝÍ¥�Žÿ Lžõ-a¹º[Y'–-§”b°ü•æ©N’«J+–U-Sš¤"¬ù"ùdä•ôv»KkÊ¯	{«™>VïeîÙ7®»èp¿?à¢þ|ýŸ¿áhüHø¡ñ*ãã3|@´ð?Œµß	|<Ñ5�R_‡ø-CLÕ4ÿ kú^“ÅÓø×E‹E’Í/d¾–KÃ©Ïdc�î4­•â1ŒK£J�/aì�HFud—µö–iÊ-éìäÝík+'ÑF¬cÞMósY´“n6¿^·Óô>„ý�ÿ à¤_³wí#¨üHÑ¼9sâ¿k_
´çÖü]£üIÓt&þÛÃÉ>�oÿ 	ºxsÄ¾*ŠM&I<A¢˜æžkiÊêv¤Û©g	Ë‰Ê±XEJSP¨«>XJ““N^÷ºùã{Ý–ŠëÝz—Ð“kTâ®Ô­¶�›î�³ÿ ‚ÏþÈw~Ô<W&—ñkMðä:ž‹¤øWÔ<?à˜í|sw­kF�ðkAñw¾ŽÅµˆµAµDÒ-:Öö[t¹¸ŽYú^C�çP½.Y9EJ£tÔT¥ûËÒV¿-—/6­^Êì•ˆ§kûÉik¥­Ý´Ôú7öÍý¥5Ïƒ¿±OÄOÚ#á}…ÕÎ¶ß
u?ø.{‹=6æ}çXðV£®h Ô,/÷J�t)…�ýí¤ñê–Rù2E%®¡nLRòà0±¯�§…¬Ò�¶P¨“k™F¢Œ¢š³÷µI«?4öª“q¦çåºû¯só#àÁý½~!|6ðOíû?~Þøÿ ã½rÐj¾8øM¯xáæ‰à‘¡É5äWÚV—­xkà›ø†=WKÔít=.é£·ÓŠÜkªj2¢E%ï­ˆþÍ¥V¦–ÏJ/–�hÔ«*œÖVn2ÄrÙÅÊKW¥´ÞØÇÚ´¥ªmêãd•½ToùŸ´|Tý´Óà_ÆoÛÄ#Æ¿ü}­ü(øMáMR„	á/‡‘xKÂ·ÇÄ+¯Xj~¹¡aâmEÚòýSTÁ‘aÒ¬üÛd¹¹Ù°£€úÅ}�*p­ZqöþÒ¯<Ôis4ãg¢÷yz½lµ)Ôå•GvÜb½Û+-m¾ç¡~ÎŸðT¿‡ž.ý‘-ÿ hÏ�z?ˆü#w¥éþ·Öm-ôíÁâxŸK¸šÓEð:í¬zŒ·z�…Å•�öÏü#áÚÿ JóBkŸ²cŠÉêSÇ<-	BjNN.ò÷!	+Ê¯ºí£Mòóm.ÊîÔ¡Í+«Zþm®š÷ïn‡Ð_ ¿à¡_ þ>ë^&ðÅ…¯�¾ø¯Â^oj^ø©¥ø{GÖ¦ðp¹Ðí‰ì ðÏŠ|_o&�.<I ÆešêÚãv©kþ�ó6ÎlNW‰ÃF3~Î¬'>E:2”¢§i{�Ê|Ö„¬’kBãV2mjšWÖÛi®�÷_yåžÿ ‚³~Ì?|Iá-"ÏIø§ xwÇºìþðwÄ¿h^´ø}âZ<ê	i§ê:oŽõ]rG¸F‚ÞÜÉáø÷]][¤ž\lóG½L—J“•NœyêR„¦êÆ7µÚtÔz]ûû!*ðm-R–‰»Yþ7üÓÂ AŽzsúò{{s^Fý;Û•äóê?§á�åKÏ§õ°	³�ÈéÇ§àx<Ý8ô§ÔÙÓîûðy½yïGu¨	Ø�Žü{ÿ ŸÇ4}ÿ ðÀ.ÑŒ7× qÿ ×?‡~)m² Ø000zóÛØÿ ú¾¼Óõôþ¼€<±þ{_Çš/ò@.Á×¿àsïŽŸç¡4oýt 
= =óü¿ÏéKUÔ…þ§ç¯¡ÿ ?§›Õ ð£Ûñýnƒñ4­~éØí$��;gÝý_­®¿æ=âÕÇ†5ã�ÿ  »ÏýÞØëÓÛŽ+«®/ÿ éô?ô£*ÿ Á«þ	~Gg¥cìVàtòbë×ýZþ>üú×,þ)‰þlÒ?
ô_‘ÊxìÄ¶××ûoBÆ9ÿ ˜ÅŸùê9®¬ñ¥ÿ ^1?úb¡•�×Ê_úr&þÞœqõÜcµs]Ltü~¿Ï“LBì<cñéŠWþ½ ôàã8Æ{~˜ÁúZ= åür£þ¯qŸø¥¼CÇ È"ìó×¯Ô~5ëðÿ ü�²OûåŸú›CÈàÍ¿äU™ÿ Ø¿ÿ ¨Õó¯úÖ?Ásö“þyû5Oñ£ö´Ó~"jv·ßð‰ü:GŒþÙ­£HüamªÁ«xJÞsqï%½Äš¤'Kh’R±`]Ú¶Òÿ Â_Oï)ð'ƒX®ÂVÃÿ lñ÷×rHáêª²”²J¸:˜,æ­5JtÔjÒŽc…ör«7ÎþÆ²º�ôÿ ÑS�¥Äþ"PÎ±êÿ gp¯Õ³'V›§³(b#ˆË¡.xÍÊ–¿<a+Gø”Ý›Ëÿ ‚Ü~Ò|qý¯µ
hš¥®§á„:^—á]æÎØb»žûJÓüC©K7ÛH2Oiªk:•†ø ·‹d;vHÀÏ'_ÐÂéøà¦8Çá*á3®5ÅâóŒu*ó¡9Ñ§‡ÆbrÜ,)ûÔiÖÂ`p¸žZ•*Ïš¥ù¢¿w¥7ÇŠüHÄåøZôëå¼9B†_…©Jc“«‡£Œ¯){WyN�|MzW„)ÆÑµ¤ý÷ùçû3þÍ¿ÿ j/Šžøgð¯A»Õ5]Nþ/¶ê(Ö–Ú~ƒ§Ã×·º­ýö£uec
YØÙÝÜÇÜ‹‹É [K(nnæ‚Þ_é�¼Rá	8C4â¾/Ìhá0xL4ý†Jµ\Nc‰©(P¡ƒÃaðÔ«â'*øŠôiN¤i{*¨ëW©JŒ*T‡ã\ÀüAÇÜA‚È¸	R¾"½hûZéÓ…©U«ˆ­VµJT¢©Ò¥R¤`çÏVPTéFu%Kú÷ý«þ+|4ý€?à�“þÎ_þ Þ|Iø‘â¿‚ú÷ÃGÕ\ê÷÷×þ]
ea¢èö–úg„´{«ÛM6ÛU–ÒöM*â]JúH.®×üSðsƒø«é!ô›§â	pÕálŸŽòî-Ì1¸8¬6‡Ãgï0¦××ñµªâ³œmŠØª¸8V¡e9·…ÃÆ¥/ýñˆr?üŸgÙÍ\ó;Ì8c�á0Ø‡í«V«[*XI'õ\58PË°Õ*Ñ§F‰SªðóŠUêÊ*/â*âUšây’5‰ešYV$ÈXÖGf®K¨Q’N É=kýó¥N�899¸Bs{ÉÆ)9;$¯&®ôZ½‘þXNJSœ’QR”¤¢¶Šm´–ú-–¬ÿ C/ø&¨?ðÁ²�óF|'õ?¸n3Ó·×Ú¿æWéWÿ )ã'ý—YÊÿ Ê‘?Ùÿ ?äÐxyÿ dÆ]ÿ ¤3Ø?jß‚ðþÐÿ ³OÇ�Ó!fø­ð£Ç¾¶e–Þ!¹ñ_†5M
	£šè5¬RD×Á’K…h�Ò)@E~„¯õlV¿üú­N¥»òMK¦½:§bèýgˆ¡ÿ ?hÔ§Ûã‹�]:õ?ËRÇöŸñßìÙû>þÓ¿°íµ•Õ�‡Ä‹Wóø”\‡WzF’þHÜGq%æŽÎÊåÈ•^6ƒc~®ð´ñXœ.>éºtR�«—7o6·GåkS‡Å`VŠ¥gÏéËå½»lW?àœ²h?ðn…—€£Ò®aø¹àÍÁ¿¯­–m=àÿ „®ëâGÃ]ÆSH^%ð†ä1µ1f�s\\ §ähfj\Hê6�¹ÑO_�R©(%ÿ q&º|–çÖWËyxqS·ï ¡Yíñ:”£?ü§ÿ >‡ó?à¿Š¾+ÿ ‚ˆøßþ	‰ûëdú†“ð£Çžø9"ÃòO‚<s¯üð.«w$÷“Ïcö[-Á©(Ùn¾L{¾Ñ ¤kõ(Ã-§šãbìëS�oû‰N5ê%¦ºÊ}Ï™…Yæ3ÊðRMªU!GN”êJ…6îô²Œô¬øÇáh<û#øƒÁ¶ªVÛÂ_
´O[©db Ð,t­*¹¡Û¢ò€!ì  Wæ&çŒ�G¯=YIÛûÍ·ùŸ¦V‚†Pé
QŠÿ ·RKoCüóàŠ?ðIß…ðS½Wã‡ÄÏüAðL4û½9ü©øoN{Ç»¹Óau½> ðg‹„ˆ«zåD	jAEË7!¿GÏ3z¹R¢éS§QÔnê¢›µ“µ¹gÝ[?;É2š9£¬ªÔ©OÙ¤×³qW»[óB}ü�êö}ÿ ƒ]¿`ßƒþ6Ñ¼wãüqø³yáýOOÔ¬ü)ã|;ºð=ûØ^%êÇ«éúgÂ=Yž9Z¢�ZkÖLaiÕ]ÑãùLOæ©Êœa‡¢¦šs„*{Eum­(õë©õ8~ËèÎ5':õœZj•>Ggy*1—Ý$züqð\øƒþ	kq¤ø;@�t?ƒ?¼'ãE°´h’-Ãžø}ñÂðÍÏ*´‘Z7ˆ¬­V8<ÛŒL
ÆQ\®|3YG5NrnUéÎjR«JOïålÓ‰(se\°�»F¤'eöcu`¾K™#öwöcø«áOŽ?>üTðN£mªøkÆ>‹TÓ/-L«…æ™6<W	Ô€˜n"ŠUVV)µ”ŸJxzõiTMJœ­$÷¿®Ïå¡íajÂ½
U`ïÆéëúë÷žð÷ü9ãñïX3sóOþ
ßâ[ëø&§í­¨xFâÚÿ UÒ~x¼\+¨'ŸL'Oó„²EÂÊ³(ò™ ÃLé&õ‰Ó$zy<SÌð*i¥,D-}/¯OÄó3y5–cœmP�ìõZ~dðGMAÑàšŸ²}Ÿ‡gNo‡÷³	•šYdñgˆŒ�)T�wçäÀ�>U\¯z3—)f˜·=ý¢ÿ Òc°dÑŒrÌ"ŽÞÍÿ ér>ÿ ‚þÙi‘ÚþÀ^$ŽááñÇ‡?kß†ø!beóæëâ÷Á_í�LLZH®žË‰ Ã|Àp¾‡7ÿ 
0µéËUO²J�{uë©ÁÄ*6ÀJö©e/gÿ ƒ¨ßîÓª<Ëà�Œ¿àâo‹÷¾6‹ûFïÂŸ±‚u_Ã…ŽËY½ðwì¥{¨j¶Š@i/bÔ..PI�FæXä�¤*Ë®!òpÝOE<tã+uŠž-$û+%øza×?Öu5pÀÓq¿I8akæßÞÏè¯âí¬_
>&ÛÝE¶óxÆ)4npŽŸð�êƒÈÀ'©ÈÅ|ÕûêVòòÿ À‘ôu•èÕ_ôîúK?ˆÿ Ý_xsþ²ý§£ð¼(WöÂø‘£K ,"ðíÖ½á{-M";ð¨šcÊ«##E™$PTýÕEÍÄø^mo‚¥+¿æå�¯óÿ ‡GÄSn<5ŠPZ}r¤íÖàŸþJ~­~Ìÿ à·ÚìíðCJøSû~Ì:—Ã»O…^Oj“ø·ÃbïTÐ†4ÆÓu=AOíc¦2jz�³Gy©ÄÚfšñ_Íp�§X2›X¼œU†Xšî¶?ªºµ×³ž’çwIýQÝ'¢Õém^ç«…¯žGAQÁa]5JŸ#s�Üy›ÿ k^óZ¿uk}Â|/ý•ÿ à¦ÿ ?à©Ÿ²çí¹ûX|øWð[Ã|âÏjÿ ð¯üIá}A|C¤êžø·c¥Á.ŸkñŸâf°×‰¯üFŠygŠ(->Ëgù(é$Ò±YV)ÅàpxŠµåˆœ&•HÍrµ:.Nî…(ÙÆ›ZëqÒÂæ˜Œ×ŽÅÐ¥BzsƒörƒæN’VUêÊüÕwÛCúMÔ¯­ô½>ûS».×N²¹¿º“Å-í`{‰›j«1ÛlB…,q€	8¯™„\¥­äÔRónËïlúVì›{$Ûù
øSâgíEñ²ÓÄ4ø]Âïx7JÖµ�+Ãv>+Ò<G{ªøžMR¾Ò®L“éþ4Óm­cžïOvˆÝZiøŽâ3¼íwí\6W‚tèâž*¥iÂªéN”aKž1’²•6Ò–¼®[|�>quùçKÙFœe(ÁN2n|­§{TIj´º[�çÄ?�üð£À¾*ñ„´mÆÚçˆâÐüA ÝH5;%–[åYlæÑ¼Asïí­­î#ªÞy~qITH
'6†ÄbëÒ§Vu(B›�:‹ÝnÉn§M=ká�í¦ššT¯V�*r”#ÊJ2‹Õ-^Î2ò]^ÿ w¼|Uñí§Ã ø�Æ×±yë¢éóKmkóµêŒ–‡f7m—Œ ä´±®]xp¸wŠ¯N„tö’IË´~Ó×´nÎŠÕ*r›û)Ùw}ÍŸ!^|Aý°ôÿ Çñ¢M3á4þþÈ_ÍàXôÝy|A…§µœ2i7Ä¤6¤Ú‘…Ub³Ü�ö*U£�×X|žX�©)bÕNd«óSö~Õ>[r}_Ÿ—šýuKGß‰ÕÆª~Ýª<¼¼ÞÍ)srZûû[7k}û�ãÚT´ðßÀ?ø6ÏIŸNø«ãi¼?©¦­opÖöþñ=ìÿ aû-þŸåÜ¦¥¡¤aîVê˜,Å&^zt]\}*Òš–‚œyUäêRKšñ–Ž5:Y§×tk<L”0ó¦“Uª8»¦ôQ›ÒÍkxõº·Þvþ+ø©âö�øWðªÎÏImÆÚOŒu^îâÆÕ¡—AÐ§Ô¬–Âhïâ´Š7¸„-À¸ÓîÝá%bh_çQÂÓž_ŠÅJRö”'F0I®FªTQ—2q»v}$µÜÒu¥M)G–¤fäÝù½ØÝ[[zèôìx=·ÅßÚ‹Æž,øª¿t¿„÷ºGÃ½dhöú»¤ø�k:¹&ý#j?ðžhúD76˜áfš(`V™YÐ(jïxL®…/Ö§‹Œñçu!*|�øoxû	É¥Í²»²9ý¶*¤ë{EªråQ’—4·ëí#{i}¦¾üV³øËà;ÅÐY�6ùå»±Öt–ÜN™©Ù]Mo-±“2E*ºEÄmó§—2©•™[f;
ðuåIËš6R„ÿ š2I§ß­�ÒÛc«[ÛÓSµžªQì×Oé³Ø67°üÂ¹„ÛíÐä“íéÐôüý©—æ ÛÐ{g¨íÐyïéGõý|À
œtöÁ9ãòÇ¯¥0iÿ õ‡×Ÿ×‡LRïø€»=üÇ#òã/�ÄÛ×Ž;~~ƒž~Ÿã@„Ú}3×§L�óŽÞÆ˜ñ·á†þ<h¾*øAãísMð×Ž¼	&•«^ønæÆÏ\··‹Äzf ­§\êšf±aþu”JÍs¦]ÇåF«¯Ûp7f~gÙ/dÔ0œÓ!Íž/C3¥ˆ­€©RxN¬M,.+ˆœ9+Í¥KF\ê-É¤âü¼Ë/£šÑÄeø‰U…VÙÔ•ÕIV„ýÉN �â¾(IZúu;�|ð§Ãß�Ú7ÀPñ×ƒ´?OðúÓRÔîôÙüK&‹q§\i¯uqyi¤Ùio©ˆ.duš-+A(F6L€ÆØgüs›qã|BÆáòêYÖ??§ÄU°¸Z8˜eqÆÓÄÓÅF•:5±uñk
êRŠp–6u¹Jº•¤µÂå´0™e<ªœêËK
ð‘œåYÓppær�8ÃžÍê©¨ßìÛCä?Ù›þ	�ðöTø¥iñsáç‹¾/ë>$³Ñu�
+/ëþÔtF´ÖáŽ¹$¶ÐüáÛósF¦Ý×RX‘‰2C(À±ø¡ô§ñÅ®­ÁüG“ðn,­ŽÁcç_$Ëó¼69VÀÎU(Æ5qÜC™aÕ)95Q<+“Våœ§Ïä¼•dXèãð˜ŒÂ¥hÓ©IGW:\µRmRÂQ•Õ´÷íÝ3´ý­àŸ_l¯xGÄßüMñ;B¿ðf‹{¡ipøYð®—i=¥ýðÔ&’þ?ø/ÅKr³ ±½½Å¬B/•¡wùëÄðƒéÆ¾
å¹ÆWÂÙ_cðùÞ:†?> ÁfØªÔëaè<<#‡–]�åP…'y*”êÉËU8¯téÏ¸O.â*ØzØÚØÚRÃS•(,-J‹ŒåÎÜÕ\5vÝö³Š·G¹ôÃÏ�~økð/HýŸt-GÄw~Ñ|¨x×SÕ®ôÉüO&‘©[ÞÛOqq{g¤XiO¨¤wó¦�EŠÙ]c/g ¯ùßñîqÄü{Œñ†ËhçxìïŸUÂàèâ©åqÆaªP«N�:±˜ŒZÃ9aà§	c§U§.ZÑm8úØL³ƒË)å4§ZXzxiác:’ƒ¬éÍJ-¹FœaÏi;5MGouŸ$þÌßðL€_²§Å+O‹Ÿ<]ñYñ%ž‹¬hQYxÏ_ð^£¢5¦·p]É%¶‡àß›˜Ò56îº’ÄŒI’F ýÅ¥?ˆ>-p¥nâ<ŸƒpYelv:ù&_�á±Ê¶r©F1«ŽâË©IÉª‰á\š·,àõ<—‚²¬‹~˜T­u)(âjá§K–¢JMªXJ2º¶žý»¦vŸµ¯üëàÏí•â/ø›â‰¾'hWþÑot-.ë>Òí'´¿¾„Ò_Çâø¢inV`7·¸µˆEò´.ÿ =xž}"x×Á\·8Êø[+ál~;ÇPÇâ§Ä,ÛZ�l=‡„pòË³¼ª¤àï%R�Y9j§î�9÷	åÜE[[[JXjr¥…©Bqœ¹Ûš«†®Û¾ÖqVè÷>�ø}ð/Â_>i?³ö…¨øŽïÁº/‚µÚêzµÞ™?‰äÒ5+{ëiî./lô‹)õŽþcÑè±[+¬eíWüëˆø÷8â~=Æx‰�Ãe´s¬vw‡ÏªáptqTò¸ã0Õ(U§N�
ØÌF-aœ°ðS„±³ªÓ•«E´ãêá2¼>+§”Ò�ia©á§…ŒêJ»§5(¶åq§Ïi»5MGouõòÙWöoðGì¯á¿|%ø{ªø¯YðÝ�õ®¹÷Œï´�C[7zÔšœ×QÉs¢h~±6ñ´J-ÑtÔ•‘$Ò’öüSñ/=ñc>¥ÅüG„ÊpY�|4p¡’ÐÆað*Ž4áJQ¥ŽÇæX…RJMÔ“Ä¸·nXAhräy>#¡S„©^¥Ê5T±2§:¼Õ9Ü“•*TcÊ­¢ä¿vÏªÀÉ ç=ùü²1ÿ êï_˜ú~'¸&Óžƒ�óÛž¥1È·í·áMSÁµ?Åç¾ŠXd×¼yâ_Øv%–¹âMVòÎTòÏú·UÊ«(8¿ŒxóWÅÙ×:qxŒÇŽ§{;ÓÄb«T§%n�m}{Ÿæ—‹9u|«ÄN&uc(¼fq�Í(ó4ù¨âñØŠ´¤¹~ËKDýå×Sôÿ öuý¢¿gOÚká^ƒð÷öŽÓü9¤kÿ 	¬-µ[E¹·Õ!Ó5=3DiP]Z¼£UF¸ŽËP²[Û%¼[ëË¹'¸°´ŽÒ)c‡õŽânâ¬£–ñE<5FON`¥±¥V•Ñ�H7í“š…Jj¥5?i9¹JœQþ€à~9à~>áÜGÇT08lgÑ§^’œ1Ãâ0øE,<*SrX„ê*Ui*´UUZ­YNti*Q”cð¯í¯ûjê´©ÿ G‚ñ¤|#ÐþÏŸe7�\ëS[K,¢òùnæ�ZH8Å…”�¬¢s”ûÿ ŸqßUâ:¿PÀZŽM‡åT¡ÔŒ«Ê-ËÚTS{]Å%ìé»Átßò/üWÄq¥ìœªØnÂ8Æ�(Â¬'‹œ%){ZÞÖ
n
)Q¥+ÒOU¿†~ÇÞÔ<gûIü²Óíî.Iñ÷…<Op-Ìjc³ðæ¿¦ê÷RÈÒ‚¢àµw�HÈ¤Góâ¼
ÁTÇqFIN”e'G1Áâ¥Ëm!…ÄR­&ï¥”`Û[´�µ>CÃ²¾kÇ|1J„'7†ÎrìÂj÷i`q´15%.m9T)·$½æ“åÔþÂ '�®09àô9Ï?¥j÷±þœœ_ÄMGÄÚ/�¼Q¬x;F¶ñ‰´í"æóHÐîÝ#·Ôî ÞÎG’ûL@e·ˆ÷_[.Á½²ô¤¡*�U„’r[¥ÝhúùlövÜþVhÍoö@ý¡¼â­SöBø‘ðÏööÖS–Å|ðïÇ++|`¸A>“}wã{¿
øŸÀ'A>8�»ÝCV_i¸›Z†"¾_¯ÂÇ†©±´keÑjüõiÛØ-$½šœ*s{>œŽïN^‡½œ“|Ž5,íh¿‰í­šßÌö¯üBý¦~ë?³oÂßÚcÆß~|?�à|÷_>ø{Rñ¯Ä­OÆbãÁï¤øBþãÂ^øÑ¦ØÙC¤jÚJo<dçÃÚy]R0CRÂVŽ*®1^#J™*t•;OšiNt$ï%ª?‰éÕW4×$fåËñGY7¥–ÒóéÐÈý“f-ã—Áø(—Ã}~ÓâÕÄÞ0ø�¤k~ñgÅx¬añöµ6ƒá¿„õ¦§qªGá¯è·¢M§#Ùè6©�û‘Ç¨A,¡ãqpÃâ2Ê±tW³¥(ÎnéÇšUâãniÉ/y=e¾»;
s�Tùµz9o¢‹ík–e/„Ÿlï~Ðß>%x'Äþø™áßÙN?Ù»áî‘¬Ã†šÏŽ4Ÿ
|G°ñTðÇ®K$¢ÇÄQøÏHÓ­uÔ,ô èî÷ÒEíŒ¯‡ÀÔÃP¥R)KõªŽ-Ë–›�'òõ‡³“jÍùlŒª)É¦š‡"õ÷¿;Ÿ7x;áïƒügðÀ¿²wÄ�ÁJ|_ñ>ÃÄx3Ä?³O„õ/‡þøs¢j:eÆ£ M¬hß<iû9Ý|<Ã,¡-Oü-QÍž­ÂîX`¹ž>ª•gOSJžU
N<ë5Rud�¥iS§ŠUy»þék¯df’pP“¬ÞÎ	¥ü›…­ÿ ou?¯X.�áýNX®`KL³Hnæ·žîµ²‚ŠêkUKi®c…š[dX$”3Ä«P>*m¹IèÛ“z]-]ô¾¿~½ÏAl½Çïø&ÿ …üK¢~×?ðS=GXðö·¤iúçí'â‹Ýÿ RÒ¯ì,µ‹)<I®È—z]ÕÜÁ¨[:HŽ·�4NŒ¬‚3íæ“„°YRRŒœp°RI¦âùc£Jöwïc
)ûJÚZóÒë}õô?'¾-ü3ø�yð+ö�°O øÆêkÿ ø)÷…5»{8ü/®K=æ„ž(ý¢]bÞìL“i(—–nú„JÖŠ—vÎÓ<EýŠ©¬FûH+e‹|ñ²—&Ýzé-›èô0qn2ÑÝÖ]<ç¯õÜý_ø«àýrçþ
�ûø–ëF‘û8½…î¹•&—¥ÝCÇ�ö;ÝJ8ÊÒä¬ñŸ"âhåÛ4gaÞ¹ñèÎ+(ÇGš7x«¨Ý&Õ©ê“wkNÝ¤Ÿ·¦í¢†öÓ®‡æ§ÇÙÏâÿ Ä[ßø)-Çƒ¼+ãx_Jýª|?ñWF·ƒEÕõ¿øgâÔ~'Öµ¯_øŠßû3QÕt­GºÔô�²Ãª‹ÄµH4ÝJIc³›ÕÃâ¨ÒYZœéûØ9R÷Ÿ4T§C’1š‹ºR”¬ïm/ªÝe(IªÖOø—ìÝ¥{¦ü�Tø#á�…_ÿ hÙ2ëMøƒÿ øíâŸ„Zÿ ƒ|cyÿ CQð‚~ü Ôü3­xRþïJ×añŸìãðëPñ~…í“-í�€¼G¨jWz~‹4Z~ ..lç—DëaðØÄéåxxW�H~åT©V²œf“�³ÅUP“OGR	'%udìáiÊÕ“‹OÞi(ÚÛÞ
úözÛÐûÏþ
aáM{Äß¿a�ì�ZÖ,¬¿h8eÖ.4½6öþ7O—áwÅû7¹Ô&µ·š;+6êMÅÉH|Ûˆc'|¨­çeS„(æ”c'†i)4®ÕjÉ6®÷v]�k+Ê–ÿ ëuîËð>ðì¿ñv/Ú­¿cMsÁcöZøñâOÇïxŠú×Ï›Qð¾½àÉ4?†^‡Uµ½þÈ�´?ü0²ÕF™…o«[6¥ö‹¤†ÚêÎHý*˜º?SXèÔ_[ÄÒ¥†©ì”ãSš¬ùZæ÷©ÖjîN/–ËTÌ”%í=›^ä\¤Ÿ•­{ôk·ÜrÄ¿´/Áÿ €ZDžÒ|}à j·íyñ_â'…|1®]|Gð7„®~:k6"ð®�ma¬êWÖ·Îµ«ÇqkàÅpúvšÐÅ‰£·Ô4QÂ×Äµ9S©UeØeF”çeRkã7x¤Ô”c­HZîýÒ÷ãKÚNín—6ë®×{;Øò­Â¾7ñOí	ûUø×JÔ?iO‹~ñoìq{oá‰?´G“Ä¾)¸ƒâ‡Áèn¬¬ì´ï‡Ÿ¯tµ´»Ó5[;=#YðÍž­=Ž—ý£]iïìúÊtá†ÁÓk	FpÇ.zXy{�N�}]êÔNñ’nQ›�Ý�žŠR“œÚçiÓÒRÝë‰+uÑ£ëŠ?<RßðFoØÓÃÖ~ñ$ž'ÓÇìÛs©è0h:´šå…Å¿Å¿‡jR_i)h×Ö�mim$·~|ùA$’lHäaÇF¬?·qÓu"¢þ´”¹£ÊÓ£VÖ•ìõÑYîìhÓXzjÚû�ó-Î'Ç_þ0ß|Rø³ðÏã/Žÿ i_�VÖ_<¤üð¿ìÙá�QÓãw^Ô-d°ñŸŠ/þübðž‹9)á›ifÖ5[ØOâQ¯¼¨íç^”éPThÕ¡O	ˆ½Z’ÄO5û‹M>jpUhNV¼þRê¶¶ºnMµ'8û¾ê‚ø´µ›´­Ó±ó—Âü@ø)ðsöý¦üMàx‡Ãþ.|Fµñ�õA�Ö-WÅ_î-üF4žµ«_yz•”R�GºY’úK¸,ÖÛ/Uz”ñó$*SŒ«Ð¤áQ?ÝÞ0Ã§k¸¥£øšµ­{èâ)Æ4¦Ój2k•èõæwµµ>Šø‘ñn×ö†ÿ ‚˜¯�|'àßèÚ>¡û
|VÒt!®i:ž™¯x‡ÃOÚR[[èü;ªYiÞ ÓÒùµíí¬5="ÒüÜÅ,&åTrR£õ\«ÙÎ¤%%˜Qo–JQ�«a4æ‹qvåÝI«)sVºM~êZ[voc‚ø_ðçÇI«Áß�|Z‰áo‹Ÿ®üBfðÖµøz9|Yû(Ëgu­—³_ì¨§]>ú[yoþÏËevÑ–[iŠkZ­>\öÕ!ïÑÃ¨ûñ÷Ÿ&55}íÒÒúµÜQOýžé«J]xZÿ wSßj�¾1ÁB¿o?
øSEÕ,?áaÿ Á?u?	xkÅ7¶�¦xj]v_~ÉW	cˆõO±h+wåi:‹y2ê(ÀY]œ£Ë·›	ˆ¥C,Ë§9'ì³(ÎpNóåäÆêãÊÞòÖÝWr§*ÕRëJÉôÞ~]Ï–þ<~ÕZ_Šà™^ý›¬~x×Ãž+ð>©ðcFñ­Î¡áíoOðÇƒ¿³þ6ü?Õín4¯ßØCáïE«]¬:,iá�oÄ/·fiü«tycìÃàåÚ¦-×„áQW•;N.s¾¤ZqOš6^÷¿m¦¤N¥è¨Ù¦œSÓEi'¾Ï¶‡ô!âÏüAðì3áo|;ø{gñ?_ÑþxBê÷Àšƒ$c^Ð­~ÛÏ®i°¬ºÖ€^öîÖ²¶„_y�5ÀD·™ŽÚù¨B•LÂp«UÑŒ±¨¾Ì½­¢ß»-×o™Õv©&—3äZwÓ^Çó�ûNèÿ ³íáO7ìuû,üRøgûmj)²¿º‡ÃÞñW‚-t{ø4­vÃU—_ñwÄ?
Zx2ûGmMô‰U4ÏGq+Oa<7rÁkzÕõIbðÓ—×±”jà\õ!S™7XR›¨¥noŠ�·êÑÉ>I¥ìá%Q¾‰®û¶­o™÷†>üVÖ?koø)�®¥á­fëVñ/ì¯£XXjÇK»´Ò5íbÓÇž&Ô'³Ò5;Âº}í×ÙÈ·¿šB0ôÏ�j+”µ8¨Ã&ãtåºpIÉ-Ró²5J^Ò¶—nŸÉ»³ä‹ÿ xãâ_ìAû_øwIøÓá;ßØ‡Çß›ã|>ðõÿ ‡>!øvÂÒóáÛk-øx|YáKû?ëþ
‹á_‰õ=_h¾7·“R]1ÓJÖ"¾±´Ô;TéÒÌ1êr¡5˜S«õ~y©R›µ^XUäšq�OmÉNTÝ¹½èÙµ�›¥OI/g%Íeg£WjëV¬Þ—OCê�ƒ>ø[ñ×ö‚‹âw…uOø(/íW{à„Ú½œ¾$øçâ†¾ðµµ­÷‰|{ððh^4øðÅ�åÆ¤#¾ûv—<Úg—¢^�´šØ×z•°ØgJk-Áª•¢Ôpñ«Rm¨M*¼Ôñ5à’ZYûÞòÐ¸¨ÎiþövŽò²[­,áÿ |ÍðÅ~&øY­~Î¿ÿ co~Óºá>3´‹Æ?²çíà¿]økáÖ‘,&-rêh?
þøîm7A‚]ON–ÇÇ:ÄSjšm´Ã,Ñi·uáÑÅUÇSÂG÷o“…©:²¿¸½œ«Vª¹¤ìïN>ëoMÈ�×$i¹½u„Ö‘]uQŠÛÍŸÖöÏÄýG>¸ãùú×Å¯‘Þqž1Ç·OONzñ Bm9õëÓÔ�>ŸÒ˜Ò=³ØgùãÙ=;Ð´ã§æ}:qÇ>ô®†)L9ÿ �BiÇ¯§¦?_ÿ _¥ ÚFx<ztÏlqØÿ U 8¨÷õÀÎy÷äŸÆ�Q�Û’pÿ â9ç4ÄO@;tÈÿ ë
 6Lu÷þ^´®€P2yÏ#×§×ŽAéÁã¿¥Ÿðs~/B</¯ôÿ �]ß~Â&útÿ "º°_ïxúûÍ×þ_ðKò:í'þ<mùÏîbÇ§Ü:Ï½rOâ—øŸæÍcð¯Eù·ŽOüK­O:îƒ�ü<k]}}}««üiØ>'ÿ LT2¯ð/úùKÿ NDé‚òA�Ûž{t®mÆÂc~cÔ~^œÑm@]½yàcñ÷ÓÖ–«çø ˜8Ï¾1þÏáNúˆåür¿ñExÇ¨?ð‹xƒŽ	#û&ó¡ïý9ô¯_‡ïý¿’Øß-ÛþÃhýÇmÿ "¬ÏþÅøÏýF¨˜EÖ±þŸÖßüŸÆŸÿ cø%÷Äï�¾<ðiø›âíÅ:¿Ø[Ä¦¡â�éþ+¼ð†…¯ö…Åìš�›QºÓÒ"K¹'°Ùy„Â?Æ/¤öCÆž:ý-xOÃº¼;žª™.c”`¾°²ÜÂ¶”f¸œž‡f®·Õ©ÐŽÃK*žÒ4cM§<G-ªè¯‚¹Ÿxcà.{Å´ó|³ûw1Âf—Iã0”ëVÌ04s
¹FSöÓªë©W©EC–U%;¨Ò½â(ž,ñÿ ‹¼Oâê—Wúþ¯¨j·3ÝO-ÌÌ÷·2N¦˜™DŽ±G»cDE
ª±y6Y†Érœ·)ÂR§G—`°Ø:TéS…*j4)F›jœŒ\å9[yJRm¶Ûÿ =³mlÇŒÇâ':•±˜šØŠ’©9NW«9JÎRÕ¨¦£í’I$�ÝØ#þ
Yû6~Å?²oŽtÝá›_~Ôšž­vtÝKû2Ú8µÛ;�7ÃÚ}�Î§ã1áÛË›];Fº]sWƒÃ3‹ËiåI­ãº´}b[¨¿ÏŸ¤_Ñ[Å?|eáüV?ŠÖÂ<&ŠÅa~·VSËëÒÅfxœE,&Dó:ªâ±Ô^_‚©šÓt*Ó„¡VT«G
3þ±ð‹Ç.ð»Ã¼Ö†"uxú¾"§±¯ì)Æ8ºs¡ƒ£Juó5‚©8PÃTX¬L03Ua))AT¦ñ2©ÇïÚö†ø§ûM|GÖ¾'|Xñ6¥â{V¼»žÞ«ûë­;D´¸›|z^‰iwq<Zf�k
ÛÚÁid–öéokmp¤pÆ‰ý³á·†|!áGà8Oƒr¬.Y—`¨Q§R¥6Ž'Z”9e‹ÇÖ£JœñXšÓu+T­^U*Ê­j³”å)ÊRþlã3Ïøë;ÅgÜCŽ¯ŒÅâjÔœ!RµZ”p´ç+Ç…§Rs�
4â¡Né(ABœ"¢”b—ˆWßŸ*¡÷üMã?dóÛþÏ„ÿ ?³¹à}yÏøWüÉ}*ÿ å#¼dÿ ²ï9ÿ Ó±?Ú?äÐxyÿ dÆ]ÿ ¤3î"¾ÙêüŸë_ÏË_ÃÏþý\þÿ ooø!Ÿíñ[þ
Å®ß|4øe¬Ü~Î?üAáŸ?�í<)ªÏàÿ 	YÃà¯èúü:Þ¯kký�äþ'±Ôï…µæ¡¦ÈÖó‰Ù\#þƒ—çØj9DUZ±Xš1œ}›©R¼”£ÊŸ½e•Òz£àqù&®m'J“xjÒŒ¹Ô$$T¹š\©ó&ìÚÐþâ>$ü9Ñ<oð§Ç?Æ•¥&�âŸx‹Âðé†ÆÍt»ím*îÒÔ¥‰�m#·sEu	TAÑ¤ÈRDWJ¬©Õ§W™¹Bp•îÛ|²O}õZ>û3îjÓŒéT¥eiÂQµ••ÓKM´zŸÇ¿ü³þÃñãöjÿ ‚‘üKø§ñ£áÍÖ“ð£àæµãM+ánµ«é£Oñg�âz?ø›@»Ô¬ã²ºþÏ‡Ãš.©Þ—6£ä.©g4W‘y°M?ÚgYÞ–R£B¢u«Æ¬T•áîÇžIß^yE§kò´Öèøì—%¯†ÌªÕ¯MªTe5JR‹´½érJ-«;rÅÝ7k­v?¯�Ž~Õükð“ÇžÐ!ŽçX×4)l´è¥“ÉŠK†ž	¼›_bí�²vžF+ã0óŒ+S”Ÿ*RÖÝ«M�°¯N�HE^R�‘üÃÿ Á³_±'í;û*ß~ÒzÇíð“Æ
íµéí<5¡Ããox‹Â÷šÅÞž¾Ô¦Ô4«Oé\ºŽ‰$S½½¾­f&´žöËP´ŽC-”ê¿UÅ8ì.-a–´*¸§9:rŒìŸ:³å“³Òö{&ŸSåøcŠÂ<KÄQ�.f£xÊ.Mr;®h«Ç³Z]5ºgõŸ·ž�ýzãðý¾•òõ>¸ó¿‹
¼ñ·áçŠ¾üKÐ,|Oài�¤x‹BÔmm/,õ$ŽV†[{Ø.­œ�Oï`”qÓœÖ”jÔ¡RiIÂ¤ã%tÓ×ª³ëäeV”+Ó�*±R„×,¢ìÓ_;£ù«øwðWþ
Ÿÿ ‚ºÔ~~Î~¸ýºÿ dÖ/5Ï	x][\ð÷Ä?
-Þ�i£Â;¤Ko¤üiÔtýÌhú^±oke¥YY›«ý\Gg³ÜÝKôõ+å9ÊU1U>¡ŒåQœíS�›—4µ œ�Ü[roHëd‘óT¨f¹;tðÔÞ?Ìå^Q©¥XÙWj+•JÊ)]ËD{6©ÿ ÿ ‚¹ü~²ÿ …uðSþ	YãOÙÓÆšõ“ÙÇñCã'�¼e/„¼+w¨À-"¾’ßÄß³o�´í@i2½ã)ñ™ö„· Íh%ó#Åe™>ûZù½<L"ïì¨BŸ<ÔujðÅTk™ið½Íže›â³¡”ÔÃNJÞÖµIòA½/ïa©§mþ%ò>Ýý�?àŸ4øqû5üaøaû]|hñWíãOÚbî÷Xø¿'ŠnµmCÃú0½ûušxOÂ:oˆ<Yã[K-ËF“N°0ØÏgcy5‰¼û¹”A71…\M
¸*0ÃCeEG•IÚÏžn0¦Üœ®îÓjö¿~ì_:xjÔ±•§‰ž)¹VçmÆ7ºä‚”æ”Tl´i;^ÝËß€¾2ÿ ‚”ÿ Á!t›ïÙ}¿cß‰_·¿À]
öòûá/Äo…²øÛJÔü? êF3ƒ{áŸü3øÖ-E¾«k©ÎöcÄ¶©ZÄz‰µ@qsêâ!–g-bþ»K/Ä5jÔ«{6¥%¼”¥V…ôkì¿†×<º3<ž/õ*¸ü<[tjRçN1eÂ4«ZÍ7neñ^Ýúÿ üý¶?à«µ�À_�ßµ¯À½sö?ýœ?eŸYxÿ À_<U}®x‹Äþ6ñªêÚ'ˆá¾ñ ð§Â‰á³´Ô<ádHo<)­V»¿Û"6õ–'ˆÀå8<F^8ÜN..�ZðåŒ!NÒ�¢ã:×mTžÓ�ì´.41Ù¶/ˆÅÐ–„š©N„Ü§*“æŒ¯%(RvNÑÁÚìúþ
1û~Ò^ý¥þÿ ÁF¿a­6?|YðG‡¤ð'ÅƒVv÷]ÇÅ/ ¼~»K;}sJ¥Ö,�ÃïéQx}üâ®Öä\£Aýž–Óóå˜Ü5L-\³Ü(Ô“©J³wTj{ÊövW~ÒRæçŽÖêtf8<M<M<Ë¹«B>Î­uíiÚ.×�ÞžÎ+—’W¿•�øŸÿ ÿ ‚¤~Ó~×þ|ÿ ‚\ü^ýŸüsã›áËï‹ŸõŸˆQø?ÁÚ}äÐ�vöÚ=wöyð^›¯µÖˆ·ÖÊž&ÑŒ7WñÌ³HÖžEÆô²ì§	R8ŠÙ­M:o™Q¥|ókáWŽ&n6•ŸÀô[k¦s×NT(eU°õ*.WZ¬ª(A?‰®l<¯¥ï-_]ŸÚ_à”þøuÿ Ä×`Ÿk¶ºî©ãïxšãÅÞ0:»GiñgÆ^¶Òu¦›&³z5IôÏÀšÔr¶·oszñ(…¬…n—ƒ›Î®kÂåTªABÎîŒ'Ì¡~UËÍwá²¾Ïc»•BžVð’“©N\óåÿ —³‚‹�¹µjK›âMÛ{ê~xþÏßÿ à¬?ðLïAû/øçöñÏí¹à \jz_Ã?Šÿ <cã(ï§ð¼ú­æ­¢[k0è>.2ý“IÔmtÈ¬åñ<©¢.šºTCd+>ž"†QšTxªxúx
•,êÒ«[™%8óV£»Mß“Þ½üß›‡¯›e�XZ˜
˜êtÛTªÒœîâÛqRå£[dì—7»ky/Ñ_Ø×â—ü÷ãçÆû¯‰´Â_~Ë³Jh¦“ðWó|eñ'XÖóqmâOÃµo$r][Ýî—Â—þ|z[Z|‹~fµóq´r¬=OZx¼W6µ£îRQòJuc-­¤Ö®ý5ô°usLEwSF8\//»F^ýYKÎN4ÜV·øÒ·]?X|A¤.½ kºJ`Æ�©i&mža„j6SÚvoŒ8�Î/·znÆ7®r<ŠrtêS�¯É8ÎÛ_–IÚþv=i.hÊ;sEÆûÚê×??>üIñ—ìïá�WáWŠþüUñæ�âO_xo\ðw‚|U®èÞ#³×5ýOV´kÓ|=yka$P^ZC.Ë½@ù†]Ê�CôÌ5Â¬1T±¸XFtéF¥:Õ©Btœ)ÆÊU’ºmiÎ£Vxh:3¡ZMJn2…9J2æ“kU–êú³¡ý£¥ø“ñà_‚üI7Â¿Ùø–ÛÅ–º¶¥à_[êþ0×lì ’úÚ6h,t@Ë$^EÄ‘6•@&ÚKmÞÙå«‡ÇV¦±tÝ7EÂ5ê¸Ñƒ“Qoâ©%½ÕùŠÄº•0ðŸ±—2šnœT§$µ]"Ÿ›÷N‡Æ¾'Öi_†|¥ü2ø�à}b6ÏSÒ&ñÿ �|Ká»SP²–mBÖÊÖã[Ò´¸¥•§°Š'¼ï\BLL]ó£Jn+^Xœ=x9J3XzôêÊ1’Qm¨NM+Iµ{^Ï]íU&ñTªSTªÓ•¯iNPM§t“’Jîß‰ç:ŸÆ¯ˆßàõ¯À‹Kñø:ßÀO$žñhð¤W6ÚJèßÛÇÄ§Â¿am6I¡†íAE·÷¾ÚÉ™'DpXxã~·,~êÞÝ×_¾¥íZrçö~ËÚósYµ½î¾lfëÔt=ŠÃVöœŠŸÁ>M¹¹¹-oÑî]ø—ð�ÆþøðßCðõÿ ‹u?ƒ¾0›ÄÚÖƒ ÙÝÝê—Öš��Š,¦�N³°·Ôn¦šÚoÇ,‰´ìÉÅ–1¹ãXl]Øì{�HÑŽ2Š§
•Œbã*RNRn)&©[V·^�Õ£8PÃòÅÍÐŸ3ŒSm¦¤�’MéÍØÛðÞ«â�?´×ÃßˆºoÃÏøCÂ?<=âk]GQñç„õÿ 
5ýï‰4=GM†ßM‹ZÓl–ëì²¬rÖóLQncó#Œ/�HSÁå¸Œ4±zÕ±)¸Æ…ZuTcN¤ey8JV¾¶º[=õe*øªuU:°…8Í7R…Ü¢ÖœÉ.Çàï|@ø+ã¿�Ëð3âÇ‹®¼Sâ˜õOßè¾
ñdþ¿XŸZ’-Þ ²ðÞ§aLuuy—ÍXÿ xJ�„VÕèañ”0/ëØZJ•.J‘�jJ¤n¡Ýº±“ø[³µôîˆ…J”*bÕëMÎw‹�9ò¿‰üJ-uó>’ý”>ø‡á—Âè¬¼[
Zø“^Õµ/jÚt+µ4ùnî$K{PN´Ž�˜ !Ý”ÄÉó³\M<V+š“½*p�8IëÌ¢•ßmïßmÎ¬)R¥iürnR]›é÷[¡ôÞÞùÀ÷ëÇ_­y�{ú]N¡6ñž.?:wéý}ÂŽ çÐ_óøP¾ë[CŽß©ç>ß•º€c§¿éÿ ×=‡z;éÿ  £¡÷þ_�o¥€Iü:Ñ÷ú c8Æqôéþ?¥·`9)A:´ �O†.yþ¢¶ýzq×ñÆzWSwÀKþÂáÿ ¦fcÿ 1þ¼¿ý-†:
â6
 (  €
 Fû§èNhÏt O‹<XqÖÓÃ‡�Ç+«úWuO÷<'ý|Å~tLcüjßá¥ÿ ¹³çŽ¼ž+“OÇ¾æÃ‚ƒƒŸnp=¿ÿ U'ø`?8o_Øš×ö‹Ð“Æ~[M?âo†tëÿ $¦—“xªÕ#·žÛI»½ŠâÒà<e¸ŠÃÌ�QÙ.£+[Û+—Y¿2ñ�#Äøu�Á(RÍp´ªrÚ”\±�J2�ÍJ\¼²TîªÚU_,Vª_†xÅáE>8Á¬×+öT3ü
Ü¶ÃÅË1¦£	ÓÃT«Ó�áìç<Ê¿,«ÉÂ	ÝOù½ñ×ÂO‰Ÿ5;Í+Ç>ñg†nl¤t‘õŸë:e´Š€7Ÿo=ý�²Olñ²ËèLrDé"’Œ¤ÿ 0æ6k•U�Ã/ÆagM´Ý|5zQvWæŒªS‚”Zi©-i­ü-›ðÞ}�â*á³|£1ÀT¥'<VBœ’IóÂu©SS§(µ(Í{²‹RNÍ¼ð¿â'Ä}BßMð7‚|Sâ››‰`è^ÕõhbÏÞ’â]:Êé`†1óI+áQybN)Ìó:‘¥€Àbñr“·û>µh¯9:pšŒVí½')áìó<­
NS˜æœ¹SÂ`±8˜Ç¼§*ª(E-\ž‰jÏèãöý‡—öyÓ[Çþ:ò/>&ë¶VÊ°$QákIm.îÂÞîK‹‰^{�í	-oZ84æ—ìqyÑ6V8ÿ ¦ü;à%ÃTžc˜rÏ5ÄS…£È—Õ á.zq›”Û”½£…F£IµÍ‹û�Á¿	WáÞs›òUÏñ”©¥d—öu)Rš©F%9ÉÎ~ÚTê¸Æƒ—³�<^‘�éŽÑœgëÈþ|ÿ ŸzýK§ôÿ ®Çï`TžÃÛ9÷çáÅåþ^@V6V†ä^ý–ÜÝ„òÅß‘Ú0G–.6ù�0H+¿n	ëNý/mv¾ž¶ó$¶ðËå™bŠ_*T–#"#ùs(!e�p;$@Ì×k(c‚4z6ŸéþC$ÛÏÝÎ:õÇ gÇsÇOÎ�žàrsÇÿ _üþ$qkmç‹‘oÚvÅÇ•Ÿ±Šæ1.Ñ C±2»ˆ;W#åk®®Ý¿àwgoáÏR9Æ;óÓ<~�é[ÿ _Öã®?žG·¯—#ëO~ß×Po~£Û�ñ¥Û¿õ  QÐðzÿ ‘ßüúQçÓ°=0rqœŸOO§ä[å«èxmmí÷ˆ-à€Jååò"Ž?2G,Ìïåªïvfffl–bI9&›×úíæ"À^2?.˜¤ûmæ0×<½±�­==<ÀŽHcš9"š4’’HåE’9†XtpH*À©ÓêŸgÓK õEP.ÕU *€   �€ ÀÆ1Ò‡ýtvöäúÝ?¯Ö‹úz_äF^Hçh£3D®‘LÑ«IK°È©!ãI6!p¤Ú»�Ú0|Ý¯µô¿ëýwæÏÚ_öfÑ¿ihZ]ÏŽ¼yðã\ð¾¹¿áÿ ü<ñµá�nÊöOOòæºÐµ]úæÅàÕnšKC¨CÌ ™²Ð®:°˜©ag)*têFqåœ*Â3‹WRÑJ2IÝ-mÝ8)«]¦µM;?½gû?~Ã>ø5ñ/Wøáâÿ xÏãÆ�KJ‡Ãv>#j¦·¨øwÃVÿ Ú�‹á‘â=kÅú-.¿¯}¤éº­¼W6ú¤ÖÏlÌi¶Åf¯F8hR§‡Ã§ÎéÒQŠ”�µŸ,`¤ýØî´i2aMEó6å-®ú.Ê÷¶ìû�yã××ŽƒÞ¼þß×ãäjax£Ãzw‹|?ªxkWÙºÅ«Z^K‡µ¹ò]•ÈŠt¢�_™r@Ï­T$á5%k§uuuÿ üÄÕÕ�ËÛø%G‡ïÓ@ð§ŽiOÚâ?ÁŸø‡O×ôß„ž/ø�ã�oF¸“Eº²Õt;jãYñ¾­¦kZ~•¯éšf»mkwáÁwö‹41ArVæ?]ç2‹”©áp´«Î.´)SŒ½äã'qqr‹qmKg½´1öDå)E}–Ûó×^ö{ª¶:}¦™cg¦Ø[Cgc§ÚÛØØÙÛEZÙZB�[ÛÛÃ¤QC1¤QE,q¢*¢… MÉ¶ÝÞíïvÿ ­_™¶ÃÒÆÍnd¼K[xï%A×B–æT£ÎK"@#1 FœaW
ïkÝtKóò8çòëøÓ¸…Û€1Î}º~9õ£ð·õ°È!¶¶¶VKkxmÃ3;¬1Çgf,ìÁArÄ’ÄnbI<“F½]ÿ ¯È@–¶É+Ü¤%ÄªIÖ(ÖiX�²J v@Ä�¬HÜI&�ÞÚÛúÙ6;~G§®?:^Ÿ×ü0Ãi'}ÿ  g¦OáþsFÛØÛŽ§×üÿ õ¿\Ñpœp}=?ôïF› ¸ÇQ‘‚qß¿o×Ú•€6ôç±$öü1éÞ�µÔÇ^zsÓ¯õÿ <Óì·¦x=¸ãÿ ¬}±ŸÎ�z4ãŒóéŽ‡òç>ø¥¯ä´zžž�ztõþ”~×P€ý1ŸÏÓéO·õó6ôã§¨éÿ Ö£Oéþ s¾/þm|÷þÉ½ê?éƒôõçÿ Õ]8+ýoÿ _©íþ$c_ø5?Á/Èéô¬›	ç1EÏþí}+–¿Äÿ 6k…z/Èæ<s�ìû.ƒþ'šAêOöÍ–pp@üÿ 
êÀÿ _õãÿ ¦*Wøý|¥ÿ §"uEz’=?>ßŽrÝZÚ›\:óéëÎ=ûš.ÿ P¼Ž_j<þoÐ ®1Æ?/§è=¥;ýß×ÌkÆVòÜøCÅPB¥æŸÃZä1/v’m2ê8×Œ}ç`~}+ÕÈªB–w“T›Q§O5ËêMöŒ1t¥&ü’W8s8Êyna«Êx\b»ÊT*$¾mŸæ7âëñ¯áZ=†µ¡ÞË§êvr}ûk¸DÙ åIç jÿ ¬œ§5Àçyn7ËkG€Ì(C„¯†­ŠðšßGê„ü',ÆbpÊnŽ+	VTkÒ{Â¤>(¿BøHuÿ ì¯ì/íÍcûIçûN÷û(Jw/öwŸöO3.ç“»æn~c›þÍË¾¹ý£ýŸ‚þÐåäú÷Õh}s“Osë>ÏÛrû±÷yí¢ÓDO×1Wú§Ö±?Uææú··«õ~m}ïcÍìùµzòßWÜÈ®Ó˜(  ÇK$q ËÈëVv
£ñ$R””#)ÉÚ1‹”Ÿevþä8§)(­\šIy·eøŸèÉû øK[ðGìYû4øGÄv†Ë]ðÿ Âéš­™-›{ËxKÜåŒ•_|Wü¿ý$sŒ¿ˆ<xñ[:Êë*ù~gÆY®/]%ûÚ5j'	èä­%Ù³ý­ðw/Åe^p6[Ž§ì±x.ÀÐÄSþJ�ƒRŽ©==õñ ý>§üþøŸ¥¬~”.Ì~°03Ç©¥¿k€›sÎ3Û?çš/ýk¨Ž ÇŠ/ÞËú¸LÇ§ùý}ýy¦µw è=ÿ ÏøR?+€›~n=OÐ“Çùÿ ëQý/ÎÀ)@{uÎIÀèqŸÃüñEÿ ¯ÌfÜqÎxïúõÍßúþ¬ WÔuãñË“ÖŽú¯øó ÚqŸ¯CÏ^Z˜	´½qÓ×¿ÿ _ð¢ö_ðÿ ×�Nøëß¯Ó®;Sºè`cãüÿ ŸZ/çþ@.ÞÛzöü½øÏ×u¿@n0qúðéëIï?È*3Èÿ #èqEÐ3Ï§ùý:7vwÇnzr¯­þ�b�ðÌŠÌ™ÚYT•=~RA#�Û¸‹öïçøˆR½r=Ž}¿ÏZ/ÏÓúþ®16Žã¶F? O·ëéNï×PD›üÀŠ®7íˆÝŒöéøR½ÕµvÆ=±íøþ>þô_Õ ‹
 *ˆˆ£�ª¡Fzt ðà)ß×_˜Ž0p9#¾?Éü)?¾à&ÞAÇ?ãþ4'ÛñÓ@aÈ8í‘Óñ?Z/èžÀ!CÎA>Ÿ¡ôãüŠ/ßþúè  ý?—ùüûÓVù€ÁÉ^¿�?­+úÛÈhGRsýŸjý-æ S$wãðãôý}èNþŸ×âí' ×ïÇ?çëEý˜ ^;ú{ñÇãÓáGÝýÀ�œñÕ éÿ ½ÇRzÿ kÛñÁ8Æ:ú÷<W[× ÿ ì2?úbF?ó¿ëËÿ ÒÑè úå\FÂÐ@  P[î·¸#óÁhªO‹<\1È´ðà?]ºÅvÔvÁa?ëæ+ó¢cãÖÿ /ý¼ìäûô®Oëçýll&ÑÁÇ·ùþ~ .;ûÓÓ¹?Ÿ­-4Ó®Ÿ×è«á/ëÌdÖü5 k.Wi}SGÓµ* P¤ÝÛÊH
 “… Ž+ž¶	ˆm×Ãaë=¯Z…:�·ÛŒ´¶ŸqÅˆË²ü[æÅà0x¦ôo…¡YÚÖ³u!'²KÑX�Kð‡…4&2hžðöŽç9}/EÓ´÷ù€ÏÍim`€8Îµ°x<;¾	…£çF…:OÏà‚-Ë°nøL¿…}ðøZßJœYÑlÀÎ8àöÇøçßÿ ×]	ß±Ü&ÜóŒã¿ÿ _Ûüö£Ë§�Þ1ŽŸn}sEûÙ_Ÿõ¨³ã�¯áÿ Ö?Ö�Ø _AÏøqþ}sšôØ	·œ�SÓ�I£ð¾ß/ëü€R öäç$ãqœûzþT_Ïúëò Ù´gü¿ŸZü¶ +ê=¿­5ßúü€6‘ú÷ôë×ú¿@fïËéžGòëFß×ü �ñ×Œÿ žŸçîº `cúÿ õÿ Æ‹ùêmŒ}/óùÒü€vÝ vöôÿ ?�µ_Ëõ (8Èã >ß�ééš.¿¯ëï6ç§n~˜ý(ùõüþ@.Üà�Ï\ñÏjÍ ¡Aãü1íùžÝèºü€M¾£ ïŽ†‹ßúíÛô 
;Ž=‡'Ó×<~Tï¿]€çÆ@ôéÏùÿ ëÒ¾÷6Ž˜ç'ó=}¨¿¯ù¤ìíÇ¡çÏùÑçß¨ \tyÿ ?—J·ù …G\wà÷ãüý(O§ô€]„àã¿·$g¯~(¿¥ÿ Ì ¡î08ïÆ3Ó¯~”_¸êxü?ÃŽ{ýiéÈ §r?ÏÓ?Ò•û~ pzuãüýZ[ lqéŽ½±útüèW¿ÌÁê_¦xõúú¨¿o¼Á ~ßñïÛ¥s¿^– Ø¸ès“×õüÏj/Ûú·õ ³¶1ÇÓŽ3ÿ ×ïE×õÔ ¯C×Ž˜èN˜ÿ ëÑ×ð ÛÛ³ÓŒŸð£^ž F:qÓðç>þôhßãåpn}O\3Ó¯áF‹o˜AÔ�~¾¿ãŠwó ÛŽqíŸè?Ï>æ“ÿ ƒ`ãýÏnÜýsÿ Ö¢ÿ w@ŽG¯J?¯Öÿ ä5ã%Â¾ 8é¥^�§î_Óßÿ ¯]X/÷¼6¿òúw1�àÕÿ ¿#£Òy±·ã¹‹§û‚¹gñKüOóf±øW¢üŽcÆä�>Ï¡^Ð2;ñ­Y~ÇûWVøÒÿ °|Oþ˜¨e_à_õò—þœ‰×N:‚xã<sÇùãßÛ—Oóº6oä�oÄuü³G_Dã�Ï8ü‰ëÿ Ö£NžZ �;ä�¦F?™>ý}(oÑ¯0`�Ž�úü�éG›û€ù§âOìqû0ü`ñ¾*ø›ð[Á¾3ñà¬Ú¶³my-Ó©’YJŸ*ò%#ÍšWá3ºFÇ¥~«ÂÞ8øµÁl2~ãÌó#Ëi»Ã�«FbÔa¥:3—ÁNßh£á³¿8‰1’Ì3ÞË3<l•¥ˆÄÓ©*�sJZ¸ÔŠø¥'¶ížyÿ ßý†ò?ã~ãþ¼uý5~|~<WÓ¿¥ÒþŽ¯àü/ÿ 2èxßñ<)ÿ ¢#ÿ ÁU¿ùp§þ	¿ûù¶Ÿ†Ãéa¨òÇúR_J?¤ýn)ùâ0ßüÊñ<)ÿ ¢$ÿ ÁU¿ùpƒþ	¿ûÿ Æ4ü6öÿ AÔãÿ !ÓòÇJñ4H/ú:ÜSúÿ †ÿ æPÿ ˆ'áOýÙ'þ
­ÿ Ë€ÿ Á8?a¼ÿ É´|5ÿ ÀC¯?õÿ =:Òÿ ‰£úAÑÖâ­7XÃó(Äð§þˆl“ÿ Vÿ åÇOàÿ ØOöCðˆ,|Sàß€~ð÷ˆtÇ2iú¶Ÿg|—VÎÊUž&’ùÕX«Êž	ã¡¯+;úBøÕÄ™n#'Ï|Gâ<Ï,ÅÅCƒÄÖÃÊ�dš’ŒÔpñm]'£[nwe¾xq”c)còÞÊ0xÊšŽ"�:ª¥7k^-Õjöml}eŽ8àzãŸ\ÿ ž¢¿ó×ô�Ño “éø‘ëþ}¨þ—Ïò
Ÿb3žrN½zgñ=hºOfíÜ9íÇ9çÜûz÷=�|ü¿¯�ÑŒB¿=ÿ ÃŒš;?Kÿ ˜ �Lñ×ŸÀóùô=hßUóþ¿­ P1ž˜ôçóç?�ùÂßÔÚOeà^GøŒuô§ózÝ‡OÀÃ�OËß“ìc<÷çžßZkªÿ † Úäúã¹ï×ÜþüÑÿ 4Œñù`ÿ Ÿ9ü»Ñ×¯›6ý}r{çß�_Ó4oßðíýXÇ§§ùÿ =Å%þ`0§¹ã ÿ þŸ­;ýþ`(_\tÆ9÷ààôõÇ9éG¦ºÿ –À.>�sÓüþ½¸ú�_Ýòþ¿ÏnŸŽzgÓÓ¿…¾ŒúöÈüûtõú÷—˜ÑÏÓ�QŽä~”_ôþ½ nÁÓ íÏoLs�ž€óëM¿ŸÈ ?ž3Û·åüúÒ¸ŽƒÓëÔ~çÔš;üþw1‚xì@ïý=½÷ÿ € 2G<sõþ_­ù÷ ÛÜõöÏ^Þ¼Žy8§éø€�yÓ>øë×ô>´õ°Üú�õëž½>¿äÒÿ ‡^} P1éÏSƒœÿ ^ý{qÖ�Ý¿¤cœ`RzûúsÛÓVéþ@ŸwŽƒùzQëøêàc¦?Nq�Lþ}©yÿ L1žãž§ü?N4iý~_×Po¦	éÈ<óŸÇÐc§z}ûÿ Àÿ ‡vŽÀtôã¯ó¡z½îlõ?©Ï¶sßéùÑ~ß¥€âî~_Ú`dÂ-qœßÚöã¡çÓüƒ]_ó ÿ ì.?úff?ó¿ëËÿ ÒÑÞŽƒ1\fÂÐ@  P_[=1@†3âÏñöOœÿ ÀuŒ}?í©þçƒÿ ¯˜½ýh˜ÃøÕ¿ÃKÿ o;0€u ô÷ÉãŸlŸŽx®VôÜØ]¿L{äÿ ‘Ó>¾”½/ëý~˜9ì8Ž=ÇøN94y]êŽ8Ç¹ÁÏAÛÛŽ;œt=zz[ mÉäçŒqžyïýyëÓÖ�Nà!’;ß<wã·ùÅK¦ .Ü�§ ïëúv=?^Ôy÷Ð (ä9=�ü=}y¢ýzþ`zŽÙÿ 'õÇ¨ßn€(é€?ÿ õ‡ Ç×·õ
öÂà}O<ŒûŸëOæþô¿Pp þ@ÿ ŸÄÿ >i?ÏP ûóþG§zk¯ô€6Ž¤úàþ=_~�hûú/Äon?Î}zuôëý(ëýll†8Ç9ÏåÛ‡¯\Q«óÔuÿ >ŸÓúR·õò›}ýñïíÛ¯ÓŠw_×`)ã8ôÎzôêFøŠß¸ÛÛŽqž?ÿ B{ò}Ž¿×â @?áëøú^GJ6Ùõ Çé�ùoj]u  w�Èñ×ü3øÑ_éÿ W6 õÏ¯^9üIëÚ�ÿ àè Óôïÿ êúR¸Ž1Æ>‡×êqý:çúþ &9<G§~½?Ã©¥÷€¼œç�OZ-ÿ  mÏ^qèOçéô4ý?êÀ7oãÏ¾OLäŸò{×�� ëõçÓÜþƒò¥ý}Ý  Ç¡=óžŸ‡áŽÀõâ�ô ÁÏ¹ííëÓÜsEþ^_Ö€.Þ¼ã§N¼{úÿ N:Ñëý\ ŽÃ¨ÿ ?^¾Ç­/?»Ì³ÜsÉÿ ëwõíFŸ€Üÿ ½ô<“ÛßõãŽ´ú|ÿ /ëï6�éœc¦G_åééB×«î³Ôþ<ô÷ÿ õuéE×OÒÞ¿Óv�üýò?Î}?•-@CÓ§p@�~ÝGz{o¿˜Þ½3ÓœàûœwõïéFŸ�ÿ «€=ÏåÓŸ¯ôé¾¿Ó Ûžç=xÈúzýLRþŸõ¦àxàg=Ï�cÛ·Sž´/Á ¤tÏN§¦?ž{Ñóùzô6àðF	ÏCŸÈžßž(õíýÃ€¤gÓ§§>½i/ë°g=~¼çÿ ¯þzŒÕ_MÐÏŒ×ñ	ÇöEîF?é‹sŽØÏÔWNýï×÷Ôõÿ ·‘•àÔÿ ¿#{Iÿ �~¿êbã=>A\³ø¥þ'ù³Hü+Ñ~G5ãe?Ù±IÆÛ}SI»”à°Újv×¶„,q±cÐ wt®œJµºÊ•hGüS¥8Å|ÛVó2¯ü;ôŒ¡'é&ÿ uÖòÇs70�ÑÏsFÀåJÊ‚Dua�A1Ž?
æ’q“Œ·‹i§½Ó³^F©¦“[4šùêHFIèoOÿ W¿¯¼Æ&1žôüþ½=i®ÚwôÀ,äô'9õþ´ºüÀR¾ýóžþÃðõÏáEÀnÞ}AŸQî:`c[ w}q“»ù}}�7Ô /ºœû÷ôçð£ú×ü€09ã�lœéëøÿ J:vý@P£¿·\�¯åþM äöî·çî=ø£ñþ¿®€ÈÎ@™<õûPý>àhÁç=qëëŒ{~}3Ò‹°¹ p;ôÁã±ê{õöç­ 7=Oõ8^¾ÙÏCÒ�/ÔÁ8�ïŽ?O^ÞÆ�¯¨ �yÆ=Gòÿ >¸jú€Î×…9ü@ ÿ úèóýà œãŽ{öÿ úÿ ýz;mù€¤ËœdžôkýnyˆçëŽ‡¯ùúÑý_ �Çðôï×ß<õü©ëÜž8`�íùóøÒ¿p¾‡‘Ó=ðùÆ g?QèO·oOz?«€˜ëÈ'�Àîyö¦?¥?/Ì òFG ü»ò)vþ¿  9'Ó±�ø~´|ÿ ¤ W�ÙÏÐb„ Ôã¿Óðïú~4_ú¿ê·¯§nüð™£PzgœŽyÆúuí×ëŠ5Üø÷çõ8Ç_z n¡úí güþœÐ•Ï#ÇO^:û~B�Wp; G È>ùãóÅåó Ú}zŽ‡¿=Èý:ÑÛÉú€`Îsž¸ëøtÀéÇ·­÷ Œä~# }yþ¼vêkó *y#¦Oåþzb‹ù€m'=@>¿çœ{õ¡ýþ€.ÒIäöçž_Çò¤m9È<�óÛ¯éOP¾ÄŽG_aî1@ëÀÇOÌó×Í5þ~@;0qÔg¯¿<qõ”¿ÏÑ Ü1Ï·§ÿ ®Ž pò0ŸÆþdEYlt7±œ¡ó^ZÝ¬nÃˆßÉ`ÁÌWç×\½Üb÷©ˆU"žžìa86—UÌ­u¥ôÜÅk]µª�>Wêä¥gÙÛð;ÑÐ}q›@  P@oºÜãƒÖ€8=)ãµñŽ»Œj¶zQ´ÜB™?³Vÿ í!3÷¶}®ÛAÚYwuÛ/{A¥cR·?—µtù/ëÈíµõìb­ó¿ÛŒ9|ù9¯ÿ ¥#¹ÀÏL�lãð=O|ñ\~[ Qž}3ÎWëùóÞ‹€Éôì{ãŸþ¸þ”|þ_×àŒŽ£óïëõ4?OëîB�\õö<c€?Içš/`dÀ>ãŽÞÿ _Ïš h=óúwÇ8¢ÿ ÕÀQžŽç>¼ãðÇJ4]@0 óéŽ?ÏëF¯¨ =ùáyºÓßØ”yþ É8íÎxéý3‘ïÆhû€RÀã �Ï¾(×ôþ¿ÈÃzäÈ}}±þ~Ÿ˜�Ç·AõÏ^¿Ï4kÞÞ 'Ðœsÿ ëüè» Ûþ×>ýóþO®hþ¿®àg¿ÔcŸAò�l§<Ñ·ù€˜ëÐàÓ¹ãÛœ÷?Z:/Í€m=O¾@öê8ã>” c'¦8ÎòçÖ�Ÿõýtv‚3ž=†?­  \÷ëÐ_óÍ;ÿ Wþµ ÛèxÇçùr}é]€˜íž{uõÇ#ùúf€Tp	äŸ~}ºõ>´n`ã$ôŸ?ãÓÚ�˜Œã¦qÇlõííøçÖ�@B:qØg=·õZþ Oã=ˆã¯O|úQÓæ  Îsþx�õÍ—áÿ   ùïÓ©òühÔ ©$‘ŽÝ8;výh»v“œd}Ïo^ô?êÀI8Éè0pqÅ hÈç ÷ôü}{bž  Nzg’?¡ïìÐžØüó“Óñüý¹¡Ÿõäà�Óñ$Óõèþ¼€f8ãŸaíÞ€·¦}ÏñÇ_úØh8îzçÛÐQóätéÉóßÓ>ýÅ?àíú ›p}G^úûþžô×æ�Ó¯'=ð=y¼R{€ìdg#§¯éÉúu Q·ß¸ÛÛÓ¿QÉã§J?­€Æ3ÉÏPIÏ¶8úQ¿_Ðo^GÐñ�‘ÿ êþ¼Ñ÷¿ëæãž™	?àsê1üèü?­€å<hè¾ÔíÙ€“QµžÂÙIÞââ4DäÈìGËüÌzWV
ÿ Y§?³JJ¬û(Á«¶öIuoDe[øS]dœW«Zz¿#{K]¶p©ÎDq¨!`þUÍ-e'ýçùš-—¢üŠÚÍªÜÛK€4o+	8ÚAÀ=rp{u�J2qjIÙ¦šù;ƒI¦žÍYüÎNÕõ_†³–ÚMOKG³ù }¶Ü,"�‹$JÕgœ¸
€.	Çl�O½)*5l¹›þì’n÷mIÚöQ¶¯]Šç¥¢\ðÖÉ|K]—FºoÛÌØÿ …�fFO‡üPGø—Zã?Ž¡œ~?T_ôƒÿ Á³ÿ åAíŸüù¯ÿ €Gÿ “øþË�ÿ ÿ Š{c:m©ëÿ q>¨¿è/	ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ &/ü'öc?ñOø§¶â]køÌF�ª/úÁÿ àÙÿ ò öÏþ|×ÿ À#ÿ É‰ÿ Ïƒÿ ÿ Šzÿ Ð6×òÿ �‡}QÐ^ÿ Ïÿ •¶óæ¿þþL_øO­1Ï‡¼Pqßû:Óÿ –>”}QÐ^ÿ Ïÿ •¶óæ¿þþL�ìÀãÃÞ)àgþAÖ½?ô£ê‹þ‚ðø6ü¨=³ÿ Ÿ5ÿ ðÿ òaÿ Ó?ò/ø§¦qý�kë×þB?Ó4}QÐ^ÿ Oÿ •¶óæ¿þþL_øO­ÿ ÷Š@íÿ ëOþXÿ úèú¢ÿ  ¼þŸÿ *lÿ çÍü?ü˜‡ÇÖc9ð÷Šzàÿ Äº×«duþÑïŽÜQõEÿ Ax?ü?þTÙÿ Ïšÿ øù1Ä.ü#þ(8:u¯NÃþB<v£ê‹þ‚ðø6ü¬=³ÿ Ÿ5ÿ ðÿ òbÂÀ±ëÿ ÿ Š=?äkÿ Ë
>¨¿è/ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ &?þû>¿ð�x£×?ÙÖŸü±£ê‹þ‚ðø6ü¨=³ÿ Ÿ5ÿ ðÿ òcGÄLgþÿ ðy?Ù¶½ÏOùûÑõEÿ Ax?ü?þTÙÿ Ïšÿ øù1?á?²ð�ø§ƒŸùZŒtôÍT_ôƒÿ Á“ÿ åAíŸüù¯ÿ €Gÿ “xþË“ÿ ÷Š}sý�kß'?òúÿ *>¨¿è/ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ &ðŸÙOü#Þ)Çsý�kÿ Ë
>¨¿è/ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ &(øƒfzxÅ?ø.µÿ å…T_ôƒÿ Á³ÿ åaíŸüù¯ÿ €Gÿ “þ‘ÿ ™Å<ÿ 0ë^½¿æ!íGÕýàÿ ðlÿ ùP{gÿ >kÿ àÿ äÅ?´ÉÇ‡üSÓ8þÍ´wþÐÿ õ~}QÐ^ÿ Ïÿ •‡¶óæ¿þþL?á?³?ó/x§Ÿú‡Zÿ òÂ�ª/úÁÿ àÉÿ ò öÏþ|×ÿ À#ÿ Éž{ÿ /ð«þ/ü*/í;¯øYÙ?ÛŸð„ùv_ð�cù^wö�Ø´7ý—Êýç™Ÿ¹ót¯¥ÿ P¸£ýXÿ ]³jÿ ªŸ]þÎþßä©ý›õîgõ_oìííyýÞ[|ZÚØ?®gs¿¯{?kõ_wÛ{;_Ÿ“šü¶Öç �Ùvðÿ Š{ÿ ë^ü�ùˆÿ ú«æ¾ª¿è/ÿ ƒ'ÿ ÊŽÏlÿ çÍü?ü˜Âdü‹Þ)Ïýƒ­ùaGÕýàÿ ðlÿ ùP{gÿ >kÿ àÿ äÅ>?³ÿ Š{Å<€OüKmzŸóïGÕýàÿ ðlÿ ùP{gÿ >kÿ àÿ äÀxúÏ¨ð÷Š9ÿ ¨u§l�úñÞ�ª/úÁÿ àÙÿ ò öÏþ|×ÿ À#ÿ Éˆ> Yôÿ „ÅöÓmGþä?:>¨¿è/ÿ ƒgÿ ÊÃÛ?ùó_ÿ  �ÿ &/ü'Ögþeïðèk×ÿ 4}QÐ^ÿ Ïÿ •¶óæ¿þþLOøXdãþÿ œñ�ìÛ^=æ#øçµT_ôƒÿ Á³ÿ åAíŸüù¯ÿ €Gÿ “ñË¯ü#þ(ôÏöm©ü?ä!Ò�ª/úÁÿ àÙÿ ò öÏþ|×ÿ À#ÿ É‹ÿ Ïþ…ÿ ÿ àº×¿ýÄ(ú¢ÿ  ¼þŸÿ +lÿ çÍü?ü˜Ÿð°lºÿ Â?â�üÚÿ òÂ�ª/úÁÿ àÙÿ ò öÏþ|×ÿ À#ÿ É�ñý˜9>ñOLÈ:×ù�G�óïGÕýàÿ ðlÿ ùX{gÿ >kÿ àÿ äÃþžä_ñOÈþÍµíÿ qÔ}QÐ^ÿ Ïÿ •¶óæ¿þþL?á`Yÿ "ÿ ŠrF?äkÐÿ ÜB�ª/úÁÿ àÙÿ ò öÏþ|×ÿ À#ÿ ÉŽÿ „úÐƒÿ ÷Š}ÿ â]iì?è#ô£ê‹þ‚ðø6ü¬=³ÿ Ÿ5ÿ ðÿ òbZsŸø§®üK­8Ïn5Ö�ª/úÁÿ àÙÿ ò öÏþ|×ÿ À#ÿ É‰ÿ 	ý—ýÞ)àÐ:×�OùˆÑõEÿ Ax?ü?þTÙÿ Ïšÿ øù1GÄ2üSþ(#þÁ¶Ÿü°ühú¢ÿ  ¼þŸÿ *lÿ çÍü?ü˜ˆxãÃþ)ÇOùZÿ òÂ�ª/úÁÿ àÉÿ ò öÏþ|×ÿ À#ÿ É‰ÿ Èdÿ Â?âžx?ñ.µíÿ q
>¨¿è/ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ &ðŸÙœãÃþ(ÉôµéÓþ‚4}QÐ^ÿ Ïÿ •¶óæ¿þþL?á`Yÿ "ÿ ŠpzÄºÔqéÆ¡ž´}QÐ^ÿ Ïÿ •‡¶óæ¿þþL�¬�#ÃÞ)îßòµþIÿ ��oþµT_ôƒÿ Á³ÿ åAíŸüù¯ÿ €Gÿ “|@³=<?âŸüZÿ òÂ�ª/úÁÿ àÙÿ ò öÏþ|×ÿ À#ÿ É‰ÿ Ëò/ø§?äkùÈB�ª/úÁÿ àÙÿ ò öÏþ|×ÿ À#ÿ É•.¼i{vžV�£_ZÌù_?W…-–ãXÒ¼²¶É!ùTžM5B…?z­zuÕF„¹ù­¯+æön7ÚëÏÈ=¥Ié
rƒïQZÞjÜ×·bï†4æ·ß,îf¹¸s-Ôîi_åUá@P#�QÐ „É ŠÂ½_k%eË«B+dºùêîÝú¶ir'­äÝäû¿øíbXP@  P�G­ y÷‰4éš{{ûID7¶Sí¥Q‘�ñÈÑH6²ùr´q‰7$€(8Vz½—4ezu§“JKmcÌÚÕkÕng8sY§iEÞ/ô~NÊã`ñ½Å¬b=SCÔå™Ö“J‚;¨‰Ê²¼ÓZžP‚àF¡dÊ¨e«W‡¥SÞ§ˆ¥õµirIyZ*}v×U«³v#ÚN:J”äö½5tüõqÿ ‡&>>³ÃÞ)ã“ÿ ëSÔãþ‚=ÏQõEÿ Ax?ü?þTÙÿ Ïšÿ øù1Ä1Çü#þ)÷µééÿ !Ö�ª/úÁÿ àÙÿ ò öÏþ|×ÿ À#ÿ É‡ü,ÞñGLÈ:×§þ9£ê‹þ‚ðø6ü¨=³ÿ Ÿ5ÿ ðÿ òbÿ ÂgŒÿ Â=âŒuÿ �u§ãÿ 1>¨¿è/ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ & ø�gÎ<?âŽ¹?ñ-µé×þ‚?­T_ôƒÿ Á³ÿ åAíŸüù¯ÿ €Gÿ “þû!Ÿø§¼SØÿ È:Ôcÿ *>üÙ£ê‹þ‚ðø2ü¨=³ÿ Ÿ5ÿ ðÿ òb�Ùvð÷ŠzgþAÖ½=¿âaú
>¨¿è/ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ &ðŸÙŸøG¼Sî³­}?ì!éGÕýàÿ ðlÿ ùP{gÿ >kÿ àÿ äÀ|@²=<=âŒ�ÿ @Û^Ÿ_í
>¨¿è/ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ &/ü,>Gü#þ)÷ÿ ‰u¨ôÿ ¨‡Ò�ª/úÁÿ àÙÿ ò öÏþ|×ÿ À#ÿ É‡ü'ö›°<?âŽ�?³m;dõþÑÿ ?Z>¨¿è/ÿ ƒgÿ ÊÃÛ?ùó_ÿ  �ÿ &ð°,øÿ ŠÅ<œø—Zuÿ Á�T_ôƒÿ Á³ÿ åAíŸüù¯ÿ €Gÿ “þ�ÿ „{Å8éÿ  ëSøÈB�ª/úÁÿ àÙÿ ò öÏþ|×ÿ À#ÿ É€ñý—oø§ðÓ­{ÿ ÜGüñGÕýàÿ ðdÿ ùP{gÿ >kÿ à1ÿ äÄ>?±Ï>ñNxÿ ˜u¯áÿ 1>¨¿è/ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ &;þŸ_øG¼QÈÏüƒm9Çý=x£ê‹þ‚ðø6ü¨=³ÿ Ÿ5ÿ ðÿ ò`<}gŒ�x£Çüƒ­:Žè!ïÖ�ª/úÁÿ àÙÿ ò°öÏþ|×ÿ À#ÿ É‰ÿ Ìqÿ ÿ ŠsŸúÚŽ¿÷ÿ =èú¢ÿ  ¼þŸÿ *lÿ çÍü?ü˜¿ðŸÙ·ð�x§ŒÌ:ÔîF�ª/úÁÿ àÙÿ ò°öÏþ|×ÿ À#ÿ Éˆ~ YçŸø§éý›k×ÿ <äõ¨ú¢ÿ  ¼þŸÿ *lÿ çÍü?ü˜ÂÀ²ÿ ¡ÅÈ6Ôãÿ *Ô}QÐ^ÿ Ïÿ •¶óæ¿þþL_øXxÿ ‘Å?èkôÿ  ‡­T_ôƒÿ Á³ÿ åaíŸüù¯ÿ €Gÿ “þ–sÿ ÿ Šsÿ `ë_þXQõEÿ Ax?ü?þTÙÿ Ïšÿ øù0>?³á�‡¼QŒÐ6×¾?ê#ÇJ>¨¿è/ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ &ð°,øÃþ)íÿ 0ÛS‘�ûþ9üèú¢ÿ  ¼þŸÿ *lÿ çÍü?ü˜ˆ\Å?âœöÿ ‰u¯~?è!GÕýàÿ ðlÿ ùP{gÿ >kÿ àÿ äÇÂ}iÓþïôÇüƒ­:ÿ a>¨¿è/ÿ ƒgÿ ÊÃÛ?ùó_ÿ  �ÿ &'ü'Ö£þeÿ à`ÿ È6Ðàcô÷ü(ú¢ÿ  ¼þŸÿ *lÿ çÍü?ü˜‡ÇÖ]‡¼SÆOüƒ­}óÿ 1>¨¿è/ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ &(ø�hsÿ ÿ ŠôþÍ´ÿ å�9£ê‹þ‚ðø6ü¨=³ÿ Ÿ5ÿ ðÿ ò`> Yã�x§þ¡Ö¿ü°ÿ õQõEÿ Ax?ü?þTÙÿ Ïšÿ øù1Ä r|?âœôÿ �u¯×þ‚}QÐ^ÿ Ïÿ •¶óæ¿þþL?á?³9Ç‡üSÏòµì?ì#ïGÕýàÿ ðlÿ ùP{gÿ >kÿ àÿ äÃþû0?ä_ñN;ÄºÔùˆç¯Ò�ª/úÁÿ àÉÿ ò öÏþ|×ÿ À#ÿ É€ñõ‘éáïœçþaÖ½¾cÿ 1lûÑõE·Öðø6ü¨=³ÿ Ÿ5ÿ ðÿ òb�ˆ6g§‡üSÿ ‚ë_þXQõEÿ Ax?ü?þTÙÿ Ïšÿ øù1Ä ?ä_ñH ãþAÖ½ðaGÕýàÿ ðlÿ ùP{gÿ >kÿ àÿ äÃþû!ƒÿ ÷Š¡þÍµÿ å‡ùëGÕýàÿ ðlÿ ùP{gÿ >kÿ àÿ äÀü@³Ÿø§?öµééÿ !ÿ _qGÕýàÿ ðdÿ ùP{gÿ >kÿ àÿ äÅ_Ùã�x§ÿ Ö¾¿ö£ê‹þ‚ðø6ü¨=³ÿ Ÿ5ÿ ðÿ òbÙžñG¯üƒmùaGÕýá?ðlÿ ùP{gÿ >kÿ àÿ äÀü@²Çü‹þ)ç8ÿ ‰u©ÿ Ü‡ÿ [·­T_ôƒÿ Á³ÿ åAíŸüù¯ÿ €Gÿ “þû>?âžñOOúZãòþÑÿ ëŽô}QÐ^ÿ Ïÿ •¶óæ¿þþLOøXxãÃþ(ÿ ¨m®:ÿ ØC½T_ôƒÿ Á³ÿ åaíŸüù¯ÿ €Gÿ “þûB?ä_ñIç#þ%Öƒéÿ 1>¨¿è/ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ &Çö}¼=âžyÿ �u®=8ÿ ‰Ž?*>¨¿è/ÿ ƒgÿ ÊƒÛ?ùó_ÿ  �ÿ &ð°-1áÿ ÿ à¶×œg?ó£ê‹þ‚ðø6ü¨=³ÿ Ÿ5ÿ ðÿ òbÀQŒ^ñ s�†{d‹qoe¿wU=Ê£t¥U�ÚÅáZ[òÔ“vòNšMüÇíŸüù­óŠ·ÎÒf<oªkú•½æ©[ÛÛ°’ÎÂ"]U÷ I¥gŠ'ó (Lª<ÇPpIÕ¥J›¥BòrÒud’mkxÆÎK—]Õ¶ZnŒ§%9Ù[h­}Ñ4üµõ=BÝvÄ¿áŠã6%uÜö?N}ýt…q¤£±`:žø=zà˜Æ=OPq¤ã8ÏO|téÁõqÖ€ý’½xìHÁçÕA3ŸóŠ oöH9ãÓ�éôü±Ö€¤)àŒ¤ãùŽrs�þs@öBöP?ÚÁüxðéßñ  i@6Žw�‘· /åÏçÔŽ 	ý�3Ðvçäýxí@:? �1Ûîž‡·<PN““Ð`žs×ÔqÔã'žß� /öB‘œa²8ãœãÐãœäPÿ d/#bòO8Ï¿ÿ á@	ýŽ§¢¨#9à`ëõþ Pý‘…?(>Ý:q‚=Ç±À @'9Ëcô9ëÏ§_s@Ò 8+ÐÀãüN§n˜  c…úuÎqÇãŽ�¿0t‘žP s‚Î0põÍ HR~èã¾Ñ“éž¼úñìh þÈ9^£¶çÏ\ý=9  i äÓ?uyê:g�ÿ Q ÿ …Oð7þ‰ø‡ý‘á“ñßþ£¥_í×ÄßðŒ›c‘ö¶‹cgön<Áe¼¯>gS_yþ²ñÿ ú�þ¬}{3ÿ ˆ{ý©õÏ¨ý^—ö_ö¯µçöŸXö×Û{]y=¿-þÉæ}O+þÔúï³£ý«ì}Ÿ´ç—¶öµ¹9¹ym×’þg¶!@$pN0zc¯¾Oaëù|é�þÈýÒsÁ ä�ÄzñúÐÿ d }G\vÇ×§w4 # 8Ço_çß§Lò}@û zdÀä�}³üý;Ðý�'hÇ\zñ×#œ÷ÁÁö8"€û wæ8äÓŸ®;: ?² ÈÀïÀ>¸>Üœâ€£®3´uãåëê:ñÔrý@Ò
Lgw|dåùš �
ž`ç>€g¦Þ¼uÏñÐN”1€ c§Ç¿·Ê€û qòŒŽ¼uïŒœcþª Q¤õê=‡uÇ§OÐ Oì’O
N@ÏAÏ'Ž1Ôö  i öQžÄpÇùÐý�½—‡ôõëÿ ê þÈ vÇ<0;uç?áÒ€ì€„6}:‘Î@{ç�Ì?² ¨ÇN0Ÿ~qî=8 :@#î¯wŒ3»Ž½HëÛžx ?±ÇuïžG·OÇòö û |£ðãÓ�~´ £Hä ìIäg¯ùëÒ€šBù€r =qÏÆâ(ru�@$g w?ãøvâ€,P@  P@ T¹µIÀtÏ#·Oð÷úP<š?9ÆyïƒÏ·ùãØPGIÉÈ®zúýO?ãÎ(±ÔŒãæqØç‡·9Í (Ò$m^p:~=ýHôàñÅ 'ö:žäöþ£íƒùõ @ ð§Û§Lþ~Ý}ºÐ$dœsè??ý\�@
t€Êô=Ï¯O¦ë’ ‡H\p£çŽ¾ƒtúzÐ ºHÜ?v0që’:sŒcœÐ t€„{žÇÛ8  i »ØôÀ8Ç?ýnzP�$r6‚¿ÂAß' Ï^={š Žè§©ÇLûç�‘×¯j �¿x ã¸Ï\Ÿå@þÈìûp.@Å (ÒAã uäƒý=~‡ÔñÐ?²08
ztÿ ?AÏ¸ë@ý�1ŒqŒ‘ïŽÞþÝ /ö@È8ïï�^ãôö<Š oöHÇ*2}9Ç>§®1žŸý`þÈÁè3‘‘�ÏÔç_LÐ 4uäà˜;{öè}�8â€¤/@ u=2:tã?äóÚ€t€r0£¡èyÆsü8ãÔãðé@þÉP1´vè¯·Lý� 4i*2=o@H‡åÖ€4œÇ\�è2ëžÙõ ÿ dûê ôã¿^þžž€ ÑòNBƒÎxÈã¶zãë@ý�£øpAì8‰õçŠ pÒ ±ÇÊ8äçè?²ÈÀ=ú`ÿ ïþ4 ŸÙ n*ŸOÏ8?—õÆh“‘‚£Õxïþ×¦yõì}¨ :@Æ<ò2?ÉýGå@ý�EGAÛ©¿ýq@öO#�øŒ÷ïþ{ÐŽ’€…�×=	öÀã·¿û 4é@çŽ‡*qÛÜðr?žy û''%AÇ¶2OòÏÇ‘Å HøGsÆ�Ï<€yÇj pÒWœàƒŒŽ�xÉüE 4éC=8Æ�Ääãè @Î6àsœÝýr1Ÿ®h þÈ@xPyá°F=OÇ§ç@
4 ¹;Fr1€yîÏ×�|út ÿ dAëÓ‘“øsëùÐ�pä3ßŸ¡ �­ hZé©	G<l¸úöí@à 08€
 1ž´ ˜ƒò `zÊ€˜ Ð~T `zJ 0=å@@	�Ó `zÊ€Ò€ t€AùP�è=hh Å ÿ  LA@ ü… .¥ ”ùÝÿ Áñþ=ÿ Mÿ ïøW?ð©á
ÇÚ­´µ²~Çÿ ŸjûW“æÿ Ùvc�øæ¿£ÿ â)ðçüKOüB‹bÖOõ¿ûnþÊ¯Õ¾©õ¿mü_eì¹ù>Ïµæ¿Ù>Gûþ¸n{ŸSú‡Õ¾%Ïí99~Þ×ëcôC¦+ùÀúàÀ=@ Ð~T `zÊ€ ˜ƒò Ð~T ¸” `zté@¥  `zP`zÈP�è?* \N�=¨0@(p=(0=å@@§N” ˜ƒò ÐP�è?* 0=å@@  P@  P@ ÏZ LAùPàzP`€P�è?* \J 1Ûµ  Ò€J LAù
 \J 0=(  ¦8ô  õ Àô• ƒò  Àô• ƒò ¸ÿ ?^´ ˜ƒÖ€®9õ €J LAù
 0=å@LP�×4 ¸” ˜ƒò  Àôt Ð~T ¸” ˜ƒò Ð~T ´ ˜ƒò Àô Àô� Ð~T ¸ Àô• ƒŽ” `zÊ€€J (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 üþÿ †¦ñŸü<?þCû:ÃþŸøU_ð›ÿ in‹íÿ Ú?Ùmò¶ý‹Îò¼Ï—?nÛ�ùeÚ¿¡¿âd¿ñ._ñ>µ_ûsýlþÂú¯,þ¯õo­{~ooÉÍË¯û½ïöÏ”þÜÄÿ ­¿Ø\�ú·Ô~³Ï§??'5¾Úÿ Þù 5üò}XP@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@/ý£ðWþwöw�¢ÿ Âðÿ „sÍò|½CûoþÏ³îÝælþÎû7ÙùÇ™æííšûo«q¿ú�õžLoú‹ý¥ÉÏÍ‡ú�öŸ´µ¹y¾³í}§^^Kõ±çse¿Ú\·¥ý§ìoo{Úûwø-o��h¯‰= €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €>
ÿ †Sñ7ü<þ×ûzÏþøUßðƒÂ?ö$ûgÛ³>Åö¯¶ÿ iïò÷üÞ_ö^1Ç�üUýÿ k+ÿ ‰yÿ ˆAýŸ[ûWýjþÞþÑöòö>Çë^ßÙ{ªòóréÍõ«ßìt>_û
·úÕý½í£ì~¥õ_cËïsrrósóíÖÜŸ3ïZþ> (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  Îøio‰Ÿðòßøf/·Úÿ Â¯ÿ …Cÿ 	—ööv•ö¯íŸìŸ¶y¿Ú_ÙßÚÛ<î|¯í/#y[x¯éoø†</ÿ Ãÿ KêõÖ¯õËûë?YÅû/©}sØò}[ë?SæäÓŸêÜÿ ß¾§Çÿ lã×/ì^xýKû?ëœ�æöžÏšüüžÓ~œöò?G«ù¤û  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €<7þGÁø_ð¤¿á#°ÿ …ëÿ Ïü$_ð�bëßoÿ „kìßhû_ößöOü#þWÙþ³ký«/‘¿å¯¼ÿ Rxëý@ÿ ^³1êö§öoö§×rÿ «ÿ iû_gì~£õ¿íoi§´úŸ²¾¾ÒÚžgöŽYý©ý›í£ý©ì=·±öuy½�¯Íí}Ÿ²µ¾Ï´æò=Ê¾ôÂ€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 ø£þãþ‹þþØ~Íÿ 
ãþøWÿ ð�?Ÿ¿û;ì?ÚŸð“ÿ nù{sûß±ÿ `çø>ÓüUû�üF*_ñâ«õ=¯úËþ°¬_ÚqövúÏÖ>©ý—õkýŸmý¡n¾Ë¡óØÿ Y¿Ö­._©ýWêžÅÞüœ¼þÛÚ[Ï—ÙÛÇÚõøqô�@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ ~mÂîøÏÿ 4ÿ …ý ÿ ð¤ÿ áOÂIý�ý‹aåÿ ÂEý‘öŸ;ûoì¿oÏÚ9û?Ú¼¯áÙŽ+úkýFàŸø•ïõóêñÿ ^×?ìÏ¬ýz¿7öo×=Ÿ'Ô}¯Õíìôö¾Ë›¯5ÏŽþÒÌ×?ìÎwý›ý�í¹=œmíy/in‹ìó[Èý%¯æSìB€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 ùóþÿ ÂøhŸøgŸ9?ánÂ)ÿ 	W“ýœwÿ a}—í[¿´|œcÈçÊóý¶ö¯Ñ?âñwüC�øˆÞÎ_êö·öO´úÇ»õÿ kì­õn}ùþß³ùžOö®û_û&ÿ íþÃÛÛ“þ]ró|víÒçÐuùÙë  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ òOü2†…ÿ ÿ oÿ 	ïö÷ü ð‚ÿ Â=å¯Ø¾Ëö°ý«ÍûÞfßŸo­~¿ÿ oÿ oþ ÿ ö}ìÿ õƒû{ûG™ûkíý¿±åÛ–ú_±àaRÿ X?·ý¬½¯Õ~«ì~Í¹yy¯ÜúÚ¿ =ð €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €?5á-øéÿ 9ÿ „Cw‰¿áBÿ Âœû~ß±Oÿ Çü$ßÙÿ ã÷g‘öÏ´ÿ Ë=û÷ñŠþœþÈà/ø•Ïí�øLÿ ˆ�þ¹ý_øðþÔþËúç/ð/Ïì=—Úµ¬|o·Ìÿ ×O«þûû/û;›à~ÇÛ{;üv·5ú_sôª¿˜Ï²
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (æOøiÏ‡ŸðÔ_ðËÙz¯ü,oøC?á4þÕû=—öOöOØþÙäý§ÏûoŸå|»<�/w±Í~£ÿ ·ˆÿ âÄVúÖýZþÛþÄú§´¯õÏ®{ocí=—³öÏŸ^oiÍn—<_í¬'ößö'%O®}[ë<ü±ö~Ï—šÜ×æ½¼­æ}7_—ÐP@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@3Ã,xþ‡þ¿í¾ ÿ ……ÿ gü!aûu·ü#¿Ù_cû™ö°ý§í^W>oÛöoçÊÇú‡üE~!ÿ ˆWÿ �Øeßêçößöï·ö?´~·í½¿/Ö=¿²ö\úr}^öû]Oûý·ý»ÍWëVú·'2ö>Ï—–üœœÜÖëÏo#éšü¼ö‚€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 üÉøüà¨Íâo²üL³Úü[?µŸ†â¦ÑÊl[_;þÓ¬­ÐÃ?‘ö±1vãšþ¢yŸ‡«èª²¿kÃñ_:ÞÉRË¿Ö•”¬b|Î¯'ö’Á:OEÏì\V²>/Øæ¿ë³¯ËŒþÉYr�75_©{wNÚFþËÚ_wnkŸ¦Õüº} P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@%üYý¬ü1ð›ãŸÁï�º¿‡5Û�Wã¨Ú^�¯Â4ÿ ì[k�¨ø_Nò¦2jÞù¦_Úÿ «³™~Fÿ d7ëÜ!áiÅüÆ|yƒÌ°ðœ„X¼n_7ˆúíJošâyà£†�NLª¯Å^Þ^mx8üúŽ3ËòÊ”jº™„ù)Õ\žÍ>z³¼Ô¯zëh½™õ¥~B{Á@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ |íñ�öwøMñ[Æß	~*üCk»]oàNµyâ�ßÅ¨éÚn›m¨Ï¨xcXk­a¯¬nÉguàý.[fŠêÄÛ »&BdG‡ôŽñ#‹øK#âþáÅF®�°4r¬ç<6'‰«††4Á*X%B½>IV¥œâáUN•uQº)Erµ?'0Ê0ìN‹æ�\²¤«áæ§B3r£QÊ§<eu‡ƒM8Ùsk®žÿ eygkÝ…Ý½õ¤ÊL7v·][Ìš6hç…ž)0èÈÅXáÕ”à‚ç•èÖÃÕ�E˜zÐ~ýÔçJ¤’’R§5Fñi¤Ò÷Z{4z‘”e(ÉJ/iE©'ÓF´zö-VE  P@  P@  P@  P@  P@  P@  P@  PV±¬Yè¶¿i»fùŽÈ!�]åžc€‘¢"»|ÎÊ¥öìBÊ\€kZ4eZ\±²I^Rz(ÅnÛvZ+»_[hDæ ®ý[·åkœøƒÅ·�æY®›¦BNR+ëg¼”¦HV-Ü@Æí¥APB°Üt5‚¦ùeí«5¼©ÉSWê­8JöÚ÷é¦†i×–«’¢’rvõR^»þÔñÆ?ä# téý•wùÈBŽ|¿þ|â¿ðu?þV;b?ž—þ/þL«ãsÿ 1-¯ñ)»ÿ å‡ù<QÍ—ÿ ÏœWþ§ÿ Ê‚Ø�ç¥ÿ €Kÿ “j¾89ÿ ‰Ž�ÇýBnÿ ùaÅØùóŠÿ ÁÔÿ ùP[üô¿ð	òbÿ jøãþ‚>éŸù]ÿ òÃ¿ÿ ZŽ|¿þ|â¿ðu?þTÄ=/ü_ü˜ŸÚ¾8äÿ hèßñ*»çÿ *cùñG6_ÿ >q_ø:Ÿÿ *b?ž—þ/þL?µ|qÿ AûÄªï¯aÍøÿ ëw£Ÿ/ÿ Ÿ8¯üOÿ •±ÏKÿ  —ÿ &/ö§Ž?è# àªïÓþÂ…ÙüùÅàêü¨VÄ=/ü_ü˜ƒUñÇ}G@÷
»üæ!ÚŽl¿þ|â¿ðu?þT;b?ž—þ/þL_íOÐG@íÿ 0›¼óíý¡ÚŽ|¿þ|â¿ðu?þTÄ=/ü_ü˜‡VñÇ?ñ1Ð0;ÿ e]óÿ •Èô4seÿ óçÿ ƒ©ÿ ò ¶#ùéàÿ äÃû[Æÿ ôðÿ R?äwÿ Ë^¥ÙüùÅàêü¬-ˆþz_ø¿ù1F«ãŽúŽ€=¿²nÏþä(çËÿ çÎ+ÿ Sÿ åAlGóÒÿ À%ÿ É‰ý«ãŒgûGÃý	ÿ �Ußÿ ,;ÑÍ—ÿ ÏœWþ§ÿ ÊÂØ�ç¥ÿ €Kÿ “ûWÇôðÿ ù…]ôõÿ �‡à}(çËÿ çÎ+ÿ Sÿ åalGóÒÿ À%ÿ Éˆ5_qÿ ÿ e]÷í�íóŒÑÏ—ÿ ÏœWþ§ÿ Ê‚Ø�ç¥ÿ €Kÿ “í_ÐGÃý3ÿ  «¿\ÐC¿j9²ÿ ùóŠÿ ÁÔÿ ùX[üô¿ð	òb�SÇþb: ?ö
»þÚseÿ óçÿ ƒ©ÿ ò°¶#ùéàÿ äÃûWÆãÔ´xÿ �Mß_ü…ùüùÅàêü¨-ˆþz_ø¿ù0:¯Ž;j:ÿ ¸MßûˆQÏ—ÿ ÏœWþ§ÿ Ê‚Ø�ç¥ÿ €Kÿ “ªøàÌG@éŸù]þ?óíÿ ê¦¥€òçÿ ƒ©ÿ ò±[üô¿ð	òaý«ã�úèôþÊ»ÿ å….|¿þ|â¿ðu?þT;b?ž—þ/þLCªøß–€îwôÿ  …ØùóŠÿ ÁÔÿ ùX­ˆþz_ø¿ù1µ|o’¥ p3ÿ  ›¾Ÿø0£›/ÿ Ÿ8¯üOÿ •Ø�ç¥ÿ €Kÿ “ªxàÌG@>ßÙ7ü°£›/ÿ Ÿ8¯üOÿ •±ÏKÿ  —ÿ &'ö¯Ž9Î¡ û…]wàÌC½>l¯ìq_ø:Ÿÿ *±ÏKÿ  —ÿ &/ö¯Ž8ÿ ‰Ž�ïÿ «¾?ò¡KŸ/ÿ Ÿ8¯üOÿ •Ø�ç¥ÿ €Kÿ “û[Æü�íŽüJ®ùÏOùˆqš|ØùóŠÿ ÁÔÿ ùX[üô¿ð	ò`5_?´t {ÿ Äªïóÿ �….l¿OÜâµÿ §Ôÿ ùX­ˆþz_ø¿ù0þÕñÇ?ñ1ðÿ Ÿø•]öÆOü„;QÍ€ÿ Ÿ8¯üOÿ •±ÏKÿ  —ÿ &/ö¯Ž9ÿ ‰Ž�×ò
»ÿ å‡§?§Z9²ÿ ùóŠÿ ÁÔÿ ùP[üô¿ð	ò`5_ÐG@Ç¯öUßòþÐ£›/ÿ Ÿ8¯üOÿ •±ÏKÿ  —ÿ &'ö¯Ž1“¨èpâUwôÏü„(æÀÏœWþ§ÿ ÊÂØ�ç¥ÿ €Kÿ “ûWÆùÿ �–�ïÿ ›¿¯ý(çËÿ çÎ+ÿ Sÿ åC¶#ùéàÿ äÄþÕñ¿ñ2Ð9ÿ ¨MßCÀ?òïÇôseÿ óçÿ ƒ©ÿ ò ¶#ùéàÿ äÃûWÇ8ÿ �†�ß�ì«¾ß÷ý(æÀÏœWþ§ÿ ÊÂØ�ç¥ÿ €Kÿ “«xÜôÔ|?ÿ ‚«¾¸ÉòíG6þ|â¿ðu?þT+b?ž—þ/þL_í_tþÒðþ}?²®ÿ Ÿö‡oÏseÿ óçÿ ƒ©ÿ ò±Ûüô¿ð	òaý«ãú	hø)»ÿ å‡\ö£Ÿ/ÿ Ÿ8¯üOÿ •±ÏKÿ  —ÿ &Ú¾8Ïü„tzÿ e]ÿ òÂŽ|¿þ|â¿ðu?þTÄ=/ü_ü˜jøã8þÑÐ1ëý•wÿ Ë
9òÿ ùóŠÿ ÁÔÿ ùX[üô¿ð	òaý«ãŒgûG@Ï<dÝöÿ ¸‡åÅùüùÅàêü¨-ˆþz_ø¿ù1?µ|oÛRÐ=¿âSv?÷!Óß¥ØùóŠÿ ÁÔÿ ùP­ˆþz_ø¿ù1F«ã�úè3ÿ  ›¿ËþBþª9òÿ ùóŠÿ ÁÔÿ ùPíˆþz_ø¿ù0þÕñÆüLtŽßÙ7ü°ïÛŠ|ØùóŠ·ý~§ÿ ÊÂØ�ç¥ÿ €Kÿ “íOgþB:=²®ÿ ùaKŸ/ÿ Ÿ8¯üOÿ •±ÏKÿ  —ÿ &'ö¯Ž?è# vÿ ˜Ußûˆv§Í—ÿ ÏœWþ§ÿ ÊÂØ�ç¥ÿ €Kÿ “í_c'Qðÿ Óû*ï×ôïØÿ úéseÿ óçÿ ƒ©ÿ ò°¶#ùéàÿ äÉ[ñ”¾it{è×æ0[YMk+…å‘ešöDRÃ€ÅHSÖ‹àee×¦ÞœÓ©¥çhÓMÛª¸¿~µ½9y(¸þ.Lì4/ZëK$aÖúÜ(º²›>dDƒÊ¾ÕI�ãïÄ]@+’&ì«Pt­$ÔéÊü“ŽÍy«Þ/]¤“ümtê)Ý4ã%¼_èö#¡®s@ €
 (  €
 (  €
 (  €
 (  €
 (  €<ƒãïÃ›¯‹þ$ü?Óµ+ÍWñ?‚üQ¤èš¥�ÍÍ¤öÞ¡ ê6Uß›k=¼Û-ï®a™ÑeMá1‘Áeá÷Qá4áž"ÄáhãpyVw•c1ØJô©U§ˆÀá³6#G–µ:°æ©B”à¤àùy®yù®Xì»„„åN¥|5ztç(¸T�)Æ¼ZzJIÚúØñïØ{À~|ðï€>5Íkyâ?ßø–ÒÇQ‹PŸP¼Ô4›Ÿx�P°¸ÔêÞˆ¦ûÝ’D’Kuû…M’ùaE}—ŽÙÿ qWˆ9—ð<*ÑËsL>W[†žžŽK'ËpøŠxxÑ©:r‡Ö(×”åRýã•áÍvyü5…ÌpYU&dã*ÔgZ1š›œ§NXŠÓƒ›’M>IE$Ü´ëcì
ülú  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €œš óZOí/Ï¤´Z¥¬°FxA6¦²1v^C²5ŒeŒ¡åJäç³ZXH8éõ‰ÔŒŸ^Z<º'Ñ5U¦º˜üU¤Ÿü»ŒZÿ ·ï¯ÉÇNÅ½�rGýò:ÿ Ÿ§øò5äl<uî=0zõÿ =sùš ¥<ã®?1Ðg×ŸÌ÷ ]‹�ÎHï�þŸÇŒõ#¡nû Ý�:zÐ~é�Ã?�; ÇcÏòöÏ_óøÐ�°Ÿóßß¥-??Pƒ={þŸ—ë×¨Óç`Æ3ÁÀ÷?ŸoóïE¼ý _-}yçœŽqŸnGéGü0 AÆúß–NŸËš7ûö<¿§¹ïÛéÆxõïC·ü ,~_ÏÔqÇùúQ``ëÀÏPqôÈ§oø`{þÿ úçÿ ×IýÀ'–;y'Œý?OåøQòþ��Ðöã?Ž{véëžœQ¦€(�q×ŸÓù=úç·pí÷ ÁúñÓ×òïþMv<±ÀéŽG§# ëž:qI-À<±ëý§ùö§m{ëýhåŽ2}Ï^½08?çôVþ¶|µã“×ê1�¦y<g·¦(³ìåŽ¤÷è8õã¦?§«·ü=À<±Îr8õ÷íÓ¯J:ioÃú¸À@©üÿ G~ãµ. XÁäû};öëþzÑkþ½ _,c“î8î:�óôÏSOúÿ ƒýnëÇùÆ8ãÞ‹/˜	³§LŽ§¯éþ}éÙ »y=¸ã¿äqôÇ·>@9'ÐoË×ò÷ëEµ°Pq×üûó�ëúÓ·˜–=pp1Æsž3íý?’íø€l§>ý?¡ýE‡âÀ
œ|×?ýgµ;—õêˆÇVéÎ9ëíÓ?—ÿ ^“_`,zú÷?€éß½û€Bƒ·òþ½
ijì_|þŽ8Æ)~ž] Mƒœ©è3Ž8öèOZv]üþ@Xë�=¹>ýxãµ.¿×^ <w—ÿ ¯Z}`/–=O9÷éÓ°ëõúÑo �H ôíÓôíÓ¶i[óõ Œ{ç¨íŸøúãñæ…k€�:úöãüx>þŸ­;]ÿ ¯ bñÎ=†zýpxÿ <sKüÀz°wÿ ­øçýcåø��7üK5½Rˆ•{½B&à'È&ŠñÔî—bmMÀ•T2†9íÃ¿iGEëR•xß^YC·kókgÛ{Ô\³§5»’ƒóRÿ †þºúÈ ŒŠá6€
 (  €
 (  €
 (  €
 (  €
 (  €
 (óÏöëø÷ñÛöq‡áßÄ�hZv½ð¶ËÄÖŸ,mâûW‰n-e¶ÕîäŠÞ˜c´M9­¬q<ðêV·Épm–#yY£<ðÿ €|IŸðÏcñ9×Êñxf½Iû,²�hÔÁÑŒêT§9Ö–%U¯ûºsÃUÃÊŸµçNJ	ü—æ¹¦N°˜Ì-(UÀÆ¼#ŒŠ\Õœ\jI¨¦”ymZœd�­£gÞ>×¬|Q¡i~ ÓYšÇU´K«rë±¶1*C)$‚®¬¸Éé_€æy}|«ŠË±)*øJÒ£QEó+«5gÕ4ÓùŸSF¬kR…X|3Š’ù›uÂh P@  P@  P@  P@  P@  P@  P@  ×ÎÓŽ½¨Ë#Ëø³Äùá…¦€?ñÝS¯5ÛWýÏÿ _1_�·øiíæÐN<Ÿóž.+“_ÖæÂ…=ùqŽƒAôúÿ :V¿èlÇPyÇùñõçëOu¦ÀoCÇ={õè×úìì8çý:tÍŸ×õýj9ÉéèÇ>ÿ —ãEí³×õþ@)�Ø�N=:ÿ >ý-¾`x�zs�QþÓNà!Œçúý	Ïó¡i§õò )ÁÆAã¨ç#ëÐ½�_ñþ­ýtB3Ïa€~¹þ}¨îÕÀB™ÀäzŸ\õ#ž¼Qùôþ¿ �¿ýyãùûÑwø€»õÇ§‚}¿Fýt6zd‚qíþyú÷>wv6AÇo›ƒÏ#'éíÓ¥_wüó
ÎyÎOÓÓ¯ù÷¢Úþ[ 'äò3Ç_oÿ WnO�úÿ Ã l=@ãÓž=qÛüðü8	°÷yÇ9ÏóÓ‘Om¾ïëú@_~qÇóõÈõëøñF¯·õýh¶z	çŠ,ú¿ÄØpœƒž‡=ûRÿ . }8ü9ÿ ëS×ü€z‚zqÏ¯AïéG–Ûÿ LÙŒpF¿?Ÿ×úQóëý] M½óózÿ õºtéÇ4ºé°
9öÈýG¨Ï#üš7õü M˜<œŽàñÔuàõöì)ÿ Ãiù �9ääR×õù ïèsíùç·¿Zoôù€Ï~ç�oÏ©ã?çúó Ùì=³œc×?áÇãOïþ¿¯˜ÛŒgëü±�o¯øÑý�)Ç¾y'=3×Óž(ÚÈÙïÔz<óùzóF¿ˆÏÇüôëùM» åŒ}}§×tü)Yô{€ž_þ¼ã®GøJ5Oïþ¿¯˜—ïúõèûü¿«ýÀ;ž}½?Ï^´k²ëýÃÿ �³®3Œt^¿Óó§ë}ÀnÃ×ôíÏÐž¯ò£òþ»€í¿ìóêsƒëŽyþŸQK®ì / d÷öëÛüþ4µþ»€�8Æ{óî=?úôk÷ »;‚Gêÿ ¯ß4ÿ RzäŸÌóü»~X¤€@œsØöè~½ùÆzÿ QTïÓËÔt—Ã­“�âm(�ô3ô'úwö®œ'üÅØý´Æ·üºÿ ¯ÐýOVŒ‚€Ž‡óü}O½q› €
 (  €
 (  €
 (  €
 (  €
 (  €
 ‚âÚ¨Ì71$Ñ7Tq•<ÈúùÖ”êÔ£%:S”&¶”]ŸÑ	ÅIZJë±ðGí9ûhêŸ³'Å¿†¾ñWÃ}NO„^-Ž5¯‰¶Þv¡o¥ê—¯®YØi‚ÇLŠêöÞV½´Ò7I5¤±˜õ¿!*ãúÂß°ž(ð‡æYWaaÆ9D§<ÕäÃTÅáhGZ¾)â1S¥B¤
ØËFc%,=ýäœ_Ëg\E<—0ÁÑ¯ƒŸö~!%S¯8Ó©'V1‡$¤Ÿ4iÝ¸µiüÏ»ô½JÏYÓl5}:S5†§go}g3E,--µÔK4.ÐÎ‘ÍhÝIŽTGRv²‚¯À±xZØ,N#‰Š†#Z¦¼¡5´¦á8©Ó”¡4¥”¡)Eî›GÔBq©Ôƒ¼g(»5xÉ];;5£Ù«—ëœ  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (¯��Œç¨Ì-F|Yâ�×ýÃýyãn«þAük¶¯ûžþ¾b¿:&1þ5oðÒÿ Ü†öŸCë×ôÿ õc­rÛ¿àl}�¦}óÉ �?N+Ãy m<ç Œý	àÿ úøÇÐÓþ¾_ÖÀ.	0rObÉ¯NªÝ[ÿ †n½GŽ~ž§óÏZ~_ˆÎAÁî?¨ãüó×)[O¸ž‡ž}‡ÿ \þ?•~@4ŽýoÇÛü(×Kê´œuŽOÔöâš_Ÿ^À‚HÛ9úzþ‡žý¨·ô€\wÁúzuížŸäqK]¿¯ëÌoLqž=º÷<ãüôÅ¿ÂßÒØÚ}ðHã§õÿ O§š Á<ž˜úwà’O§‹ ¤œôëÇ^¼Žù?× ¥o¿úü€Îr·ãíõçÖšV^`èî}xïéøÒÛ}oåý}Àí´þŸ\öõéü¨³�	ƒžçž¹ìy9íÛÛßµÓ^} P	=éŽ3œû×ßÓ­Óúþ¿à€¤{g×ðöîh³ÿ /øpF{Ðc¶:ŸÃéßÞ…p°ó÷¹ç?çõ>”k¾�˜ÁÁ$|£Ÿo§¥íëè‘Æ ?¯øôý3F»ß×ÐÚyÈaœwÏÔô?^Ô[M>ðŽ¼ŸðÁíß·%åýy€gÛ�óžý?­+ ˜ùxïÏ¡÷ãÿ ÕM/�ÜzŸÏ¶=;�_Ojú}à)õ<“ýqþô[`óØöüsÿ ëæ‹4ôàç©ÇCÇ¿?—ëš5µ¾@8[Ó§óß·^´;èBñŒ¿^ONœtëOúÿ 0Ñ±ÉÇ¿§öãùÑaq»ŽH=¾œœw¥o•Æ&Óè{ô>¸Æ{ûçŠ<ý?à€`ŽÇ×œ‚@í�Pzl
~ŒA´“Âç'¸?_~½:qìhÛ¿q‹Ž1Îy ûç·§¿µëø „wç=úçŽ8äþ]ûKúíý~@(ÎFN‡ëëŽ¿­· 
êO\ú{ý=}hwþº€Üc‚	ŸÇ¯ò÷â‹u@;ãçÓ“ŸÃúÒ¶Ÿ0üØ÷÷Æ?—N}iÛK|ÿ à  `óùöÿ <~t5Øí=º`Œü¿§JvïøÎx�Nÿ ÌÍ¥g=	?hÿ ÿ ­uaû×ý�Ö·§ºc[þ]×è~§©Eþ­z~#žqë\FÄ” P@  P@  P@  P@  P@  P@ rž1ð/ƒ¾ éCCñ·†4i+smx–þ“§êö±]Z\Esos�½ÌQÏÐFë* pTa…zù6}�pî/ëÙi�Êqn�J2ÄeøÌF¬éV§:U)Îxj”§(J$œ%'}Q†#‡ÅÓöXš4«Ó¼eÉVœ*EJ-I4¦¤“M-l|‰ûbþÑÿ eí+À¾+ð7ÁÛÏˆí®¯ ø‡ý‰%Õ£ø_C·m-/a†ÇÃšÄQÁmk6­0‰¥Óâd²ÙæªxaðcÃ~ñSŸe÷ÑáÎ#«J„øqã£J´sLuE�u¨T�|Ë9T«VJ|ê™©WæäoÝŸ�Ä9¾7$§†¯…Ë¥ŒÂÆRX¿gÍF’öj2Jj+$æìÜ£ºéôßÁÿ ‰ÚOÆO‡ø“¢iºÎ‘§x¢ÀÞC§kÖ2iú�«Å4¶Ó¤¶ò|Í	žÒã
.í•HÄ»òî3ál_q.mÃ8ìV‰Ê±
Œñ9}xâ0µc:p«NQ©Õ:‘U©êèÖS¤Üœ9Ÿ³—ãa˜àèc)Â¥8W‡2…X¸N6n.ñzÚé¸¿µJÊö=.¾`í
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  ¿Ün½J ó+<·‹|Q�ùôðøÈãøuQÓŠî©þç„ÿ ¯˜¯Î‰Œ�[ü4¿öó¥Ú:müzvã·9ï\vùZ›W°=IíßÜÂ¨G=âÏxsÁ¥âjö…¥[Iu}©jw–öV°¤Q¼¥Z{©a„<�
Ä­"îršåÆc0Ù~®/^žF�Jµg
pŠŒ[·4Üc}“jïC‡2Ì°9F
¾a™b¨àðxhJ¥ZõêB•8¨ÅÊÎu%)4šŠrWz“ÿ ÿ à®_ü7«_iß¾^xêÖÒåàMFÿ _·º1�-³ÛiürÛ¼Á„$Œ²Ã¶a�û+ñÜ×Æ|·Z¥<·-©˜ÆœœZ˜ŸªÂmhå8„âÝùdŸ¼­%£±üáŸý&2L&µ—$«œS¥7^¶7ê4ê8«JTÜ0¸ØÊiòMI©ÂÓ[Ù¿à®Ÿ<CªZXüCø{àk[¦).¡¦ë¿ð’Åk!åù«>‘  €¸Q$¦d¡-µˆFWãFY‰­Nže–ÕËá&ÔªRÄ}n0vvoš†KÚíµeÑ‹!úLä˜ìE*9ÞG[(§Qµ*Ô1Ÿ_�7gÊåÏ…Á%ÛšNJÉß[kúµáxgÇÞÓ<Wá^Ç]Ðµ{Xn¬ïôë«kÈ'‚;…G–ÖiáY’9£2D$b¥€èA?°`qØ\ÇKƒ¯O‡­Î)Î3�¥$›ƒ”of›Wvº?£²¼×�`pù–YŠ£ŒÁâiÂ¥*Ô*B¬œ#4œ©ÊqæQ”y’“µÎ›hÀêp{ý;ñúW__‘è€dúÇ?�$þXÅ FOò}±Ø{wÿ ô m ôãð9öÆ{~<Ñý\hëóÇlãô ý?•Œ6ûgÜqÿ ÖéÏéE»lcž„ñßÔ~=åGÌBìã×ŸÓÓÿ ¯ÆzqGõ`½FppsÁÿ éúúÑýL ¨À ã9ã¯§øzzš:Œ
ž8?�Á÷ÆúÙÈ¦!6óœñß·~G·Øö¥ÓúÜýp Îyæ�?Ãþ9Î{ž¸�~Ÿ…Ý@Mƒ§9ý1þ óý(þ¿¯�¯'#Ž�:ûÑo�Æ{¸ëÆÜzqß­
ßxÆà`÷Î?¯¿On´Ä8¨ëÏû¾þ™¾?Æ—ùØb•žG®yýO~ß¨ô£ú] nÎ½G<Gçþ{Ómé�NGN€îùýi[å¨ÃoL~=ÓŒÿ /¯¥ jŽÇ>Ùé�çþ=(×úêvcßü}{Óª¼ò¼`õ>½=Æ?¥'ù » ëó~Ÿ^h×½€R«ƒÇ=F?Ãüÿ �ÛóÐ¼ÏÓ§ÓžßÌzÐô Ú2x8ç×ü�þµÿ ] 6Ž8#9÷üsžô˜„)ƒÆyï�þ¿ùÍ .Ó�Ï>üãØEy è ?í_§ ügÒ€¼ž	z =‡¿¾(þ· ÙßôÀÏ>¾ÿ äOúù€»@ã“×¯Nô¥¸W€qùçÛØ~Ð?P¨_ÀŸñÿ >†€´gîžqÆ{“Ï>¾ŸÈÒü­7s‘‘Ïÿ [œçü÷£ðä`üÇãÀÏåôy0�À#=2zp\ãÓ·<zõ¥múæ|J õÿ ‘ŸJ9:\c>ÿ �vavÅØeÿ ¤˜Öÿ —_õú©ép€#\z~ç¥p›Ð@  P@  P@  P@  P@  P@  P{»;Kûy-/­mïmfR“[]ÁÅ¼ªF
ÉÊñº�H*ÊA­(Ö­‡©Ô*Ô¡Vð«F¤©Ôƒ[8Î2‹]ÓLRŒdœe(½Ô’iú§£<‹ãoÃÏøïá‹>ü9ñ·€5ÍoH¹Ót­fÞ ¶ÒÌÐÈŠÉiºŠ@«#G&èl]×gÊ9!¾Ç�¸�+È8Ã(â%ËªñŒ¥‰ÅàªT©:˜¥	Åµ)<NSn
Q´ëÅ>m_UçæXJØ¬|&¬pµjS”)ÔI(Âé¥¢„ÒW³Òm�ý‘|#û\x?øgö˜ñÇ†~ Yi’˜|%â-­ç»€¦šêgX|-á•hÔ¶ ¥ä…¥ó8  Vyãqàþ{,«4ðÃ"Ìøv¾*<ù¾[Ž©*”èÎø”Ôó\Ñ©4°îÑ¨¡Ëª´›OÍÈ0ùöÛÑÎqTqpƒ¶­$”¤­yZ…¾µW¹ÃkðRŸ‚>øïyû?kþø…¦øªßÇøjM#GoÞê·ZûøvÞKk¥×›Pkw½Evy4Ø˜A,N±d_wôdã¬Ë€(ø‡—æ\9‰ÊjdSÏê`cŒÆ,Ò†–_Ê¬jQyzÃªŠ„œTc‰’ç„“•¬ß-N2Ë(æ’ÊjÑÅÂºÄ¬*©ìéûT•WE8¿kÏÊä¯~MšÓ¢úóâŸÆ¿…¿|'gãŸŠÞ1Ó|áKýJÏGµÖuXïd¶—TÔ,¯uK ¶·“	¦³Ó¯gRÑÂÛ¸.¢·ãœ'ÀüWÇY½l‡„²\Ny›aðµ±µpXIP�Hapõèa«WoV�>HVÄÐƒ´ù¯R-FÉµïã³,[‡Ž+ˆ†„§q©5&œçN1÷#'wIím~|tøKñçÃº—‹~øßJñ×‡4�^mRÕt˜ïã·´Ö-ìlu9¬d[ûK9Œ±ØêV7$¤MK„Ë‡UÓŒx‹ü?Ì°Ù?äX¼‡2Æ`á˜ap˜¹açR¶¦"¾âðõ«Ã’XŒ5zI9©sSmÅ'Ö_š`3Z3¯—âa‰£N£¥9ÁM(ÔQŒÜ_<bî£8½­g¾ç›[~Ú²ÝßÄY>Û|dðÌ¿¢ñ,ž“Â‚ljâhµ/ì‰4‚í¥-ŸÚRÿ D-öŸ#ÌäJSç¯¦«à‡ŠÔxn<aW‚ó8ðÔ²¸çQÍ�LÃ¼®xo®G¢±n·³xoß[ÙsòéÉÍ¡Æ¸“#–1àcEãg‡t9jóûe?féßÙòßŸÝø­~¶=âïÇ¯„´«sâ÷Ž´¯i:�Ø±±½Õ¢Ô%Šæì£¸…?³ì¯1HÜåÕWŒg$ó|áÿ ø�‹¯€àì‡Ÿc0Ô]zô0“ÃBtè§¹ËëèF×”V�½vÜëÌ3\¿*§¹†*Zs—,e56¥-]—$dú>†ŸÃoŒ?þ/øM¼uð×ÅÚw‹¼&­p‡[Óc½[`ö¨^áv]ÚÛ\f4œCÎ\ž+—‰¸3Š877YäøœŸ7j›XL¨:¶ªùi¾j5jÓ÷�­ïõMÙƒÌ0Y…­`ñÄP×÷�RQÑ]üQ‹ÓÐò¿~Ùÿ ²÷�üuÃO|cðÖ»ã»‹‹»X|7k´—Ò\X#ÉyµÎ•¶è#ŽGßàª’¥…}fuà—Šœ=�OŠ3®Ìð:tjÏ3«S*§ˆ”cFmRÅÔ«j’”b¿w{´�Ž?ä˜¬RÁaó
5qMÊ*ŒUU&à›’¼©¨è“oÞ:ÏŒ_´·À¿ÙúM/ŒŸô_Iâ8ï%ÑW‡T—ûF==àKÆ„éú}ê�³½Õ¸q!CûÕÚÎ<ŽðÇ�|DŽ:\ÃXî Ž[*0Ç<ð°ú´±
¤¨ªŸYÄPþ"¥QÇ—™{Žö:3ç,Ê}ŸöŽ2žÚ©:~ÑMóòÙJÜ�–×Wõ;¿|Jð7Ä_é¿üâ;/xX°½Õ4ÏØ¥Ð²¼°Óî.íon"Ià†ëm½Å�ÜN­n²o�Â£|¹ðsÎÏ¸o>Åp¾y–×Ësü"†–×•'^Ž#N�Zç*u'Fõ)×£8µQÇ–¢»ZÛ«ŒÂã0°Æá«F¶¤%8V�7,¡(É¤Ò–Ž2Nê÷OCÇ>~Ù³ÆŸÛxáoÆxËÅw�]Ý[hšdÌwSAck5íÜˆ×Ú]¤‚ÖÞiœCl�¶‚pÚq_‚ž)ð>SW=â¾Ìò\¢�J4ªã±503¥
•êÂ…Éañuª^¥Z�‚÷-y+´�;ÄY.e]a°9…Ey)IS„j©5¹Iûôâ´Œ[ß¡±ñ{öªýžþjšn‹ñâ†ƒà]SX‚{­2ÏVƒV’KÈ-~Íö‰"k:ò<EöËmÁ�[÷É€yÇøKâ/ˆ8\V7ƒxWŸápU)ÒÅVÂTÁÂ4jUö¾Î2XŒM	^~Æ­­½Ç©¦ažå9TáO0ÆÒÂÎ¢r„jF£rQå»\�’Óš=zž‹Å Oàø¥‰¬eðX¶¤¾'Dºkb·fÅ®Bµìj`#ìûƒvíæ¾j|+Ä4ø…ð¤ò¼Dx…WXW•ÊT–!b%]RæöžË™ÑjÄµž÷ÐìXÜ+ÂýyV‹ÂòóûeÍËËÍË}¹­Í¦Ç›|#ý¬?go�½öƒð‹â§‡üs¬i°Es}a¥C«E5¼-ËÇ#ÿ hiÖhU–Îä�ŽÄ› esôüaáˆüƒ¡˜q�	æRt¨b1u0s…J�t”â¾¯‰¯$Ó­I{É/}[­¸²üû(Í*J–_Ž¥‰©œ£Q4Ÿ5Ÿ¿¯³-»þ*þØ³WÀÿ Â!ñ[âß‡<âO³Ewý“ªA¬IsöiâŠxeÍŽ™w×Šxœ7vd�7á/¼Nã¼³ûg„¸?2Ï2Ïk:?\ÂÔÁBŸµ§9Óœ-ˆÅQ�ã:s‹÷mx½IÇñM–Vú¾?K[•KÙÎ5åi4ýÈIjšëÔõ_|Qðƒ¾_|Uñ7‰¬4‡ºn•o­ßx¢é.�…¶•w,ÛÞH‘[ÉwåË-Ìª¶Í&éTãär¾âëˆ¨p–W•×Æñ+SC*¥*?X«‹¥“©F2�HÑæ„)T“nª�¢ýã¾¶;‡ÂKZ´iá!MU•y)rªri)4“•›’_õØà¾~Ô? ¿híoLø7ñ3Cñí÷‡--/µËm"V7Ó­/¦–ÞÒyÎ¡§Ù!Yæ‚XÐFÎÙ�² s_CÆžxƒáÝ+�x_Ãô3:Õ¨`*c*a&±5°ð…JÐ‚ÃbkÉ:p©	IÉEZJÍ³“.Îò¬ÚUa—ciâ¥F1•UN5$fÚ‹|ðŠÕ¦•¯±Ïü@ý²ÿ f/…ž6—áÇÄŒðÇ�áû›áÛø5§½Oí%W±ËZiw6ßé*êÉ‰ønÛ^�x)âŸdqâ^àÜÏ4È§íù301£/«6«ÙVÅÒ«û¶š—î÷Z\ËÄY&ðx¼Â�Jå½)F«’çøu�9GÞé©ê¾>ø·ðãáw‚Ûâ�üW§øcÁk¬íâô¼k1ìBkW)kmqs‰¢!Ôy† ñ_#Ãü!Ä¼U�®áì§šgr�Zk.ÃÊŠ¬çF|•cÍV­:^äô¼·fÑÝ‹Çàð8g‹Å×…2Qn¬”œm%xé¹j¼Žáíðcãåž¥¨|ñþ�ã»=qm©\i1j1%¤åbqŸÚ6l[lÑ�0ùÇ9—xsÆÞVÂáøÏ‡±™|m?k…§‹žr­Nó�4~­^ºJðš÷šzzeù¶]šÆsËñTñQ¦í74¢ôÑóÆ=ÑÂj¶—ì¹£|B
5?Œž´ø†Úü>’ß[kó¯Ü_63|zSÚyò_³†ûO”“ Oš½ì/‚>*ãxqñv‚ó:Ü9¾y«ÍcS °ë/§Cë3ÅrËÞÎ4?x×²ç¶Š.Zµ8�$¥‹ú…LÂŒqnª£ìjó{W.Eªn7rÓâµúž™ñ_ãÂŸ�Þ±ñ�Å�é~	ðÎ¥©A¤Xêú¤wÒ[ÜêW6Wz„ˆ¶6—s‰$³±»œ‰P,,‡*­òü%À¼[Çy¥|—„r<Vyša°Õ1•ðxIP�JXjU¨áêV“ÄV£O–5ñi´¦åy«&“k·™`rÊÄcñ0ÃQœÕ8Ôš“NrŒ¤¢”c'wÉíÐ“á'Æ¯…¿ü3sã/„^2Ó<qá‹=fëÃ÷:Æ•ôVÑk6V–×V·ö–sa´Ôì&fXŒ{nP+–ª¸Ã�ø¯€3JY/ä¸¬‹5­‚¥˜ÒÁbå‡�Yà«ÖÄP¥ˆOZ¼9'[ˆ‚NjW¥&â“‹f_™`sJÄeøˆbhF¤¨Ê¤ÒU#JP÷ãuÁíoyjyl_¶¯ìµ?Ä§ø=Æ_Éñ.?Éðõü"-õ¿í%ñ¤:áðÔšs¥?¶&¸œX]}›Î¼ÿ +÷•õsð?Åz|13Ÿf‘áyä°â8ç¦êÏ$žûN9‡*ÅºþÅà?Úlé{NM9ýÓ‰q&G,kËÖcEãV!á–¯?ÖU_bé_Ùòó{_sâµúÛSÑ>/ü|ø?ðHÓõïŒ;Ò|	¤jÚŒZF�}«G¨IÖ¥5µõäV‘�>ÎòA#Úé·Óè©¶ÙòÁŠ†ù¾ðûŒ¼AÆbrþÈ1yþ3	†ž3C	<4'KN­
­'‰¯B<±«Š¡”œ¯V:Zíuæ®_•S…\ÃON¤Õ8JjmJn2’ŠäŒ�Üa'ª·ºÍ?‡?þ|[ðtß>x¿Mñ_ƒ­åº‚m{OŽõ-#–ÆÎßP»B·–¶×†ÎîÚá±	%]¤¶@åâ^âŽÎ¡ÃÜK“ârŒê¤)T†_ˆ•	V”+Ö©‡£$èÕ«NÓ­F­5ïßšöVnðyŽ‡x¼"ðéÉ:°RQN1S’´£i'·SËü!ûf~Ì>>ñçü+üaðÖ»ãÏí½+þ«H5¥¾þÐ±»ûÝ®û�._2¿Ü9ûFÍÿ uŠó_Uœø)âŸpúâœçƒs<¼=ZÌëTÀºWÄQúÅ¼´ñs«ËR�ïîïmÒzX~#É1X¯©aó
5q\ò‡±Œj©sÆ\²�åMFêZnui�_ eÒaøÅñ#Dðºäo.’š¼Zœ†ú8ÚDv‹û>Âô ­€ù…È}³åpg…ü}âq“à¾ÇgñÀJ1ÆK<,	IEÅOë8ŠmN/ÝæÝfÎW•:k1ÆSÂº·tý¢¨ù­{Û’ì÷±Úøcâ‡€<mðþ/Šñ5†µà�ï]ƒÄÖÉv¶iPKsu|{x®ü˜`†Iq&Ô;PœáfÜ+Ä9Tá\Û+¯‚âXÊX
™]YQuãŒ¯R4©Pr§RtyçRqŠj§-Ú¼’Ôê¡ŽÂbp«B´ja%NUUh©rºqMÊViJÉ&ö¿‘åß~,ü9øÙÿ 	'Ž~x«OñŸ„ç}+M‡[Óò;I/´óªG{núÚÒ}öîê˜B’FÂy¯K‹øC‰x‡Èx¯)Äd¹½8TÄÔÀâ¥FUcC©J…KÐ«ZŸ-D›�§}5HçËñø<ÉUÅ`kÃAòAU‚’‹”9ù—¿½/®–=´§O^àÞÞøõ>µòÖ½ÏH6ztõ'?—ÿ ^‹ÿ ] þs?à¨´†¹âß‰“|Ð5;›_x4\ÛëV±¤G_¿e¾ŠyP<ïog6’�‰"VÊ²FÁŠ�æOx£ŒÍe’aªÎ,”kÁ(¯iˆçä©5y8ÂTW*N)ó5(³økéÇx¼Ë?—à±)å™Zœ1tÒ„}¾5Uöu£9+ÍÂ”ðÉÁsE59sEŸ“…YB’¬© €À¤õ ñÇzürÍnž»yŸÍÍ5k¦¯µÖþ�Ï§>~É?¾8øOÅ~4ð~Ÿc�áKi¦žïVž{a©Ïl,å¹°Ó<‹k�÷PÚ^Çxßjû-»B’*NÓú¼�ƒs® Áã1ØTÖ9N´¥k((JTérÂwœaQMórÅÅ;IÊÑÂÞñ7e¹–k–Q£[Ns�LLçOë¦©Jtpü”ê^¤iÕ�Wí=œ’›’QVÿ Á4¿h�ü9ø¿mð�^¿‘ü!ã{˜4Ä³ºÛ+iZìê×OKûÑ­íåôÎ¾cDÞ/- Üì<,âl^Y�C%ÄUo�œi*s÷½Ž"<ð¤©õ^Ò¥HÆJöJ*ÖÖÿ £ø	Æøì‹‰áÃ8ÚÒyfmRuJ¥¤ðØÈ:”èF“Ý*ÕkB\Î)B<«{ÿ Ie>Ÿçáõ<f¿¨îxÅ?iÿ >xÃâ&«mswcá-ëWžÖÑc’â(*Ei$ÖèwÏ$jÛ¦ˆ*KV´iºÕaI4œä¢›Ûò}	“åMöGâç‚¿lßø(ÿ Å�†6ÿ µ?Ão„¿u?‚wm»§|6—XñBü[Õ<bƒY0Y¤3øiuÛ�æ5ŠÚ_Aiý¤�¼p!÷j`2ª5ž­lBÄ/vUycìõŽÿ *’ÝCmwÐçU*Ê*j0åí­íù_çcè�Wþ
sá/Ú'áW€>!hZGÃï†þ5ø¬üXñf§â�µ¯ˆ<'¬éŸÃ»�,Á¤Ýj–’ÛÄ¾*Õ$qº›�ì<Àyc–{L-j´¥*•a‰�Fåœdª´ýä�ß${nËum8§¢pæ~OOó>ïøaûCüøÓámSÆß~"h~0ð¶�q-®«¬éÿ n†ÚÂâ…åŠxõ;K”uYáà@C4�—Ê�>®Bj�jR§9YÆ.×k¾�®ŒÕJ2WNç1ð×ö¼ýšþ0øºçÀ?~-xsÅ^1³k…ŸB±‹W·»kÒÜym¨éÖpN#ŽÞY‘4™UÊ–¥ª®BÖ­B›·¼ìÖ¶_e»n·©	;)&ûz¤þ×³n»ã‡ºOÅ¿^øÎë]Ôü3�j«tÚî�«aêšcI&œ–Ñ\ÙêÅldón3)7t!ÈðX¸ÁÕ•	ªj*|Ú|2�2{ìãª·@ö�nÜÊ÷µ¼ûü+ûdþËþ6ñìŸ</ñ‹Ã¿�b¸’Õ¼9ZÌ7Fâ+qu$K=Þ™”Ž¶ì²~îé�ª¤¹‰à1p¦ªÊ„ãK¤Û�µ~R¿à
¤·2¿c•ýº¿jOødÙû_ø·káæñ>»©áïxoD86×z÷‹5í7ÃZT—Îu4Ç§[j:½¥Åü‰t'ŽÉ'kx§•V&Ó.Áý{ü±´§9uQ„\Ý´z¾V—KÚí
¬ýœ­w¢KÕØøÏÂ?´¿üCÁ—ß|ñ“á'ÁÏüø·wáˆïÁ�[Ä·þ5ø{eâ¨­oí/u»_Aá½%£²Ó¥¸[ß²jºÁK¨JÄ&@]ûçƒË**ÔèV¯OAM¯n¢©ÕpÑ¨¸¹ËWk]GNÆju—+”bã+|7º¿Ü¿îÏþÚŸ²×Ã»­nÇÇ?|9á«ÿ êzN¿e¨Á­5Î�©ßéöZ­­•êYi—J²Éa¨YÜ‡‰å€Ç(ýïÊû|Ø`1•T]:’šn.<¾òM««µÕ5g­úº�[É~'ñƒö�Õ Õÿ f�kàÿ Äo„IàoŠ^*»°ÖdñµÇŠa¹ñ~‘9ðÏØ ð+è¾ÕTk1�RRÑë¯¤[/,—1t©¥4\qq¯J¿´£ãìÔ„—=ÝNiÇOwìó=›)|2�›Ö÷Õ;mdõõîu>!ý¹d¯	® Þ!øÝá]1t¯ßxSQ3C®Hl¼C¦ßÝi—ú\éo¤Jësk}euo+m0†…ÛÌ1áÚa—ãgn\<ß4TÖ±Ö-&¤¯-šcu ¯y-žûýÇ£ø›öˆø#àØ|?‰þ#hD^=Áð„·Mzc×A‚úãý ´”& Ó¯¤o´v}šE|0
q†QÔä¥){=*ZÞîË[¿4´îSœU®Ò¾Ä	?i/�Ÿ¿¶OÂ_‰�°?ä04ÄÔ­ÚÃ+�dMNÆÄ²à-qò·9VÃ¯„Äa¹}µ)ÓæøS¶¿saÆ_NÛœÅŸí‡û2ßüKoƒö<3?Ä”Õ#ÑÂ«¯ö¿íY/Á,¾ÖtÑ¦™ZñÖ‹Ý»ˆ%‚�Õo‹�/nèMRqæç¼mËkÞÜ×Û]‰ö�¿/2½ío>ÇÏÖŸðRÏ€w?µÎ¯û(>§-¶¯¤øhk?ð•ÍjçB¼ÕYô"ž´–©µÔÚ×X–÷2èðØˆ,.?Ó¼Ãst¼§°K—4\ù\÷”}ï}én[ÆÚJú­	öÐöŽŸUÕ­=ŸÈ÷ýWöÈý˜tOˆqü(Õ>0xjÓâ—PØ¯†ZfK�yq<–°Û½Ü:\ºrI-Ä/«Þƒ¸.ps,2Tý²¡/d•ùï­}œ¯ç±n¤³’¾ÇÑ—ú�†—§]jú…Ôšm�¤×÷w²¸ðÙÁž[‡pOî£…ZFeò.Fk•&ÚŠW“i%Õ¶ÿ 2�ž¾~×ß³WÅÿ ßøáÇÅ¿x¯ÅšdSË{£XGªÁ<QÚÏ´ì³_é¶–“ùs\ÁÓÊÄ¾@*®Wª®B
¥J„ÒNÍ]«ômêµÔ•8IÙI6ex£öÛý”¼5Ý¿Š>4ø[IšÃÄW¾¼Šxµ¹$·ñŸ”×š\‹m¥LDÖñê6Nòôß¨Y‹+ª8eøÙ¤á‡›N
kXü»Kâëg¦þ@êAo%£·Ì÷)<c¤ê¿o|{á=B×ZÒn<%uâmP�¤6·ö­£>­§\ê’ˆî!h$Úè’“ŠÜ~GªœÓ‹SPš}=ëK¯MJ½ÕÖº]—_ðLßø)µûhø³ã‡ÃŸˆ^ð÷…<oð×ÄzùðÕž€ÚƒÅ¯xÃúì¿ÖîÞþâl][êúž—fñÛ¬qn•È\Œ×¯›eqÀCV”§:u£g+{µ'5khã?’0£YÔrM$Óv·T�›ûìs¿à§ºÇ†à¥?ÿ c/xgBÕ<©èzì¼W«ÔÔô_h^ø•â;Í;Iûã[Ko›á¯\9º·íÔ.Æß–*ª9B–U[RrU#(ºP�¹e	J”S•ÒwrœÖ�¢	VµhÓIY§wÖêû}ÈýDÒ>9|$×|%ã¿é8Òo¼#ðÈø¥|y®Ä·¢ÏÃGÁK¨?Š>ÜÑ'oìTÒµ»û<3çì²ù>iÚÈ–¼gJ›§%R¯#§/?inKkozê×¶ú›sFÍßE{¾Ößî>'ø…û{éší?û>ü8ðµç…uŸ‚_~xÇâF£ñÿ µ¾Õjþøƒ¢ø(‹„HZÌI}z³ùÖm7Ú-×`òÎãßO-sÁâkMTŽ"…zt•/vÏžœªkç·[YêfêÚqŠ³Œ¢ÝýGàø)×ÃÚ7à'ÆŸ|ñG‡|ãÏ‡¾#³Ñ´Ø~'ÛêvºJèÓ^x$ÂUzÞ·ñ\ŸÙ·ËâSHÓ„qIxu�?Z}½‘’kS(«…Äáá^3«J¬›¤ÕÜ­SÜ\î®E'Ó•èï •e8IÅ¤Ó²¿Ë]/½Ï«t/Ú×àÏ„~ü>›âïÆÚøÎóá‚ü{â{Í9u·Òu(µOXkš�‰4E:-½Ëèz�{�GLI¬m/¾Á$kiÉ·^)`±«[ØÐ©È«Ô§Ünœfâ£/yûËDìÚ¾Í¢ý¤R\ÒWåMöÚíí±äµ'íÝá_þÇßÿ iŸÙã]ð¯Åà¨Yí’VÔâÒf¸O·£Áx�Ž¡YH„ª!%2KoƒË§SK	ŠŒèûMÞœÝ5ZµÔ™ÕJ›œm+mØöíGö¶ø7ðÓá·€|iñÓÇþøy?�¬Rk8ïT¹K‹“4Ñ´vñiöW÷’Ç|Ñªü®Kü­Žu‚¯Z­Zxzr«ìÝ�¬·³Õ¶¿2ùâ’ri\÷Ÿ üAðWÅ/XxËáÿ ˆl<Qá­N4’ÃVÓš_³\$‘E2“ÅèÆ)c}’ÄŒ»°Ê9ªÒ©Bn�HJŽñ}5òßUæRjJéÝžß³¿íÕâëß¶G‡¾5øCð¥çì»â{qho{ Õü©YÝjÖ­ÊÞÏŸµG¦M¤yéÃ�<¡Æ¢JôñYt!°ò”þ¹ñ[Ý¨¬šÑmÍÍ½Ý­ÞÆ1«wQI%ìÿ -îy'ìwÿ 5×~:~É_~9üJð¶‡á/üñF³ ÜxNûkX\ZÅ¤øF}öaq{-ÁšŸŠ¡µ�Ç<k¶0nVgß”Ç�Ãa©MÎž"—4­tï>e¢émí¾äÓ®åNsi'k/EoÅþG¾üý»ü(eÿ ƒŸkø#áµñwÃz?Š´m:Àø‚úÆ]#\Ñ4VÅ’4±¿½Š|ëQÇ0˜y#rl•ÊÊS›—Oëuðø(Ô¯”$åÊŸ4e(½n—Ùv·ü=ÆªäŒ¦Ôy’zOõ(~Û¿·+|øðã‡Á_øE>!èÿ >8ø?á°¾Ô'Ô#ÒÛ@ñ‡<yªÝê6ÞKZÜ¥ìž·‚4¸E@’\oMûy~_õŒM|=u:n–¥f’N\ñ•4“òjmýÖØ*TåŒe;É-{4ÿ T}Ið»ö¨øñ‡Äº—‚~üMÐ<Oã=Ò;­oÃÖI©Áyb�2ÈÇûBÂÎ’1(bÖòÊä·
Øã­„ÅP‚©VŒ¡	é;5{ù6üµê\g	;)&ûÚ�í•û0i?OÂCã†­~#¦³‡ŸÂÒÅ¬}±u«�Aô¸4æ»]-´á<š„rZŒÞùbE%œ'ÍT°ÉRöê„Ý.^e4Õ¹R»væ¾ÚìÒ	Û™_±óÏÄÛ#þgÆÚ6o‰_>]|(øià¿x‡Ãž
Ñ‰&ø¯§êžð¾±uµo>ƒeáw´Õd½Ôõ5­üOs'Ø®tß8ZJna�ª–ë0žÊ�UZ­IÂu%Ê¨´ªN)ÇÞs¼l£+Áj�¯¡œªrJ|Ír¤šJüÛ/+wêz‡ìÙûu|ý¢¿g›/ÚÃÄQøcÃ–ö²Éâý?]‚K}CÁ÷±_Çf,5XlßS†IäK½2å?³/5(ÚFÜù�üØãÇ—bp¸—†qç›~ãŽÓV½âÝ»5ª[=÷*c8sÞË¯—õ¡êÿ 	?j€-õ[¿„Ÿ´Á Â·:ÃéË©Z›vŠi„óGªXØIåù0K#:£UËc+œk`ñXf•j2‡7Â��õµ´o«·™QœeðÉ;n`øgöÆý˜¼eño…øÁá­[â³é²øfµ˜¯>Ûkx,.-R{­2>Y¢»o!–·Ãà�ŽV¥�ÅÂ’­*�&¯ÎímUÓÒW³]×`ö�o•I^ö±ôÙAÎ=9ôôçýk�7¡aåñÏ_cÔB{~ÿ ^àrþ'P¿ðŽžßð“éYÉÉéqÓß¯zëÂíŠïõJßûi�_ùuÿ _¡úž�úµú~ç½p›Ð@  P@  P@  P@  P@  P@  P@ Îëð×ˆ.¬/u­ÃR»Ò®í¯´ë‹¨D’ÙÞYÏÍ­ÌH),Ã±°å^5=«ÒÁæùž_KCŽÄa¨â©U¡‰§J|°­Fµ9Ò«N¢ûP©Ns„“Þ2k©�L=²ŒªR„å	)AÉ]ÆQi¦»4ÒkÑïÄß„Ÿ>3øz	üUðV�ãÏÚê¶ÚÝ¾‹â;¿°‡W´¶¼³¶Ô#…Èu®¡{r•Žêeèæ½.âþ'àœÆ¦oÂyæaÃù�\%\LnY^X|DðuªQ­W)ÇWJ¥\=
’ŽÎT úcp,Æ’¡ŽÃRÅQ�EUS­xª‘Œ£¤þÒŒä“í&WøaðkágÁmÿ Ã?
<	áß è®§.µ¨é±KÍVk;M>[ùáBUîd²°³¶y:´6Ð¡áiÅ<kÅœo�Ãæœ[Ÿæ\A˜a0°Áa±™ž!â+ÑÂBµlD0ôç$œiF¾"µU”êÍõ'—`rêS£�ÂÑÂÒ©7RtèÇ’2›Œ`äÒêãÆý’8d�Ù¢ßÇoñ:‚ž‡âšûø©ü]‹ëmâ)/¿´äÖMàmÆùõô¶›3üýkè'ã‰õ2ÂÕ8ãˆgÃ±Ëã”Ç'–:o²ØÐú¬pJ�­õu‡ýÊ†ÞÏÝØåYL±_]YnbÝ_oõ�f½¯¶rçu9¿ŸŸÞ¿}NïâÁo…4Ë=â·€|7ãÝ.Âä^YXø“O�P·¶º
TO
9$
Ì»�èÌ;šð8[�ø·‚1U±¼%ÄŸâñ½�|FYˆ–¥ZM¦éÎQÞ7IÛº]Ž¬n]�Ìaxì-T!.hÆ´ÔeÝ_©À
þü+ðÙðÃ¯h~ð¹yœèZ%šÚiÅîYØÛ‚Ë™UŠ¿ªñÐ\üCÅœIÅ™šÎx“:Çç9ªPŠÇã«:Ø›SiÓ^Ñ¤ýÆ“�g©XLGêøL=,=uJ<°×}<îyÇ…ÿ d¿Ù¯Á^1‡â„þxÃþ6·žêæiš4vÚ´sÞÇ$7r­Ê¶íóÇ,‰!ÇÌ÷Á¯¦Í|^ñ7<ÉgÃ¹¿ñc‘Ô§J”ò¼V6Upr§BQ�:RVµ9B.+¥—C’ŽC“a±C-ÂÒÄ§&«B’U’jNýÚm3§ø©û?üøÞÚCü\øgá/ˆ- -ÚhÍâm2=A´Ô¿hñmK�c[†µ·i ˜”ñÎ|®ñ�øcñFoÃ«0te�Y^*Xu‰–TT]Uó:j­EÑM›c²¬·2ö_ÁPÅû.eOÛAO“šÎ\·Úüªþ‡aá x/À>Ó¾ø3ÃZO‡<¤Ú]Øi¾Ó-–"ÎÊþâæîòÖ\²¬—RÉ*Í<œ`â¼lçˆs¾!Îq<C�æx¼Ï<ÆV£_šbªº˜Êõ°ôéQ£V¥]�:T)B2Ý*qêŽŒ>…ÃÃ	†£NŽœeQ‚µ8ÆnR”T{7)6¼Ùå_ÿ dïÙ·á/‰m¼cðÓàÇ€üâ‹8n ¶×4;Bom¦³º‰&F'dö·A"�AI{×Öq‹ž&q~YW%â~6ÏóÌª´éT«€Ìq²¯†œèU…jS”$­ÍN­8N/¤¢Ž&E“à+,F.Âá«Å4ªÒ¦£4¥+®Ž-§êküPý›~|jÔ4ýWâÇÂŸxûQÒažßM½ñ&“ýÅœ7?gûDPHäI~Ém½yÉOJãá_8ÿ �ðøœ'ñnwÃØl\éÔÄÐË1“ÃÓ­:^ÓÙÊ¤ctåmVÏûòîi�Éò¼ÊPž?†ÅNšj­MIÅJ×Iùò¯¹Ô|mà¥øs…´xü
–m§¯……ª�Y=Ë^5·ÙX•òMÓ4û	Ç˜wWƒS‰3ê¹ãâZ™®2Yô«,CÍ�Wõ×]RTU_j¬ùÕ$©ßùt:V
°ßST)¬//'°åýß/77//nmmÜà>~Ìß ~j·zßÂ¯„Þð­}
[ÞjÒ£°¹¹‚5�#ŠgF;Ñêà(#�4˜ûÆ¾‡Š|Pñ�°”p<[Åùßa0ó•J8|Ï,E:S“¦å(FKÝrt©¶Öü‘ìrà²\«.©*¸RJÒ�j¥{'mþ'÷²¯Ä�ÙcövøÁ¯ÿ ÂSñ?à÷�¼qâ"+_í�èñß_}ž¢†(|ç`BG1FªŽÕ·ø¯âGåÿ Ù\-ÆyöC–ûIÕúž]�–‡´œ¥9Ï’+â”ç97ÞLœfG”f}¾7/ÃbªÙGÚV¦¥+$’W}I|�IñÃŸø³ÁŸ¼IámYð¡§Á¤ÞøRúÕeÑ®tÛYašÞÊ[L…kx¥·�Ò<à4Ié_1—q&}”g´x›,Íq¸,ÿ ‰©‹¡›Pªá�¥‰«	Â¥xVÝTœ*TŒ¥»R}ÎÊØ<-|4°u¨S©…œ9P”oNP‹MEÇ²iYy_Â¿Ù×àoÀû½^ÿ áÂïü>½×í­lõ«ŸéQéójV¶RË5¤N„™#‚Yå’5<‘�{|YâGqÕŒ8¯9â*}Zµ°T³L\±0ÃU¯BµJJIrÊ¤!ÉõQHçÀåfY*“À`pøIUQ�GF
q‹n*VÝ&Û^¦�¿dÿ Ù»â?‹¥ñïŽþxÅ^2›ìf_k:4Wz«ÿ gª¥–nYƒ£*(‹�”]ù‹ž&pÖOÈ8Û?ÊrX{nL³�•$~°Ü«Ú’VýëmÏ½Ì±9OŒÄ<V+.Â×Ä>[Ö©MJo“á×û½;“ã_†¾#øQ¼ã¯èž)ð{GoxwW´[­,Åh‚+d6Ä…Û`$cøWŽ•ó9ñfë>ÈsŒvUœ©TšÌ°u�,Z�isU’ª“wœŸ4ŸW©Ù‰Áa1”>«ŠÃÓ¯‡i/cR<Ð´tŠ·’ØÄø]ð3áÁKKû„ßü/àMVaq¨ÛøkN�OŽò`¨‚YÕ	Þûb�r{"ú
îâ®<ã.8­‡¯ÅÜGšñl$=ž¦g‰–"Tay>Zn_
¼¤íÞO¹ž,ËòØÊ8%,fï5F

OM]·Ùeÿ ì“û4êž8õ‚ž¼ñòë1xˆx²ãEŠMhk�]ýº-P]–ÝöÈïÚV\dKóõ¯kâÿ ‰ØL‰ðÆŽ8‚‡¼òç”SÇN8�©GêóÂû­ìeG÷Nri±Ï<‡&©‰úìòÜ,±J¢«íåM:žÕK™O›ù”½ë÷Ôô‰_þ|bÐ,ü+ñGÀþñÏ‡4ûøuK-Ä6+}am¨AkseäP1
³Åiwun�ÔE<«Ñ�|÷q—pfa[6á\÷1Ès,FxZøÜº»¡ˆ«‡©V•yÑœÒmÓ•j4ª5ÖtâúXÌ¿˜R�nŽ*Œd§u¢¥5$»¨ÊIy6IðËá'ÃOƒŸÂ
¼ xÃw:­Î·q¢ørÅ,,&Õîí¬ìîu	!BC]Ok§ÙA$„å£µ…z ©âŽ/â~6ÌiæüYžfA™ÒÂRÀÓÆæuåˆÄCF­jÔ°ÑœµT©ÕÄW©ì¥Vo¨ðX]IÐÀá©ahÊ£ªéÑ�$]IF1”Ú_iÆMöŠ<æ/Ùög‡ÇïñR/‚~ �â,ž+“Ç/ãÑ"ëx¾]`ëòxˆÞnÜuGÖ‰Ôšã�ÙóqšúIøÁâ|øz<'>8âpÜr˜ä1É^:o ²h`ÿ ³£–ª6·Õc�ÿ eTöö>éÆ²™bž9e¸UŒuÞ%â=šö¿Xu=«­ÍüþÓß¿ójw_~
|'ø×¦Xè¿<á¯éZeüz¥…‡‰tôÔ-­5mï-"¼†7 $ém¨^Â®9ÜÊ¿Å^
ñÇp>*¾;„x‡3áì^+,.#–b%‡«[:”kJŒåÞœªáèMÇ¬©Aô:±¹n2„iãð”qP„”ãÐSQšRŠ’OªS’ô“4<	ð«áÏÃKà�‡ÞÐ¼#á)å¹šoè–ki¦I-å¬7NÖêJ–žÒÖÞÞCŸš(Q{W6Å¼KÅ9´3Þ"Î±ùÆqN4¡Ç]ÖÅFjÔ¯J*£ÖÔëU©R+¤§'Ô¬.‚ ðØL=,>¶Ý*qåƒrŠŒ�¼ãŸ’G�x_öOý›|ã?øX~ø1à=Çm¹Ô¿á'ÓtX­õ·Þ\ý¶êëíA‹yÓÝ~þGÆZOš¾“5ñsÄÌó$ÿ W3~6Ïó‹ØRÃeb±³©ƒú½
^Â•/dÕ¹)ÑýÜWHèrPÈ²|6#ët2ì-,O4§íáM*œÒ—4¥ÍÝËWæt¿gÏ‚dÓ%øµðËÂ_$Ñ‘ãÒßÄºdzƒX¤�#:Û—#ËÒÈN;»z×›Âž"qÏGâŒß‡c�’–.9^*Xuˆ”TT]NTùšQŠ^ˆÛ”å¹“ƒÇà¨bÝ=!í §Ë{Þ×Ûvužøsà_ø&/‡>ð¾�¡øßK¹Ñað¾Ÿj°hñiWpÉos`– •ÓÃ,‘IpÈì;×�™q&}œgsâLÓ5Æc³ê˜ªxÙæ¸Š®xÙbèÎ5)bW««	Æ2Œ·M&oG…Ãá–�
t°ªš¡Úš„“R�/ò´ÚkÌó?…~|$¸ñ/ƒ¾øCEðG…­ÿ ²/âÐ¼=j¶:tw—ÇU{Ë¤‚3�6å‘^FêH¯GŠ8§ˆ¸Â¾:âŒãžæµ#W<~cY×ÄÊ�J4i:�_’šmEtLÃ‚Â`=®‡§† ¹'ì©G–Óçr•—WÔö@<ñÓœçô=zó_-®�zôþ¾G NG9ç÷ê(vÐäöÇÓ5ö¦øØuXœý·âwŒu‹Hæ\	t»ßj“Z`óE$@í<ô¯âÞ7¥V‡gÞÙ7ÏšãkAIoJxª²‡ýºÖ‹º?ÌŸpõð¾!ñgÖ"ßµâÓJ2ZKW0ÄN•»ÆQÛº?R~ü.ý�ÿ mƒ~Ò¡·¶øuâÿ †�Aÿ 	=–•u§éZ£Z!º·Ô'–ïRÒf·º°Õ®ÞÛUš[Q$V³OR	ñŸÖ²L£‚øç#Ëé(Ç,ÆåQ�ÖéÑ�:9œjÉÎ­Ó¯7
®Qº„œc6¥¿ô/p÷†~)ð¶O†Œa‘æy!ý¡K:8zþÍ:�¯9TÄa¥N¥MGO9Sæ…9Î¨ùíý²¿lÏØx|~Î_³�µÑþèöÖö:Æ³¥ÇwmöçŽîKÙltü+qh],d‘…­Ô23\¢È�ÏqÇáéá¿ÕŽä¡–PŒi×¯ENÑ©ºŽ�=)Ç’ê›o’qo�'ÛãüRñOG¸�}ž$ÂÂ±X¬:«OÚµRUeFŽ”`©ÝQ“~Î¤[sJIü?þÊzN¡¬~Ñß`Ó|Ï:×âo�µ9ü´i	±Ó|S¤ÝÞî
F#û4Rcòª‚Nq_žð…
•øŸ"�+Þ®_ZVW~Î–.Œêm²åNï¢ßCñïpÕñ\sÂ�ÃósSÏòŒDùSoØÐÌ0ÕjÞÛ.H»½’ÕŸØÐ^zw<nèG>½ÿ ýUý·¶Ûúê	Á|QÖ4ï|;ñŽ³¬hW&Ò,té5]
Ö.n5=9×É¾¶Žà¹’lÛI#4Ko3:+/–sZÑ‹•X%.I9.Y7dŸMnºù­DÝ“?—/èÿ ²ƒ>x‹ö…ýˆÿ kO‹?þ&›mOÅúOìõ²–š4¾-²µ:ÖŸðîÛáôÐü]oÎ£0ð¼h÷Ì%Š˜4µ}m9cg^\ÃGJñ¦ñ<·—#|®««í/oyÙoÞèãjš‹�9¸KV£ÒûÚÖOÈöé7_µí»ûêß´ß‚tÝcÄ×_²ÿ ‹|YªhšÖ™:Cý·aã„:~—«Oe©OwuåÖ—y$ó4“,¥¯¦*"WòÆ$°™~`°³q�Öá¸»Ú.å(¦´²jË¦…%ÏR›š»äo_'÷Ùõ9_ˆ7ý›ÿ hø*§…~Ûx�ÀV<©ËðÆÂÏÌðü·wÞ"ø§KvÚlQ“ä[¤ÆúäýLŒeŠ0
]5<V)s­ÉQÔ¨½´Ÿ¿¤q+ùìºê&Ô'_K«-¬V¿×sçßøŠèüuÿ ‚qêº^µû0‹Yþ"i�i:À‡Þ-ÐõŸ	èÚ•çƒ-_Dñ‹®¼{ãêÎ–²ÍeŸg‘{a$osmåj6ª�1Šx|Ò.8¿áËšXŠ°qœ’¨ù©ÃÙÂQ÷µ»rNêÏFEýê6pµöŠzm£wiõíÔ÷ï€¿´­cömÿ ‚®üLð'�¬5_Žéñ;ö–ƒÂ^"¶±ó¼Qk}gñâìzt:Ä+„¼ó¬ôó
–”-¡ÂmkŸ^K“R�IGìpžÒ´9]*7r½×W&ÊŒ}Êí/{šv}w–ÝzyþgÎ¾øq§xëöeøá­cöŒý’<%¯Œ!¾Ð´¯þÏ?uïÚ'Fñ5¶¿®Ü_Ûëþñî¿um-Õ¿ö¨»Ô›À–¶	¥L­°´“uN«§‹ÄÍaqµ=Æ¥*˜ªÃJ1³‹�8ÞÏ–ËÚ7tO-áçMkÒrOäÿ /3ú:ý¾uÏ‚þýšõË_ÚWÁz·�¾jÓèÚOŒŽ‡¢ê:ÕÎ‹Þ¯¦ZÛø�,4ýÄWH4K¹âÕÒäXÊ¶ak‰™aŽV_—Ëa^X¨¼%HÒ¯º|ÒŒT¬›q»”~$¬õÖúkc®¯/%¦¯½ºm­¬ûŸ…ž3Ô<û/Þ|	ñü›ö½ø©ñRoøëÁºzþÍúÆº<Y¢IáuìâãNðß…ü+/‡m4é�Ž•=ž¿uk<	©ˆfÛ<>†
x¿¬C4ÀÑ£ÉN£úÔcÉ.xè­)Î|×ÖWŠkNÍÎÐåt¦ÝÚ\»é§D‘ô÷ì¹ðKáŸÅ¯Úÿ þ
AâO‰ÞÑ<Q¬ÛÝi–i³gÔZyoƒ¿õ'[pûåŽX/n'ÂáÀVl†8zäÆb*ÑÀåp£RPŽ¯Gg%íë­^Í4—B¡êVm]ù÷å�ÏsógàÛL>Á;4ã,²Yè?·¯ÄýI†GÜ,4�>Ùálì` (K{Q#¬Q�…Àõ+ë_3}e—RoevÞ*íú¾¿�”_»EÓÖ—§¹ý/SÜ?bÿ þÃþñ7ü®_ÚvÇâ¿�–Â_i7Wm{¢/Ž>+¦§iáW�L�ÞM<FÂË+Y5ç¼[x£¶Ys	çÇÇ8e_Tçåú½û9%i:t\\õÑ'{;++ê]7O÷Üö¿4·Ûymþ[Ÿ'Ziº%�Âÿ ØüxÒõSðFóã‡ÄÍD¼Ò¯¦ž?Kâ?�’ÙGƒ…æ¥´Ú£Eu¥		È„@Ë9ìr“­™,;�Ö’”“_ÄåÃ_Þº_[Ûò3·»K›árvZíytÜû¯âü¿|iû|I¨~ÁÑé—‰û'|`°ø£¨ü8Ó®WÃ’jÏðÇã¢xvÊ[Ø£‚×PÕßUºÓÅœv×w�ö‰ôüAóÆ%ó¨*´òëf.\ÒÆÑt£U®k{\?3³»Qµï¶—×M5•�Uì­¥9^ËÊV_å©ò‡�¼#Œd?xOÅ´/ì£ðÓZ�ÆÖhtÛÙÇã_Šiÿ üXK»ˆ.æ¼µÐ<s}¨Ýø‚ßÄ�y%Ö¹mà(l%Õíãº�Ö9¢ŽNÚ“äÇTœ0ØÊ±tß½õ¬<0’£edœ©¤¢ákGÚ7ÊíÜÍ+ÓIÎ_ä“¨ŸÉï~¶Üýð·‡þ|;ÿ ‚¶ÎŸ!Ñ´ý+Xý“´[okšÖ•s¥/ˆ|^Ÿð«b}GNµ¾ŒÎu›�.Ë[”Ú0–òŽöÞT2Ã*�.r­W%ý×5ãŒ“”bùœi¿m£kìó8ëèö±­¢«ûßÉ»ï¦¾§Çº¥÷€>xGã÷ÃŸ|	ý£>	ß|Ó5oü'ø—ðóÅÞý¤m|WâØ¥–ƒ§ø»Ä~¾Ô±š/êÉ¨Ø|0Õ,ž{-Y#¸-m8³ïŠ©ˆ�VŒ5u†j©U…L+‚�Gvá	¥ÍïÆÎªzÆëU|Ý¢�¹g}S‹SOM®×Þ‘úùÿ “Æ~-ÿ ‚\ËðãÃ:ö�š÷Âïêz÷ƒí ™õ�+áþ£ðâòëÄº³Ž'’[>xôË»U²óXŒbÈ6b&WÉÞÕf›�Y¨ÔmYÕURŒ“wZµÌ�ß®Ìè­wBñ_e]uå¶§çgíA7ìÑ¯øöÓ¿bÛêß´‡þ èPÅà]>y<E ø^/‡ÿ ­|Z<Lð[C&�d<_x‚âßQ—MžkÙ¬®TIÑ<Þžëq©˜¼s’ÂÊœµ¨ýÉKÚÑääþgÈ´²z#)òZ’§nkôè¹]Ûù�oì­ð/á/Ä?ø*×Œ<gàOx“ÄšoŒ¾6YéÚÆ©aÍå„ZW€¬u;ì²°Ìmk}q5Ì<�’³>9æ1˜ŠÔžOTœbéáÛŠvR½I'~ú+yþE8¯ß¹$Úæ×~ŸðO¸à“·77ðM[XîîfºþÏ±ø‹¥Y™Ûy†ÃOÑaµ²¶N­à�c�p  WŸœ¯øUºÝºRvÞîM¿éPþÊVòÓCò7àv·yû%|øÿ Ñ,5GJðÏÆŸ�_þ4é:LSy×¿	¼OñßãgŽõ-fâKX¥œIeâ‡>Óc–H¯-’;•G±–FŠh=¼DV6¾#-“IÎ†A¶´­>š��–±«7ÒýÖÏ~î1«½¥(Ëü<ÒmýñGAáƒ^(ðgÄŸØâÄ>ÿ þ/íãÏ�_ü~Ú¤¶÷:¬zî·û5øãÂãH@Y¾ËøJÞxbžk™Ö{™œÎÈñ¢Dñ©K1§M¯«áiáèÓåº‹ŒqTçÍëïµ¢JËn¥(ëJRº”Ü›¿øýãáÇ/†¿bŸø*ÿ Á/ø™<;ñWXÔ¿m]+IðEõ†¦ºî¥uã~1éº–V‘Ú;\Ù^]ÉI¨E¾ÆÍ%Š{Ëˆ š9+P«W“b)ÃšŠXê'X¨{$Ýôi^Ëw­®j4ëÅ½_´²ëö¿1e½&ÇWøßÿ °Òuk(¯´ûÏÙWãt–7)º)£ÿ †›€¼rÆz€T0G¶ibäÖ8iÙ¬f¦»¼·ù>*à—þ–y7ÂÔø[¢ÿ Á2ÿ à þº6‘ñ{Løû¡´K‹f°ñU¿ƒÎ±û5‹'6w"+Ÿìƒ©&º°Ê#0µÌwè¯¾9í_ÛK6Ë&Ü¥Aá¤”¯xsòâï¶ò·-úê‰\ª�Uö¹–ú;^ðlužµøÿ ‰ûê_´F�§ÜxHÿ ‚}üÔmõvÙ®|7¤k�|øs¥Ýjá,®~Ê‚æÝ%Žþy¬íl£·¹šâu‰KÇ%às…rUe‰‹Q²œ¢ëÕRQ×]šÖ÷Väö”ÜööPßU~XØð¿�Þ–ø*®µû;héiû-ê^ð�ü#º¦‰nöÞ¿ñÌ~øO°t50Z¤¯ý±ŽÔÑG:5ìWÌ.0Ø~Œ3©ÿ ñÅJøµ9ó);ÔTý¥k)kü¾ÎÞV”È½Ë+5ÞÑïÒ÷ùÜöýNÓÇ‹ûsY^x·Æ?³ÏÃëøf�
†¾"ý¦~xÃÆ^¸Ðåñ�Å¸ï´ý
ïÃþ:ð]¦�¯Ki>¹Üš†¬òÎêÒÎßO[‹˜Zã�:ÙíBž&£x¹{Xa*Ó…E%
rR§QÊ7åjËGvÝ–�WQ]Å{‹•Í6­ylÓI?øcõCþ	1ðãOðF•ûEj~ø·à¿‰¾ñgÅ½gV6_¾xÿ á¯Ã¿ø–]_[¹ñ—�×Çš¤zç†e{Ë(´}CCÖ5�=´Û[9SU¾Šâ	�‘œÕu%…Œ¨Ô¥8PJõkS«VQJ*>ÑÓK–z7%%vÕ“LÞ‚·=¤¤œ¯¤ZIët¯{®ÛúŸžßðS}?Æ?
lßø_ÂQ]­·üàä¿!–Ê9¶Þ.Ñ4¯‡^Ò%�­Ü"Ìm4]Kn]œ±WD
­ée>Î¶œæõËkûf¯orR«9oÒò[Wº¨Ò_Å�/ÍXãà ~
×¿g�w¿³¿Ãö	þÙ?
>i0É¨¸Ò|iáÿ �VÞ,ñ;£[}žÞI$ð_Ã–Žw–Ûk9O9ˆXÆ¹mHâ°ëZIOZ´Ÿ÷©Ëáîô©WO5{
ªp—³�ü¼Œ~õ+¿Â%¿ŠŸ|Eð�þ
yá[Æ?<áýö}ðƒ¾xŸöœømâïxSðß…¬<m¦ßiž¿ðÏŒ|c¥êzKéqêVw:£Épotxa³‰áhçTjÂ¾[Î¡‰«9bjÎ¬0•aN¢œÝ9'%8Tn7æ³JÊÒÕßAÅÆ­›Š´"“šmY_Efºoò>`ý¢¼áOþÀš’YüSÒ>2ø;Ä·ïÃÍR[O†ÿ 	¾$ü=ð®�4Þý¡fñ•à�;Æ±ëø‹O¼Ög½’;Íë\µ[¹’âgž'“¯Vu3%û™PœrÚ±ýíjUg%í0Ü®£§ËÈÔRÒJ/_-"VT®Ÿ2uVÑi-'µï“gÛ?´¯û1øÏö­ý‰ ýŒ!Ò%ø�¤7‹'ñ–¥ðëF¾A¢ø
O…ßaÔ"Õ."±Xm/¾Ñ-Ï“aqv—3Msg65Ô+?Ÿ…Xªx<{Ç¹{9rr*²^õOmFÖWÕmª]Þši>G:~Í+«ÞËeË/é.çÎúíï‚þèµÏx‡àíGð‡Uý¦5ë_ü{àoøGöŸ²ñMÇŽmî¿±4»_x“ÃW·º†™w$0Xj–o¬æÔÑåˆÌ?Ñãê�´Ä:1©NºÂ¨Æ­9ÆxGf×3p„ÒMkgU>],®N‘æk–¤y¾š�ïµ›[wå=¯PÒ4¿ˆß¶ü1äðt‹§û|×4�	^Z›»ýæëàOÀYlôÏ³Å»ê\7�§¸Š;’P±¨%G<[¥‚Ë-SáÇb"ê-íˆÄÞWí+_R·©WOùw“ÿ }=5ô>^ñ´vš§üãöÓþËáH¬4�ˆú¥·í5Æ‡}âM+E¾Sâ),_âf‡¤_Y_Mh’Ëá4–³G,šuÃLk²Žo˜:ªwt“ÂÚJ’÷SöRi¯çïÕ½hÒQ²Iµ==~%÷|Ï±<+ðÃÃ~%ý¨_Æ#ý¦?g}Z{/ÙÛã‡üYá¿Ù/à/Ælµë_¼y§½î¯â8üUñ;Ãðëz%µÎµ¨èº-ÕÕ¶«¨ÜÛ=†™§]ÞÝÃosÃ:²†ÙÇ	‰�ñT'	ã14.ªF­'eJRå•¢¥+8¤îÚJëEçw8;BI¨B[8½ÝßM¿-�žü'®xOà“ðEðÕÇÀ/ÚËàü_t³à8ôÿ kþý¥|©j~#Õïç½ÖtMÄ±ëv7ZmãËj×wtÛQpÖrh¢›¢¢ž&X™Kë8*ÿ V~ÑóÆXJ‘PŠ´eò´ÖËÚ·ºèJ´TRpœyÕ´jkÕ6šû�ëŸNuŸMÓ§HÞžÆÒe…ø’!$¸�±�š0ÁXŒƒÒ¾1èÚzÙ½{ë¾½ÎâèÔàzçõÁçëëK§õøvÊø¥N<;Žsâ�$~bç¯Nk¯ªÅØ%oý´Æ·üºÿ ¯ÐýOCƒýRû�þµp›Ð@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ 5ùVúw <Ò€ÿ „³Å�ñiáÀrn¯žç�Ò»ª¹á?ëæ+ó¢cãVÿ /ý¼ëÂŒñÆG¦:þk“älO×üççß´í°ŽðR�Ø«XøŽßð»¾éíâM+K»_è6V“Íw«XYywV·v0ZùÍ-Ü
ú¬·;mwÌZ,¸Ã§â~(p5|Óþ²ªNxª4¦±¸zp”§Z�;N§]¹Æõœ­Êñæ—Uü¿ã·…8œõÿ ­™W‡ÃÔYž•9Ê¦&�+T§VŒ)ó9UŠx‰Tµ;Í¸sKf¿ì5¯x"ÿ QƒJÕüGá-MáŸJÕcÓuKB½’Ý¤ŒÜé×ëk5¬ÏKF{KŒÆÒCxËF¸þx§_€©V4kb°u\eF²¥V®£‹iÊ•NIBN-Å9BZ^*êéÆôqYžSZ¼0øœv[ˆqžëàê¸9EÔ¡YS•9¸9B.tçx¹F-«¥l+kk«û˜­mašîîêQ0B�4óÍ!ùR4@Ï$ŽO Ä×<c:“P„e9ÍÚ1Šr”¤ú$®Ûg:u+T�:p�Zµ%ËA9Nr}WrmüÏßø&ÇìQ¯xöŽ_4·Óu{›(—Â>Õt¹¢¼±·¾²¸7÷‘_ˆd·¸t»²{ô7h.-$ò§Ü7èŸ¸—ÍqmKÙV•5õ,-jRU)Æ¥9óTš©Êã&§MÇÜ|²ƒ´ºŸÙ^xSŒÊ*Ã‹¸ƒèbgJ+-Àâ0ò�Z0­JnuªÆ·#„Ú«IÃ÷MÂt¥Ë;ê¿i Î}ºÿ ž‡óýx¯ÜµÓúþ‘ýTG41Í°OM¨ðËˆ²C,r)Y#’6Ü®Ž¬QÑ”«)*À©4×F®žúhÿ ÏñçI?c¯ÙB/�&ýšþIâˆ®Rõu§øGðýïÅúNnSQûYðñ¸þÐŽçý%o|Ï´-À,ž`]?^Æ({5ŠÄ¨5n_oRÖµ­nkZÚ[äG³†ü‘¿øWù¼ß~iž2>ðkx¿EÒŸBÑ|V|1¢i:$¯c$š6™®/íK*I4Í5ßOµºŠÍŸO±f„µ¤<}­^ICž§$Ÿ3‡4¹µ÷œoiKÞzµ}^º•e{Ù_kÛ[vô(\|&ø[{ªø—]»øià�sÆv)¦x¿Y¸ðw‡eÕ|W¦ÄÖm‡‰54æ»×,£};OhíµI®¡F°³+6°l~Ú²ŒbªÔQ¦ïª’´ºÁ^Ñz½cmßv.XÝ»+½Ý–¾½ÎÃ¿²—ìÅá?ìæð×ìíð7B}T:Þ�.•ð›ÀZ|ÚV±›fþÖÓ$´Ð"’ÃPihÂöÐÅrÚfñ¤ñ˜¹ßŸˆ—2å—5z�8ê¹]åfµz=5}Ä©Ám+mî­?Òü5ð÷À^Mj/øÂ�ÄÚ•î³â4ð×†´]	5ýcR»»½Ô5]mt«+QªêW÷×÷×——×Ââêêêòîây^k‰]ò�J•9yêN|‰F<ò”¹c’ŒnôŠI$•’I"’JöI_Wekù³ÍtOÙ_öhðïŒ‡Äö~ø-¢xÜ<’§Š´¯…¾Óõøn$S—Pêöš:ŒWrÄZ¹Žåfxd’'bŒÀë<f.TÝ9bq§§¸ëT”}9\­o+nJ„ºŒSî¢“ü�d×4ÄÚ]î…âMJñ‰©@ÖÚŽ�­éöz¶•m"•’ÞûN¿Š{K¨IY"ž#u$2�kJP’”dã$ô”_,“îš³ôh§®�SÄ¼û'~ÌŸ|Gÿ 	€gïƒ^ñ:Ê×kÞøeà�Wµ•æ[�özŽ™¡Ú^Ú²Î‘Ê†Ód‘ÆÊw #¢xÌ]XòUÅW©¹'V¤¢újœšz}ä¨A;¨E>é#ÕtŸ‡žÐ5ëú�¼!¢ëÞ0‘fñv·¤økEÓµoÌ–v–	/ˆõ+;(o5¹ÂÂÆÅ_Sšé–ÒÎÒØ¼(˜:µ%ÆU&ãOHFS””Û÷"Ý£«oD·}J²»vW{»jýNBÓö~øam¢ÙXüøGegá½zçÅ>´´øoàÛk]Ä÷«`—ž#Ñ­áÑ’/^ºM+KK�^É Ô']6ÀIrâÎßËÑâq-Éºõ›œT$ÝYÞPW´$ù½è®gdîµ}Ù<�ÓÝŽŽëÝZ>ëM‡Ä_³·ü7áÃ[ÿ �×¿ü+ðËã´Ÿþ0xÇâo‡ßÇ_<)­OàëxÇÅž(›JÓîµïøH¤ ®¿gÅÅ²i¢é´È&–Ø‰¡‰ÍkUXuBu°þÆ…:2öu§w
p‚mG•}—£½¯¹œ(Æ<ÜÉKšM«Å;]·çúíûxsãÅ�Ù›ÆSøkÃ~øâ5YþÇàÝ*÷ÃÚÝƒèþ0ÓŽ™ž.ìtÛÇ‰–ñ‘t»¸Ú[v&-Ò—�<.c:1tß<ªbaËí\Úœ_4ïfßÁmÖã�.iAÝ%µ•¶æ}cðçàÁ„Mª…_þ|8mfV“T>ð…<'öàcùW?ØNžf·TÊ¤2î�CÈ~vÏ\N"²^Ú½j¼»{J“©oNi;>ö4QŒ~Å_²KòF¿ì¯û5ÙxßþEŸìÿ ð^ÓÇ¿o›W>1´ø_à{o¶¯qv—ókkqhI©¾¬÷©öÓ¨µÑ¼7l÷&o9‹Óúæ)Ótž'*vKÙºÕ9ymkró[–ÚZÖ¶�Éß–7ïe¾Ç_â?ƒ_<aâ=#Æ.øSðßÅ^/Ð MÅ>#ð7…õÏèŠT¤kšž™u©éÊy”+˜FÙ¥P1#faZ½8Ê­VçñB5'ËüQM'·Tö·wÚêÒlâõ/ÙKöeÖ|fŸµ_Ùëàž£ã•¿:›x²÷á_�.¼C6¨¦�Æ³>ƒ&¥>¡íçÇ{%Ë]%Â¤É ‘…Ç‹�?d±8…O–ÜŠµNKmn^d­åk[ArA»òÆýùUþûßy¥i·úlú=þ›e{¤]Z5…Î—wgos¦ÜXK‚K+‹£{imä½´‘4-1²;k&š’mI;Ý6š}ÓZ•n�cÇ|û2~Îß|Iwã‡Ÿ>øÄ÷‹"Í®øCá¯ƒ<7ª•˜ÂÓ¢ßèÚ-•Ú-ÃÂ’ÎØšPd“.I­ªb±U¡ÉWZ¤ª3«Rq]´”šºô„"î£ü’_¡Ûi~øvÛèü	¡ÛøÞ{ë�[èþðþ™‹®5;qi©\x¢+->×æÔ-Qm¯¥ÕVîK»uXgi#j%V¬Ü\ªÕ“¦’¦å9>DµJ¿vÍè•­Ð,•ì–»èµõî^ðÇ€|à�Ÿø3Á~ð�…OÚsáŸøwGÐ|>~Ø»/3£i6vºwúZ|·?èß¿_–]Â”ªT©.z•'9éïÎR”´þómúj4’VI%Ù->ãþŸÁÃàÛÏ‡á/Ã3ðûRžöëPðð'…�ƒoîu+Û½KQ¸½ðÁÒÿ ±.g¿ÔuûûÙ§±y.¯onî§i'¹šG¯¬WöžÛÛVö±²U=¤ý¢I$­;ó+$’×D’Ù!rÆÖåVíeo»ccQømð÷XÕ<5­jÞðf©­x5î_Â¾£ám÷Sð£ÞÚ]XÞ?†ïî¬dºÐžîÆþúÎå´¹­Z{KÛ«ywCq2<ª•b¤•I¨Í/iÎINÍ5Ì“´¬ÒjéÙ¤úÉÛE¦Ú-=;¬~Ì³wˆ¼SªxÛ_øðc\ñv¹ô×‰u�…þÔõÍb-OÍ:Œz¦«{¡O¨CÎ›í«wq(º3Kç‰��c‹ÅF„q8ˆÂ-rÂ5ª(ÅÅ«8ÅJÊÝ,•¬O$»„[}yUþûf™ðsá‰á½WFøWðãIÕ<§^èÞÔ´ÏøbÂÿ ÂšF¥¨ÿ lj:_†ï-4È®4-6ÿ WT½±Òäµ¶ºÔ‡Û§ŠKŸÞÔ:õä¤¥Z¬•F¥8Ê¤Úœ’åRšoÞj:&Óih´Ð|±V´R¶Ú-=;7³—ìùw{â=FëàGÁ»­CÆ[Ãâëû�…þš÷Å0ÙÝÇiˆîdÑ}n+[øb¼¶�S’é`»Ž;˜ÂÌŠâ–+”ÄW´5‚öÕ-ÕŸ"æ÷n´ÒÚ]l�×ÝŽ»û«_]–5�ØÀÞ ý«!øÙ®ižÕþ[ü"µøOmð[Rðƒ}ám"Ã@…½®Ÿtòèöúe†ž¢ÎËI‡ÃékkfÖ
ºÖeR8?aR5½»¬ñ
¤•NiK™Ý¯zíêäåvõz‘ì“Ÿ3³\¼¼­+ZÖôü«4¯Ùãà.‹àkß†:OÁO„Öu'yuOÚü:ð|Ô¤’Iæy5Ã£¦‰}#IupÅ®ldmÓËÏïž7‰Ä:žÚUë:«á¨êÔs[-&åÌ–‹g±|‘JÊ1·k+}Û�?go€ß,,tßˆŸ>øâÏK¶‚ËJƒÅ_|#âÒìíî¤¼ŠÏL¾‘x,-æYåû=¨Š×�™žBÅ,N"Œ›¥^µ&îß%YÆújß,•Û]^¶^@á¼býRgqàÏø3áÞ�gáO xKÃ^	ðÎœª–^ðž…¥xsE³8 gÒô{[;±0ÆLp)1ÅŸ•êT©V\õ':“w¼§)JO®®M¾¯ïI+$’ì’Kð(ø—á�Ã�ë^ñŒ>x#Åž"ðu×Û¼#¯x—Âš¹­xb÷x¶xoTÕ,.¯´K­êídö²î·î8V«Ê0©R¨­8ÂrŒf»ME¥%å$ÁÅ;]'m®“· ¾"øiðçÅúÎ…â/xÁ>(ñ†$i|3¯x‡Âºµ¬xzW†êÝäÐµMJÂæûH•íï¯`g°šÝŒ7—Q±òî%áV¬#8Â¥HFzN1œ£«ßÞŠiKeº{.ÂqNÍ¤ÚÙÙ]zÿ ÄÏ�?>3ÅaÅ¯„ß~%&“+I¥Ÿø'Ã>,}=¥xqbúþ™¨5¢Ü›[at–æ1:Á
Ë¼D›],F#cZ­+­}•IÂö½¯ÊÕíwkíwÝƒŒeñE?TŸæ8ü	ø&|)¢x¾|-xoUƒ]ð÷„áÿ „ßÂÚ»j·Éo­ii'IÓuxSÔ„Z��¤7‘ÿ hß˜}ªã{úÎ#žU=µok(òÊ~Ö|ò‹µã)_™§Ê´m­š å�’åVZ¥edý62¼û8~ÏßµûŸ|;øð�ÀÞ$»I"¸×<ðßÁ¾Õ¤ŽTòåFÔ4]Æì¤±å$S1ŒÊÀ«N¦+Z*qªGu•jM&¶j2“@¡î£û¤—ädß~Éÿ ³§ã%ø‰¨þÏ_/¼rš‰Ö�‹.¾øãÄO¬ý¤_.³.³.€úŒº´wÀ_E©=Ó^Gyþ”“	¾zqÆâãOÙ,V%S·/"­QC–ÖååR·-´åµ­¥¬.H^ü±¾÷åWûìz-·Âï†–ž%Ö¼egðëÀÖ¾0ñ&�i¤x‹Å–þðü$×ô›K;/Z×bÓ×TÕ4ë+;O³´²¾ºžÚÞÒÆÎÞ–XQ3ujòF­G¶ái7É¶ÛŒoh»¶ÛI;·}ÇÊ®Ý•ÞîÊïÕœÞ—û=|Ðt{ÂºÁ„:/…üOr×ž&ðæ“ðÛÁšnƒâÖ[Dk½sH³Ñ¡Óõk–[7öóÌE•¨-þ�Êx¬D§Ê½yN+Ü›«QÊ+]#'+Çw¢vÕ÷H¤×,l÷VVd?go€ßµGÂïƒ?~¶¸­±'‚þøKÃ2jp2IÙ/åÐô›»´	5Â-µÃI,óª Y\Wˆ­om^µ^_…T«Rvó\Òvé°(F?R¾öIúgì©û3è¾1ˆZGì÷ðWMñ»]ÿ h�Ø|-ð-§ˆQYÖàê1khQê1jt«t÷©r·r>ÐÒ‰båŒÅÊš¦ñ5Ý;[ÙºÕ-k[•ÊÖ¶–µºl.H^ü‘¿~U¾Ç½    P   €08 tÕ‡êPà£ŒqœŽ˜÷ü³Ç×µ.úÉø±H_qÿ 3N“�SÅÈõÏõçòêÂÌWý�Öÿ ÛýÌ«Ë¯úýÔïa�_¯Jâ6% €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 kŒ«c@Œü%¾-ôéáÁÿ Žêþàÿ :í©þå„ÿ ¯˜¯Î‰Œ?�[ü4¿öó°*x ô=}8ç×õ®OêæÀFO8ÇëùÓÓÓç¸xÖEdp¬Œ
²2†VFY‚¬#pA¥£Ñ«§{§gøvòI¦šM5fšºièÓOtÖèùóâì£û>|U¼šÿ Ç´]fîáK<7šÞŠòb4‹/ý�ªij[djíÞ[.[Ìfcó™—pÞo7S0Ê¨Wœ—½(Î½è—üÃV¤¶Z»_Î÷>/;ðë‚¸Š¬«gVjÓœjâðŽIEG_©â0é»%ïZýovÙÃïÙötøYv·Þø]£h×KœK5þ¿­¸mÈ]WÕP:¹‘‚j2Þáœ¦^Ó/ÊhÑšÚS©ˆ¯å§Ö+UWóûŒò_¸‡ª*¹OapÕÒ”ëc1v¾öXÜN!'çk®çÑiÆ‹j±¢ ¨ˆ¡UU(€ {WÓ(¤¬’Il–ŠÝ’]CîQIE$’²IY$¶I-ôgû_§ÿ ^ŸÜ¶søõv>ž˜ÍŽ¼ûûz}(}¬‘ž:qþ
K¿ßäc¿Çùgüõ§n�?¼òsƒôm¥€P§êyÇ õçÿ Ô(ëçýl`úþ8ïüºŸ@BãéÛ×#×Ÿ§ù4»¡†?<dg'ôôã¨¡hŸôÿ à€…Iç$�{õõþ”ô»Ð¡<}?^¾½h²¿P¹ç=±øžÿ ýo¥_pÞƒ·§ÿ _ŽiuÛúì”ÇLdãžç¿ä8ÿ }÷¶À!Sôçœò?Ÿ·j_�´þ¿ÌÇ9÷ü¸Åm¯`¤cß“ê}Æÿ ¯ŸÌ+Ó‘Æ{gèzÿ �-Wõý|ìíÏ^ßQÏç×®=³Omµ`&>ÿ Ïüô¥Ùÿ Ã „to¯çñ§kî´Œ	çéÿ ë?§P¿¯ ÓŽœŽþ¿…$¾`[¡Ç8ÇÓüôô4iÓ§Ü# ÷ì:zuü)ù­@ÏòõïŸ¯ëFˆ*O^Þ¿�ùÀþ½PŒ~�{ã�þ=:Q}¾`!\ô80:?z4ßü„ ÁçÓÔ{ŸåKä1qÏóëúg ÿ ëS·õæ GQ×=8éŸË4y€Ý„q»Œöÿ óúÒô·« ÚxËÓ>ÿ –)ü¾àã§luÿ õqúúðŸ^û€Ýƒðì9ÈþŸÏü_Ëòm=2}»cüÿ œQò»xÿ g¦=þ¹Ïÿ Z’ü@Bœç=yõ÷üi¶€R¨üÿ V^~›€›H=¿.Ÿ†ÏÒŸâ•8=x òzÇ'ü+ÿ ��‹óåø{¡ÿ Š£Húô¹ý?¥uámþÕÿ `•¾	�oùuÿ _¡ú�ÔêÇ§8úW±-  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P_î¶9$c^(ƒÑüU¾.Ö×ÃcòÆ•vÕÿ rÂ×Ì_çDÆÇ­þ_ûyÚöÇ®{Ž>çóíé\iuþ¿¯é›‚?Ï<ôü�ãiïçý[ ¤�^ãÛÓ×Ó×ž”Y/ëïH'pÏ§�AžŸþ£Øf�­tm9#ëß¯9¿ày£]ì ØœõÏçÓ?Cõ£{Øh�ÀûŒ~9üy>Ô/ëúÐ9yï�§QÓüŠ-ßúõ
ò01Ï=?Äÿ ž¼Q~ïþ NüòsŒ�åëõëÚ�û^½ ]£¡žƒžßËß'üÒ°	Ž£¯�qÓðÿ ?RÀ(_sø�#ø‡­wõßúõBàãQÁäzú~]è¶€ Éç rŸQýiØÙõüHç>ãõõíF»~@8‚søt#=~¿ŽxÇ~i~ž¿äc'=qôÇA×ü}zQ·_ø w çŒôìG}»~t[Ófç¾2=øçÿ ¯ëO¥À Ü¹äñÛ·éôühk] R*ÔôèO\{uü(K}= 1Ï¡9ÈÈéÜ÷N”k÷ �sœç ôÏ·ç§j:Ã€cŽÃ‚:�åÏ'¸à÷£¯ãý~€qëÇWŸ\ó�ò1KËçÔØ3Žzgœg©ôü?¼Ó.Ý¯ëÔãÛ÷ãßðëß¦imýlvœäõç¸ëÏ^ÄcÓÜÓÓoÌ*1ÆG=�9<wÿ õRýáÀ6ÿ ,}ŸæsíGü8ÑŒ`‘é‘×ôýxô¢ÌÚsß£·#ëíéü^”ôµ­¯Ìh<òsÏQþy¢ÞŸˆ
W Á·#ñÎçúRÿ ?0 8ÝÓ sž™ã×ßŒóëNß×õø€mÿ {·B?Ï×ðâ�»úÿ 0:úHéëõüÒ³ÿ  ŽåÓÐóÛß¯�
“ôÀ+Èç?â{uôÀ§ÿ üº Îì}}½3úô4¿á˜	·Ówã¯¯åúuæŸ­¿/qŸNß‰çß¯N:–Ó§pqÏ99ÇOð=½(½Þš `žgž¼tíÐý~�émþ@.:OLvè9ÿ ?J'¾}28Ï=Ïÿ ¯<r)í·ßÜ#�íŽ8ÿ 9Ç©ü3HìA÷ü½yúóFûÆxÅq‡»ÿ ÅS¤äð{\ãŸçŽ3]˜M±^XJß/€Æ·üºÿ ¯ÐýNÞõKôééþzþ5ÄlK@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  ×$#ÁÅ pº Ûâß‡;MÍ¦€`Ü@2ùUó¶g—Ùæ&ý¹ÚFF{*;àð¶×–¦'›Ë™Òå¿kÙÚæ1Òµ_8Ò·�¹ïoK«ú�®ÜõÀíuì8ç§OZä¾º\ØR§Ïš?®× *Gùçòþ~”_úþ»€¡;úûwãc·<çÓµÕ€6‘Ôûð3Ð~þ§­ù ˜'ƒ×‡á×�BçžÇ>ž¿L~"�\ñÁ£œýz÷‡üö ã‘À<öÎ}³�ÿ ^
=zõ»O×ÿ ÕÉÇåG—_ë Ûó�8éëÏaŸSÇ=€2O·|`^ßÔQ_ø (\uÚr1××§o®(¥}}3ÏòúÑëp½:r2?.Ÿ¯_JwüÀ\º:Žý¾˜íéõ¤ ·ýsþOëÐü?ÌÇâAäzãÐ:?¯ëÔiÇaè1éÆ Ç^Ü{Ñúy  c©yÝÇ^Ý;ã#ŸÂ€0ßý`p3ô'ë× êhéêà&?~½ýñÒ�þ@.;~|cßŽŸ—áCû€M½¸éœuÎsÆ?ŸçF¶ù€mƒŒœqÔçèF\dúÐ˜
@ ÷ã$Ž ôÎcëÜQùÿ Z „ÇÜÿ /Lã¹ü:Ñ¨b8Îr¿çGõê�§LóÓ·¶;ñÿ ê§òzúÿ L“€1Û?O^=ñøw¥P‚{c <~¾Þô_úîŽ29Ï_ëßúúQýwüP„qï“ü½²iÿ žû}à}ý9õß•/ëþÀ1ž˜<zó×©½(þµÔ#=1êAÆGc‘ŽŸç Šÿ _ öê}3ëH Œ{ŽØÆsÛÔý~µWëø ¸Éã<`óÈ÷ø>ý©k¨ÞzãŽ{ãúqž¼š5@&0p0yàcž�º~}2(ï¿õòH¿n3×¯\zŸ©uØÃz~Ÿçÿ ­Nû€˜èOCùg<}:{ÿ ‚êídŒ‘žzsÛ4omî‚wüOù—z.vþ<g�\ãÿ ×Þ‹€ÈúöìG~y¼c4V`9ç·?ŽqÇ<~˜¢ý®ã,ðô+ÌƒÄšdûF3åEç«7°EëòŒö&»0»b›Ûêµc7Ëeø3ÛÒ_ôöå®§gú¥ã_óøW±5  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P[îŸ§ùÿ ëPœë°^ZjvºÆ�´]Y4Šñ¹m·vŽb3Ûãk©•¢Œ¤g
U¤;e�;«ª…X(Î�kû:–³I7	®nYn�“•å®Ëg±•H;Æ¤~(ßMu‹µ×]l´Ó®èÑƒÇ¾1¯ö�ßöMÀIò¢º¾H žpC¯Î‡ ˜È-´�µQ¯'z1öðé*wÕ|ÒÙèüöºÔ^Þšøß#ê¥ÿ ½÷ô&><ðiÿ ™†Ã®~ôžßôÏüûâ—ö~7þ�ê}ËüÃë?çä@ø÷ÁÇ‘â?>ï/OÂ:?³ñ¿ôSî_æX¡ÿ ?"Çžó0ØøŸünŸÔ1¿ôSî_æX¡ÿ ?"(ñ÷ƒ‡üÌÿ z_þ7Kû?ÿ @õ>åþaõŠóò"Â{àßúl8 Ždíÿ lûÓú†3þ�ªuè¿Ì>±Gþ~D_øO¼ÿ C‡ýõ'ÿ ¥ýŸ�ÿ  zŸrÿ 0úÅùù?á=ðgý÷Ô¿ünŸÔ1¿ôSî_æX¡ÿ ?#ø€ñçƒAÈñ‡ÓtŸÏË¥õoýÔû—ù‡Ö(ÏÈ‹ÿ 	ïƒè`°?ð);ÿ Û:PÆÿ Ð=O¹˜}b‡üüˆÂ{àÓ×Äxù¤ãÿ !ÒþÏÆÿ Ð=O¹˜}b‡üüˆÂ}àîâ¡°äzÉ××ý_éGö~3þ�ª}ËüÃë?çäDÿ „÷ÁÜÅCa×'æ“Ÿ_ùgÆhþÏÆÿ Ð=O¹˜}b‡üüˆ‡Çž'?ð�iÿ ]Òp=1åàýiýCÿ @Õ?ó¬Qÿ Ÿ‘þßÅCaÀÇY;ŒÏ:>¡�ÿ  zŸrÿ 0úÅùùá=ðhÿ „‚Ãþú“Ÿü‡Kêßú©÷/ó¬Pÿ Ÿ‘ø÷Á¼ÅAaÇûR?/�Z>¡�ÿ  zŸrÿ 0úÅùùá=ðoýýõ'~¿òÎ�ìüoýÔû—ù‡Ö(ÏÈ‡ü'¾ÿ ¡‚Ãþú“ÿ �ÑõoýÔü?Ì>±Cþ~D?á=ðoýÿ µ'ÓþyÑýŸ�ÿ  zŸrÿ 0úÅùù=ðwØëºAÇáÙøßú©÷/ó¬Pÿ Ÿ‘x÷Á çûOÏO½'Oû÷Gö~7þ�ê}ËüÃë?çäDÿ „óÁ¸ÿ ‘‚ÀŸw—žsÎ#§õoýÔû—ù‡Ö(ÏÈþ"ÿ Â{àÓŒøƒO8ÿ jNòPÆôÃÔû—ù‡Ö(ÏÈ‹ÿ 	ïƒ{øƒO?ð)?øßÓò¥ýŸ�ÿ  zŸrÿ 0úÅùù�|ŒÂAaŽß4™ÁçþyÑõoýÔû—ù‡Ö(ÏÈ‡ü'žíâÿ Å!Ï×÷ç¥?¨cè§Ü¿Ì>±Cþ~D�|F?á Óþ¹“¯¯úº_PÆÿ Ð=O¹˜}b‡üüˆÂyàÜø‚Àã¾éþÓ£êßú©÷/ó¬Pÿ Ÿ‘ø÷Á§þfž_ÃþYÑõoýÔû—ù‡Ö(ÏÈ‡ü'¾Æˆ,ü
Oþ7Gö~7þ�ê}ËüÃë?çäFÿ ÂyàÞ£Ä6§y?øÞ9§õoýÔü?Ì>±Cþ~D?á<ðvyñŸÔÿ ™ Œsû±þUýŸ�ÿ  zŸ‡ù‡Ö(ÏÈ‹ÿ 	çƒ{kú^ròôÿ ¿}}=(ú†7þ�ê}ËüÃë?çäCþßç#Äq÷¤ééþ¯¹æ�ìüoýÔû—ù‡Ö(ÏÈ‹ÿ 	ïƒsŸøH4þF:Éüü¿Ò�ìüoýÔû—ù‡Ö(ÏÈ�ÿ „óÁÜÿ ÅA§òÙûÒr?ïßÿ Z�ìüoýÔû—ù‡Ö(ÏÈŽÿ „ûÁ¿ô0XßRñº?³ñ¿ôSî_æX¡ÿ ?"'ü'¾É?ð�XsþÔŸ�ü³£û?ÿ @õ>åþaõŠóò!ÿ 	ïƒè`°ÿ ¾¤üú¿N9ëOêßú©÷/ó¬Pÿ Ÿ‘ãßù˜,:ä|Òuõ?»çü(ú†3þ�êyè¿Ì>±Cþ~D�<Ÿù,=òÒäÿ ä>?åÅ/ìüoýÔû—ù‡Ö(ÏÈ‹ÿ 	ïƒ»x†Às“óHsÿ �ø£êßú©÷/ó¬Pÿ Ÿ‘þßàâƒ‘óIý#÷£û?ÿ @õ>åþaõŠóò!ÿ 	ïƒ?â °ã§Í'ÿ £êßú©÷/ó¬Pÿ Ÿ‘þïÐÃaÿ }IÓÓý_ëGö~7þ�ê}ËüÃë?çäD=ðhÆ<Caÿ }IÓ9Çúº?³ñŸôSî_æX£ÿ ?"/ü'¾?ð�Xgýé?øÝPÆÿ Ð=O¹˜}b‡üü‰Þ?ð²ÆÍmªG"Œ‹k0$�ÏeE˜Â„úeÇ~x¦°¥ñÒt£ÖU.¢½Zæ€}b—I©>‘Ž­ú^ß™…g-ïˆ5ˆõK¸Í½¼)³N´ly±¤­yg@
y¬bG]²Ê3…uU�:Tý…)s9;ÖšÙ¸Ý(Á½y}æµQnÊè"¥9{I«$­½ÒvÕô¾�Þç§Æ6¢�oÏß«ŒØ}  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@·Ökp‡æ;³ï‘ÐqÔúš çFŽà�A�<‘œãŒu÷é×š xÒNä=29ä�×õÅ F9îpqŒ�óÜö$rzqøÐ tžIØsÀ$8äc§‘Ó§P›Go½ÓåÁ$v<uíÁéÁâ€#þÈ9iÏ~G9©=?@]Ô˜ê;’O$u  hçrœdó¸g8žœr{w ÿ t�	ç¶zòxÆ1@t€Wî‚	;�ÈéÜqŒ€=½h 9'wäsŽü÷ü¸ ¿Øùã.z–íÛ¦= 7û ã:t9÷ÇNÿ �ë@
4|pTàóÔåþ #° sœõÇCÀëõè}1@]$ž6×œž¹ïõÏlŸÆ€ûÄõ8ÏCÏª‘�ùÿ * OìsÀ#8Ï|}ÉãÛ?� 'öAônxå�ëœö÷þ¼æ€û© ƒŒ‚pÀþgœPƒH'�§ŒdpÃŸË>ür ÿ c±<0rWpÇáþ{Pý�Aàdö—Žxú€c½ !ÑòIÁÁç%‡>˜ÉãŒ{ä�(?±Øç°;ë�Ãòôïë@4ï.r:ç'èqÓò÷äu Q¤pFÛŸË~\ûPÆ’FÒ ÎXÎ3‘€IÏ~Ã ßì’ÀŒ0çåä{œlþ^ô  ã„$çƒ¿¡ð=1ëïÈ ´˜å	àôËs‚89öö4 d| `ç¯^¼ž½ý¨ÿ Ù 6tÀÆFp g=9'õÇ ÖÒ1Ñ;qóG_Ã¶sŽ§Š “ž0{3Á'¨aíÐ`ŒZ pÒG¡éÜúg§yüzÐ(ü§Óê1Œp=;ÿ . 3û õ*qÛæèOÃtüúÐ�I\†¼ƒ�LqÇ>ÿ • Ù1xÏ=yÇ_ÏŸOj _ì`~ê‘�xÏ'œwÏQÛ© ÿ dî“œ)ÀýÏN}@ý”?!œŒô9ñÇ>Ý1@:@8;	ÏmÃ úŽ;ûƒÏ­ 'ö>1òç¯!ÇnžÀ˜#'¦E Ù;yÏ¨Ç~ƒ¯Ëõ UÑùÀŒw=}p1Çëê3@ÑÔƒ… ’NI>€wþG&€4vÎ0ÀÙäp8Ç©<öú niúzÛ�Ì¤“Ç'¦3éÏ¯õüÀ5è  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  *§¨ê hôü#ò=è Ú:ã××¿Z 6�Ú€«è?* M«ÓhÇÓüþ>½è Ú¹ÎÑŸ¥ .ì:ç§z 
ƒÚ€ÔøÝ( Ú¾ƒò hô� hôs@UN	ŽžÔ »Wû£ž¼sëë@§ùút Ð~T ›WÐP±Oð�ËÊ€ª:(… .§^Ý¿.” mp3ëŽ: MŠ„uÏNÿ Ö€«Óh?Qš ]£ÐtÇáéþzP´zuôã§õ hôžß—J 6�A@Ñè?!@§ù÷õü~´ m_AùP´uÅ &Åþèü¹üúÐí8ÃÛò hÎq@ÕÎp3@	µ}?§ò Ú=ø}=?
 6¯ ü… °ü½hpã@	µ}( Ú=3õçùÐµ}å@Õþèü… G ÿ õÐµ}å@Ñéþ?ŸZ 6¯ ü¨h   ÿÙPK     o‰U]Åè€Œ3 3 0  admin/images/upgrade-welcome-headers-footers.jpgnu „[µü¤        ÿØÿà JFIF  � �  ÿÛ C ÿÛ CÿÀ ¬j ÿÄ           	
ÿÄ µ   } !1AQa"q2�‘¡#B±ÁRÑð$3br‚	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùúÿÄ        	
ÿÄ µ  w !1AQaq"2�B‘¡±Á	#3RðbrÑ
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÚ   ? þþ(  €
 ÁÕ5Èì\[AÚoºí�##Ì+’XŽDkóÉ*
“Ý…ÁJºu'/gE}§¼­¿-ôIu“Òú$Úvç«]AòEsÍô]=m­ße¯]4¾!»ñ$ß8–+py„€cþúI_ðgÏ¯5Ûì²ØiË*�ù¯?ÑÅ}ÊÆ_írÖê>^êýâÄó¼Kÿ ?‘ÿ ß6ÿ ü�O—-ÿ Ÿ2ûêòaËŠþu÷¯ò;Ä¿óùýóoÿ Èôrå¿óæ_}OþL9q_Î¾õþAçx—þ#ÿ ¾mÿ ùŽ\·þ|Ëï©ÿ É‡.+ù×Þ¿È<ïÿ Ïä÷Í¿ÿ #ÑË–ÿ Ï™}õ?ù0åÅ:û×ù�â_ùü�þù·ÿ äz9rßùó/¾§ÿ &¸¯ç_zÿ  ó¼Kÿ ?‘ÿ ß6ÿ ü�G.[ÿ >e÷Ôÿ äÃ—üëï_äw‰çò?ûæßÿ ‘èåËçÌ¾úŸü˜râ¿�}ëüƒÎñ/üþGÿ |Ûÿ ò=¹oüù—ßSÿ “\Wó¯½�yÞ%ÿ ŸÈÿ ï›þG£—-ÿ Ÿ2ûêòaËŠþu÷¯ò;Ä¿óùýóoÿ Èôrå¿óæ_}OþL9q_Î¾õþAçx—þ#ÿ ¾mÿ ùŽ\·þ|Ëï©ÿ É‡.+ù×Þ¿È<ïÿ Ïä÷Í¿ÿ #ÑË–ÿ Ï™}õ?ù0åÅ:û×ù�â_ùü�þù·ÿ äz9rßùó/¾§ÿ &¸¯ç_zÿ  ó¼Kÿ ?‘ÿ ß6ÿ ü�G.[ÿ >e÷Ôÿ äÃ—üëï_äw‰çò?ûæßÿ ‘èåËçÌ¾úŸü˜râ¿�}ëüƒÎñ/üþGÿ |Ûÿ ò=¹oüù—ßSÿ “\Wó¯½�yÞ%ÿ ŸÈÿ ï›þG£—-ÿ Ÿ2ûêòaËŠþu÷¯ò;Ä¿óùýóoÿ Èôrå¿óæ_}OþL9q_Î¾õþAçx—þ#ÿ ¾mÿ ùŽ\·þ|Ëï©ÿ É‡.+ù×Þ¿È<ïÿ Ïä÷Í¿ÿ #ÑË–ÿ Ï™}õ?ù0åÅ:û×ù�â_ùü�þù·ÿ äz9rßùó/¾§ÿ &¸¯ç_zÿ  ó¼Kÿ ?‘ÿ ß6ÿ ü�G.[ÿ >e÷Ôÿ äÃ—üëï_äw‰çò?ûæßÿ ‘èåËçÌ¾úŸü˜râ¿�}ëüƒÎñ/üþGÿ |Ûÿ ò=¹oüù—ßSÿ “\Wó¯½�yÞ%ÿ ŸÈÿ ï›þG£—-ÿ Ÿ2ûêòaËŠþu÷¯ò;Ä¿óùýóoÿ Èôrå¿óæ_}OþL9q_Î¾õþAçx—þ#ÿ ¾mÿ ùŽ\·þ|Ëï©ÿ É‡.+ù×Þ¿È<ïÿ Ïä÷Í¿ÿ #ÑË–ÿ Ï™}õ?ù0åÅ:û×ù�â_ùü�þù·ÿ äz9rßùó/¾§ÿ &¸¯ç_zÿ  ó¼Kÿ ?‘ÿ ß6ÿ ü�G.[ÿ >e÷Ôÿ äÃ—üëï_äw‰çò?ûæßÿ ‘èåËçÌ¾úŸü˜râ¿�}ëüƒÎñ/üþGÿ |Ûÿ ò=¹oüù—ßSÿ “\Wó¯½�yÞ%ÿ ŸÈÿ ï›þG£—-ÿ Ÿ2ûêòaËŠþu÷¯ò;Ä¿óùýóoÿ Èôrå¿óæ_}OþL9q_Î¾õþAçx—þ#ÿ ¾mÿ ùŽ\·þ|Ëï©ÿ É‡.+ù×Þ¿È<ïÿ Ïä÷Í¿ÿ #ÑË–ÿ Ï™}õ?ù0åÅ:û×ù�â_ùü�þù·ÿ äz9rßùó/¾§ÿ &¸¯ç_zÿ  ó¼Kÿ ?‘ÿ ß6ÿ ü�G.[ÿ >e÷Ôÿ äÃ—üëï_äw‰çò?ûæßÿ ‘èåËçÌ¾úŸü˜râ¿�}ëüƒÎñ/üþGÿ |Ûÿ ò=¹oüù—ßSÿ “\Wó¯½�yÞ%ÿ ŸÈÿ ï›þG£—-ÿ Ÿ2ûêòaËŠþu÷¯ò;Ä¿óùýóoÿ Èôrå¿óæ_}OþL9q_Î¾õþAçx—þ#ÿ ¾mÿ ùŽ\·þ|Ëï©ÿ É‡.+ù×Þ¿È<ïÿ Ïä÷Í¿ÿ #ÑË–ÿ Ï™}õ?ù0åÅ:û×ù�â_ùü�þù·ÿ äz9rßùó/¾§ÿ &¸¯ç_zÿ  ó¼Kÿ ?‘ÿ ß6ÿ ü�G.[ÿ >e÷Ôÿ äÃ—üëï_äw‰çò?ûæßÿ ‘èåËçÌ¾úŸü˜râ¿�}ëüƒÎñ/üþGÿ |Ûÿ ò=¹oüù—ßSÿ “\Wó¯½�yÞ%ÿ ŸÈÿ ï›þG£—-ÿ Ÿ2ûêòaËŠþu÷¯ò;Ä¿óùýóoÿ Èôrå¿óæ_}OþL9q_Î¾õþAçx—þ#ÿ ¾mÿ ùŽ\·þ|Ëï©ÿ É‡.+ù×Þ¿È<ïÿ Ïä÷Í¿ÿ #ÑË–ÿ Ï™}õ?ù0åÅ:û×ù�â_ùü�þù·ÿ äz9rßùó/¾§ÿ &¸¯ç_zÿ  ó¼Kÿ ?‘ÿ ß6ÿ ü�G.[ÿ >e÷Ôÿ äÃ—üëï_äw‰çò?ûæßÿ ‘èåËçÌ¾úŸü˜râ¿�}ëüƒÎñ/üþGÿ |Ûÿ ò=¹oüù—ßSÿ “\Wó¯½�yÞ%ÿ ŸÈÿ ï›þG£—-ÿ Ÿ2ûêòaËŠþu÷¯ò;Ä¿óùýóoÿ Èôrå¿óæ_}OþL9q_Î¾õþAçx—þ#ÿ ¾mÿ ùŽ\·þ|Ëï©ÿ É‡.+ù×Þ¿È<ïÿ Ïä÷Í¿ÿ #ÑË–ÿ Ï™}õ?ù0åÅ:û×ù�â_ùü�þù·ÿ äz9rßùó/¾§ÿ &¸¯ç_zÿ  ó¼Kÿ ?‘ÿ ß6ÿ ü�G.[ÿ >e÷Ôÿ äÃ—üëï_äw‰çò?ûæßÿ ‘èåËçÌ¾úŸü˜râ¿�}ëüƒÎñ/üþGÿ |Ûÿ ò=¹oüù—ßSÿ “\Wó¯½�yÞ%ÿ ŸÈÿ ï›þG£—-ÿ Ÿ2ûêòaËŠþu÷¯ò;Ä¿óùýóoÿ Èôrå¿óæ_}OþL9q_Î¾õþAçx—þ#ÿ ¾mÿ ùŽ\·þ|Ëï©ÿ É‡.+ù×Þ¿È<ïÿ Ïä÷Í¿ÿ #ÑË–ÿ Ï™}õ?ù0åÅ:û×ù�â_ùü�þù·ÿ äz9rßùó/¾§ÿ &¸¯ç_zÿ  ó¼Kÿ ?‘ÿ ß6ÿ ü�G.[ÿ >e÷Ôÿ äÃ—üëï_äw‰çò?ûæßÿ ‘èåËçÌ¾úŸü˜râ¿�}ëüƒÎñ/üþGÿ |Ûÿ ò=¹oüù—ßSÿ “\Wó¯½�yÞ%ÿ ŸÈÿ ï›þG£—-ÿ Ÿ2ûêòaËŠþu÷¯ò;Ä¿óùýóoÿ Èôrå¿óæ_}OþL9q_Î¾õþAçx—þ#ÿ ¾mÿ ùŽ\·þ|Ëï©ÿ É‡.+ù×Þ¿È<ïÿ Ïä÷Í¿ÿ #ÑË–ÿ Ï™}õ?ù0åÅ:û×ù�â_ùü�þù·ÿ äz9rßùó/¾§ÿ &¸¯ç_zÿ  ó¼Kÿ ?‘ÿ ß6ÿ ü�G.[ÿ >e÷Ôÿ äÃ—üëï_äw‰çò?ûæßÿ ‘èåËçÌ¾úŸü˜râ¿�}ëüƒÎñ/üþGÿ |Ûÿ ò=¹oüù—ßSÿ “\Wó¯½�yÞ%ÿ ŸÈÿ ï›þG£—-ÿ Ÿ2ûêòaËŠþu÷¯ò;Ä¿óùýóoÿ Èôrå¿óæ_}OþL9q_Î¾õþAçx—þ#ÿ ¾mÿ ùŽ\·þ|Ëï©ÿ É‡.+ù×Þ¿È<ïÿ Ïä÷Í¿ÿ #ÑË–ÿ Ï™}õ?ù0åÅ:û×ù�â_ùü�þù·ÿ äz9rßùó/¾§ÿ &¸¯ç_zÿ  ó¼Kÿ ?‘ÿ ß6ÿ ü�G.[ÿ >e÷Ôÿ äÃ—üëï_äw‰çò?ûæßÿ ‘èåËçÌ¾úŸü˜râ¿�}ëüƒÎñ/üþGÿ |Ûÿ ò=¹oüù—ßSÿ “\Wó¯½�yÞ%ÿ ŸÈÿ ï›þG£—-ÿ Ÿ2ûêòaËŠþu÷¯ò;Ä¿óùýóoÿ Èôrå¿óæ_}OþL9q_Î¾õþAçx—þ#ÿ ¾mÿ ùŽ\·þ|Ëï©ÿ É‡.+ù×Þ¿È<ïÿ Ïä÷Í¿ÿ #ÑË–ÿ Ï™}õ?ù0åÅ:û×ù�â_ùü�þù·ÿ äz9rßùó/¾§ÿ &¸¯ç_zÿ  ó¼Kÿ ?‘ÿ ß6ÿ ü�G.[ÿ >e÷Ôÿ äÃ—üëï_äw‰çò?ûæßÿ ‘èåËçÌ¾úŸü˜râ¿�}ëüƒÎñ/üþGÿ |Ûÿ ò=¹oüù—ßSÿ “\Wó¯½�yÞ%ÿ ŸÈÿ ï›þG£—-ÿ Ÿ2ûêòaËŠþu÷¯òOâPsö¸›Š[�}¿ÔÐƒïIÃ-òêKÍ:Ÿü˜[¾Úü?ùJÓ\ž)Zƒy
—Qÿ ¨'·™ó0LñóÀÎYA#ž®œ£)á*9ò«Ê”¾;wDß£Zômè\kN-F´ynì¦¾žöþ®Ž˜ò:v=ˆ<ä{W˜u@  P@	Ÿþ¿·ùô “�aœÏAÏøƒôü€*_]ý’Òâç1FÎ€ç¾ì`�Ð 7N?*Ö…?mZ�;ÛžI7Õ-äþJö"¤¹!)vWùôüNCIƒ1µìß=ÅÃ;onX.â	ú»bGUÚ+ØÅÔ÷•{´é¨®U¢½´ùEY/;œØx{¾Ñë)·¯•ÿ W{ü�šâ:B€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 ŽHÒdhäPèã§üðAäÈ r*£)BJQv’wM[w]E(©'+§ºþ¿Å�wòf²‘‹½ŒÂ$c÷šà,zdËŽÊ ï‘ž:ž¢’�xsµÑTZNÞ®ÏÕ²(6”©·g.Túò½cø_ð73“ŽGn¼çƒÓ<wþGÒ¸MÇÐ@ €Ÿ\×œr?�¯ò ‰ÛnGL`õð:þ<ç…¯I�.èwýÆ}qö˜ÏåÚ»²õþ×K¯Çÿ ¦§ýÃ˜bƒ?ûwÿ JE-;þ<m¿ë˜þfºq?Ç©þ/ÑáCü(»X&~Ñÿ ·ìÑû(Üèú_ÆŸˆ�è~!×­Åö•ám'HÖ<Mâ9´Ï=­Ž­s¦hVW¯¦i~ls¤º³ØÃ%­Ük^\ÚÏ
|§ñ·p¬¨ÒÎsC^<ô°´©VÄâ].n_k*T!7J•Ô”gUÁTqœióÊ2Kõÿ üñCÅÚXÜWpÜñùn_SØbólf3•å�Å{5U`éb±õè,V+’TåR†5ç‡�Z51*�:´ç/Sø!ñïá'íàkoˆß|i§x×Â“ÝM§Mwgå•ö—ªÛ$R\éæ�©ÛÙjú.©SÁplõ++if³¹´¿¶Ø^Z\Íêd™öSÄxæ966ž7)Êœ¥8N•X¤åJ½±…j5R”eÉRr„¡R<Ôç	KäøïÃî0ðÓ>«Ã\m’br<Ú�(baF´¨×¡‹ÂUr�,f…«_ŽÂÎP©OÛakÕŒ+R­‡«ìñkR†çÄŠ¾øaikuã-r-5¯ÙÖÂÆ(n/uß+ošöö6qM?‘åÝJ±ZÆÌ‘´ÂY#GùN?ñO�¼2Âáq<c�ÓË§ŽsŽJŽ#˜ã}—/µ��ZÞÂ—4U\MUKNR…9VUjS„øxs„xƒŠëU¥’`'ŠXuˆ¯:”èahsß’5+Ö”)ûIÙòRƒ•Y%)(8FRV|ñ/Á_4éµ?ëpê°ÚH°ÞÀbžÒþÂWc[Ë¸áº…f	!‚c·¸òäò%“Ë}½<	âGx“—VÌø;:£šÑÂÔ�mJ¾�«5'N8¼.�MÕP›¡YÓt1Î§°«SÙÏ—.!ál÷…±PÂgx	àçZ.t*sÓ­‡ÄB6Rtqe:Spæ�´‚—´§ÍióFíø…ñ7Á4U×¼q®A£XÍ7Ù­Ç=Õî¡u´¿Ùì,-#šîêEQºVŽ#º%Ä�Æw×Wñß
ø•Ç7â¼ÚŽW„©WØa¢áWŠÆWårö8L�\F"j>õG
n�µ:ó§Ì|¶/†ÁSö¸šªœ[´tr”åÚ1Šr“ïedµm#+á¯Æ‡íîåð7ˆ¢Õ'ÓÖ7ÔtÙí®´íRÉ%fHåšÆú&{weÚ·Vâ{]äFf�•çð7‰üâ5MNÎ©ãë`”%�ÀÕ¡ˆÁfXT”£
•0˜ºTªJŒå,EV‡3PuUGÊgƒÌp˜õ'†ª¦ánx5(N)ìÜd“iÿ 2¼z^ú¥_~v…  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@im�KU¿aõÿ ž×_§®:ÓÅÿ »á?îcÿ K‰•?ãWÿ ¸_úK:%`Ï=¹ºö9ÏµyæäÀ‚xôäŒãüç=³ýÇgüÿ õúPÐ€h z ?Îù<p9 
²>ö÷Ï$søgŸåT¿?ëúB9Ýj]Öž¦/ýú{ôþ|öà?ÞéÜOý73Gðgÿ nÿ éQNÿ �oúä?™®ŒOñê‹ôC£ü(…kCøÎÿ ‚Í|*ø›á/Û3Æß<U§ë^ø—aá+Ï‡Þ'’™t&³Ñü#£èZ�…íïD`´Õ4mSIÔ..4d‘nÍ�í¦·4$jÂâ_ãŸò¬Ï	ÆXÜÃN´°9•<$òüSŒ�
8J4*ac;{8U£V•IJŠj|“…yG÷ÜÏý±úqog	ä\7”â0T³þÄg8‹*�JPÇªØÜã�Ãfµ(s}b¶…Æa©ÓÆÊ.�¶¡[	§ƒöpýÿ ‚ü(ø›áŸ
|nø¡â[Døsãù<¥x2ßQ†æÖê^oO«x“L·¸Ž5›N±‡W´Ò Õ­·Ûê72ßÚ,ŽúD‹è~åYž�æxˆU£—cÞ
–5£UL7Ö%WJ2JôáÐ¥±¼jIÔ…Û¢íüÙûAø»…³Lß�xW.¯ƒÇq/G<Åçu0Ó¥V¦U†Ì–[O–bªS”œ15çƒ­‹©ƒ«ËSJzÎ1Ž2._kþÛñ,^=Ó<Y=½ÝÏ…ï4.Êýä³Ó¯­./žãL™ÆVÚiÚ·Áæykt.%ÖàGü“ôÑáž$¥ÇyoÖÃâñ<3ŒÈpfNx<»„ÄcgˆË+M^jÕå[ëô}§³X¥ˆª¨º“Ââ?Ä|	Í²¹ðö+'§R�,Ú†cˆÅ×Ã¹F5ñ4+RÃÆ–.vuaMSú½N^gEÓƒ¨£´Ü·¿aßx–?xŸÆoumáYtÑi‘ã·Õ5i5+¸�¦ì-Çömµ¥ÒÏ4{„}[ƒLê=ß¡'ñ>!ân/ž†áz™²HV«	ÓÃæyµLÇ‹¦ð¼ÖŽ#û7„ÅF½j|Ê„±´és)UœW�ãÞm•Ë-Ê²XÔ¥W7†b±ò„%TÂ`ã…ÄQš­kº_Z«Z‹§	YÔXyNÖ‚f'üÂ^)ºÕ<ã{[ÛÏ	Xh×z=Ô°FóZèÚ´šƒÝ4÷›7}™u[gµ†)äUŠGÓ|–“Ì1#}7Ó'‡x‚¾aÂÜKGŠÄðæ,Äå˜Š”iÊ¥³1ž2X‡WË`³ÃÒ§Vq�9ÏìÜùÝ8¿âÞ*¡^SÃbe*§*ri7uù¯/åç\©7£pµïcÍ¿a/xªóâÁñ…��í¿…t}Y³ÕµW†XôûÙï¡Š]‚¾UÅà¹h5) Fo"2c=¸—áþ‰<7Ä¯ÿ Ö\6G‡òÌ§3Ãf9„©T†[N�>YJ»�³­‰UåK:QoÙSÂsÔär¢ªqðÎ¼±ßXŒd¨S¥R5'f¡'$”i§³—5¦×E»iØšÿ K�¿
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €3ìäÙ©j^ÿ cý!?�~Üã<Š¬Wû¾þãÿ éq2¦ÿ }_þáé,èc“8çž8ãß–ü½¿¯ëúùî\FÎ0F:v;2 9õéï;n2`?Nø¤Ð}(¼ŒqÛ©çÇýúþ¡ˆÌžLœçÓüþg¨«HG3ªÉ›iã%SûÅ=ûõôÇnýê—ý¿ÿ ¦æaˆþõþ_ý):wüxÛ×!üÍm‰þ=Oñ~ˆª?Â‡øQv°4*ÝÙYßÂm¯í-¯mÙ‘ÚÞî®a/‰#sÈèZ7Utb¹GPÊA ÔÎ©YÂ3�ÓåœT£tî�šjéê»=Mh×­‡š«‡­V…D¥R�IÒšŒÓŒ¢§ZQn2W³M§tË*¡@UU@UU  `  À€*¶3m¶Ûm¶îÛÕ¶÷mõld‘Ç24RÆ’Æãˆ®Ž=aìA)Ó­	S«NiÍZtêF3„—iBIÆKÉ¦‡JS„¥	EÞ2‹q’}ÓViú1ÊªŠ¨Š¨ˆ¡UTUUUU@    
qŒaÂŒ!¨Æ1J1Œb­Æ*ÉE$’I$’²nMÊM¶Ûm·vÛÕ¶Þ­·«optY‘Õ]J:8®¬ee †V‚ ‚A§(Æq”'(É8Ê2JQ”d¬ã$îši´ÓVkF-ô{Š( �"†8áŠ1µ"‰8Ñ}Qì 4éÓ¥Ó¥S§hBœcEvŒb”b¼’HIY$’Ù-ÜIV@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  Pýš•÷8ÏÙHGlÿ ^Ü^'ýß	ÿ qÿ ô¸˜ÃøÕ¿îßáfý¼»€ëÓóõõãÛ Wþ¿¯ë©²Óúþ»±·ßñ÷ãôúT=û»–ÔöéŽÇ¯øã§øšC@lã�Ï8Å T•†Ð:§çœý3Ÿ~™ÆBfËà7^øÇ¶ÇqÛCèkD‰èÿ ¯ë¯Þr×ò’¬™ôÏœ0=ùãëŒç±îÀÿ ¼Òÿ ·ÿ ôÜŒ1Â—ý»ÿ ¥#¡Ó¿ãÆÛþ¹ækLOñê‹ôEÑþ?Â‹µ� P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ r÷.ST¹ø„=ñÈ�?¡=�ò­q?îØ_û�ÿ ¥£ÿ ·ýÃÿ ÒM»GÎ=ÿ Çÿ ¯ùŠóßèn�è›çüýN½zýy¨ˆÿ ?ëCA2sŸcý?¥.Å¤ úÿ .ÿ ‡óúP}Ç|{ðc×§ë×¿9¦„ú7l0zÿ ^OqÆ85´vþ®Kþ¿áŽ^M³]AY¢FÀ áØT�Ã<ñ�p{cŠêÂ·
ªj×Œ*´µµÕ)µ}´¿š0¬¯»¸¯¾Hï‡tõ )º tæ@Ð
�íCÕû&ÿ ëÜKú¼Îkþßbÿ Â=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀØÂ=aýë¿ü
“ühþÐ¯Ú—þ
ˆ}^ÍSÿ aÿ õ‡÷®ÿ ð*Oñ£ûB¿j_ø*!õx5Oü‡ü#ÖÞ»ÿ À©?Æ�í
ý©à¨‡ÕáüÕ?ð6ð�Xzïÿ ¤ÿ ?´+ö¥ÿ ‚¢W‡óTÿ ÀÙÇjöÑXjžL%Ê´QÉûÇÞÙ#70¼g$:`jÖ�l=Ï–êu—º¹U—³kM·}?Îñ(T¨“oH=]ßÚêhÙ7åœg>§ ýqýxÉÅq3eý_×S¦·?(ï�äqßÿ ÕÛ¦zVrßúó4S¯ùüÿ Ï­Id´ Çíîyõ>ÃƒÏôÍ fÌpñÇOL}yªD¾Ÿ?ëúìsw¤#§þ]AÜ{Ö±!œâŸø˜Ùõÿ �¨¾Ÿ|w÷ÇáÓ½uaþ'ÿ ^ëéª†U~œ?ô¸ž¹^qÔ P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ yÇ‰ˆÊsÏÙãê3ýìç¿qþÜ¿Ýhÿ ×ÊßûˆÃþ^Ôÿ ?ý¼–ÄàŒçòú=;ñìqõÁþ…£©¶äz`wê}øíþ¿›ß¿â4õ4ãlöëôì\qëïÒ ²j ŽNÜ÷üøÿ ?¯½ fÏùrzõÇ<zöõõ§ÄÎrôü¬zdsÈéøôüýyÆlºüŒÎi8Ô¬úÇÔYõûàÿ œÿ õ««ñ¿ú÷[ÿ LÔ2«ðÛÐÿ ÒâzõyÇPP@'~Øÿ µ÷Ã¿ØÇá:üIñÍŽ³â][]×´ï|9ø}á{µø«â'�uÆx´Oèvø`²ÝÌ¿é’#EidÓËoo0ÅvŸðR¿ŽŸ|[ðÆÛ/ö'ñìßð¿âÿ ‰´xcâ•¯Ä|FÒ¼1â_Ì±hº_Ä�?Ã°}«Â/vdA,÷èö›.Œ²¢\¬ `|ý­-~1þÒµwìöž—@Ù~ïáÍ­×‰æÕ£»‡Å_ðŸéZÞ¦²Çb-`:ZéƒEhÜIqsçùáƒF#!€>‘ð¿ÄŸ‡^7½Õ´ßøûÁ~/Ôt‡´×l</â�_½Ñn£s–Úµ®•}w>›p’+FðÞGŠêQ”0"€>Dý’?nï‡ß´·€|Eã?7†¾Þé¾$|Ñ<=â�è‰â‹ï‡×ö6¨èâù´©o%ÔÞð2iÖ–÷3@Wayf€>Äñ�<ðûMMgÇ¾3ð§‚4ygKXµ_ø‹HðÖ›%Ì¿êí’ûY¼²µyäÁÙ
Êd||ªhä¿ÚïöÒÐ¿eÿ ~Ï~*Ó|;mñ3Iøýû@øàv—}¢xŠÎ?NOhþ&Õ ñU½üjÚµ¥ªxtÆ¶Öò ¹K"\¨�öåý¯m¿bÿ †>ø�sà©ütž6ø×ðóàêipjÑèía/�[WTÖÚâKKÁ<zwöQ-f#FŸÎš=¼€;öøý®í¿aïÙ¿ÄŸ´ß‚çñü>Ö¼=¤7†íõhôYnN½zl–a%¥êF-ÏÎPÛ±�p
õ §<]ñáïÃõÓßÇž;ðo‚SVº[--ü]â�Ãk©^8%m4öÖo¬…åÓ JÁnd”€p‡€4õ¯x_Ãzþ(ñ‰4ÃVÖéwsâ-kXÓ´½
ÞÖ@w3ê÷×iñ[¸e)4—X‚(øÏÁþ/ÑÄÞñ_†¼QáÇ”ñ‡uÝ/[ÑB¡æ+ªé·W6"RR'>Z�_ æ€><øçûsxáO�?f?
øA<?ñbËöŠøá'Á9uïøÓF¿±ðV©�6­5ÝûiŸÚ‘]\ÃåeÒÚ{;ˆËnr:PÖ—Äß†Ú7‰ì<«üBð>•ã=UU´¿ê^,Ðl|O©+3"µ†�u«x¬èÈ¦ÞÒ@YYG €>·ñáÿ †n.¬üIãŸx~îÆÞÒîö×[ñ6‹¥\YÚ_Íök«¨/ïmå··½¸ýÅ¤Ó*Gq7î¡g–€:=OTÓ4[½WYÔlt�.Â	n¯µ-NîÞÂÂÊÚ2Mswyu$VöÐE³Ë4Ò$q¢–f
	 [Bø›ðßÅ»ñ�†¾ ø#Ä^°ó¾ßâ­Åz­áË/³€n>×®X_Üi–Þ@ Íç]'”/·4 ºÄÏ‡·ˆSÂ:WÄê~,—MƒY�ÃŠô+ßÉ£ÝB·Úªh¶×òjO¦Ü[ºOòÛYau–9Y1 åþ'|jð'ÃMÆS_x›Â×0ð¿�|Sã›O Mâ}ÇÅ:ÝŸ†´;íeã³Ò&¹mPÃr¶Fy„ÑD_yÏÿ e_Ú[Hý¤¿f/†´µþ•mðïFø�áSâ›­3XÖ­fµðíªÝÝZÈ·ºÜÑØZ˜£û1‘îdH#Pãv1š ð_Ø;öõ›öÞÑþ&|@´øo¦|:øQáMjçIðˆõˆ¾ÖüGâ(´ýKR²Ô5xVÊ(.¼eäÚ[]ióêSI &ºŽ?Ðef ûŸÂ>|A†öãÀ>:ðw�íôÛ–³Ôgð‡‰ôOÃ§Ý¯Þµ½—E¾½K[•þ('håÖ€!_‰¿›Å§ÀñÁã±
ÜŸ¯‹4âÑnßvàøl_ÿ lˆ[#l¦ËË9á¨Ã´ŸÛ+à6³ûOø›öE´ñH_‹ÞðVŸã�B‰t¨|=sk©j¶ZD:™«TÍ}âøî¯¢{ŸÇ`·°[Ç<­ÄEH¹?Ä¿‡1ø¶? ?�üž;–6š/?Š´%ñl‘$fg–?›ñ¬<k2³­™UŒ$(&€%¿ø‰ðÿ JÔßEÔüuàí;X�RÒ´gÒoüO¢Yêi«ë­hšSØ\_Gtº–°óÂºU‰ˆ]j4KiÆD± €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (ÍüNq¬ÇÓ›xúûøŸ§O^ÕÜ¿Ýhÿ ×ÊßûˆçÅŸøiÿ íä¶<à÷Êã3Œ÷Ïöü}kú.§SkÈàcƒÆGù'¯ëY=Ð-Ñ§o~zû~¹ãéŠƒBz �ûCý?Ïøö Óý9ù¿_óÿ ëÍ4'Ðæï~áõã¸þGž3ø�C[Ç¯õÔÌæSþBvõóí�õ€~Ëž¼×Nãõî·þ™ªeWàÿ ·¡ÿ ¥ÄõúóŽ  €?¿à²öº�‚îÿ aÚgQÑouÏ…?³7íyà|`[;K‹ñáÿ Ë©ih|Wqgm¾I!Ñ¦²iO%Ñ/ZÊ7â|ÿ ‚‚~Ú>7×µß…W?°ÇíÅðÛâ/ˆ~1ø§á×�üû+øoá'ÃŠ·ÚŽ­©Kµã�sÆÚµî¥ªøVÒÖÒêÚ[›-_Ãvÿ ÙËm,«<Q‹©  ùOöª¿ø‹¦øŸþ³uðÖ}vÒÿ ûcö?ƒÅw~i—Zµøms'ˆmþ"MfmÔÍ…ðœº˜¹1”+hÓ¾ì)V õ‹ýöCðíqÿ ¢›þ	Óuàeø…â{ì¿mþjçT“RýžßÂ–³øÂïâ¤6—W‚˜íÆ±pËâeƒX�YŠ6–8ïm¬Š |KðsCÿ ‚~ê¿°¿üTý u¯í!áÏ‹µÇÂåñNµ%§�´›÷¶ž…|$Òf¾·{Ènþ"Ç|oæÑ­§Yµh¯ ñ‹akoå€}©üDÒþ#jÿ °OÂÿ Ž¿>x�ão‡a]#â¥ñ3öàø¯ã�
üÓ4]cP¹µ¶‡GðN—*Yx§â«¥ZÁ6©¯j	ý´öÖ–Öp5ÁÓäpó€µ)î?coÙÇGŽ÷JŸ@ð×üLÒ<+cá»�joèúxâ¶º‚ÓÄXÖí¼(›Ìš$ªG¨­‹Â×ñ¥ëN(öÓþåa6«û#üÓ-µ+ÝãQý³>ØA«é¦%Ôt©¯!ñ¥¼Z•ƒOÐÛ‘n­LÐËž(Ì‘ºeHÄ¿ðXÏØ÷â×Â/ØkÇ^6ñ_í×ûO|qÑ¬|Sà›YþüLŸáûøOQ’óV1Cyvº„t�Kíûë_.õÌÿ XŽ¼P/ÚWDÕ|sÿ Býª´O�oûÝiš?Á¿Â£Óÿ mßøïÃþ¶øc¨C~|Kyð±¼,Ðérø‚M]	ñÝÝ]cû;iòµI  ó[ø7@ý—ÿ `_Ùçâ%ÏÁOÚkOñ‡Ç_‹š—Á/‰þ#üZøqû'xÂ^†éôÝ+Æ³ë:N…­øêÛÃš…¶­áß
iº½±ÐáŽ[¬î.HPæ�kWñæ…ð3þ
÷àß„ú�Ã{?Ûx£à>§ã-öj¾ñUÏÁ�?Âº½È±ø‹ª|=oHuQ¦_¤v–þ Ô¢Xì/¬£¼1‡Ð¢¶e ú÷âï†ÿ àŸ^ý©ÿ à’vÿ ±§à—»Õ~-èwÞ4ÓþëÏªÛÝøvÛB²‹ÂÇÄ»8o¯!Óüzn®|C—öºÚøŠX&ñ"\ÄmàM ,Càé¾!xöëÕÿ h?~ÂþøÉíñjËÆþ;ý |OñbÇöŸð»¥ë‹„u†W„­omî4=ÖÞoÛøjÃWŽh +t²Yù(€¡	ÿ gïüyÿ ‚£x3Ãß´}Ž�ñºãÂðMŸÙãÅwÚ„Zí¿‡|Iã‹K×µÿ „Èé’éz”í$·Wš†–šõ”W¶­yç\ÙÁy¹c û¯þãŸ‡ÚÂo�^øƒðÓAø—mñkö…ðW„4+?ˆ?|KðËàæ‰®¤7Ú�¦µñw\ðÌ±\j>µKiç‡ïYtýDþòâD£ ‡Ö×hž/ÿ ‚»ø?ÃsþÏv>¹ÿ ‚®¹ªh?²–©âmKà{ø«Lñ‘¦-þŸ7ˆœ­ï‰lìµ»bûLE°ó%x! ¬Š >‘ø›û5üýŸþÿ Á~9ü%ðu¿ƒþ0ø¿ãGì•cã/ˆÖº‰ñG‹­|}à=#Uñ\"¿–îC¨Ûj“¼Öídè¶6ú\òhöÖÑi{-Íü¦~Æzï�ÿ à©¾,ý²õ/ÛWLøÑñÆËÂoâ�júÇâ¶Ÿ¦C ÁoðRßàý„w6º�ä×>&óítû}ÖãÍ�l­ï"M¢2 ~ÔÁ*<'á¿Á-?foøÃE°ñ…üGð•ô­wBÕ [�;UÓnµ}U.,¯ o–X&_–D<0â€?Ÿ?x#Hðgü‹Àž9ðÇ‡ÃúÄ?ÛOÂ¾ý­ü_á»y­5½SörÒüSâ¨/lõíJÈý¼h~ ŸÂögåtëû«iA´¸¸ ¶¼[¦üð'ü'à=ŸüùüÒk?²oÇ9~4iu(5¿	>ƒeà-bëá×‹†›}w¦Úø‘üq‡c¶þÑxõ¶Y#7ê¢XÙ€>ÕtïÙÛþ	Káoˆ¾ÕtDÿ ‚�Šº}ìz•Ž¯u7í+/íÿ 	Ð�S±›JŠå¼Yå>U¼FÃû"GKh#i.™Õ€?D´ ü0ð·üOâ}ÿ �¼)ðÛÃßµ¯Ø¯Á>[km¥ißÚÿ µ6¥«è-q¨øE¯gŠ=SÆWºŠjð¢X›‹»›hîŠDèŽ@å¯�<ž;ý’¼Eã/|Ký…¾|t“ãö±©ø‹â·Äüi—öÛðŸÆ;Œ¡4øæð÷‡l5)fžsoe¥Åc¤è·ÚL¼¸{Áý­óÚ€~³þË¿>ü`ÿ ‚¹~Ø^#øÙáí+â?‹þü?ý“¼eá­OQ�Q‹NÓ>#Ø|0øst|q¦iS}… ÕáÔ­çL—P³[›�ãkh%i F4 P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ y·Š?ä3ýp�×ý¯óÍw/÷Z?õò·þâ9ßñj†ŸþÞKaÛ¿Ý¤tíêOÇzÖô4îuV˜œg¯�~qž?ÏLÞèCR>ßät?þ¡ê;úÁ¡5 1û}Ïùýh2~Ÿýp{ÿ žzSŽâ}>g7y÷H<úž�¾Ÿž¥ožßÓþ¾fg4Ÿò³ÿ ¯¸þŸ|sÿ ØŽ±Ó‡øßý{­ÿ ¦jUøíèéq=~¼ã¨(  
·Ö6Z�•æ›©YÚêv¡kqca}oÝ•õ•ÜOÕ�å¬é$6·0I$7óFñM¼r##@<[áÇìÃû8|×ï¼Uð§à7Â‡&Ô’x¯|CàŸ‡^ðÖµ5½ÉF¸´ž‘¥Z^Ãc;Æ�-ŒGhîŠí	e€=OøqðóIÖ|_â=+À~Ó<Cñ;H|{¯iþÐìõŸÃao=�Œ^/Õ-¬c¾ñ,vV—WV¶‰¬Ïz¶Ö÷3ÁH¦‘XŽøqû;üø=¬k~!øQð[ágÃm{Ä¦_ííkÀþðÏ…õ]Y&œ]Ko{£i¶wSZ5Ð?bi~È'e„IóP5ßì§û/ßÍ¤\^~Î_î'Ð5ýGÅZ$²ü&ð>•âmbêÞ÷Vñ�þÁÿ FÖµKÛK[ÍGS‹måõÝµ½ÍÌÒÍN oÄ‚?~,]øsPø£ðŸá¿ÄkïÜÉwá;ßø'Ã~*ºðÕÌÏo$ÓhWæ›}.–óIii$ßbxD²ZÚÉ g·…�¬¿ ¾Ol¶süøK5¢øö_Š‹k/Ã�Il¿æ7&oˆëèÆ!ãÙMåá—Æá!�ÝÜ–ÔOŸ.à¯ÆŸ¼ñ#L³Ñ~"x#Â=Ñôý^ÃÄO�<5£x§L±×´£#izÝ�†¹e}km«é­4ÆÃR†$¼³2ÈmæŒ»d ñÇÃï|NðõÇ„¾$ø#Â¼+w5½Åß†|qá­Åž¹¸´2Ö{�^²Ô4Ù¦¶“÷–òÉlÏüñ²·4ÉüPøð;ãhÒ‡Æ/ƒÿ þ)
C.‰'�üáÏM¤3ºÉ(ÓgÖôëÙ¬£�ÑMÌ6ÏW;@�$QŠ ¹ã?‚þ#xOIðÄ…<oà�¬[Bð‡Šüá¿xkDm.m§#CÕtÛ­7Lûª‹[_±[AäZæÚ=°3F@'Ð¾ü!ð»øŠOü*øoáÙ<_¤YxÅ�¡xÃCø£@Ó4ã£éº'ˆ›OÒíÛZÒ4ý$�.ËMÔ�Í•¦œM”Çmûª ä¼5û.þÍ>m9ü%û=|ðÌš?‰Œt‰4/…^Ò¥Ò|Z°Ijž'Ó$²Ð¡“O×ã´š[Hu{F†þYÚ)Ò1ÐÏ~Íÿ ³ç�<y¦|QñÀÿ „Þ'ø“£Ik6—ãÍ{á÷…u_YÍbQ¬&‹ÄºTÚ§›§´hÚ|�rÏ`êÑ¡lš îâøà8<iuñøFˆwº-¿†ï|{†ôhüiwáÛYšâ×AºñBYrãE¶¸vžßK–ùìa™šXàW%ˆ<wðïÀ?|9wàÿ ‰~	ðŸÄ
_<R^xkÆžÒ|O¡\Éo‚Y´­jÒöÊI`žZ$MóFÊy /Nýœÿ gÍ"ËRÓ´¯�_4Ý?ZðŒ_õ›+†^
µµÕü¢âj�A¢$Z�„â¸tðíâÍ¤,ß½bOš€:}OáOÂíkLðn‰¬ü6ð­£|9¼Ñµ‡ºF§àï_éž¿ðí²Yø~ûÁ¶Zt¶¾¼Ð­#Ž×F¹Ñ"±›L¶D‚Éà‰U@?âOÙûà?Œ|iÄ|øQâŸˆ0Ø6•�üEð÷ÂZ×‹Mkg²6ð�j:MÎªmœ’Ú-»]’ÖY­ÑVdF ï|+á/
xÃú_„¼áŸx7Âº%¿Ù4_øWEÓ|=áý"Ð;H-t½H¶³Ó¬-ÄŽïäÚ[E÷fÛ–$€bh
þxWÁ÷Ÿ</ðãÀ~ð š”wþÐ<!áíÁ÷É¬†º^xgNÓ­ô[”ÕC¸Ô–k'ÁÛíB]Ç _¾üø#«Áß„_¾.»0ŸZ>ðW‡¼)&¯*»ÉÔæÑtû9o–’O³GròÇl–ÝcSŠ Îƒönýží¾$ÉñŽßàwÂX>,K3]Iñ"/‡¾�ÆÍxâA%ùñ"éCVþÑ•%xæÔE×Û¥‰¼©.0 u~"øQð·Åþ*ðÇŽ¼Yð×À'ñ¿‚eø3Æ>"ðw‡u¯xFq(œMá�êZuÎ¯ J'a&•yhâP$Îñš å.¿fßÙêûâD¯>ü$ºø¯éuÄ{�‡¾›ÆË{ªEÿ 	,šSjÇQ‰c‡P7Fö(€Š9Ö?–€;Í3áÿ €´_x‹Çº7‚<#¤øçÅðXZø³Æzg†ôkxžÛJ‚+m2ßÄ^"µ²‹XÖ Ó­ ‚ÞÂJòæ;8!Š+uŽ8Ñ@]@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P›xŸþC1ÿ ×¼Ìÿ ž¢»—û­úû[ÿ qïøµ?Áý¸–ÀG@Hè½xçŒÞüÁïò4ïýu:›QÀ€�íøqùöéˆ{¡­Ñª�¹ôï×¯·#üŸQ™dÔ Çè>¿çüñÒ€3'þdóÎ:óø~¹íN;‰œåç†0~¤×�þâfs+ÿ !;,ÏÔ~¿ß†O^?ÄWNâõî·þ™¨eWàâ‡þ—×ëÎ:‚€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  6ñF¶cÿ ¯xÿ >\çŠî_î´ëåoýÄs¿âÔÿ ?ý¼–Ã 	éß=»Ÿo®kúw:«_¯¯¿ë�ÏÓÒ²{�n�8ñÇÿ [ÜwÁýK,ž�~ƒë@—ûç?çñ¦·9»ßºq×�oóÓÛ´LÎNrëtŒŒcpå’EZ6\í`®¯*v°Œ‡r°âº°ÿ ÿ ¯u¿ôÍOëþÊ§Ãÿ oCÿ K‰¡öíþ†MOÿ  ü=ÿ Ê:áå^füÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüƒíÚÿ ýšŸþø{ÿ ”tr¯0æ~Aöíþ†MOÿ  ü=ÿ Ê:9W˜s? ûv¿ÿ C&§ÿ €~ÿ å«Ì9Ÿ�}»_ÿ ¡“Sÿ À?òŽŽUæÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüƒíÚÿ ýšŸþø{ÿ ”tr¯0æ~Aöíþ†MOÿ  ü=ÿ Ê:9W˜s? ûv¿ÿ C&§ÿ €~ÿ å«Ì9Ÿ�}»_ÿ ¡“Sÿ À?òŽŽUæÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüƒíÚÿ ýšŸþø{ÿ ”tr¯0æ~Aöíþ†MOÿ  ü=ÿ Ê:9W˜s? ûv¿ÿ C&§ÿ €~ÿ å«Ì9Ÿ�}»_ÿ ¡“Sÿ À?òŽŽUæÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüƒíÚÿ ýšŸþø{ÿ ”tr¯0æ~Aöíþ†MOÿ  ü=ÿ Ê:9W˜s? ûv¿ÿ C&§ÿ €~ÿ å«Ì9Ÿ�}»_ÿ ¡“Sÿ À?òŽŽUæÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüƒíÚÿ ýšŸþø{ÿ ”tr¯0æ~Aöíþ†MOÿ  ü=ÿ Ê:9W˜s? ûv¿ÿ C&§ÿ €~ÿ å«Ì9Ÿ�}»_ÿ ¡“Sÿ À?òŽŽUæÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüƒíÚÿ ýšŸþø{ÿ ”tr¯0æ~Aöíþ†MOÿ  ü=ÿ Ê:9W˜s? ûv¿ÿ C&§ÿ €~ÿ å«Ì9Ÿ�}»_ÿ ¡“Sÿ À?òŽŽUæÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüƒíÚÿ ýšŸþø{ÿ ”tr¯0æ~Aöíþ†MOÿ  ü=ÿ Ê:9W˜s? ûv¿ÿ C&§ÿ €~ÿ å«Ì9Ÿ�}»_ÿ ¡“Sÿ À?òŽŽUæÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüƒíÚÿ ýšŸþø{ÿ ”tr¯0æ~Aöíþ†MOÿ  ü=ÿ Ê:9W˜s? ûv¿ÿ C&§ÿ €~ÿ å«Ì9Ÿ�}»_ÿ ¡“Sÿ À?òŽŽUæÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüƒíÚÿ ýšŸþø{ÿ ”tr¯0æ~Aöíþ†MOÿ  ü=ÿ Ê:9W˜s? ûv¿ÿ C&§ÿ €~ÿ å«Ì9Ÿ�}»_ÿ ¡“Sÿ À?òŽŽUæÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüƒíÚÿ ýšŸþø{ÿ ”tr¯0æ~Aöíþ†MOÿ  ü=ÿ Ê:9W˜s? ûv¿ÿ C&§ÿ €~ÿ å«Ì9Ÿ�}»_ÿ ¡“Sÿ À?òŽŽUæÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüƒíÚÿ ýšŸþø{ÿ ”tr¯0æ~Aöíþ†MOÿ  ü=ÿ Ê:9W˜s? ûv¿ÿ C&§ÿ €~ÿ å«Ì9Ÿ�}»_ÿ ¡“Sÿ À?òŽŽUæÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüƒíÚÿ ýšŸþø{ÿ ”tr¯0æ~Aöíþ†MOÿ  ü=ÿ Ê:9W˜s? ûv¿ÿ C&§ÿ €~ÿ å«Ì9Ÿ�}»_ÿ ¡“Sÿ À?òŽŽUæÏÈ>Ý¯ÿ ÐÉ©ÿ à‡¿ùGG*ógän×ÿ èdÔÿ ðÃßü££•y‡3ò·kÿ ô2jøáïþQÑÊ¼Ã™ùÛµÿ ú5?üð÷ÿ (èå^aÌüŒùåº–ê'¼¼šúlçÏ¤o´m*›lí­aÚ¼àù[Î~f`;-l-úù[ÿ q^õgþíçGcÛ¿Ýž;ô9ã{Öô4:‹lãðôõ§luãó¬žàº©Ûðút>½ý;õ¨4& ?Aõþ”™>ŸçŸ¨þŸ�Jkq=ÑÍÞ•�ø{ó‘Æ,þ`mëñ39;Œý¦?÷�¯?ËñÏn�xoâÜ:¿új¡�O‡þÞ‡þ—íq  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@¦ÏÚ#<ƒÓ·Ýüÿ ÏZëîÔëåoýÄf¿‰?ðÃÿ o:+££'ê ãÜñüø®gú®¿ð¦×§AôïÓ¿=ù?¯¡¬Þã]XûcüñŸÇ=ò?#PY5 Fý‡©ü?óý(6|þ<äc¯¦8ïŸ_N;Ó[‰ô9ËÓò·>ŸŸ?äú~u²ÛîüÌÎFãþ>“ýãÛÐ‡ëÇ¯¯®¼7Çÿ nUÿ ÓUê|?öô?ô¸—«ˆÐ(  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 ¥/7�öO¯û5Öÿ Ý¨ÿ ×ÊßûˆÍá‡þÞtv=G=Ç¯ éÐsÓœ™=ë�þ†¨ê-z=>™¾;úçŽONk'¿ÜÔ�·N¼qúzÿ õê	è�Ð}}h2~F}Ïôÿ =éÇq3›½ûŒLzL{ñÇ«hí÷~fläç9¹�=�¾½¯ãŸq××†þ#ÿ _ý5PÎ§Ãÿ oCÿ K‰v¸�€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  
Scí1}éŠëîÔëåoýÄf¿‰?ðÃÿ o:+ÃŽÝŽq�èãõ&¹ßèkÜêm×§éÓ¿¯ON€f÷@ºzš¨zv=;OOqé™¡5 G'AõÏèÇùÐlý:z‘ôÿ ëþ½³Mn&sw£ ñÉÿ ì¹ü³íì+tfrwûLï·åƒøÓß?�ua¾7þ
¿úf¡�O‡þÞ‡þ—íq VööÏM³»Ôu»k>ÂÚ{ÛûûÙâµ³²³µ‰çº»»º�ã‚ÚÚÚÞiç™Ò(bG’GTR@eÏ‰ü5g£Câ;¿èv¾¸ŽÚ[}vçV°ƒFž+Â«i$:¤·e,wEÐ[:NË9u,2»@ U½½³ÓlîõFîÚÃO°¶žöúúöx­lì¬íbyî®îî§xà¶¶¶‚7šyætŠ‘ä‘Õ� Y^Ùê6–Ú†Ÿwma{WVw¶SÅuiwm:	 ¸¶¹�Þàš6Y"š'xäFŒTƒ@¨  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 £7ü|Eô?‡OóÓÿ ¯Öÿ Ý¨ÿ ×ÊßûˆÍá‡þÞt–'‘Øeyúcüž¸úW;ßäkÜê-}2ÏÓ°úÿ …f÷@º_×õæjFz{û`t?çßÔYšÐ úÐdùýNxÿ ?\UGq3›½û­øzà�¦zð8æ¶�õ÷™œœÿ ñóûÇ�ÐuöÏãßÓÕ†øÿ íÊ¿úf¡�O‡þÞ‡þ—íq óí·ÿ &cû]Ù°ü|ÿ ÕUâÊÏÑ�n½OÁ?ÚÆ¿µåÿ ü×án…ã?�_
|?ði</ð_é?/õ¿M¥ÛêþÅ¼—Á/à{xnµ°ËA¯È¶&G=ÆÌ´ëmŠv¿ŸüëúÐú7ã'í§ûdkŸÿ iù>iŸãÑ¿f¯ˆVÞðÏ�ü7ðoÂ¾1øãiô�'HÖõé~*|F×<W¢k¾}z=PÛé¢é—VúM„pjŽu).šÊØ»××°­é÷�þÖ_·wÇ¿	j¿¼{ðŸâ‰cÒ¾igñÃ_|
¶ñW�<;¯xŽËÂ÷þ'ð¿ÇŠÚþ¥§®�®Èþ ¸²Óí<ý£œ°éípÓ^K=»6Á"�Æ¯Úö“ý¥þÿ ÁGõÝâ‡ƒ¾|$ýž>xŸÁ÷	µÙëÚ‡ÄUñ/À«ÿ x«UÕ|Su¨YjzÖbÔî4Í¦Ç$^­¬·p]ˆ®èÞþŸ +hyŸ‚ÿ k?ÚŠ}áïÀß€£â6ƒ§üýŠÿ gÏÆ~üðÇÅi|iã_xûWLÿ „îø—ÃÇÂ¾ ±ƒHT—Z º¾¸¸žöêI û,0Ì›{zl®;uó{þ‡Ø¿h/Úÿ öˆý©¼àGÆGÀÿ h³À¿Žÿ þ7‚tŸjÚ—‹5¿êº/‹¼#¦ëwªÚF�¯5¬×¨¤º…í¥¤:bXœÏw1ißîB²×®¶?gi’ P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P)ãæ/¡Ïàcüç°çµu¿÷j?õò·þâ3_ÄŸøaÿ ·�ˆäpz¯|õé�¯Î¹žÿ /ë¹¯s¨´<wä{tü®	ÇëÅCÝt5#íßüœöþ¼÷ÍfY= G'oÇüþ”›7O|Ÿ_ñÿ ~)­ÄúÝï*¯·O§>½1ÓÓxìfrSÿ ÇÊ{9ôëƒøŒõ=9õÍua¿‰ÿ nUÿ ÓUê|?öô?ô¸—«ˆÐ(  kÆ~ðçÄ/ø¯À>1ÓWZð�Ž<5®ø?Å:;Ü^Y¦­áÏéwZ.¹¦½ÞŸqi¨Z­ö™{uj×7v·�	L¶×Ì©"€y—Š¿fß‚ž6ø9¥| ñ?�àÕ~èv>Ót¿>µâ[Xm,¼"ö²xv«Øë6Þ ”iÏglË$ú´²ÜùX¼{€ÎÏ<ø‹û~Ëü}wñ3Ç_
¬õoê²é3øŠ{oø¿EÑü].…$rèïã?è~ Ó¼3âÖÓÞ$i�’%[{“=º¤JX.Ì�ÿ Á>¿d‰%ñ—ŠüeðrÃTÕ>!ÛÚCãk{øçFÐ¼Iqaek¦éú¶¥á­Äúo‡äñŸcekoaâôØõ«%‚9-¯¢�D´YØxûþ	óû|Oñ-ç‹|mðcLÕu½SÂ~Öå·ñ'�´[?xkLÒ_CÒ­üI¥è^%ÓtßjF”Ëk¥kÚ½­æ¿§{­u8®4Ý>[RÈ?áÇøËþ	ýû$xòÃâ„È�|	¦ü0ÐntO|AðÆ¡'Ã½!#�Nðgˆ5?x¯JÔ|] Ú¤ab´ñUÖ²T<ø�}¦çÍ,‚ìö/~Ï_~øÕþ!øÀz_†<Xÿ |1ð�_é7Z­½”|4—ðµ¦ƒý Þ²²Ñå‘þÍ=ž—û!Ow,J¨ìô(  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  
3ôˆÿ ÝoÓo·ùô®·þíGþ¾Vÿ ÜFkø“ÿ ?öó¤°ê3Û§ —¹éŒzf¹ßèjº�E¯@:àtúg×~£>µ“Ýt5cí�úž?ý]9úqPY5 1ú­ fOíÓü:uú÷ÏáÍTw9»Ìí''Žÿ Ó¸ÿ ?–ÑÛîüÌÞç'?ü|GÓ�LsÔzñ�ëÎ+«üOûr¯þ™¨gSáÿ ·¡ÿ ¥Ä»\F�@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P)¿ãâ?¡þkþz~]úßûµñÖÿ ÜFkø“ÿ ?öó£±=?{p9ÇéÛŽq’yÞÿ #^çQiÓœóÏ¶p}ÈŸýzÉî�tùêjÇÛ=³èÏ?ãPhM@~ƒžÿ ™üý2{ÿ * Ì¸ëí“üúÿ úñùÓŽâ×õýzåáO¦sÇNüq“�~ç<d
Ú?åù™œ•Æ~Óyù�8?íwý9éÓ5Õ†þ'ý¹[ÿ MT3©ðÿ ÛÐÿ Òâ]®3@ €!žxíâi¥m¨»A8$–vŠª,îì¨Š,ÌšUûxÿ Ÿ=Kÿ  gÿ âis!ò°þÐóç©àÿ üMÈ9XhùóÔ¿ðþ&Žd¬·º�‘iz«ÆÙÃ-„ø8$qØ‚?
9�r²O.ÿ þ�¿þ Mþs åaåßÿ Ð#Wÿ À	¿ÂŽd¬<»ÿ újÿ ø7øQÌƒ•‡—ÿ @�_ÿ  &ÿ 
9�r°òïÿ è«ÿ àßáG2V]ÿ ý5ü ›ü(æAÊÃË¿ÿ  F¯ÿ €…È9Xywÿ ôÕÿ ðoð£™+.ÿ þ�¿þ Mþs åaåßÿ Ð#Wÿ À	¿ÂŽd¬<»ÿ újÿ ø7øQÌƒ•‡—ÿ @�_ÿ  &ÿ 
9�r°òïÿ è«ÿ àßáG2V]ÿ ý5ü ›ü(æAÊÃË¿ÿ  F¯ÿ €…È9Xywÿ ôÕÿ ðoð£™+.ÿ þ�¿þ Mþs åaåßÿ Ð#Wÿ À	¿ÂŽd¬<»ÿ újÿ ø7øQÌƒ•‡—ÿ @�_ÿ  &ÿ 
9�r°òïÿ è«ÿ àßáG2V]ÿ ý5ü ›ü(æAÊÃË¿ÿ  F¯ÿ €…È9Xywÿ ôÕÿ ðoð£™+.ÿ þ�¿þ Mþs åaåßÿ Ð#Wÿ À	¿ÂŽd¬<»ÿ újÿ ø7øQÌƒ•‡—ÿ @�_ÿ  &ÿ 
9�r°òïÿ è«ÿ àßáG2V]ÿ ý5ü ›ü(æAÊÃË¿ÿ  F¯ÿ €…È9Xywÿ ôÕÿ ðoð£™+.ÿ þ�¿þ Mþs åaåßÿ Ð#Wÿ À	¿ÂŽd¬<»ÿ újÿ ø7øQÌƒ•‡—ÿ @�_ÿ  &ÿ 
9�r°òïÿ è«ÿ àßáG2V]ÿ ý5ü ›ü(æAÊÃË¿ÿ  F¯ÿ €…È9Xywÿ ôÕÿ ðoð£™+.ÿ þ�¿þ Mþs åaåßÿ Ð#Wÿ À	¿ÂŽd¬<»ÿ újÿ ø7øQÌƒ•‡—ÿ @�_ÿ  &ÿ 
9�r°òïÿ è«ÿ àßáG2V]ÿ ý5ü ›ü(æAÊÃË¿ÿ  F¯ÿ €…È9Xywÿ ôÕÿ ðoð£™+.ÿ þ�¿þ Mþs åaåßÿ Ð#Wÿ À	¿ÂŽd¬<»ÿ újÿ ø7øQÌƒ•‡—ÿ @�_ÿ  &ÿ 
9�r°òïÿ è«ÿ àßáG2V]ÿ ý5ü ›ü(æAÊÃË¿ÿ  F¯ÿ €…È9Xywÿ ôÕÿ ðoð£™+.ÿ þ�¿þ Mþs åaåßÿ Ð#Wÿ À	¿ÂŽd¬<»ÿ újÿ ø7øQÌƒ•‡—ÿ @�_ÿ  &ÿ 
9�r°òïÿ è«ÿ àßáG2V]ÿ ý5ü ›ü(æAÊÃË¿ÿ  F¯ÿ €…È9Xywÿ ôÕÿ ðoð£™+.ÿ þ�¿þ Mþs åaåßÿ Ð#Wÿ À	¿ÂŽd¬<»ÿ újÿ ø7øQÌƒ•‡—ÿ @�_ÿ  &ÿ 
9�r°òïÿ è«ÿ àßáG2V]ÿ ý5ü ›ü(æAÊÃË¿ÿ  F¯ÿ €…È9Xywÿ ôÕÿ ðoð£™+.ÿ þ�¿þ Mþs åaåßÿ Ð#Wÿ À	¿ÂŽd¬<»ÿ újÿ ø7øQÌƒ•‡—ÿ @�_ÿ  &ÿ 
9�r°òïÿ è«ÿ àßáG2V]ÿ ý5ü ›ü(æAÊÃË¿ÿ  F¯ÿ €…È9Xywÿ ôÕÿ ðoð£™+.ÿ þ�¿þ Mþs åaåßÿ Ð#Wÿ À	¿ÂŽd¬<»ÿ újÿ ø7øQÌƒ•‡—ÿ @�_ÿ  &ÿ 
9�r°òïÿ è«ÿ àßáG2V]ÿ ý5ü ›ü(æAÊÃË¿ÿ  F¯ÿ €…È9Xywÿ ôÕÿ ðoð£™+.ÿ þ�¿þ Mþs åaåßÿ Ð#Wÿ À	¿ÂŽd¬<»ÿ újÿ ø7øQÌƒ•‡—ÿ @�_ÿ  &ÿ 
9�r°òïÿ è«ÿ àßáG2VS”J·1y°Olã?º¹‰¡��”îØÜàãƒÐàýk±ë…£ÿ _+î3%¥Z‹û°ÿ ÛÎ“Oä¯æ1íŸ^¼gŒzW3ý§s§µéøuéÛ§?Ê³{‚Ý‘žŸËü0;ÓŒõ¨f„ô Çè>½?Ïùæ€3'ãÓ=³Ðÿ *kq>‡9y÷[ßŸÏüñøÖÑëòüÌÎJãþ>cçø�öl~\ç¾zô®¼7ñ?íÊ¿új¡�O‡þÞ‡þ—íq ™«Ç´öÐÿ ôõ§Ò–ÏúêRÝ•™a@ wz/üƒmþ³èé(V€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €<ÛÅò�ÞÝNùéÇ<ÿ ŸZî_î´ëåoýÄs¿âÔÿ ?ý¼šÃƒéÐqô‡ô÷éX?ÐÓ¹ÔZgŒuÿ ƒßZ‡ºÓúþ¿ÌÕ�Œ~ý�ùÏôÍfÍ	¨�ÛëŸÓÿ ¯š ÌŸôççüöÅ5¸ŸCœ¼åéÐòzqüúãÓ¶mòüÌÿ àœ•Çü|Çþñç¦?â=ùíž¬7ñ?íÊ¿új¡�O‡þÞ‡þ—íqš ™«Ç´öÐÿ ô÷§Ò–ÏúêRÝ•™a@ wz/üƒmþ³èé(V€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €<×Åò�§ü{§§©éýk¹ºÑÿ ¯•¿÷Îÿ ‹Sü4ÿ öò{qÔtúò?\AÁÅbÿ CNçSk‚1Ðuü ç§øgÔVOuòº5¨ãôö#ð„Ô�N¼~_ç?‡›?×~�ñÇõöëM	œåîv°þxÇ=yÀäzŸÒ¶�õ÷ÿ W39ÿ ãå:}óéÇè}Osé]xo�þÜ«ÿ ¦ªÔøíèéq/W P@š·ü{Aÿ a]ÿ Oz})lÿ ®¥-Ñ¹Y–r~7ñŽ�à?ê^'ÕmuKÛ=6	§’×F°›Q¾•`‚k™<¸!DH`–I'�â·…´² ¡j)>TÞ®Úètuô:žŸa©[‡jv·Ð	×ÝÀ“ÆyÃ„‘wðr(èú/üƒmþ³èé(V€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €<ÛÅò�×ìñãõÈüGçï]ËýÖ�ý|¯ÿ ¸ŽwüZŸá§ÿ ·’ØƒÇNÜsƒÂõ£ 0p?èiÜêmÃ·N§ÿ Ö;ŒÞã]Xûz�¯Ó¸Ïòüj& ßµ fÏô#¯n�xúþ_f·9Ëßºßç8´¯¼Ìä®?ãæ?÷�?ƒqÇë“×ðÇ^øŸöå_ý5Súÿ ‡3©ðÿ ÛÐÿ Òâ]®#@ €35oøöƒþÂºþžôúRÙÿ ]J[£r³,ã¼ ë>)ðˆ<5¡êzf‘y¯é:Ž�%þ«¥ÝkÖöš¥�Å�Ì‰egªèÒµÂ%Ç™µç”®˜’)|¢“i¥e}5WÑüÑwÂ:f±£xwIÒuÛí3RÔ4Û;{¼Òtë­*Îxm!ŽÞWšž¯4r˜ãRodFrJ,k… +Û[|´Óñ=Eÿ �m¿Öoý%5h  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (Í|Qÿ !¨¿ëÝ?¯ùúâ»—û­úù[ÿ qïøµ?ÃOÿ o'±þ«Ï§¸ç¿×Ö/úý­ý;ÿ _æu�ÿ ¬sÏ_Ãü}ò{�n�Xÿ úÿ Ó=;ç=±ß¥AdÔöëý?ò(6nÞ™>ß_§°úÓŽâg7{÷O#¦Gqß +hÿ —çý~fg%8ÿ IOwcÏÐò?¦2qúuá¾?ûr¯þ™¨gSáÿ ·¡ÿ ¥Ä½\F�@ fjßñíý…t?ý=éô¥³þº”·FåfXP@Þ‹ÿ  Û¬ßú:J Õ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  6ñ?ü†£ã?èéÇ~§üäÿ Zî_î´ëåoýÄs¿âÔÿ ?ý¼–Äúðxç¯LŸðÁÎ/‘¢:«^G'Ÿ¯§áÏãïõ¬ÞèësN>ÝýYäúóƒšÌÐž€ý×üÏ™8õíŸóëÏãÚšÜ–swœ+ví�Ó�cÛžÛG¯È†rWûJcûç¨ç�Äsüþ�««üOûr¯þš¨gSáÿ ·¡ÿ ¥Ä½\f�@ fjßñíý…t?ý=éô¥³þº”·FåfYÅøþóSÓü5w}¦ø‹Mð¢YÉÖ­¯j6?ÚGOÑ -.§&›dÙ‚}]à_/N[¨n­¾ÐãÌ³»;`‘¢e{híÝï§[yöóðãRñ.±à�ê~.·ŽÛ^½µ–{„ŽÙ¬ž[6»¸þÇ¼»°i%þÍÔµi÷Ú¦˜$dÓu+‹«ÎËu {„nâ›ßîôÓ£¶þg¹h¿ò·úÍÿ £¤¤Q«@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@mâ�ùÇéöxóùŸ§ó®åþëGþ¾Wÿ ÜG?ü½©þûy5†~¹Á÷è¿N£‘�ÔÖôÿ ‚iÜêm@#ðÇÃÐžßŽ
ÍîtjGÛüö?QŸÇ×ð†hM@|ñ�_òÏ­ fNó‡OçÞœw9Ëß¸}8ã§ÿ ë*Ù‘™É\ÜÇþóg×Œÿ _å]xoâÛ•ôÕC:Ÿý½ý.%Úâ4
 (3Vÿ �h?ì+¡ÿ éïO¥-ŸõÔ¥º7+2ÎoÅ^ðÿ �t¯ìOØ¾¡¦}²Îü[¥ö¡§ºÞió-Íœës¦]Ù]£ÛÎ‰*œ/˜ªÅIQƒa4¤¬öù­½F°ðþ™k¤iiq�˜”@—w÷ú�Àó§–æO2ûT¹¼¾œ™f�©¸¹”¢•‰
ÄˆŠI+-¾oó=?Eÿ �m¿Öoý%5h  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (Í¼N3­GÓþ=ÓóÉÆ9û×rÿ u£ÿ _+î#Ÿþ^Ïü4ÿ öò[n08öÓ‚OS×¯zÅÿ _�gUi�þGåíÇJÍî5º4Ó¨èzôéëÛüþ5™¡= 1ûzÿ ú¿úÔ™?N}úÿ _Ó·zkq3›½ÎÖëÇa“íž:Ž˜ëëîw�ù~fg'?ü|§Æzgnÿ ëõ$äýua¿‰ÿ nVÿ Ó33©ðÿ ÛÐÿ Òâ]®#@ €35oøöƒþÂºþžôúRÙÿ ]J[£r³,Ši¡·‰æ¸–(!Œn’Y¤X¢EYär¨ z±€Ž’"I¬‘ÈªèèÁ‘Ñ€ete%YYH*À�AP{¢ÿ È6ßë7þŽ’€5h  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (Í¼Qÿ !˜Çý;§|tÉúÿ ?q]ËýÖ�ý|­ÿ ¸ŽwüZŸá§ÿ ·“XþcÜ|ÁGÿ õ¿Là÷ùw:›^Ýxçž	_åŒñY½ÐÖëúò4ãÏÝÀúã·ùýDO@~ƒëþ_Â€3.=?‹Œz~?§ó¦·9ËßºG=FyŽ9ÿ ëöâ¶[}Æ}~ÿ ë¹ÈÏÿ )ž~cÎ9ïß¦8ìqí]xo�þÜ«ÿ ¦ªÔøíèéq/W P@š·ü{Aÿ a]ÿ Oz})lÿ ®¥-Ñ¹Y–y¯Åh´¹|(µ´{íbÞ-NÂxVÏÃºç‹¢Ó¯aiÏVÔü1áÉ¡ÕµÍ.Êp­wan'¾9$„¤fHÚ&V¶©½z&íçe«2¾Ùê:ÂßØêz}ö›qiuâX`‡P³¾Ó'¸ÓWÅZÑÒu(´mQ#Ôô[KkMKKðæ¢‹}áí6êÓFºu‹=Â
Ñ­÷õ}:_tº-¦´_ùÛýfÿ ÑÒR(Õ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  6ñGü†£ÿ ¯xûg×?¦Ï¹ºÑÿ ¯•ÿ ÷Îÿ ‹Sü4ÿ öâ[�¿Uü·=ñžý³X?ÐÓ¹ÕZúóëž	ýF}ñè2=k7ºèi Æ?Ç§Æ}º`ý1PY= 1ú¯øþt—?O^§ÿ ¯ëÏëøS[‰ô9ÛßºÝ¹üxü;p~½8­£×äfr7ñóûìCõçòxÍuá¿ˆÿ ÁWÿ LÔ3©ðÿ ÛÐÿ Òâ^®#@ €35oøöƒþÂºþžôúRÙÿ ]J[£r³,(  ïEÿ �m¿Öoý% jÐ@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P›x£þC1ÿ ×ºÔÿ ž‡ŒŠî_î´ëåoýÄs¿âÏü4ÿ öòk1ÏLsøÝ¾¸5ƒý;�M·N¿þ±ý{g¿åP÷º4ãÇzqù/ÃÓµfhO@~ƒÓ<ÿ œPdã¿Ôzcòþœÿ :kq3œ½û‡¿OÃ�§õôîkhÿ ‘™ÉOŸ´¦q÷ÈžÁ¿§_ÊºðÖçÿ ·*ÿ éª†u>ûzú\KµÄh Pf­ÿ ÐØWCÿ ÓÞŸJ[?ë©KtnVe™þ·aá½R×uGt°Òí%»¸ò“Í™Ö5ÊÃo Ís;•†ÞCK<‘Æ§,(vWf…´ëumor©$kqS¬s(YcYcYJ¡˜,Šk¨f�ˆæ�ž…¢ÿ È6ßë7þŽ’€5h  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (Í¼Qÿ !˜Î:[ÇüÏùê+¹ºÑÿ ¯•ÿ ÷Îÿ ‹Sü4ÿ öòkÙüÉëÀü¹ïùv¬ÿ ×sC©µôç×üN½½«7ºº5é×ÿ ×ÛÞ Ðš€#“°÷ãüÿ Ÿñ ÍŸéëÆ}{zóÓŠkq?Äç/Ž‡ùäõþ¼{óÜï3‘¸ÿ �¤õÜßû7·_çÍua¾?ûr¯þ™©ýZçWáÿ ·¡ÿ ¥Ä½\F�@ fjßñíý…t?ý=éô¥³þº”·FåfYÄøóÁ‹ã�"ÏImoSÐ¾Å­éZê]iia,²Ühó›»K{ˆu[ËYí>Ø¶÷2Bð‘$–Ñ+“’7Õüµ¿ÝêAðÇÂ—€ü øSVñÏŠ/t{O³I¬][[Z¼ÃqeŽ8mb‰VAÙ›æÏ°,Òº›wbŠåŠW½�xÑäoõ›ÿ GIH£V€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €<ÛÅò�ÞÞ1úžƒ¿ãßŽø®åþëGþ¾Vÿ ÜG;þ-OðÓÿ ÛÉ¬8ÛŸa�^Ç¿§~qÀ¬èiÜê-sßž:ýyïúþY¨{¡®†¤y$tÿ #ùãœ~=«2Éè�Ó¿_óŸóý(6~N{ôö?×?ýnÔã¸ŸCš½iäöÿ õÓ¨ýy­ã³þº™œ”ÿ ñòŸïŸÀ�Çùþ¾:õa¿‰ÿ nUÿ ÓUê|?öô?ô¸—«ˆÐ(  Í[þ= ÿ °®‡ÿ §½>”¶×R–èÜ¬Ë
 (»Ñäoõ›ÿ GI@´ P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ æÞ'ÿ �Ô~¿gLt÷õþœ×rÿ u£ÿ _+î#�ÿ §øaÿ ·“Xuó�ÇÐzÖôþ¿Î¦×¡ÀÇ×·$zwÏÏÓ7ºéêi§Qéø~qü¸úÔÐ§z ÌŸë“ÏNùïéõæšÜLæï>ëgüç<dûtâ¶�ùœ”ä}¥?|ý3óuéïÿ ×ê:ðßÄÿ ·*ÿ éš†u>ûzú\KÕÄh Pf­ÿ ÐØWCÿ ÓÞŸJ[?ë©KtnVežcñg[ñf‡á»|ÌÚÍÿ ‰4--¤´Ò"×n-4ëË£ý£u™qy§ÁpñÚÆè†{ÛhbyY%†š&m¥¢wºZ+éÕØØøwâñG„tÍTêjwB]OLÕ..t‘¡]Å­hš­î�­i÷šBÜ]¥…æ—ªØ]é·PGuqŸjïÒÆèå1ÅÝ'êž–Õ;==Qî:/üƒmþ³èé(«@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@mâ�ùÇÿ ^ññøŸÏüç¹ºÑÿ ¯•¿÷Îÿ ‹Sü4ÿ öòkÝ9 {ô\õ>þ‡ùV}ºw:‹^ƒèq×§Nÿ ¯~+7¸-Ñªœãë×ð9çßòüj	¨�Ðóÿ ë Éÿ ©úþ=¿§áN;‰œåßÜ=¯áÎy>ü}khíýw39)ø¹Ov?Ÿ?Ïùzs]xoâÜ:¿új¡�O‡þÞ‡þ—íq ™«Ç´öÐÿ ô÷§Ò–ÏúêRÝ•™fˆü1£x³OM7[·šh!»¶Ô-&´¾¿Òõ?P³fk[ý7TÒîlõ-:öÎ±ÝY]A0I%‹yŽY�4žþ¤ú�¤x_I´Ðô+$°Ó,¼ö†’iÝæ»¹šööîêêæI®ï¯õë››ýGP½ž{ÝBþææööâ{©å•ÀI%e±êz/üƒmþ³èé(«@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@mâù ÿ §xÿ BÆ»—û­úù_ÿ qïøµ?ÃOÿ o%±ý~_Lvÿ };cšÅîißúÿ 3ªµéõŸwÎ}}sÏ<VOp[£Q:Žøúç¦3ÿ ë¨4& ?Aõþ†€3'éŒt?×ÿ ×Î?­8î&s—¿u¹ã�×ŸNÿ �ì:{VÑëýufg%>>Ñ1÷�OLÆ8üÿ /N¼7ñ?íÊ¿új¡�O‡þÞ‡þ—íq ™«Ç´öÐÿ ô÷§Ò–ÏúêRÝ•™b $� $ð I=€  À2�ÊÀ`A�AG Ž óEÿ �m¿Öoý% jÐ@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P›x£þCQàà‹túuï]ËýÖ�ý|­ÿ ¸ŽwüYÿ †ŸþÜK`1ƒ×‘‚}qŸQÇéßŒ
Åïò4îuV½;ôïÏ=1ÁíÛ®8éY½×õÔkti§Qô£üOùô¬Ë' äè>¾žÞ´›?§¦Ÿ çŸ¦=)Çq>‡9y�§·?§¨ïïÓŒÖÑÿ /ÌÍœ•Ç)îìŸ¿Ó×©éÒºðßý¹Wÿ MT3©ðÿ ÛÐÿ Òâ]®#@ €35oøöƒþÂºþžôúRÙÿ ]J[£r³,ñ¿Ž·Ì~[M*êïM³ÕõÝGñ>±a¥_kwz?…/¥‘u«ØtÍ5–þàËÇ§Hö¬%µ†úKÑ‘nAkr'~]:´ž—Ó®ˆè¾jšÆ¯àmï\±K¤“U°´òì/4•Ôt=+X¿Ó<9®�P–kýþÓMÖÎ“y,—:q¿6’¹h�qÆî*þ}-u}ž×Vvè{î‹ÿ  Û¬ßú:JE´ P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ æÞ(ÿ �Ì}ãÞ>Þçö®åþëGþ¾Vÿ ÜG;þ-OðÓÿ ÛÉl9ÇáÓ×=Ç§×òãú_Ö¦�Î¦ÔqÓ· óõ÷Ïç›Ük¡ª�F}ÿ ÏOO§øÁdÔ ÇÎ¦ýT™?¯×¾sÖœw9»Ìm;¹?‡éÆ{àt ž;ÖÑÿ #3“¸âå1ýöã�séì:v úç¯ñÿ Û•ôÕC:Ÿý½ý.%Úâ4
 (3Vÿ �h?ì+¡ÿ éïO¥-ŸõÔ¥º7+2Â€
 îô_ùÛýfÿ ÑÒP­  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ y¯Š?ä3Lý�1úöãüþc¹ºÑÿ ¯•¿÷Îÿ ‹Sü0ÿ Û‰ì;}A9Ï/¿©öôìb÷ùwÿ ?êçSkž½sÓ×ð÷üqŸ¦Ot5ÐÔŒò?¯ùëÛ¹íêj& ß·×útü~@Ðlý9ëÏ=w¦·èsw‡äoñÿ #üóÒ¶�õ÷³3“Ÿþ>SÐ;_ðä•×†þ'ý¹Wÿ LÔ3©ðÿ ÛÐÿ Òâ]®#@ €35oøöƒþÂºþžôúRÙÿ ]J[£r³,Âñº<;§Déî¶ñAö/é­ªê?½ÝûÑh’FÆöþöMß&åàæ�7n�ú+•<âÝ3Ç>²ñ6�¥o§ßM¨ÁZµŒºmòÉ¥êWzUÑ’ÖRXD×VS›iÑž«cÕ¼’A4nÀ'uu~»é³·õÜö=þA¶ÿ Y¿ôt”Õ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  5ñGü†cÁÿ —díž3ÛÞ»—û­úù[ÿ qïøµ?ÃOÿ o&°çœdcØ§·n:úœÿ "Î¦ÔqøÈ÷ïúóÈõ³{�n�Hûzÿ õŽj	è9;sßóãüþ¾ô›?õ=z÷ã×õõ§ÄÎr÷î·lŽyþ~žüþ=m¿#3’¸ÿ �”çø��çÿ ×Æyë]xoâÛ•ôÕC:Ÿý½ý.%Úâ4
 (3Vÿ �h?ì+¡ÿ éïO¥-ŸõÔ¥º7+2ÎsÅºv±«øwTÒ´øt½GR·û
j3y¹²¶ºe†úæØÂ­ôVO;X9#¼¼Ÿ"µi´ÒÒý?ŸcKHÒ¬´='LÑtØVßOÒ,,ôË ±ZXÛÇmo
~H¢AÀŽ”mLÑäoõ›ÿ GI@´ P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ æÞ(ÿ �Ìõïó?�åþÜ¿Ýhÿ ×ÊßûˆçÅŸøiÿ íäÖ=l�0:@Ïúõ‰ïX?ÐÑu:›^G`ù8ôÏSßéÈ¬ÞèèÓ�·¿=}¿\ñôÅA¡= Fý�¡þŸçü{éþœüß¯ùÿ õæšèsw¿púñÜ#�ÏüG¡­ã×úêfrWñôŸïÛÄ??åÏ^k«üOûr¯þ™¨gSáÿ ·¡ÿ ¥Ä»\F�@ fjßñíý…t?ý=éô¥³þº”·FåfXP@Þ‹ÿ  Û¬ßú:J Õ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  6ñGü†cÿ ®úÿ µþy®åþëGþ¾Vÿ ÜG;þ-OðÓÿ ÛÉl;wû£ÔŽ�½Iãã�ZÁþ†�ÎªÓ sŒõãñïÎ3Çùé›ÝèjGÛüŽ‡ÿ Ô=GX4& ?o¯ùÿ ?­ fOÓÿ ®óÏJqÜO§Ìæï>éŸSÓ·ÓóÀô­ã³Ûú×ÌÌä§ÿ �”ÿ }¾�?ýˆà{]XoâÛ•ôÕC:Ÿý½ý.%êâ4
 (3Vÿ �h?ì+¡ÿ éïO¥-ŸõÔ¥º7+2Ï+øÁãMSÀÞ²Ôô…F½Ô|Máÿ «6ó\¼†bô[ÜÜéšžEþ½¨ZÀ$¸‹K³ÍÄñÅ4ˆ’y&6h™¶’·t¶¾ý—_CGáW‹¯<sàm+ÄzŒvñ_\]ë¶1Û¤�|Ú'ˆ5M9n¬&g¸Ò5+˜4ø®µM
éÚïBÔ&¹Ò.™§²‘ˆÂ.é7¾¿ƒþ´=ûEÿ �m¿Öoý%"�Z (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 óoÿ Èf?ú÷�ùŸóÔWrÿ u£ÿ _kî#�ÿ §ø!ÿ ·ØÀã¨è	¯ñƒÛßƒX=þF�ÿ ®§Sj8°ð=¿?>Ý1t5º5S·>�úõöä“ê3,š€ý×üÿ ž:Pdÿ ÌžyÇ^Ã·=©Çq3œ¼à0ÆÔƒúð?Ïã¼LÎJãþ>cÇ÷Ï¯¡ü2zñþ"º°ßý¹Wÿ MT3©ðÿ ÛÐÿ Òâ]®#@ €35oøöƒþÂºþžôúRÙÿ ]J[£r³,ç<MáMÅöVÖÜRGc¨[êÖž§£j:~§h³%µý†§£ÝØê—1Gq<{à¹@ñM,2‡ŠGFÒ{úî×âµ%ðß†´o	i1hš«ÚØGqzÂ{»ÍBîæÿ T¾¸Ôõ=BûPÔ'º¿¿¿Ô5»›ÛËËË™®..'’I$$ðI+#Öt_ùÛýfÿ ÑÒP3V€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €<ÛÅþÙ�þ½ãüùü=sž+¹ºÑÿ ¯•¿÷Îÿ ‹Sü4ÿ öò[€qü'§|öî}¾¹¬_èiÜê­~¾¾ÿ ®??OJÉî5º4ãÇýoqßô5,²z@1ú­ f\sïœÿ ŸÆšÜLæï~éÇ^=¿ÏOlVÑ39)óö”ÏvcùdtúcÓ·^+¯üOûr¯þš©ýÃ™Ôøíèéq/W P@š·ü{Aÿ a]ÿ Oz})lÿ ®¥-Ñ¹Y– Pw¢ÿ È6ßë7þŽ’€5h  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (Í¼Pq­Eÿ ^éÛÜŸóë]ËýÖ�ý|­ÿ ¸ŽwüZŸá§ÿ ·“Xöï÷GçŽÇ=xÇõ‹ý¢Û8ü==GéÛxüë'¸.†ªvü>�¯Nýj	¨�Ð}¥ fOŸçùçê?§ãÒšÜOtswƒåcþüäqŸË?˜GúüLÎNã?i�ýãßëÏòüsÛ§^øŸ÷¯þš¨gSáÿ ·¡ÿ ¥Ä»\F�@ fjßñíý…t?ý=éô¥³þº”·EÍY¡M+S{›É´ëtÓïZãP¶`·0­´†[ÈÇ0Y­P4ñ1†Pùo÷Ne½™ð|Úí”¿5Ãw·ºö—¤ülGñkú‡Š$à]CW»Ž×Q×µ)á¸Öµ=
[Õ´¹Õ"‰æ7ú|wVó˜í&”ŠëòòÜÃì4µJzß›á¾ï«_š¹ôÏìûm¬Ùü)Ð-u«»›öƒQñdZ-íäSÛÜ]xE<_®�\{™%¸¶·—ÂƒG{{‰e¸ƒOkH®\Ü$€'¹¥4ÔR~uÝ¿Qh¿ò·úÍÿ £¤¤Y«@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@mâŒÿ lÆy·�§nOçþz×rÿ u£ÿ _+î#�ÿ §øiÿ íä¶=F=FOÔÇ¸9ãùñX?ÐÑuÿ €u6½:§~�ùïÉý}f÷èjÇÛçŒþ9ï‘ù‚É¨7ì=Oáøÿ Ÿé@³çñç#}1Ç|úúqÞšÜO¡Î^Ÿ•¹ôüùÿ 'Óó­–ßwæfr7ñôŸïÞ€ô?^=}xÅuá¾?ûr¯þš¨gSáÿ ·¡ÿ ¥Ä½\F�@ fjßñíý…t?ý=éô¥³þº”·FåfX„ x òÔPÐw¢ÿ È6ßë7þŽ’€5h  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (Í¼QÎ²ƒþ�ãõõ5Ü¿Ýhÿ ×ÊßûˆçÅ©þûy5�QÏqëè:tôç¦OzÅþ†ˆê-z=>™¾;úçŽONk'¿ÜÔ�·N¼qúzÿ õê	è�Ð}}h2~F}Ïôÿ =éÇq3›½ûŒLzL{ñÇ«hí÷~fläç9¹�=�¾½¯ãŸq××†þ#ÿ _ý5PÎ§Ãÿ oCÿ K‰v¸�€
 ÌÕ¿ãÚû
èú{ÓéKgýu)n�K»«k[›ëÛˆmlìíæº»º¸‘b‚ÚÚÞ6š{‰år8a‰I$rY˜€	¬ËÛVy³|dø~¾Ô>">­s…tÛ›Û9®¥Ñõxodº±fY`¶Ñå²MZi_ax#[ òCûí¢Î�ìG<yy¯¦Û?Ê×="ÊòBÎÒþÕ‹Û_[AynåJ—‚æ$š*À2–�Ô•`ÎÍ"ÏDÑäoõ›ÿ GI@´ P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ æÞ(ÇöÔõî˜?L×rÿ u£ÿ _+î#�ÿ §øiÿ íä¶=‡»ãÐÇêMbÿ CNçSh~½?N�ý{úzt7ºÓÔÕCÓ°8ééÛúz{�LÍ	¨9:®Cþ?Î€3géÓÔ�§ÿ _õíškq3›½ŽOÿ eÏåŸoa[£3“¸ÏÚcÿ }¿,ÀŽžùük«ñ¿ðUÿ Ó5ê|?öô?ô¸—kˆÐ(  Í[þ= ÿ °®‡ÿ §½>”¶×R–èÔ»7+itÖP[ÜÞyÍ¥µÝÌ–v—"60Auw¥ü¶¶òË²9îc±½’Ù¥KK†QæYó�§ƒþ//€¾&øfãÃ¿“Sñ¥ï‹.t©!ø‹ây¬m—ÆQÞÁx/§…\DúDsÄößf´¹³4±JÚJ¢É+Òë»þ	�§Ë%hÝ·oyõïîô=«ÁVÞ ²ð¾�§øžÇFÓõ}:Æ×OšY½×´çŽÊÞ+h®#Ô5ÃW%çXüÉ m-|µžà2‘jöÖËÑßôG²è¿ò·úÍÿ £¤ f­  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ y·Š?ä3ý{Çøuÿ =?úýËýÖ�ý|­ÿ ¸ŽwüYÿ †ŸþÜMby†WŸ¦?Éë�¥b÷ùw:‹_LŸóôì>¿áY½Ð.Ÿ×õýyš‘žžþØù÷õ Öf„ô Çè>´™>Sž?Ï×QÜLæï~ë~¸ãéž¼9­£ý}æg'?ü|Çþñàt}³ø÷ôÅua¾?ûr¯þ™¨gSáÿ ·¡ÿ ¥Ä»\F�@ fjßñíý…t?ý=éô¥³þº”·FåfXP@Þ‹ÿ  Û¬ßú:J Õ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  6ñGü†£ÿ ¯xóÆxÿ œöö®åþëGþ¾Wÿ ÜG;þ-OðÃÿ o&±ŽUïž c1õïùÖ—õÜÓ¹ÔZ;ò=º~×ãõâ¡î†º‘öïþN{^{æ³,ž€#“·ãþJ Í›§¾O¯øÿ �¿Öâ}n÷•?×Û§ÓŸ^˜éé¼v39)ÿ ãå=œúuÁüFzžœúæº°ßÄÿ ·*ÿ éª†u>ûzú\KÕÄh Pf­ÿ ÐØWCÿ ÓÞŸJ[?ë©Kti^És�ÜÖVËyy­Ä––o2Û-ÕÊDí³\2ºÛ¬ò„‰¦duˆ1r¬2ÏÒ<qãý_ÀšÆ±<^	ÐüA¡x¿WÑuÛËû»ãá}CÑ/
êš³K4–·�ef¬ûdžÂÝL�%¼cì®B”¹[Òé´û$·}6=áÏˆuø'Ãþ!×tøôÍKUµ–âH!I¢‚âØ]ÜE§j¶Ö÷DÝÙÛkštvšÕµ…éûu„ñÙ^âê	€åE·Ú³ÒûÖ¶é±î:/üƒmþ³èé)Õ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  6ñAÿ ‰ÌõìŸ¦}¿Ï¥w/÷Z?õò·þâ9ßñj†ŸþÞMaÔg¶O@?/sÓôÍbÿ CEÔê-z×§Ó8>¸ãõõ¬žèk¡«lÔñÿ êéÏÓŠ‚É¨�Ð}h2nŸáÓ¯×¾j£¸™ÍÞgi9<wþ�Çùü¶Žßwæf÷99ÿ ãâ>˜Üzcž£×Œ^q]XoâÛ•ôÍC:Ÿý½ý.%Úâ4
 (3Vÿ �h?ì+¡ÿ éïO¥-ŸõÔ¥º5n V×ÆYà0MšÖg·¹„MFe·ž2ã¾�‡Ž@®§*+2Ï%<t=gÃ²_øÊ}/^Õâ×u(®<e¯Í$º”w�$É3Þ�/.J½ü
|‹ÅŠ(ç�£M…ßÐŽEf¯-]÷{ÿ ÁëÐôý#L‹FÓ­tÈ.oîâ´FD¸ÔïgÔo¤V‘äýýåË<ÓlßåÇ½ˆŽŽ$T"’²¶¿=OMÑäoõ›ÿ GI@ÍZ (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 óoÈe?ëÞ?çþ{~]û—û­úù_ÿ qïø³ÿ ?ý¼šÄôü9íÀç§n9ÆIÅïò4îu�9Ï<ûgÜ�éÿ ×¬žèOž¦¬}±ÓÛ>‡üóþ5„Ô Çè9ïùŸÏÓ'¿ò ËŽ¾Ù?Ï¯ÿ ¯�8î'ý_×¡Î^´úg<tïÇ8÷îsÆ@­£þ_™™É\gí1çŸ˜óƒþ×Óž�3]XoâÛ•¿ôÕC:Ÿý½ý.%Úã4
 (3Vÿ �h?ì+¡ÿ éïO¥-ŸõÔ¥º7+2Â€
 îô_ùÛýfÿ ÑÒP­  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ y·‰øÖ£>–ñþ<Ÿðÿ =Grÿ u£ÿ _+ÿ î#�ÿ §øiÿ íäú }1�lúõã<cÒ°¢4îtö½?½;tçùVop[£R3Óù†aúqžµÐž€ý×§ùÿ <Ðdüz`g¶zåMn'Ðç/>ë{ãÓùÿ ž?Ú=~_™™É\ÇÌ|ÿ ã>Í�Ëœ÷Ï^•×†þ'ý¹Wÿ MT3©ðÿ ÛÐÿ Òâ]®#@ €35oøöƒþÂºþžôúRÙÿ ]J[£r³,(  ïEÿ �m¿Öoý% jÐ@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P›x£þCQûÛ éß=8çŸóë]ËýÖ�ý|­ÿ ¸ŽwüZŸá§ÿ ·“Xp}:>ƒðþžý+úw:‹LñŽ¿áÐcÛëP÷@º_×ùš±ñ�Ãß±ÿ 9þ™¬Ù¡5 1û}súõó@“þœãüÿ žØ¦·ès—œ¡:ON?Ÿ\zvÀ­£þ_™Ÿü’¸ÿ �˜ÿ Þ<àtÁçüG¿=³Õ†þ'ý¹Wÿ MT3©ðÿ ÛÐÿ Òâ]®3@ €3õ8ÞKdØ¬ÞUî™rêŠY¼«MJÒêb¨2ÎÂ]•r¨,@¤öc[�þÚ°ÿ §ïüê¿ü…QgÙšöÝ‡ý?à§Uÿ ä*,û0í»ú~ÿ ÁN«ÿ ÈTYö`uÚ_‹4;{bš{Ô‘L›”èúÉÆé]‡+§‘È õ¢Ï³Cþ/ÿ ÏÍçþ	µ¯þWQgÙ€Âeáÿ ùù¼ÿ Á6µÿ Êê,û0øL¼?ÿ ?7Ÿø&Ö¿ù]EŸfÿ 	—‡ÿ çæóÿ Ú×ÿ +¨³ìÀ?á2ðÿ üüÞà›Zÿ åu}˜ü&^ÿ Ÿ›Ïük_ü®¢Ï³ ÿ „ËÃÿ óóyÿ ‚mkÿ •ÔYö`ð™xþ~o?ðM­òº‹>Ìþ/ÿ ÏÍçþ	µ¯þWQgÙ€Âeáÿ ùù¼ÿ Á6µÿ Êê,û0øL¼?ÿ ?7Ÿø&Ö¿ù]EŸfÿ 	—‡ÿ çæóÿ Ú×ÿ +¨³ìÀ?á2ðÿ üüÞà›Zÿ åu}˜ü&^ÿ Ÿ›Ïük_ü®¢Ï³ ÿ „ËÃÿ óóyÿ ‚mkÿ •ÔYö`ð™xþ~o?ðM­òº‹>Ìþ/ÿ ÏÍçþ	µ¯þWQgÙ€Âeáÿ ùù¼ÿ Á6µÿ Êê,û0øL¼?ÿ ?7Ÿø&Ö¿ù]EŸfÿ 	—‡ÿ çæóÿ Ú×ÿ +¨³ìÀ?á2ðÿ üüÞà›Zÿ åu}˜ü&^ÿ Ÿ›Ïük_ü®¢Ï³ ÿ „ËÃÿ óóyÿ ‚mkÿ •ÔYö`ð™xþ~o?ðM­òº‹>Ìþ/ÿ ÏÍçþ	µ¯þWQgÙ€Âeáÿ ùù¼ÿ Á6µÿ Êê,û0øL¼?ÿ ?7Ÿø&Ö¿ù]EŸfÿ 	—‡ÿ çæóÿ Ú×ÿ +¨³ìÀ?á2ðÿ üüÞà›Zÿ åu}˜ü&^ÿ Ÿ›Ïük_ü®¢Ï³ ÿ „ËÃÿ óóyÿ ‚mkÿ •ÔYö`ð™xþ~o?ðM­òº‹>Ìþ/ÿ ÏÍçþ	µ¯þWQgÙ€Âeáÿ ùù¼ÿ Á6µÿ Êê,û0øL¼?ÿ ?7Ÿø&Ö¿ù]EŸfÿ 	—‡ÿ çæóÿ Ú×ÿ +¨³ìÀ?á2ðÿ üüÞà›Zÿ åu}˜ü&^ÿ Ÿ›Ïük_ü®¢Ï³ ÿ „ËÃÿ óóyÿ ‚mkÿ •ÔYö`ð™xþ~o?ðM­òº‹>Ìþ/ÿ ÏÍçþ	µ¯þWQgÙ€Âeáÿ ùù¼ÿ Á6µÿ Êê,û0øL¼?ÿ ?7Ÿø&Ö¿ù]EŸfÿ 	—‡ÿ çæóÿ Ú×ÿ +¨³ìÀ?á2ðÿ üüÞà›Zÿ åu}˜ü&^ÿ Ÿ›Ïük_ü®¢Ï³ ÿ „ËÃÿ óóyÿ ‚mkÿ •ÔYö`ð™xþ~o?ðM­òº‹>Ìþ/ÿ ÏÍçþ	µ¯þWQgÙ€Âeáÿ ùù¼ÿ Á6µÿ Êê,û0øL¼?ÿ ?7Ÿø&Ö¿ù]EŸfÿ 	—‡ÿ çæóÿ Ú×ÿ +¨³ìÀ?á2ðÿ üüÞà›Zÿ åu}˜ü&^ÿ Ÿ›Ïük_ü®¢Ï³ ÿ „ËÃÿ óóyÿ ‚mkÿ •ÔYö`ð™xþ~o?ðM­òº‹>Ìþ/ÿ ÏÍçþ	µ¯þWQgÙ€Âeáÿ ùù¼ÿ Á6µÿ Êê,û0øL¼?ÿ ?7Ÿø&Ö¿ù]EŸfÿ 	—‡ÿ çæóÿ Ú×ÿ +¨³ìÀ?á2ðÿ üüÞà›Zÿ åu}˜ü&^ÿ Ÿ›Ïük_ü®¢Ï³ ÿ „ËÃÿ óóyÿ ‚mkÿ •ÔYö`ð™xþ~o?ðM­òº‹>Ìþ/ÿ ÏÍçþ	µ¯þWQgÙ€Âeáÿ ùù¼ÿ Á6µÿ Êê,û0øL¼?ÿ ?7Ÿø&Ö¿ù]EŸfÿ 	—‡ÿ çæóÿ Ú×ÿ +¨³ìÀ?á2ðÿ üüÞà›Zÿ åu}˜ü&^ÿ Ÿ›Ïük_ü®¢Ï³ ÿ „ËÃÿ óóyÿ ‚mkÿ •ÔYö`ð™xþ~o?ðM­òº‹>Ìþ/ÿ ÏÍçþ	µ¯þWQgÙ€Âeáÿ ùù¼ÿ Á6µÿ Êê,û0øL¼?ÿ ?7Ÿø&Ö¿ù]EŸfÿ 	—‡ÿ çæóÿ Ú×ÿ +¨³ìÀ?á2ðÿ üüÞà›Zÿ åu}˜ü&^ÿ Ÿ›Ïük_ü®¢Ï³ ÿ „ËÃÿ óóyÿ ‚mkÿ •ÔYö`ð™xþ~o?ðM­òº‹>Ìþ/ÿ ÏÍçþ	µ¯þWQgÙ€Âeáÿ ùù¼ÿ Á6µÿ Êê,û0øL¼?ÿ ?7Ÿø&Ö¿ù]EŸfÿ 	—‡ÿ çæóÿ Ú×ÿ +¨³ìÀ?á2ðÿ üüÞà›Zÿ åu}˜ü&^ÿ Ÿ›Ïük_ü®¢Ï³ ÿ „ËÃÿ óóyÿ ‚mkÿ •ÔYö`ð™xþ~o?ðM­òº‹>Ìþ/ÿ ÏÍçþ	µ¯þWQgÙ€Âeáÿ ùù¼ÿ Á6µÿ Êê,û0øL¼?ÿ ?7Ÿø&Ö¿ù]EŸfÿ 	—‡ÿ çæóÿ Ú×ÿ +¨³ìÀ?á2ðÿ üüÞà›Zÿ åu}˜†³¨Zêz”wVnï”#Ì¶÷®]>ð]Ã¸6Í§±8"»Wû­úù[ÿ qïøµ?ÃOÿ o5,9ÇQÓëÈ\ýp=‹ý;�M®ÇA×ðžŸáŸQY=×ÈèÔN£�ÓØ�ÀTPrt:ñùœþPlÿ \uúwÇ×Û­4&s—¹ÚÃùãõç‘êJÚ?×ßý\Ìägÿ �”é÷Ï§¡õ<qÏ¥uá¾?ûr¯þš¨gSáÿ ·¡ÿ ¥Ä½\F�@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P)¿ãâ?\~™ˆüýë­ÿ »Qÿ ¯•¿÷šþ$ÿ Ãý¼è¬Aã§n9Ááz�Q�8‡3ý{�M¯áïøvéÔÿ úÇq›Ük¡«oQõúwþ_�AdÔö Ùþ„uíÓ¯_ÃëìÖâg9{÷[üç¶�õ÷™œ•Çü|Çþñçðn8ýrzþëÃþÜ«ÿ ¦ª_ðæu>ûzú\KµÄh P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ Q›þ>bÿ u¿ö_óõÅu¿÷j?õò·þâ3_ÄŸøaÿ ·�%�õ^}8õÇ=þ¸&¹ßõúÿ [ú÷þ¿Ìê-:ÿ Xçž¿‡øûä÷Ý±ÿ õÿ ¦zwÎ{c¿J‚É¨7í×ú~?äPlÝ½2}¾¿Oaõ§ÄÎn÷îžF8LŽã¿@:VÑÿ /ÏúüÌÎJqþ’žîÇŸ¡äLdãôëÃ|öå_ý3PÎ§Ãÿ oCÿ K‰z¸�€
 Åñ²<=¢ê:ÓizÎ´4è<ó¥ø{O}WZ½Ñ<­;O�ã{¹þ}þRº’Šì:`€Ý•ìß’Üð/~Õ¼Cg¨<?ñCÑ§ñ=§ƒb×<Gàùô�üKuâá—Ò¾Ý-ÛÄ.l5Q4zŠ6¤V×2°"íèB¨ŸI-mªë{Xö6ñï‡[Qðý••äz¥§ˆ­µÛ«]{K¹°½Ð-#ðü·¢ÿ R†ð¤-"]¯ÙÊ$±“Âi!*ž`UÕÒï}zhoØëš.©e&¥¦k^£§D$2ê:…¥Ý”bß1’êÞi A|òn�l_™°9¤;®åAâÏ
�,ëcÄÞ:(›ìçWÎœt±q¼Gäÿ ´ý�M¼„ò¼ÝûÈ]¹â€ºîŒ¿øÿ Ã>Òïu)õ]F[KÔIÒï´Û�bþÙÐËéörÞÛý IK<mæ,o2È®UÓiGÅ¾5³ø�BK´ŽæI,ßVÓÅäkd¥¯|Ëo´”Ù€ßj?pT‰6â�Ýþø…à¯xvÃÅžñ.—ªøwSºûŽ§æÚï¾ÓöE²òïVÚâ+É.6Ç¬ÐÇq?™ÃÇ4LèJI«§tÉ|EãMÃš¯¯Krš”zD:“¾Ÿ¥\YÝjw·z]³Ý]évÏu
Ïª$HI³2¤©Ö@‹Í0m%s‡Ð>:øÄž1¶ð.�&¬<AuªxÃHŽ+�;Ê·[ßXxwR×Qîy"[x£K6®‡7
6y ¹a)¦í­õ_u¯ù££ðÅøâç[±Ñ5x?´´ø¯ÂÚUì¶Öš£êžÕçÑ5¹­tö�®®4Øïí¥X/’?*hðä!;@5$öèÚû�™Öéúî‰«Éw•¬éZœº|ÍoŸ¨Z^Ée:<im4­m29‚:ž
ŠCº}QN/øVw¹Žxzi,­�íäqkZl�if)»¹T¹-°de3Ê U†üƒ€.»£&ˆ>›WÔt³¨[Ão¦Ùé÷O®Í{¦¦�s&¡ufº}® /�™¨[O§Î—VÏ~Y(¨Ò8‘cbºïýkþD7_~Yë>Ð&ñ~†u_Åð­¼‹w´ÖMÒÚ^Z‰¬ƒ!uŽ5šæ&¸˜ˆ-Ä³|”2ºWÕìtxŸÃWê2Áâh´veÕ¤‹V°’=-“;×Qt¸e±dÁÜ.LEpsŒCºîqV?ü«ÙüA½Ðå¼×"øo2ÛëŸÙQ[Ý-äÏ¤[kq.‰:Ý]Ee²ºˆ$‚x£ó·ÆÌ»w\ËÞþîÿ uÎÂÏÅ¾½¸µ±‹]ÑÆ©x�¢ÒTÓÿ µwˆcžX‚\½ÁžÞ9Ï#�¾R	uÝâï�?<uâ}7VñM¬ø>?OâO·šçR°ƒÅº¥¶‘¢ÌQÖiÖ[»¨�ÂAu,Öp-ÌQ‡ˆHÉsŠm_Uk¯]¿3Ðÿ á+ð¹Ó§ÕÇ‰4¤ÛNÖ×:§öÆ�ý�or�±íç½ûGÙ¢�\h¤•dVJƒÅ]ouoSf	àº†+›i¢¸·ž5–ˆ$Iaš'’H¥Œ²I©®ŒU�)çþ#ø¯à_
ëžðþ³®ÙÛÞøšÿ VÓmf6�c§]èº+ë÷©®]µÂG¤�ìØÌÐ›­¾ihÀ :±brI¥}ÿ áõ:©|Oá¸N’oèpÇ¬4——V°�5BØ*4æ{€/I-Œ¹ÈÅ!ÝwDã]ÑS“D]gJmf~Ó.�5C©Ån@"y,ßjHH ù­Lws@]m}{hø±à6ñrø2?XM©ŸÞxŽ[¸o,¥Ñ­l¬5«/Ü[]êit`¶Ô†©¨ZÛ­Œ»e&@8r¨À¹•í~—ülz*²º«£+#(eu!•”Œ†VHäpG"�˜qø§ÃZßßCâ=[-Ìz�äz¾žöºt€�c¿¸[ƒ›‚+pñ° ‚)ŠëºûÂoøbÚÊËQ¸ñƒo§êR,ZuüÚ¾Ÿ•ü¯÷#²º{…‚êGþ�äfì!ÝwG/Æ/�oXðÖ™«®»âx‹Âþñ“¤„{�÷ÅÉi6—qt÷rYÛ\XÇo{oq¨O¦Ü_5‚¹†â5ºG·V.eµïf“ù�¢ø£ÃO&¥
x‹Bi´efÖ"]ZÁ¤ÒUNµ$¬UOn„@!ßðÜ¹§êúN¬.N•ªiÚ˜³¸{K³§ÞÛ^‹[¸¸–ÖäÛK'‘qáá—l‰üJ(F€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (”¿ñóàñßøÎOõ®·þíGþ¾Vÿ ÜFkø“ÿ ?öó¢±>¼9ëÓçü0sÎ÷ù£ªµäryúú~þ>ÿ ZÍî�n·4ãí×ÿ ÕžO¯89¬Í	è�Ð}Çüñ@“�^Ùÿ >¼þ=©­Ég7yÂ·nØý1øñÆ=¹í´züˆg%q�´¦?¾zŽyG?ÏéÚº°ßÄÿ ·*ÿ éª†u>ûzú\KÕÆh P@€ž0¿øC¤øXÑ´Ë¹—ö�¹øƒ¬i×…¤¶W>ºø£ªxžv•Ã˜§’m
õÚiÌÎí%«#‚ï¯É~†\�ÆÍ}¾o•îy¦·û-xå¼Y®.•á=#þIuo�ÒéZ‡‰¬ü9ZOÄOü?Ó4[[¶‚ñ´c}«hZÑ•cÓåŠÍ¼¹n ò.(¸�7}µç¥í¤”mošg¦ü6ø5ã½?àïÆ¯ø“Âößðš¥í¯‡4?í?hZþ£c7†­t™×ÄZÿ �ô¸ü9£q</mcªÚhé#[EÚ¤ÚB8Å¨É4µÙhžÊ÷k©ä¾ýž¾+i6ÚV§ªü6ð÷ŠôøîãU·øi¬ê~
°Õ5Í2ëÀ–~]c]¹ðý…‡�uKIÔ`’==¥°ŠöëMoµ^»^ˆV7ëúþ¼‰P’³åZKgËªµ®í£·MŸÌÓ½ý–üa©xwã“?€¼!¤kž,øCðÇÂ?ôÛi5OêZSø©üY¢éÚž¦æâÂÒ(ïtczþL©oåÚÿ £A°#´´WqŠŠ¾ÛÝ]œ—„~xÏÆÞ/ñPü8ÑtëM#ö»ñ¯‹õ/‰úµäj§ÂšUÍÌþ²Òf€jz…�ˆ’õ¬ãoÐnì§¹šåšEM­è¿!(¶ÞŸòñ·+ôWÒÝŸÝf{®�ð#ÅvŸ²¾±ðª?h~ñï‡u=G_ðtš}î›&�­x¯Ã^#‹Åž
ñ—v‹
ÙRîÇMÒ®þÞ©ygi‹p<•�(¥ìÜl”“º×FÓºÛî<sPý•~-^i^7Ñd³Òîtýsá¿Ž¼UaëvÏ¿ã¯ÄÍGð÷ˆôïßJ~Ï¤ÙC¥Ý_Yêgm¡›X¹EÛƒNäû9k¶Íïö¤’‘ë_>|CðÏÆ}Æz¶�cƒeâoŒº�ÅÄZ¥œó-§Œü3ðËKÐX[G!™ž{¿jË2*–¶H¢y¶‰Ó(¨Á©'Òóø�¿&y‡ü3GÅ;ßj‘[x;Ãž¹»ý¤¾'ü]¶øÍeâ;¼C‚õûßK¦x\é°BÚ¨}~VÚ»Q9Óì­¦–i¢[ôbþDû9_D“ç”¹ï­�ôùþºž‰û5üñ�Ã]nMSÄúæ•>•ðõ¼wªŸxVòËÅ©~/õ¾‘áÏØ_ÜÀYd¼‡UñN§6µ—sY´Sƒ%ÅB]µm-º×ä—æï©óW„gÏ‰>?øUá¨|?ðãEðuÕ—�¾0ZÜxºM^Ò×\ñÕßŒžãLÑ¼7©ÙM¾¡gj²Çý£{&¯¾ÎÏì¶£MoÞ±süÌÔ%(«E/vWwÕ·²ÿ ‡Ø÷ŸþË¾!Ô|Sáøô¯
x}<lgdÕ´ä»Ó­­¦�ÀZ÷Šµù–[•®Y¢Ömç,Êï«I-ÁYwî?à–éê´V÷oònÿ ×S1eÏéž/ƒUÒ¼á•Òíþ2üaÔ´_*ïH†O	x7Çú“má¯iî»!ÿ „s_‚çYMÍ ½·™öq-Ä‰¸ÿ €�;¥ö¥³JÉ¥f½CÏôÙ#â|±Ká…†�¢x'NÔ´íGÆ>MâÄ~ñ}§ˆ5=};@ðÕœ‹§ëV¶Ó¤çŒ5k�V95	l®í¤‡Íœ»‹ÙÊÛj’ê’•Ÿd–þlöÍà‡�áY~ÔÚ,~Ð¼{ñ~k»¿xKNÖôË›$¹ð~Ÿ¢¥µÝÍ�‹NÓ¥7Ö²4ðÛ¨²‡~`’TË•Ø¥ËQY.k´¯ä‘Íèß³�4û½;Ä-á­
/Z~Ôþø‹ý¹¡§jCðÏKÓt«/Ã ¯ç*Ì±^Ã6ˆ’o½SŸ*@Èh¿åú‰Aïeh¥îÙV6~5~ÎÞ0ñ�>/jÞð‡‡ï´ÿ ˆþøUik­¾¡¦i÷°jñ•¦£âK;ÈæXïs©hðG"ÝÂæ9þÇoo+ù‹ 9A·'m%Éø=~v9¯ˆ²ç�$ñW‰u/xvÁ|¿ü?ã?Àºï…tØµ›ø@î|7ªêö>!Óµ[j~¦mæ[]VÄG}“M‰q.:ní¥¥Ó²it³z¦�~Ðþø–_ÙßÃ	ãñ—‰¾kVQyÓ_hÚÕ§ˆîìâ–úþõ¼5u©¦— ­ö‹åÞ%­ÄZDZ4°ÅvúmüPB’H\µÈ£wGøtÓî<ÖÃök×&Ô¾é>'ðÃ+�ø#Æž1Ö<O7‡¤¿—LñE®¯àGÒ4­wWÑüO%î§q­É¬a¾·ŸPÖ#CwqÜù*¡ò'‘û‰ÅYI·n¾ëÕß[ßÔð�OöEø­$v¶÷z$ºî›/ƒuoé>›âÿ 	hñø$ÂÅñ/ˆtëÈµo@ñÆŸ§O¢jšL‘ßøR1â:çKû“$BÔFîG³—ªµ¬šVWoª}ÛUc¥ñwì×ñËÅnµ{k-+D#Æ^*¹OéÚ�†-Ï‡5Ÿj¾Ò/e0i£Æ·Ú²O% ñzž­%‰•Ö}+HXÁ6ÇOëó„Ü»jõºÙÅ®×¾ª÷}6:/|øƒa¨™î>|8Ñlí¾Û|/½ÑõÚÞh>1ñD^#ðì×šö¶šE´·ÂÂ[K­Z¦�õ›©-ã·º’ÞìÁ0CPkì¯ƒ–×Ñ»­tûû³é?„Ÿµï†Þñn—©øÊëÄÏâkYÅŸ…¢ŸR°ð_„Ú[K¨›Kð¼Ú�Ö»â[;	ÞuY®îµ§‰cŽK=>×`‚‚ãõ½út^Kv‘ñ•‡ì»ñ…<?«éV^µÐ4M/PøgygáéuŸ]ø�ÅxGPñº¶�ÿ 	-†�o£êú5´�•Ö‰sãÝëV¾½ºŒ‘Åæî.gìåf¶ZiîÝÚú]+?+­z�V‘û6øçÃ¿Øú½çÂý+â�w |DÑ?áYx·Æº�Áú¿Œ|C§jÖ~(†ò×DÑ¼=gYY\X_éþ²’ëHûfí"êàU Õ�¹´’åok»ß·ÝoSKQý™¼sŒ|Iw¢ø+Âú}–½ñöyñ•¾½¥j¶16™gà-/F±ñ¾˜‰~Fµpÿ ÚvwzÔNò6ªÅ&•¤¿–E {7w¢ÖPwíÊ•üÿ Ìáµÿ Ùoâö³áÿ 
Øx#Ãš³£|:ø•á›ï[ø—KkïŒ·‹o­eÓ$Õ£Ž®­£&í[ÉõùXØÞæÚÌ˜Ï˜ÅÄéÉ«Y+E«ßâooKn}¯ð×áOü+ïŠŸµ­DÓ4ø«Hø|š-®–ðEúÆ‰g­[k×w�Ñ]J'Ó–[Ù×Í¿(ä•£fCHÇ–Ri$šVõÖÿ ð{žýH° €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €)Mÿ úcŸÍ~ŸÎºßûµúù[ÿ q¯âOü0ÿ ÛÎŽÃ?\àûô_§QÈÇêk™þŸðM{�M¨~ãØzÛñÏáY½Án�HûžÇê3øúþÍ	¨�ž1ëþOùõ ÉÀþcðéïüûÓŽâg9{÷§tãýoå[/ò39+ƒ›˜ÿ ÞlúñŸëü«¯üOûr¯þš¨gSáÿ ·¡ÿ ¥Ä»\F�@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P)FnbéÐþ.1ÈïÞºßûµúù[ÿ q¯âOü0ÿ ÛÎŠÃÛŒÎ=�ôà“ÔõëÞ¹ßõøU¦ùÿ —·+7¸ÖèÓN£¡ëÓ§¯oóøÖf„ô Çíëÿ êÿ ëPdý9÷ëýNÝé­ÄÎn÷;[¯†O¶xê:c¯¯¹Þ?åù™œœÿ ñòœéœq»ÿ ¯Ô““ô5Õ†þ'ý¹[ÿ LÌÎ§Ãÿ oCÿ K‰v¸�€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  
SÇÄCØ÷ÇL¯ó÷Öÿ Ý¨ÿ ×ÊßûŒÍá‡þÞtv?˜÷0QÇ?ýoÓ<Ï‘¯s©µí×Žyà‘õþXÏ›Ýn¿¯#N<ñíÜ®;ŸÔAdô Çè>¿çðõü(2ãÐãø¸Ç§ãú:kq3œ½û¤sÔg‘øãŸþ°Ïn+e·Üg×ïþ»œŒÿ ñò™çæ<ãžýú`óŽÇÕ×†øÿ íÊ¿új¡�O‡þÞ‡þ—õq  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@¦ÿ �˜¾‡¶}3úgüðzßûµúù[ÿ q¯âOü0ÿ ÛÎŠÃ#oÕF?íÏ|g¿l×3ý{�U¯¯>¹àŸÔgßƒ#Ö³{¡®†šcüzqœgÛ¦Ó“Ð úÿ �ç@sôõêúþ¼þ¿…5¸ŸC�½û­ÛŸÇ�Ã·ëÓŠÚ=~Fg#qÿ 1ÿ ¾Çô?^!×Œ×^ø�üôÍC:Ÿý½ý.%êâ4
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €)Mÿ 1}ÿ ÐÏCÆEu¿÷j?õò·þâ3_ÄŸøaÿ ·�‡ç¦9ünß\æ¡¯s©¶é×ÿ Ö?¯l÷üªà·Fœxã¯N?/åøzv¬Í	è�ÐzgŸóŠ Ìœwú�L~_ÓŸçMn&s—¿p÷éøqôþ¾�Ímò39)óö”Î>ù sØ7ôëùW^Üÿ öå_ý5PÎ§Ãÿ oCÿ K‰v¸�€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  
SÇÄGþŸç¨®·þíGþ¾Vÿ ÜFkø“ÿ ?öó£°íŸÌž¼Ëžÿ —jæ{ÿ ]ÍN¦×ÓŸ_ð:öö¬ÞèèÔLg§_ÿ _ozƒBj ŽNÃß�óþÄ6§¯õíèÏN)­Äÿ œ¾8Vç“×úñïÏs¼LÎFãþ>“×sìÞÝ}ÿ Ÿ5Õ†øÿ íÊ¿úf§õýk�_‡þÞ‡þ—õq ówí‘©j7ì…ûUkMíÖ›ªé_³ÇKLÔlg’Ö÷OÔ,~ø¢êÊöÎæImî­nbŽ{yâu’)cI•”=Ÿ Öèüaý–¾+üøð"Ûö�Ô¾þÞcÇ¿¿g{�øƒÆ_ávÛüñ¶¶Ú„wº©â¯ê>¹'Öo-Ó@¹ƒIòVÖv½±�c‡iKÑþ#w½�«âÿ ‚�üsø+­øBÚëágÃíÃÿ þüGøÝðÞ÷áF½¬j÷ÚUïÃ_ÙxÏ[øwâë}hb[ÿ ìBÔ[ø�OH4Ùu	¿“µY�»ëÚáb†…ûo~ÖV—íþ*ü3ø?á�+öÆøkã�ö{Õü+¯ø�S»ðoŒ¬>ÞüNð�‡¾&ÛÝ¡[Èu--!¾Ô´Š;=ZQl±Kn’Ü!ÄVü7>qøCÿ ý¢~~È|IñwQøwâïŠ>.xëÁžñ×Š¤ñ2èZ…|1¬x ëþ#ø‰iá­2MFòM
}%´�KðÕ’I¨Ø5®æ†f»ºBýûþ¶¿™ê–ŸðSÿ Ž^$ð/Ã[o|+øq¯|Vñwím/ì¿4Òê>2Ñþø’Öóáæ«ãmâ7„5gM°×!Ò.Í¬0ÞØj—76­g¨Ú+¼­m+íÞÞAný¿Sö“Á�âÉ<áGñìZ,9hOãH<6÷Rxv6—j|Gƒ%ñ7¯¢Ç¬ÄÒÞð›¦±5Á2—¦IÒÐ@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ R›þ>#÷è=Ç¿ñ]oýÚ�ý|­ÿ ¸Œ×ñ'þíçGaÆÜûzð=ý;óŽs?Ð×¹ÔZç¿<uúóßõü³P÷C]HòHéþGóÇ8ü{Ve“Ð§~¿ç?çúPlüœö9éì®úÝ©Çq>‡5zÓÉíÿ ê§Qúó[Çgýu39)ÿ ãå?ß?�!�òý|uêÃþÜ«ÿ ¦ªÔøíèéq/W P@Å_‡šGÅß…ÿ >k÷zŽŸ üNðŒ>kwú<–Ñjö:G�<=¨øoR»Òå½µ¾³�Q¶³Ô¦šÆK»+Ëd¹Hš{[ˆƒÄàÎ?ÙÏáÌÿ ³•¿ì»â}GÅWá�·Â«èµ‹˜“XÕ<7m£Ç£$÷wºe¾Ÿ:¯‘w+yakf°Þ¢\[ÃÄUúÜù“À¿ðMÏ…ú·³ñ7âoÆÚ	t…>$ø)à3âæ» ^éß¾x·O�G×ôÍ?øsÃÒÝjº†�Dž"Ö¦Ôµqa�nDŒò²·ÏÔ/ò/|(ÿ ‚wxá¿�¾ø·_ø·ñ£âö�ðOÂÚßƒ~x/âV¹á»Ï|(Ðµíü-rš~ð¾�¨j—ö¾‘ü1§ê~#¾Õ¯-´�™$¼‰o(H.ahÿ ðLï†žøáÿ øsâÿ ÆíO‡_5ï‹üYm­xE¼Mð[Zñ)Õ›[Ð|pþ6WþÔŸ\ÔÍî‘âÛ/Ïp—r#ßàFP·®÷ÎöÛöð}Änü]ñkã7�üSð‹ãÐý¡í|_âïhºŽ«â/†uO
Ç¤ëV£ÃÑé:g„ ÓuYZÛDð�‡‡˜Òe¸&[�8·®÷÷=1  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P)ãæ/\6:{zÿ Nk­ÿ »Qÿ ¯•¿÷šþ$ÿ Ãý¼èì:ŽùÀãè=k™þŸ×àhu6½>½¹#Ó¾{þ~™½Ð×OSM:�OÃðã�åÇÖ Ðž€ý;Ðdÿ \žzwÏO¯4Öâg7y÷[?ç9ã'Û§´ÈÌä§#í(9ûçéŸ›¯Oþ¿Q×†þ'ý¹Wÿ LÔ3©ðÿ ÛÐÿ Òâ^®#@ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (ŒßññÐñù{þç=oýÚ�øëî#5üIÿ †ûyÒXöéÉß¢ç©÷ô?Ê¹žût5îu½Ðã¯N�ÿ ^üVop[£U9Ç×¯àr9Ï¿åøÔP >ÿ çÿ ×@“ÿ Sõü{OÂœw9Ë¿¸zÿ _Ãœò}øúÖÑÛúîfrSñržì>ŸòôæºðßÄÿ ¸uôÕC:Ÿý½ý.%Úâ4
 (Žé3ÈÊˆ€³3ª u$ž  
?ÚÚgý-?ïüüU+®ã³ìÚÚ_üÿ Úßøÿ øªw]ÂÏ°kióÿ iÿ ãÿ â¨ºî}‡ON#"öØ�Q*ùƒE×p³ì/ö–Ÿÿ ?–ÿ ÷õÆ‹®ágØ?´´ÿ ùü·ÿ ¿«þ4]w>Áý¥§ÿ Ïå¿ýý_ñ¢ë¸Yöí-?þ-ÿ ïêÿ �]ÂÏ°iiÿ óùoÿ Wühºî}ƒûKOÿ ŸËûú¿ãE×p³ìÚZüþ[ÿ ßÕÿ .»…Ÿ`þÒÓÿ çòßþþ¯øÑuÜ,ûö–Ÿÿ ?–ÿ ÷õÆ‹®ágØ?´´ÿ ùü·ÿ ¿«þ4]w>Áý¥§ÿ Ïå¿ýý_ñ¢ë¸Yöí-?þ-ÿ ïêÿ �]ÂÏ°iiÿ óùoÿ Wühºî}ƒûKOÿ ŸËûú¿ãE×p³ìÚZüþ[ÿ ßÕÿ .»…Ÿ`þÒÓÿ çòßþþ¯øÑuÜ,ûö–Ÿÿ ?–ÿ ÷õÆ‹®ágØ?´´ÿ ùü·ÿ ¿«þ4]w>Áý¥§ÿ Ïå¿ýý_ñ¢ë¸Yöí-?þ-ÿ ïêÿ �]ÂÏ°iiÿ óùoÿ Wühºî}ƒûKOÿ ŸËûú¿ãE×p³ìÚZüþ[ÿ ßÕÿ .»…Ÿ`þÒÓÿ çòßþþ¯øÑuÜ,ûö–Ÿÿ ?–ÿ ÷õÆ‹®ágØ?´´ÿ ùü·ÿ ¿«þ4]w>Áý¥§ÿ Ïå¿ýý_ñ¢ë¸Yöí-?þ-ÿ ïêÿ �]ÂÏ°iiÿ óùoÿ Wühºî}ƒûKOÿ ŸËûú¿ãE×p³ìÚZüþ[ÿ ßÕÿ .»…Ÿ`þÒÓÿ çòßþþ¯øÑuÜ,ûö–Ÿÿ ?–ÿ ÷õÆ‹®ágØ?´´ÿ ùü·ÿ ¿«þ4]w>Áý¥§ÿ Ïå¿ýý_ñ¢ë¸Yöí-?þ-ÿ ïêÿ �]ÂÏ°iiÿ óùoÿ Wühºî}ƒûKOÿ ŸËûú¿ãE×p³ìÚZüþ[ÿ ßÕÿ .»…Ÿ`þÒÓÿ çòßþþ¯øÑuÜ,ûö–Ÿÿ ?–ÿ ÷õÆ‹®ágØ?´´ÿ ùü·ÿ ¿«þ4]w>Áý¥§ÿ Ïå¿ýý_ñ¢ë¸Yöí-?þ-ÿ ïêÿ �]ÂÏ°iiÿ óùoÿ Wühºî}ƒûKOÿ ŸËûú¿ãE×p³ìÚZüþ[ÿ ßÕÿ .»…Ÿ`þÒÓÿ çòßþþ¯øÑuÜ,ûö–Ÿÿ ?–ÿ ÷õÆ‹®ágØ?´´ÿ ùü·ÿ ¿«þ4]w>Áý¥§ÿ Ïå¿ýý_ñ¢ë¸Yöí-?þ-ÿ ïêÿ �]ÂÏ°iiÿ óùoÿ Wühºî}ƒûKOÿ ŸËûú¿ãE×p³ìÚZüþ[ÿ ßÕÿ .»…Ÿ`þÒÓÿ çòßþþ¯øÑuÜ,ûö–Ÿÿ ?–ÿ ÷õÆ‹®ágØ?´´ÿ ùü·ÿ ¿«þ4]w>Áý¥§ÿ Ïå¿ýý_ñ¢ë¸Yöí-?þ-ÿ ïêÿ �]ÂÏ°iiÿ óùoÿ Wühºî}ƒûKOÿ ŸËûú¿ãE×p³ìÚZüþ[ÿ ßÕÿ .»…Ÿ`þÒÓÿ çòßþþ¯øÑuÜ,ûö–Ÿÿ ?–ÿ ÷õÆ‹®ágØ?´´ÿ ùü·ÿ ¿«þ4]w>Áý¥§ÿ Ïå¿ýý_ñ¢ë¸Yöí-?þ-ÿ ïêÿ �]ÂÏ°iiÿ óùoÿ Wühºî}ƒûKOÿ ŸËûú¿ãE×p³ìÚZüþ[ÿ ßÕÿ .»…Ÿ`þÒÓÿ çòßþþ¯øÑuÜ,ûö–Ÿÿ ?–ÿ ÷õÆ‹®ágØ?´´ÿ ùü·ÿ ¿«þ4]w>Áý¥§ÿ Ïå¿ýý_ñ¢ë¸Yöí-?þ-ÿ ïêÿ �]ÂÏ°iiÿ óùoÿ Wühºî}ƒûKOÿ ŸËûú¿ãE×p³ìÚZüþ[ÿ ßÕÿ .»…Ÿ`þÒÓÿ çòßþþ¯øÑuÜ,ûö–Ÿÿ ?–ÿ ÷õÆ‹®ágØ?´´ÿ ùü·ÿ ¿«þ4]w>Áý¥§ÿ Ïå¿ýý_ñ¢ë¸Yöí-?þ-ÿ ïêÿ �]ÂÏ°iiÿ óùoÿ Wühºî}ƒûKOÿ ŸËûú¿ãE×p³ìÚZüþ[ÿ ßÕÿ .»…Ÿ`þÒÓÿ çòßþþ¯øÑuÜ,ûö–Ÿÿ ?–ÿ ÷õÆ‹®ágØ?´´ÿ ùü·ÿ ¿«þ4]w>Áý¥§ÿ Ïå¿ýý_ñ¢ë¸Yöí-?þ-ÿ ïêÿ �]ÂÏ°iiÿ óùoÿ Wühºî}†yÑO,o‹"À:Ë•*Èô'šëî´mÿ ?+î#%üIÿ †ûyÓXþ¿/¦;�>�±Ís½Í{ÿ _æuV½>£óãŽùÏ¯®yçŠÉîtj'Qß\ôÆýu„Ô Çè>¿ÐÐdý1Ž‡úÿ úùÇõ§ÄÎr÷î·<p:óéßò‡OjÚ=®¬Ìä§ÇÚ#Æ>ñéé‚8ÇŸåé×†þ'ý¹Wÿ MT3©ðÿ ÛÐÿ Òâ]®#@ €2õ`¬ òSÑ‡b­¬Ø+)õ¤‚:H<R–Ì¥º7k2Â€
 îô_ùÛýfÿ ÑÒP­  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ y·Š?ä5·O§^õÜ¿Ýhÿ ×ÊßûˆçÅŸøiÿ íÄ¶=y'×õp~�øÀ¬^ÿ #NçUkÓ¿NüóÓÝºãŽ•›Ý]F·FšuAê?Äÿ ŸJÌ²z ŽNƒëéíë@³úzgùúyúcÒœwès—˜Ú{súzŽþý8ÍmòüÌÙÉ\qržîÇùûý=zž�+¯ñÿ Û•ôÕC:Ÿý½ý.%Úâ4
 (3Vÿ �h?ì+¡ÿ éïO¥-ŸõÔ¥º7+2Â€
 îô_ùÛýfÿ ÑÒP­  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ y·Š?ä3_ø÷�·¹Ç=«¹ºÑÿ ¯•¿÷Îÿ ‹Sü4ÿ öò[qøtõÀÏqéõü¸ÁþŸ×õ©§s©µtíÀüý}óùæ÷èj§QŸóÓÓéþ0Y5 1ó�éŸÿ U fOëõÁïœõ§ÄÎnóNîOáúqžø 'Žõ´ÈÌäî8¹L}¸ãÜú{�ˆ>¹ëÃ|öå_ý5PÎ§Ãÿ oCÿ K‰v¸�€
 ÌÕ¿ãÚû
èú{ÓéKgýu)n�ÊÌ³ŸñGŠ¼=à½ûÄž)Õ­4MMˆÍy¨^ÉåÃ€HžIGJòÈß*#7n&ÔUÛ²FÍ­Ô¶¶×¶²	­nà†êÚe,°\F²Ã"†€xÝXÁä@ÏBÑäoõ›ÿ GI@´ P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ æ¾(ÿ �Ì}3ötÇëÛ�óùŽåþëGþ¾Vÿ ÜG;þ-OðÃÿ n'°íõç<p¾þ§ÛÓ°5‹ßäißüÿ «�M®zõÏL_ÃßñÆ~™=Ð×CR3Èþ¿ç¯nç·©¨,š€#~ß_éÐ{ñù@³ôç¯<õüqÞšÜO¡ÍÞ‘¿Çü�óÏJÚ?×ÞÌÎNøùO@íýÃ�:W^øŸöå_ý3PÎ§Ãÿ oCÿ K‰v¸�€
 ÌÕ¿ãÚû
èú{ÓéKgýu)n�ÊÌ³Ï~*izÎ¹àè¾Ñ,µí_XÑµM&ÆÖÿ PƒL··ŸSÓ®ìP7sÛ]ª5“\	v¤BW]Â7VêÖäÊî-%vôíó5¼šÜ>Ñ-<C¤Ã¢ê¶}¦Ÿqe¥­ú´VË:^C²2Ïå—	åŒ¬Iæ�Õíª³í{žÏ¢ÿ È6ßë7þŽ’�š´ P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ æ¾(ÿ �Ìx?òì�³Æ{{×rÿ u£ÿ _+î#�ÿ §øiÿ íäÖàsŒŒ`{ôöíÇ_SƒßäYÔÚŽ?ùýÿ ^y Öoq­Ñ©o_þ±ÍA¡= G'n{þ|Ÿ×Þ€3gþ§¯^üzþ¾´ã¸™Î^ýÖí‘Ï?ÏÓßŸÇ¡­£×äfrWñòœÿ ãð<ÿ úøÏ=k¯üOûr¯þš¨gSáÿ ·¡ÿ ¥Ä»\F�@ fjßñíý…t?ý=éô¥³þº”·FåfXP@Þ‹ÿ  Û¬ßú:J Õ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  6ñGü†cÿ ¯xÿ ™ü/ð®åþëGþ¾Vÿ ÜG;þ,ÿ ÃOÿ o&±è;d��Ð’xç×¨üOzÁþ†‹©ÔÚò8ã ÷ÉÇ¦zžÿ NEf÷@·Fœ}½ùëíúç�¦*	è7ì}ôÿ ?ãØ€gOôçæýÏÿ ¯4ÐŸC›½û‡×ŽãùxÏâ=o¿×S3’¸ÿ �¤ÿ xžØþ!ùÿ .zó]XoâÛ•ôÍC:Ÿý½ý.%Úâ4
 (3Vÿ �h?ì+¡ÿ éïO¥-ŸõÔ¥º7+2Î_Åú‡ˆtÍ®|3a¤ÞßýªÝ'—]Ô›LÒ4­4±mCY¿š8åžxtëdy¾Çnk—Ú‚h#ó&ŒºZ[ç¥—‘SáçŠ.üiàÍÄ÷ºhÒnuky¥{Xå’{YRË›H5-:y¡·žm#Y‚Þ=cF–æÞÞêM*úÍîmàœÉ6m¤Úµÿ ­6Ñî¼�nÑäoõ›ÿ GIHf­  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ y·Š?ä3ýp�×ý¯óÍw/÷Z?õò·þâ9ßñj†ŸþÞKaÛ¿Ý¤tíêOÇzÖô4îuV˜œg¯�~qž?ÏLÞèCR>ßät?þ¡ê;úÁ¡5 1û}Ïùýh2~Ÿýp{ÿ žzSŽâ}>g7y÷H<úž�¾Ÿž¥ožßÓþ¾fg%?ü|§ûíôèyÿ ìGØŠêÃþÜ«ÿ ¦ªÔøíèéq/W P@š·ü{Aÿ a]ÿ Oz})lÿ ®¥-Ñ¹Y–qÞ;ðe¯�¼9sá›íc[Ñl¯f¶’î}]6;«¨-å¾Ÿrº¶™«ØÜi×˜ßÚOe"]Aº	?tò+AIs+]¯K}Ú¦­ÜÚÐt§Ðô‹%õMCY61F¥ª®˜—÷ùŽÑ,é£éÚFš‚Þ6KhVÓN¶E‚ƒ+ÈW++]¿7¿ácÔ´_ùÛýfÿ ÑÒP3V€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €<ÛÄÿ ò�þ½ãþgüõÜ¿Ýhÿ ×ÚßûˆçÅ©þíÄ¶ p8ê:GEëÇ<`ö÷àÖ‘§ë©ÔÚŽ ì üoÃ�Ï·LCÝn�TíÏ§~½}¹äúŒË& ?Aõÿ ?çŽ”™?ó'žq×ŸÃðíÏjqÜLç/81ƒõ þ¼óøï3’¸ÿ �˜ñýóëèž¼ˆ®¬7Çÿ nUÿ ÓUê|?öô?ô¸—kˆÐ(  Í[þ= ÿ °®‡ÿ §½>”¶×R–èÜ¬Ë
 (»Ñäoõ›ÿ GI@´ P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ æÞ(ÏöÌõïçÏáëœñ]ËýÖ�ý|­ÿ ¸ŽwüZŸá§ÿ ·’Øt�á=;àg·síõÍbÿ CNçUkõõ÷ýqùúzVOq­Ñ§8ÿ ë{Žø?¡©e“Ò�Ð}h2ãŸ|çüþ4Öâg7{÷N:ñíþz{b¶‰™È]6Ë…fé¿¯âWžqÜsÇ<ñ]Xv•HÝÙKš{.xÊùs|Œê|ÚÚÎßájVùØ¿\�4ÚjÍ6š}Ý'uu³ÕH€35oøöƒþÂºþžôúRÙÿ ]J[£r³,óoŠ·:u¿…âe®�µ;a™üA7„ìõ²e’ÛFÔüKoc¨Ï¢iš“Çä]ßÃlÒ¢â8Îù³DÊÖÕÛço•õ±™ð+W¾Öþx~ïR½¹Ô¯­îüK¤Ï{qp·Ë?öŠu­#c«.?·´ˆà±ŠÄn�Ïâ-*;=næÞÖæú[x‡¸CáZßuFÖývß®çÒú/üƒmþ³èé)jÐ@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P—øŠá&×PçÈ�"b:osÿ ²ÙR=G§'ºÎ8z1{ûõ-Õ)´£÷¨)/)'ÔçÞ¥GÓÝ�þ�ÿ [äË¶=»ýÑùã±ÏCž1Ç½bÿ CC¨¶Î?OQúvÇ^?:Éî¡ª�¿§CëßÓ¿ZƒBj cô_é@“ƒ×žýzg?€?§ô¦·ÝÝêáIõÿ Œû�µ´LÎ3QÉ-Ÿ~:÷ëé��sÔŽ•¬¯Ä–S³Ö"_Ü^7–Êv¤¯÷XvÝ�S€{VÕ)ûkI5�+¦íŸÞæz)¾·iKâºw¾q—&�Xt¶®>VëÖÕmf¶ÝWF•Õ�èCë\î�h»:U?ð×É¥f¼Ó±¢œÛ�Þ¿-ÅÜ¾£ó½•_ù÷Sÿ  —ù<?š?øÿ 3;Tù­áó©è¬BòB¦±`îÄáDVv=T±ÀÒ•*¶»©ÿ €K¿ ÔáuïGÿ _æmoOï/ýô?Æ³ö5çÕOü_äiÏæ�þ¿ÌŠd¶¸�á� ž×ŠeŽHÜz:8eaìA{¿óê§þ/òx4ð%þc£B‰B(£�B¤q„DED\*¨  µÆ¯üú©ÿ €KüƒžÍü	™Üè÷6É§@¯q°2åZXÔŒÍ!�äsô£ØÕÿ ŸU?ð	�sÃù£ÿ �/ó5>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿Ì>×iÿ ?Vÿ ÷ú?þ*�cWþ}Tÿ À%þAÏæ�þ¿ÌC{f£-wl îgˆÌ½5F³ÑRªý)ËüƒžÏü	™Èëž5Ó¬c’	Ròø©Ë!¢€ôÞíÎæT­ÎIÚTïO
âÔ«û©Ë«ûò·I[à�ó6Ô­ðÇ[¬¥U=!¯y}•æ¿™ö¶�Þ–<úÎY&“Î‘™¤”–v=Ëç×'8íž¸«¨Ü›owø%d’ì’I$¶I"`¬¬¿áûüï«ógkb8# úû‡óöéøs¿ÐÕM®qœ{ôíîsøñùæ³{‚èjGÛçŒþ9ï‘ùƒBj côüh6q…ê;Œ�çä5¸ŸO™Ï^rŒ0Gc×žä�Ç$uö­¢fqzˆÉlu9x=ûß§âkXé÷‰œ. 	Áàž9õ<óžÜ~U²èfr×2MýÜ² =B»¨8€Žý	é“Ú·‹’êþöKKµþFL×7`d\Üô9ýüœ~L?}9Ÿó?[³6•ö_qPÝ^p~×qÏOßÍÔçý¬{g¿^ô¹ç·4¾÷þcii¢û�Ÿj¾Ïü}\tÿ žòÿ ñ}ÿ Oj9åüÏïbÓ²û�¿j½ÿ Ÿ«Ž™ÿ _.?ô>¹4sËù¥÷¿óòóŸË¸Oµ^ÿ ÏÕÏþKÿ Åþýj9ßóKO6-;/¹Ú¯Oü½\ÿ ßùø¼CéG<¿™ýìzv_rµ^ÿ ÏÕÏýÿ —ú¿=?–=ŽwüÒûßùÿ V�—Üƒí7¿óõrxÇúùø¾ø£�ÿ 4¾öv_rµ^ôûUÎ?ë¼¼ûrÝ(ç—óKï~¿/ë@Ó²û�}ª÷þ~®ý·—úáþA£�ÿ 3ûßùÿ ]NËîAö«ßùú¸î×Ëÿ Å÷ü=hç—óKÖïúè=?–?rµ^ä¥\ÿ ßùqøüßç§µïùŸÞö°´ì¾àûUîãæãþÿ Ëÿ Åý3�§aG;þi}ìz*û�}ª÷þ~®?ïü½úžþŸãG<¿™ýïüÿ ®âÓ²ûƒíW¿óõsÿ åÿ âÿ úÃÛsËù¥÷°Ó²û�¿j½ÿ Ÿ«ƒÿ måôÿ {üö£ž_Ìþ÷þcÓ²û�Ÿj½ëö«�ûÿ /ôoÔ3ùïùŸþô;/¸>Ó{ÿ ?W#cÏ—õù¹ÿ =óG<¿šOæÅ§e÷ ûUîãêãëçIøÿ ùÇz9åüÒûßùÿ Ná§e÷ ûUïüý\{~þ_§MßÏ§QG<¿š_{õþŸpÓ²û�}ª÷þ~nð"Oþ/üžzÑÏ/æ{þº�—ÜƒíW¿óõqÿ äúÿ {òïô£ž_Í.û¿ó;/¹ö«îÒ®=?×ËŽÿ íõèçÍ/½ÿ Ÿõèv_ríW¿óõqÓþ{ËíÇßà�Ã¹sËùŸÞÿ ­CNËîAö«ßùú¹ÿ ¿òóù?øQÍ/æ—Þú|õ.ËîAö«ßùù¹î×Éøÿ ãG<¿š^Z°Ó²ûƒíW¿óõsÿ åôÿ Ÿ¯ëG4¿š_{þ¿«†�—ÜƒíW¿óõqëþ¾^§°ËcÜãŠ\òþg÷¿ó�—ÜƒíW¿óõqÿ åÿ âý¿_­>wüÏï¨¬»/¹ö»ßùù¹öÞ_qýîƒóéG;þg÷¿ ÓùWÜ„ûMèÿ —«Ÿô‰¿�~£§Ø£ž]%/½ßó�—Üi¾äýªç¿h—ôÃûqøÑÏ/æ—Þÿ Ïþ ´ì¾äi½ÿ Ÿ«ƒÿ må=¹þ,~_ÊŽy4¾ö=?–?p›Þ¿j¹úåý>cþzQÏ-¹¥÷¿ó;/¹Ú¯³ÿ W?ç¼¿ü_ÓÚŽy3ûØ´ì¾ä/Ú¯çêã¦×Ë�ý®Mòþi}ïüü¼Ç§òÇîíW¿óõsÿ �ÿ ñ‡ÿ ZŽwüÒÓÍ‹NËîAö«Óÿ /W?÷þ_þ/ÐúQÏ/æ{�—ÜƒíW¿óõsÿ åþ¯ÏOå�c�ÿ 4¾÷þÕ…§e÷ ûMïüý\ž1þ¾_þ/¾(çÍ/½†�—ÜƒíW½>Õs�úï/>Ü·J9åüÒûß¯ËúÐ4ì¾äj½ÿ Ÿ«ƒÿ måÇþ…ø�hçÌþ÷þ×@Ó²û�}ª÷þ~®;Ÿõòÿ ñ}ÿ Z9åüÒõ»þºOå�ÜƒíW¹éW?÷þ\~?7ùéíG;þg÷½¬-;/¸>Õ{Ÿøù¸ÿ ¿òÿ ñLãéØQÎÿ š_{ŸÊ¾äj½ÿ Ÿ«�ûÿ /~§†?§øÑÏ/æ{ÿ ?ë¸´ì¾àûUïüý\ÿ ßùø¿þ°öÅòþi}ì4ì¾ä/Ú¯çêàÿ Ûy}?Þÿ =¨ç—ó?½ÿ ˜ôì¾ä'Ú¯zýªãþÿ ËýõŒþG;þgÿ �=NËî´Þÿ ÏÕÈÇóåý~nÏ|ÑÏ/æ“ù±iÙ}È>Õ{Ÿøú¸úùÒ~?ÅþqÞŽy4¾÷þÓ¸iÙ}È>Õ{ÿ ?Wß¿—éÓwóéÔQÏ/æ—Þý§Ü4ì¾äj½ÿ Ÿ›Ÿü“ÿ ‹ÿ 'ž´sËùŸÞÿ ®�§e÷ ûUïüý\ßù>¿Þü»ý(ç—óK¾ïüÃNËîBýªûŸô«�Oõòã¿û_ýz9ßóKïçýz�—Ü„ûUïüý\tÿ žòûq÷ø#ðîEòþg÷¿ëPÓ²û�}ª÷þ~®ïü¼þOþsKù¥÷¾Ÿ=BË²û�}ª÷þ~n{Ÿõò~?ÅøÑÏ/æ—–¬4ì¾àûUïüý\ÿ ßù}?ßçëúÑÍ/æ—Þÿ ¯êá§e÷ ûUïüý\zÿ ¯—©ì2Ø÷8â—<¿™ýïüÇ§e÷ ûUïüý\ßùø¿o×ëO�ÿ 3ûßê+.ËîBý®÷þ~nGý·—Ü{ üúQÎÿ ™ýïÈ4þU÷!>Óz?åêçßý"oä¨éÇ¶(ç—IKïwüÇ§e÷Úo¹?j¹Ç¯Ú%ý0þÜ~4sËù¥÷¿óÿ €-;/¹Úoçêàÿ ÛyOn‹—ò£ž_Í/½�Oå�Üæ÷¯Ú®~†yO˜ÿ ž”sËni}ïüÃNËîAö«ìÿ ÇÕÇOùï/ÿ ßôö£ž_Ìþö-;/¹ö«ßùú¸éŸõòãÿ Cë“G<¿š_{ÿ ?/1éü±û„ûUïüý\ÿ àD¿ü_áÿ Ö£�ÿ 4´óbÓ²û�}ªôÿ ËÕÏýÿ —ÿ ‹Çô>”sËùŸÞÇ§e÷ ûUïüý\ÿ ßù«óÓùcØçÍ/½ÿ ŸõaiÙ}È>Ó{ÿ ?W'Œ¯—ÿ ‹ïŠ9ßóKïa§e÷ ûUïOµ\ãþ»ËÏ·-ÒŽy4¾÷ëòþ´;/¹Ú¯çêàÿ Ûyqÿ ¡~ä9ßó?½ÿ ŸõÐ4ì¾äj½ÿ Ÿ«Žçý|¿ü_ÃÖŽy4½nÿ ®ƒÓùc÷ ûUîGúUÏýÿ —�Íþz{QÎÿ ™ýïkNËîµ^çþ>n?ïü¿ü_Ó8úvs¿æ—ÞÇ§ò¯¹Ú¯çêãþÿ Ëß©á�éþ4sËùŸÞÿ Ïúî-;/¸>Õ{ÿ ?W?÷þ_þ/ÿ ¬=±G<¿š_{;/¹ö«ßùú¸?öÞ_O÷¿Ïj9åüÏïæ=;/¹	ö«Þ¿j¸ÿ ¿òÿ FýAã?‘Îÿ ™ÿ àO@Ó²ûƒí7¿óõr1Æ<ù_›Ÿóß4sËù¤þlZv_rµ^çþ>®>¾tŸ�ñœw£ž_Í/½ÿ Ÿôîv_rµ^ÿ ÏÕÇ·ïåútÝüúusËù¥÷¿_é÷;/¹Ú¯çæçÿ $ÿ âÿ Éç­òþg÷¿ë iÙ}È>Õ{ÿ ?W÷þO¯÷¿.ÿ J9åüÒï»ÿ 0Ó²û�¿j¾çý*ãÓý|¸ïþ×ÿ ^ŽwüÒûßùÿ ^�§e÷!>Õ{ÿ ?W?ç¼¾Ü}þü;‘G<¿™ýïúÔ4ì¾äj½ÿ Ÿ«Ÿûÿ /?“ÿ …Òþi}ï§ÏP²ì¾äj½ÿ Ÿ›žçý|Ÿ�ñ~4sËù¥å«;/¸>Õ{ÿ ?W?÷þ_O÷ùúþ´sKù¥÷¿ëú¸iÙ}È>Õ{ÿ ?W¿ëåê{¶=Î8¥Ï/æ{ÿ 1éÙ}È>Õ{ÿ ?W÷þ_þ/ÛõúÓçÌþ÷úŠË²û�¿k½ÿ Ÿ›‘ÿ må÷Þè?>”s¿æ{ò?•}ÈO´Þ�ùz¹÷ÿ H›ùê:qíŠ9åÒRûÝÿ 1éÙ}Áö›Üóus�_´Kü·ôÿ ëæŽi37þæ…eÙ}Èš;«Âqö›ŽÜyòôôÎï®?¯sš_Í/½…—e÷°MrØ4ì§#WeÇ9È-ŒÇNžÕ3“zs?5vZK²û‘ÒY/ÌI%Tuéë‘×ß‰<V/¥ŸÈ¥±ÝX Âcû çðü½1ëŽøÅa/ëñeÄílAùqÀèOSÂ�‘ý3Y>¾Ÿðß×âhuëÀÆ}ñŒ{ç·g¯ÔŒÖ/{üÆºzš‘�Ï9ÇOËõü=….ˆ²Z@5†@ã?Ïðü§€3§õ�åŽÝ8ëéëŽ0®Ôžyëÿ ×íÓƒþªìGëý_Õ¹B>c¡8ã¦29''Æx÷­#eþd³ˆ¿„å²:þ„~}os[/Ì‡ý_×Ìån`Á#ëÛŽ8ýxïôô;'}?¯ëó%®¾¦$Ð•É ôã#õ=@÷õã¥_6ËúdZû}ß×àS0ç×¹8Çs×·zz_ÕÁÜo“Ûè;~¼g¯·ä8§q%pò~¿Ÿ=ú�ðçù§?ëúþ�ùCÈ>§ìxíëøN”|Ðr‡‘õþ\ÿ €üóB·˜¾O|þgŽž¼’3ïøsJþŸ×áý}å¼Ðy‡¼gŽÃ¿¿æ)�”AOóßÛ<uéGÍ_×â#ëÇ¿ÿ [¯è~œÒùŠÞbùõéêùÏáEýÊ ƒ#¿ùëù>=¨¿ XSõÇ#ðì;þ„{Ñ5på'=ý»s�SÏnHïÇz/è'¦}=¿/~9ôÈ9£æ.Wäúÿ §ãÛëEÂÞaä}zr=:œË·©=Ëù�”<‘ùäu÷õç§¦£æ¾ïéÿ Ã—Ì<�¯¹ÏAÓ×ðäQó_×È|¬AnO\ó�Ôp{þ¾”þá[Í‘þr?úÿ _ò)_Ïúþ¿­ÇÊÃÉéþ~½F29Áïž:pïèƒ•‹äzŸ¦{úwã·uq[ÌA¹ïÇæ?¯oÏÿ ×õý~®Âù¨ÏáÛ9þYõôëÍ/šû·y‡“Èÿ ßOn¾ùúÑóþ¿¯På'¸í�Oóùc·à|ÐXO#üÿ �×üš.¾bù=ñßÔzƒÎsú0åÈÿ 9ÿ Ÿ<úõ4¾h9Eò1ž¾�»uíþG^´þïÇü‚Áä‡8Èç±íéŽŸšù å#üŸóøãÔzqGÜ¡äsß§=>¾œ‡SGÝý_ðËæOô±ü‰ëíúqEÇÊ'“õüùïÔ‡8÷Í;ùÿ _×ôƒ”<ƒêqŽÇŽÞ¿‡ôéGÍ(y_åÏøÀÑ4+y‹ä÷ÏæxéëÉ#>ÿ ‡4¯éý~×Þ[Í‘øqëÆxì;ûþb˜ùDqô÷ÿ =ý³Ç^”|×õý~!`ò>¼{ÿ õºþ‡éÍ/˜­æ/‘�^ž œþ_Ð|¢2;ÿ ž¿—óãÚ‹ú…0\r?Ã¿èG½óWPòsßÛ·8õ<öäŽüw¢þ�`òzgÓÛò÷àãŸLƒš>bå~@`çÿ ¯ú~=¾´\-æG× ç#Ó©Àü»z“Ü¿˜ùCÉžG_^zz`Š>kîþŸü0¹|ÃÈúûœô=E5ý|‡ÊÄöäõÏ8ýG¿ëéOî¼Ðyç#ÿ ¯õÿ "•üÿ ¯ëúÜ|¬<žŸçëÔc#œùã§þˆ9X¾G§ùúg¿§~;wW¼Ä{žü~cñúöüðïý_×êì/�zŒþ³ŸåŸ_N¼Òù¯»p·˜y<�ñíôöëïŸ­?ëúõPò{ŽØôÿ ?–;~Í„ò?ÏøýÉ¢áËæ/“ßýG¨<ç?¡§óQ<�ó‘ßùóÀÏ¯SKæƒ”_#ëéÛ·^ßäuëOîüÈ,GøsŒŽp;Þ˜éù¯šPò?Éÿ ?Ž=G§}ÁÊG=úsÓëéÇøu4}ß×õÿ  \¾aäÿ AÛÈž¾ß§\|¢y?_ÏžýGøs�|Ó¿ŸõýH9CÈ>§ìxíëøN”|Ðr‡‘õþ\ÿ €üóB·˜¾O|þgŽž¼’3ïøsJþŸ×áý}å¼Ðy‡¼gŽÃ¿¿æ)�”AOóßÛ<uéGÍ_×â#ëÇ¿ÿ [¯è~œÒùŠÞbùõéêùÏáEýÊ ƒ#¿ùëù>=¨¿ XSõÇ#ðì;þ„{Ñ5på'=ý»s�SÏnHïÇz/è'¦}=¿/~9ôÈ9£æ.Wäúÿ §ãÛëEÂÞaä}zr=:œË·©=Ëù�”<‘ùäu÷õç§¦£æ¾ïéÿ Ã—Ì<�¯¹ÏAÓ×ðäQó_×È|¬AnO\ó�Ôp{þ¾”þá[Í‘þr?úÿ _ò)_Ïúþ¿­ÇÊÃÉéþ~½F29Áïž:pïèƒ•‹äzŸ¦{úwã·uq[ÌA¹ïÇæ?¯oÏÿ ×õý~®Âù¨ÏáÛ9þYõôëÍ/šû·y‡“Èÿ ßOn¾ùúÑóþ¿¯På'¸í�Oóùc·à|ÐXO#üÿ �×üš.¾bù=ñßÔzƒÎsú0åÈÿ 9ÿ Ÿ<úõ4¾h9Eò1ž¾�¿ßäuëOîþ¾B°¢=ýqÛ§lÿ †8æ–›Ü,M=>SÇqê{g¿áÔöäÔ7®ã·ç×úê�‹h1Žr03Øñø{’F:ñÅKe%²:›>êãžçÛñ�¯5›zzêRß¡ÚXE÷Hÿ #ý:õïŽ+½¯BâŽÊÉO†9ÏN}¿Ã˜‹i–¿¯øIÚ1ÛCéÇ§¡ã�­C½ÿ ¦RZ£F>y<c<ÔŽ¥AD´ ÖÏnóß¿þ”NQ‘íŒõ?�òú~UHF=ÂpG?�Ïçù~^µK©,åïaÎp3Ÿç�Nz�ßëŽ9Ò,—ý_�ÈÞÚ“¸sÏ9öÎAüO§æ;êž„Û¿õýZÕÍ¦N3‚9þCŒg¹>�ëTþÿ ëäEŒ‰lÛ¯0×ßœttéÅówþ½IKäV6¿ìàl××§nO]Hö?ö:qÓ¹ÿ õóÛ·Bè.ÿ ®Áö>ÛO·œž{zúþ=·o¼5ì|Ÿ“Óÿ ×Î?Î?ãÔQf»ÓéýONüõ?Z/ý\Z‡ØÏ]„xÇqÏoOñü¯/¼z‰ö>¸^Øé�òÿ \ÑMÃ_ëúØ_±öÙÉý>¿�ó]wVDû?ƒ¦;gß¹î?®	¢ëúbÔ_±‘Ÿ“€1Ó×ô÷üÅ^C×úþ¼ÀY“ü>˜×}ý0h¿õ¨ký_ðáö<÷8ÿ 'Óß·4_ÓïÈ>Æ»ô${{ŽŸ�ÓŒÑußña¨Ÿc#?&;ŒŒý1Ç¯|tÏ^åÿ ¯À5±ÿ ²q×$uÿ õþ�³Eúi÷† ,ÿ ÙíÁÇ·ô>Ý{w¢ÿ ÕÃPû_“èqÁöôÏ^‡¨÷¢þža¨}Œ�àõýûúžžœQuå÷ýÁ¯aE™?ÁÇNüôðôíÛ¨à¿§ßý_ ×°CÏÉØŸ^çž}}ñœõ.¾×ü Ô>ÆGð�±ç¯±<cëž}E_ÕÃQ>ÇþÏáƒõþ_Óœf�ý>ð×Ð>ÉÀùOóÇóúŠWßo¿úÔ.ÿ ®âý�?ÃôÈì?Ï®8úš.¿¯ëúù‹Pûû<uàr8ôíøýzt.¿áÃPûÇÜ÷é�éß¨äzb‹¯éÿ —£¡ö3ýÂ=±œ}:œÓ=_Ó½„ûþçOlãÛñéü±Ö‹¯é�QEŸ_—ÏQÓÛ¶3îph¿ j/ØÎÉžqÓŸ¦O9ÿ 8Æ /ýj-F‹>9N3ÉÁê3×®?ÏSÅôûÃQ~Æ¸OÔqÇ\~_¦0:Ñuåý~ƒÔ>ÇþÏ ’Ï=}}xú—BÔ>ÇÛgN:c¹ÏáÇ_§n…ÿ «�_ëúýì}¶Ÿn	9<öõõüz
/nßxµì|Ÿ“Óÿ ×Î?Î?ãÔQf»ÓéýONüõ?Z/ý\Z‡ØÏ]„xÇqÏoOñü¯/¼z‰ö>¸^Øé�òÿ \ÑMÃ_ëúØ_±öÙÉý>¿�ó]wVDû?ƒ¦;gß¹î?®	¢ëúbÔ_±‘Ÿ“€1Ó×ô÷üÅ^C×úþ¼ÀY“ü>˜×}ý0h¿õ¨ký_ðáö<÷8ÿ 'Óß·4_ÓïÈ>Æ»ô${{ŽŸ�ÓŒÑußña¨Ÿc#?&;ŒŒý1Ç¯|tÏ^åÿ ¯À5±ÿ ²q×$uÿ õþ�³Eúi÷† ,ÿ ÙíÁÇ·ô>Ý{w¢ÿ ÕÃPû_“èqÁöôÏ^‡¨÷¢þža¨}Œ�àõýûúžžœQuå÷ýÁ¯aE™?ÁÇNüôðôíÛ¨à¿§ßý_ ×°CÏÉØŸ^çž}}ñœõ.¾×ü Ô>ÆGð�±ç¯±<cëž}E_ÕÃQ>ÇþÏáƒõþ_Óœf�ý>ð×Ð>ÉÀùOóÇóúŠWßo¿úÔ.ÿ ®âý�?ÃôÈì?Ï®8úš.¿¯ëúù‹Pûû<uàr8ôíøýzt.¿áÃPûÇÜ÷é�éß¨äzb‹¯éÿ —£¡ö3ýÂ=±œ}:œÓ=_Ó½„ûþçOlãÛñéü±Ö‹¯é�QEŸ_—ÏQÓÛ¶3îph¿ j/ØÎÉžqÓŸ¦O9ÿ 8Æ /ýj-F‹>9N3ÉÁê3×®?ÏSÅôûÃQ~Æ¸OÔqÇ\~_¦0:Ñuåý~ƒÔ>ÇþÏ ’Ï=}}xú—BÔ>ÇÛgN:c¹ÏáÇ_§n…ÿ «�_ëúýì}¶Ÿn	9<öõõüz
/nßxµì|Ÿ“Óÿ ×Î?Î?ãÔQf»ÓéýONüõ?Z/ý\Z‡ØÏ]„xÇqÏoOñü¯/¼z‰ö>¸^Øé�òÿ \ÑMÃ_ëúØ_±öÙÉý>¿�ó]wVDû?ƒ¦;gß¹î?®	¢ëúbÔ_±‘Ÿ“€1Ó×ô÷üÅ^C×úþ¼ÀY“ü>˜×}ý0h¿õ¨ký_ðáö<÷8ÿ 'Óß·4_ÓïÈ>Æ»ô${{ŽŸ�ÓŒÑußña¨Ÿc#?&;ŒŒý1Ç¯|tÏ^åÿ ¯À5±ÿ ²q×$uÿ õþ�³Eúi÷† ,ÿ ÙíÁÇ·ô>Ý{w¢ÿ ÕÃPû_“èqÁöôÏ^‡¨÷¢þža¨}Œ�àõýûúžžœQuå÷ýÁ¯aE™?ÁÇNüôðôíÛ¨à¿§ßý_ ×°CÏÉØŸ^çž}}ñœõ.¾×ü Ô>ÆGð�±ç¯±<cëž}E_ÕÃQ>ÇþÏáƒõþ_Óœf�ý>ð×Ð>ÉÀùOóÇóúŠWßo¿úÔ.ÿ ®âý�?ÃôÈì?Ï®8úš.¿¯ëúù‹Pûû<uàr8ôíøýzt.¿áÃPûÇÜ÷é�éß¨äzb‹¯éÿ —£¡ö3ýÂ=±œ}:œÓ=_Ó½„ûþçOlãÛñéü±Ö‹¯é�QEŸ_—ÏQÓÛ¶3îph¿ j/Øø9^þœý2psþzt/ýj-¯ëúü‹AÁ(yöãŽž½:sþî¿«†¿æ‹Z1Æ ~€Žzõÿ ëRæíýoýy_¦Ÿ×ùš¶öx<|ÍÛ¹ç‘Œdtúcë.EÛî:+S¸9Ç8	ÆÓž=+6ú¿ëÐiiýký~§]eÝÎsÆ~™çÔ€xü‰àÖRw.+±ÔÚ'ùùíýzuö“*ÆìÐç¿oÃ�\¿âxÇÚåôïÛüôãòt¤Pú@!ÏPzsßúsþz ®ëÔtç©ôÏRsüúS@gÏ#éÇOóÏ®1žEWõý_æOõýy—6ù�#¯ëøóùtíU¦&–ÝÎvêÐ±$øÏL÷àž‡Ô9ô6�½IfÅ†s•õ÷Ï¿áŒddu÷­¿¯ò%¯ëúþ‘–úpËGlŽýÏlãÛ¯«æ&ß×õÿ ò+¶žqŽ¾œ^ý8ÿ =EÝß×õý~­yö=útÀôã€ù÷äæ¼Ÿõýwû?Ûÿ ïÓ‘ŸonâŸ0ìÙý½±÷{zôçóéïK˜,Ùþ¹Ï°<có¸úÑÍýH,Àéç§óOÃÔcŽ=hæþ­ÿ  V`4ò}qßÜÿ œg¸î{ß×õ¸íýÃ‡Ø	O¿Üÿ Ž:}9ÉÍå [úþ˜gœžO^>_¨8àãÛŸÎŽ`°ŸÙçßé·§±ÏQÇãŽß€X_ìóý8==Ïs„:yïïü?^ÏQ�­>oëú_×ä¬N8þ(�øØRæþµÿ /ëæ; ÓÈçŸûäqÓ úôÁ>”ù¼¿¯¸Vû<ñê;ãÛü08äñÎO7õaØ?³ÿ zc¯ÿ «ëÔõÇ¹¿«_Ò	ýžy89íëé×¶yëÖŸ0rŠ,¸íÈÏçÓ’á�ZN_Õ¿à˜gžF1�ösŽÇÜóùú
|ßÖ¡a?³ÎxôôÏøzÆH=8Ž`åþ¿¦Ùý1øezz~¼ž1ÛŽë˜,ÅþÏ=3Àé•éÿ ëïÇlw9¿¯È,ÄþÏÏáí�Ð�O^qÓõ£›úó1NŸžÇ·ðçúþy=£›úþ¿¯¼,O'ºGNƒ�¯_ÀõÅ>`°gžœ“×¦;qÛ¿ô¹¿«ƒìõôãé€CÈãñ£˜-ê` sž‡�?\{ž¸§Ì¿×õÿ Oìü~^�²=É9¨æþ¿°¿Ùçñé�õÿ õ½qK›úþ—õ÷…„þÏÎ3Û¾Þ¾Øÿ $Œ0)ó(gûóÐwÿ ëööëÏ4s…þÏ <ç�¿çŽœ{úRæþµöyç¿9å}½=8Ç¯õ9¿ ·¨gûã½úr3ïííÜSæöol}ÞÞ½9üú{Òæö®sìüÇ®>´s_Ò0:yéüÆGÓðõã�Z9¿«À˜<Ÿ\wÂ÷?çî;žÇ7õýn;_ðáöGSïÇ·?ãŽŸNrsyhþ¿¦Ùç'“×�—ê88öçó£˜,'öy÷ÆzméìsÔqøãƒG7àû<ÿ NOsÅÁaž{ûÿ ×ŸóÔcëO›úþ—õù+ ÓŽ?ŸÊãþö¹¿­ËúùŽÀ4ò9çþùtÀ>½0GO¥>o/ëî…þÏ<zŽøöÿ 9<s“ÁÍýXvìÿ Çž˜ëÿ êúõ=qÅ.oêß×ô‚ÂgžF{zúuížzõ§Ì¢‹î;r3ùôä�øcÖ“—õoøfÙç‘Œcýœã±Ç·<þ~‚Ÿ7õ¨XOìóž==3þ€ñ’N£˜9¯é‡öL~^žŸ¯'Œvãºæ1³ÏLð:eF:úûñÛÎoëò1?³óø{`t#Ó×œtýhæþ¼ÂÌS§ç±íü9þ¿žOAÆhæþ¿¯ëïÓÉÆGî‘Ó ãë×ð=qO˜,Ùç§$õéŽÜvïÇ½.oêÁ`ûý}8ú`Ðò8ühæz‡Øç¡ä×ç®)ó/õýÁû?—§l�rNGj9¿¯Ä,/öyüzdýýG¯\Ræþ¿¥ý}áa?³óŒöï·¯¶?É#Œ
|ÁÊÙþÇ<ôÿ úý½ºóÍÁa³Àè9çoùã§þ”¹¿­BÁýžyïÎy_oON1ëýNoÀ-êÙþßøï~œŒûû{wù‚ÁýŸÛÛw·¯AÎ>žô¹‚ÁýŸëœûÆ?1ë�­ß×ô‚Ìžz1‘ôü=F8ãÖŽoêßðfO'×ð½ÏùÆ{Žç±Íý[Žß×ü8}€‘ÔûñíÏøã§ÓœœÞZ¿¯é‡öyÉäõãåúƒŽ=¹üèæ	ýž}ñž›z{õ~8àÑÍø…þÏ?Ó�ƒÓÜñG0XC§žþÿ ÃõçüõúÓæþ¿¥ý~JÀ4ã�çò��øÿ �=….oë_òþ¾c°<Žyÿ ¾G0¯LÓéO›Ëúû…a³Ï£¾=¿ÃŽOäðsVƒû?ñç¦:ÿ ú¾½O\qK›ú·õý °ŸÙç‘ƒƒžÞ¾�{gž½ió(¢ÀûŽÜŒþ}9 ~õ¤åý[þ Y‡öyäcÿ g8ìqíÏ?Ÿ §Íýjû<ç�OLÿ ‡ <dƒÓ€hæ_ëúaýŸÓ†W§§ëÉã¸î¹‚Ì_ìóÓ<™QŽŸþ¾üvÇs›úü‚ÌOìüþØôõç?Z9¿¯0³éùì{¯ç“Ðqš9¿¯ëúûÂÀtòq‘Çû¤tè8úõü\SæöyéÉ=zc·»ñïK›ú°X>À_N>˜ t<Ž?9‚Þ¡ö9èyõÁÇ¹ëŠ|ÁËý_ðDþÏÇåéÛ#Ü“‘ÚŽoëñýžN=zg�ëÿ êê})s_×õ XžsŽ¸ã…Ç\nx<úóG7õý_x[BtÓ³Õxþ¡ž„zœ{œâ—?Ÿõýw_×cF¸Â 2ÿ õ}òxÏZ—"¬ÿ ¯ÖÆÕ½‘R8ÀÏ¯L÷ã$ûrxÅChv:+[lùœ?"¾=zT7©KúüËxð9þÿ !íï‘PÙHÔ�p3�nNý¿N•,×õý™eztÇ^ùü?ŸéïR1Ô ‡Ó×ƒô ÙsÛ#©êN}89ôôÀï@Ý3�:~>Ã<~¿× U/¼F|±gŽ¿Ë¯}{c?�4Åoëúþ™™5 lþ?¨<víøöèqUÍóüÿ Q[úFt–@îŒ“îzc wôéŒŠ´Åb£Ø``ú}�r–{´ù»ÿ _ð>bh„Øãh?NÞÝ>�{ý89¿Ë_ëú¸Xi°ò‡`öãþ¾ÝÆü÷?³‡÷O=¾^^ŸÌx¥0ìàAùHã¸‡?†};qÎqEüÿ §ú€f�îgzg¹ÈëíéÐûQpìáœl8ü:õ÷úŽøÅ>o0ìáýÃÓÛÓ�ÔûŽzŠ/çý~€'örà|�Ùñù_o^i\:pþçî�ÏRG¶yõ<ã¹¢ú€g/÷^q·¦{ôõàŸËù€gî{�§óü=GNø¢àN_îg>Ã>ÝOãùôïý_ ìáýÏ¯¹ç^8Æ}¹¥péÀ¹�|yàúûzQ0ýœ¿Ü' ãÓúdcéNþ`'ör÷Cøcž¨ç¿¯aëEüÄ Ó”õC�žÀÿ 3ü¸íïEüÆ/örŒþìþ�:~|zþ¥Íæýœ½�ƒœc�nN:qœ}:ôË¿˜öpÏÝõê;~]?CŽ˜¹½@?³G÷}ûn�séÏ·½ó j÷NŸLúqéÀï‘ôì\û9Hû¹ã8 wÏÿ «^h¿˜öwsëÓëý{þ”_úþ¿@ìåþïOaß?¯^y<qEÀ_ìá×aÏ# àŽ8é×�ÿ _4sXþÎþYœgØzôÏ§ çŸÖ�À?³�þù˜<ð;ò;š.;ÀOÓü0O··¿JW³�ÏÈzã±Çå×·õÍ;ô þÎÜ’ûãúûr0)_ÌþÎŒ/Ó¡Ï<ŒñÇ×ùQ}ÿ ¯@éÃû½0:�åíëž ö§0ìåþçLcç±ÇõÇ=¹Îh¿Ÿô€?³‡÷O=¾^^ŸÌx¥0ìàAùHã¸‡?†};qÎqEüÿ §ú€f�îgzg¹ÈëíéÐûQpìáœl8ü:õ÷úŽøÅ>o0ìáýÃÓÛÓ�ÔûŽzŠ/çý~€'örà|�Ùñù_o^i\:pþçî�ÏRG¶yõ<ã¹¢ú€g/÷^q·¦{ôõàŸËù€gî{�§óü=GNø¢àN_îg>Ã>ÝOãùôïý_ ìáýÏ¯¹ç^8Æ}¹¥péÀ¹�|yàúûzQ0ýœ¿Ü' ãÓúdcéNþ`'ör÷Cøcž¨ç¿¯aëEüÄ Ó”õC�žÀÿ 3ü¸íïEüÆ/örŒþìþ�:~|zþ¥Íæýœ½�ƒœc�nN:qœ}:ôË¿˜öpÏÝõê;~]?CŽ˜¹½@?³G÷}ûn�séÏ·½ó j÷NŸLúqéÀï‘ôì\û9Hû¹ã8 wÏÿ «^h¿˜öwsëÓëý{þ”_úþ¿@ìåþïOaß?¯^y<qEÀ_ìá×aÏ# àŽ8é×�ÿ _4sXþÎþYœgØzôÏ§ çŸÖ�À?³�þù˜<ð;ò;š.;ÀOÓü0O··¿JW³�ÏÈzã±Çå×·õÍ;ô þÎÜ’ûãúûr0)_ÌþÎŒ/Ó¡Ï<ŒñÇ×ùQ}ÿ ¯@éÃû½0:�åíëž ö§0ìåþçLcç±ÇõÇ=¹Îh¿Ÿô€?³‡÷O=¾^^ŸÌx¥0ìàAùHã¸‡?†};qÎqEüÿ §ú€f�îgzg¹ÈëíéÐûQpìáœl8ü:õ÷úŽøÅ>o0ìáýÃÓÛÓ�ÔûŽzŠ/çý~€'örà|�Ùñù_o^i\:pþçî�ÏRG¶yõ<ã¹¢ú€g/÷^q·¦{ôõàŸËù€gî{�§óü=GNø¢àN_îg>Ã>ÝOãùôïý_ ìáýÏ¯¹ç^8Æ}¹¥péÀ¹�|yàúûzQ0ýœ¿Ü' ãÓúdcéNþ`'ör÷Cøcž¨ç¿¯aëEüÄ Ó”õC�žÀÿ 3ü¸íïEüÆ/örŒþìþ�:~|zþ¥Íæýœ½�ƒœc�nN:qœ}:ôË¿˜öpÏÝõê;~]?CŽ˜¹½@?³G÷}ûn�séÏ·½ó j÷NŸLúqéÀï‘ôì\û9Hû¹ã8 wÏÿ «^h¿˜öwsëÓëý{þ”_úþ¿@ìåþïOaß?¯^y<qEÀ_ìá×aÏ# àŽ8é×�ÿ _4sXþÎþYœgØzôÏ§ çŸÖ�À?³�þù˜<ð;ò;š.;ÀOÓü0O··¿JWFž?¸zãOÃžÇ¨¢þ`8Xãø1Øò:gŒü£×ùg­þ¿¯@$[œœuÉüÆäb‡ ·BÔvc¦8ã‚1‘ýpOsëõ)Èvþ¿CF+Qéž¿Ÿ¿OðééŠ›Žß×õý~f¤Pc@Æ1ŸËù}1ÁÀê*[_Ð¿mÇ\ŸÔþ·_NyÔï÷Áq§¡ãýN;wâ�ÒP@##?ý|ŸóúdÐ[N cðÎqÇ_éž?Oúþ¿àˆ‰£Èÿ 'üyàd~œÐ<9ç�Ÿ_N¾àžŸ†)¦×õý~¥WƒØÃõï×ñôªìFÔzvõýzr{�¥¸ŸAŸf sÁýzrsœž�qýùÿ ]‚ßð~á>Ì¹~ŸžGJ.‰b}˜zñüsÎ8çó÷|È?®ŸÕÅû(ì1ÇO¨çÐúÒæAýldQž1Û�ÓŽLúã¯==Î`þ¿­ƒì s�Ðé×ÐŸÎŽo0ùÿ _×O¼>Ì:cÔtô>çòüúQÌƒæ!µ\tôöíÿ ëãüN`²ïø˜¿eƒ#ØŒÛðçñæŽd?À>Ê½@Çn˜üþ£>žùîsÌ>Ê¸û½½`:öôãœôëÅ>mC^ýƒì£Ó>™ôÎOCéÒ—2ëúý5²�îý8ÏQŽ};r?9¢è>×ÞeÔ~^ŸÏñÇ>½hæVþ¿«ˆmG§¿OQýôì]Ì_³AùqÇùãéO™Ïúþ¿­ ZŒò£¯@;þ¹ÏOoj\ÀýCì«œmÉÏ§§_ÄsŠ|Ãù‰öeôý×ùõ©]
Öì«éÇù÷'œþsÌ>Ê¾ƒ°éïøž½ù£™ }”zuôíÓ?†sôúSæóŸà'Ù†}¨è9íÿ êS˜ Z¨ê>œtíþ�+‡Ì_²©íøàÃóã×<þT]õ°Ÿe�Áû¿áÎ:sôÇj|Ãù‡ÙG úã¶Èüé]_²¯÷xôÉÓòÿ ”s þ¶ÿ ‚eÝ�?,óéÛÿ ­G2õý^aöQÓë�þ=¿Ïj9…ó²©Ç ÿ ÀG=qŸÏÓ=³G0þaöQœã‡LôÏ¡ü¿�£˜_?Ãúþ¼ƒì t½8<ŸÇÿ #œœÀ½Cì£#?ËõÏoóÅÈû0ôãøçœqÏçîù�]?«‹öQØcŽ0>ŸQÏ¡õ¥ÌƒúØ>È£<c·§™õÇ^z{œÁý[Ù@ç Ó¯¡?�Þaóþ¿®Ÿx}˜tÇ¨éè}Ïåùô£™ÌCj¸è3éíÛÿ ×ÇøœÁeßðÿ 1~Ê=G°'·áÏãÍÈ>€}•z�ŽÝ1ùýF}=óÜæ˜}•q÷{zÀuíéÇ9é×Š|Ú†½ûÙG¦0}3éœþž‡Ó¥.d×õújeÝúqž£úvä~sEÐ|ÿ ¯¼>Ê;¨ü½?ŸãŽ}zÑÌþ­ýWÚ�O~žþ£ú9éØº˜¿fƒòã�óÇÒŸ2ŸõýZ µåG^€v?ýsžžÞÔ¹�ú‡ÙW8Û“ŸON¿ˆçù‡óìËéú¯òÿ ëRº¬/ÙWÓ�óîO9ü(æ˜}•}aÓßñ={ò1G2 û(ôëè3Û¦çéô§Íæ?ÀO³úP1ÐsÛÿ Ô>§0 µQÔ}8éÛüÿ :W˜¿eSÛñÀ‡çÇ®yü¨ºëa>Ê=;ƒ÷ÃœtçéŽÔù‡ó²�AõÇlÿ ‘ùÒº¿e_îð9é’8§åþ=(æAýmÿ >Ê?º=:~YçÓ·ÿ ZŽd?ëúþ¼Ãì£¦×ü{žÔsæeSŽÿ €Žzã?Ÿ¦{fŽaüÃì£9Æ?™éŸCù!G0¾‡õýyÙ@è;zpy?Ž1þG99�z‡ÙFF—ëžßçŠ9�	öaè?ÇñÏ8ãŸÏÝó þºWì£°Ç`}>£ŸCëK™õ°}‘FxÇnN83ëŽ¼ô÷9ƒúþ¶²�Î?@§_B:9¼Ãçý]>ðû0é�QÓÐûŸËóéG2˜†ÕqÐgÓÛ·ÿ ¯�ñ9‚Ë¿áþbý”z�`0OoÃŸÇš9�|ÿ  û*õºcóúŒú{ç¹Ì0û*ãîöô=€ëÛÓŽsÓ¯ùµ{ö²�L`úgÓ9ý=§J\È?¯ëôÔ>Ê?»ôã=F9ôíÈü8æ‹ ùÿ _x}”wQùz?Çúõ£˜-ý[úþ®!µžý=ýGôsÓ±t1~Ì=åÇç�¥>d?ëúþ´j3ÊŽ½ ìúç==½©sõ²®q·'>ž�Î)óæ'Ù—Óô_åÿ Ö¥t+X_²¯§çÜžsøQÌ0û*úÃ§¿âz÷äbŽdöQé×Ðg·LþÏÓéO›Ì>€Ÿfô> c ç·ÿ ¨}N`j£¨úqÓ·ùþt®1~Ê§·ã€;Ï�\óùQtÖÂ}”zwîÿ ‡8éÏÓ©óæeƒëŽÙÿ #ó¥t!~Ê¿ÝàsÓ$pOËüzQÌƒúÛþ}”tztü³Ï§oþµÈ×õýy‡ÙW¦×¿Ôöÿ =¨æ}™ONƒØgõíýqÚ‹ù_×r­aE¯<ø}{žÝ°AëEÂÚ­¶qòôöÐ~¾ô¯ÿ ýyü‚Ú}ß×ô‹ qíøè_‡qJãþµÿ ‡Ð°±ôã¯#ƒüÎ>�Iæ‹ùy`(9ãéÇN§�Ôàö4†J3úÿ úÿ #ÇéÖ�@  PŸz iûéØc1Ÿ¯æ 7gÿ _§_Lúg¯OA“O`³’{ƒÐéëÔóùöÏZ@0ÄÏóÓ=ú~”ÿ ¯˜	åŽ>SÓ°\ò=úúãðÜ+åû®çÔŽ¾¼š.1<®z_åôçë×œæ+.Áå{?ÙÆz~œÿ ž”}ß×@²/¶¡ê8Ï?ýsýzd×Ëð.ÁåûOºsŽžŸ×·cîûÂÈ<¯c×?wðôÿ ==èþ¿áÂÈ<¿L�C�ó×§j5òþ¿¯é…—`ÙÏ~0:Þß Îž¾@(ŒÌGÐôöãž?È¥¯—à]ƒËã¡ü³ÏåëéøÐ@#ç>�8'�oñ?•…�y~Íùõ¿Ïz5òüÈO/Žs×Ðv}}3Ó¨ãœÿ ^ad^:†'¯Aïõ9ãê~™£PÐ<¾O\º{g¾9Ç=Ó½ùz�ådô8ö\þGúQª òþ¤ý=½z~]¨þ¿¯êá y_QîGÓ¾=ÿ ÏJ>ïëúôÔ,ƒË==½ÿ §>¿…ÿ _×õ¸ÃËÎx>½×ðþ§§õòþ´ò‚ˆ‡¡8ö¯½ÿ ,Zÿ _ÕÆXÿ kLòüsÇ~´~‚²,ÇŽýºúŽÿ çèký_ˆYvËíƒÔqî~¿Òž¾[\,ƒÊ‡òÿ ë}?É¥÷�y^ÇþùÁôç¿Ö�|‚È<¿¯à8þ½ù=ºúz�ycß×§Aýxî8þ¥˜h_¶3ÇAÔúÏ±žÔ_×õèå{ËÓÛN{þ4ký0Ð_+9àŒc?(ïŸ ?‡¡çÐ×È,»—ìß—§~Ï9}Ã/¯ëÁç××ñ4y_×õØò¹è}}ÿ —ÓŸ¯^p˜¬»•ìxÿ géúsþzQ÷]È<¾Øn‡¨ã<ÿ õÏõé“_/À,»—ì}>è=Î:z^Ý�»ï ò½�\ýßÃÓüô÷£úÿ ‡ òý2=?Ï^�¨×Ëúþ¿¦]ƒg=øÀè;{~€:zù ¢0{1CÓÛŽxÿ "–¾_€Yv/Ž‡òÏ?—¯§ã@Y Œgœútàž=¿ÄþTjAåû7åÿ Öÿ =è×Ëð!<¾9Ï_AØqõôÏN£Žpkýy…�yxêž½¿Ôç�©úf�C@òù=qþéížøçôNôkåè•“ÐãÙsùéF¨,ƒËú“ôöôéùv£úþ¿«†�å}G¹Nø÷ÿ =(û¿¯ëÓP²,tôö÷ü>œúþký_Öã/9àúô_ÃúžœS×ËúÓÈZ
"„ãØ~¼v÷ü°ikýWycý¬}3Éü;ñÏúÑú
È<°;;öëê;ÿ Ÿ¡¯õý~!eØO/¶QÇ¹úÿ Jzùmp²(zËÿ ­ôÿ &—ÜAå{ûçÓžÿ Z5ò òþ¿€ãú÷äöëèpyèAå�^�õã¸ãú–a y~ØÏQÿ ë<vÆ{Qý_× •ì/Ol}9ïøÑ¯ôÃA|¬ç‚1Œü£¾~€þ‡ŸC_ ²ì_³~^�ùÿ <ä`Q÷<¾¼¯Ÿ__ÄÑåý_×`Êç¡õ÷þ_N~½yÁþb²ìW±ãýœg§éÏùéGÝýt òûaº£Œóÿ ×?×¦M|¿ ²ì_±ôû ÷8ééý{v>ï¼,ƒÊö=s÷OóÓÞ�ëþ,ƒËôÈô8ÿ =zv£_/ëúþ˜Yvœ÷ã ííúüéëäˆÁìÄ}On9ãüŠZù~eØ<¾:Ë<þ^¾Ÿ�d1žséÓ‚xöÿ ùQ¨Y—ìß—ÿ [ü÷£_/À,„òøç=}aÇ×Ó=:Ž9Á¯õæAåã¨bzôÿ Sž>§éš5ËäõÇû§¶{ãœsÐ};Ñ¯— hVOC�eÏä¥ ²/êOÓÛÐg§åÚ�ëúþ®•õä};ãßüô£îþ¿¯MBÈ<±ÓÓÛßðúsëøQ¯õý[Œ<¼çƒëÐ}êzqO_/ëO!h(ˆz�aúñÛßòÁ¥¯õý\aå�ö±ôÏ'ðïÇ<wëGè+ òÀìxïÛ¯¨ïþ~†¿×õø…—a<¾Ø=Gçëý)ëåµÂÈ<¡è/þ·Óüš_pY•ìïœN{ýh×È,ƒËúþ�ëß“Û¯¡Áç Y–=ýzt×Žã�êY†�åûc<tGÿ ¬ñÛíGõý^€/”?»ÎQ×z,g©¢ìËP3ŸÃüÿ �¥;ü€x�¸ÏSžŸN‡úý9\Ù‘Ïpyë�Ã×·~rqBml1ÁxýúýóëëÞ�Çôã·æQíé@ €
 (  €
 (01ŽÔ `zuë@	Ð�ëŸÐŸéŠ u  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ !ÎG'“íè}¨q@  P@  P ÿÙPK     o‰U]ÜÏ |  |  "  admin/images/default-user-icon.pngnu „[µü¤        ‰PNG

   IHDR         ;0®¢  ³iTXtXML:com.adobe.xmp     <?xpacket begin="ï»¿" id="W5M0MpCehiHzreSzNTczkc9d"?>
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 5.5.0">
 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
  <rdf:Description rdf:about=""
    xmlns:exif="http://ns.adobe.com/exif/1.0/"
    xmlns:tiff="http://ns.adobe.com/tiff/1.0/"
    xmlns:photoshop="http://ns.adobe.com/photoshop/1.0/"
    xmlns:xmp="http://ns.adobe.com/xap/1.0/"
    xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/"
    xmlns:stEvt="http://ns.adobe.com/xap/1.0/sType/ResourceEvent#"
   exif:PixelXDimension="30"
   exif:PixelYDimension="30"
   exif:ColorSpace="1"
   tiff:ImageWidth="30"
   tiff:ImageLength="30"
   tiff:ResolutionUnit="2"
   tiff:XResolution="96/1"
   tiff:YResolution="96/1"
   photoshop:ColorMode="3"
   photoshop:ICCProfile="sRGB IEC61966-2.1"
   xmp:ModifyDate="2025-01-08T14:31:46-05:00"
   xmp:MetadataDate="2025-01-08T14:31:46-05:00">
   <xmpMM:History>
    <rdf:Seq>
     <rdf:li
      stEvt:action="produced"
      stEvt:softwareAgent="Affinity Designer 1.10.8"
      stEvt:when="2025-01-08T14:31:46-05:00"/>
    </rdf:Seq>
   </xmpMM:History>
  </rdf:Description>
 </rdf:RDF>
</x:xmpmeta>
<?xpacket end="r"?>�þG  �iCCPsRGB IEC61966-2.1  (‘u‘ËKBA‡¿´HÊ0ÈE‹ÕJÃDm‚”° "Ì «�^_�Úå^%¤mÐV(ˆÚôZÔ_PÛ uE­k[Ô¦äv®
FäæÌ7¿9ç0s,¡´’Ñ½�Éæ´`ÀçZ/¹š_iÀFN†#Š®NÌÍÍP×>ï%ZìÖcÖª÷¯µÆâº6áqEÕrÂSÂ3ë9Õäa§’ŠÄ„Ï„Ýš\PøÎÔ£~19Yáo“µPÐ–vaWòG±’Ò2Âòrz2é¼R½�ù{<»0/k·Ì.t‚ðábšIüŒ0À˜ø<Ò/;êä{Ëù³¬I®"^¥€Æ*IRäp‹š—êqY¢Çe¤)˜ýÿÛW=14X©n÷AÓ³a¼÷Bó6”Š†ñud¥c°>Áe¶–¿v£¢kZÏ86áüª¦Ewáb:Õˆ)KV™–DÞN¡-7Ð²\éYõœ“mÈW]ÃÞ>ôI¼cåZ'gà…{ý   	pHYs  Ä  Ä•+  âIDATH‰¥—½ŽWÇ÷Ü¹3ãõz0-`�XiDM“(ï€%¯�"AJš¤Œ¨)$‘¢¤¯@±"O@AR!šÐìj×b%0ÈŒ=sïMá¹—ñâÝ|É²gæÎùŸó?ŸV÷ïßç$QJá½×J©wEäšsîjÓ4ç�óZk¬µû"²¯”úÝ{ÿ«Öú�ˆXk-MÓ µ^¯÷o€sùÔZû™sn$"h­QJà½G)…R
çÖZ¬µ‡J©Ÿ´Ö·E¤rÎýkà÷�o�sc­5"‚sŽ¦iðÞ#"ˆH¼VJ‘$	"‚÷ïýžsî†ˆì¬S.ÇÜ»ÜÆ-ÕXkñÞ“¦)½^�$IpÎ±±±A–e‘Ò`¬µ¾Óêz'Yúða¤¤¥T¢”Bk�1†ªªâ™@y7ÀÀ6pˆ¼þª$ÄÉƒ1†,ËÈócÓé”ÅbÁ|>§iBxï©ëš$I >þn®þ µn•’$a>ŸcŒakk‹ñxL–e‘V¥óùœÉdÂÁÁUUá½_—Í_ ;ð&¹rà7`|ôt]×EÁx<æÜ¹s‘çI’P×5Æ &“	»»»Ìf3€˜hÙÞªôO×�†—···9{ö,°Œ³ˆ
#(ÀéÓ§)Ë2²q”ãX&“>[
P½^/R-$Q·N“$!ÏsN�:…Èº‚às@ð.0:îÔp8Œ1íý®Ó4e8®}ÞÊxG€kÇ�äyÚæ
uAið,Ô:@¯×;I%À5®žt" cý={U€ó'�¨ëú-Å@ô>|+¥¢÷óù|]Fwåüß¿xñb¼«l�bçÏŸ??	4Ÿ(Óé”ªªÞ‘•v
ËR«ªŠ—/_WNQ¤�§+ÔÊ¬µ,vwwyýú5@l‡]#‹°¤ûéÓ§Ìf3”R±ÆC:FîK’$ûu]ãœCkGŸˆ`Œ!MS&“	Ož<a:�®x§”ÂZKš¦Ìf3?~Ì³gÏØØØÀÃ«W¯ â¬îÔü¾ˆÈ££� XÖ4óùœ<Ïéõzq4ºt†÷ó<�”‡Rì²Óê$Î¹{Æ”RqU	³ÖZK¿ß§,K®\¹Â`0ˆ Aah�½^�²,)Ë’<Ïiš&>†º½÷÷kíƒ4M�s£°Y„­b4qùòeƒÁ
Hh—Ýá¯µFk—‚½½=È²,n,-è¡sî¡ Ö9÷s7qš¦¡ßï³½½AÍ!ùŽkÎ9†Ã!—.]¢(ŠŽ`¬÷þ'ÀJKñ/J©½@w¿ßçÂ…lnn®x×‘Ø"×Õöææ&eYFZð=¥Ôí–zÁ{_i­o„9{æÌ¶¶¶"@ ?
Ê.ôòÀZ¸7ã~ÖÊ¥T%"ˆsŽ4M©ëzG)õC–e\¼xqÅ»®·ë¦ÓÑFÒ•²,ƒQ·€�P¼hËä»Á`p7I’4þ‰c(Šâ®ˆ|oSÂfØZîF£Ñu¹ú¿¢µ¾5�®®‹{u¨µ¢(Ëmðc–;Ò•½VÇÍ¢(ÜÑ8”HžçÁÓ¥Ô{À7Àá¿ <¾f¹Ôí8çÈ²l%•RËõ6deH"kmÈÎ
øøx‡å¶r•å(ãt¿ý<î¬žcºµÌ_£=›;u'4h    IEND®B`‚PK     p‰U]ù3ÃÔ€`  €`  '  admin/images/icon-uncanny-automator.pngnu „[µü¤        ‰PNG

   IHDR         \r¨f   sRGBÙÉ,   	pHYs     šœ  `%IDATxœí}xY¶5ófzÞ¸½™yóþÑö¦›†n �Æ½q·Ð¸»»»'H HB�xB�8!Äˆww÷`ÿgŸä^êÖ­º·®¥RëûÖ×M®U�sÖª#ûìÓ¡ƒ„÷}M:}E¸žÐ•°ŠX'4#œFø{±¯W‚	z óÂ(Á«£#á(±¯_‚	Z€ˆwa‘Âgó%aW±ïG‚	@Äúa˜„ÏæA±ïM‚	*@Dú=a‰Ä/ãCÂßŠ}Ÿ$H`�s$a­*¾Ö¦9‡Å¾S`MèX2‘ÿŸùpŒ¹ÓW¨	DH& AB+NÖ6ò‰v”eoX4d­WÉuáóà‡[=…˜À3ÂŸ‹}ß$´{!v!¬ã{âãS^�ð™ÜŸ±ÆZ÷b·Ä¾w	Ú=ˆã¹:ôzwØ¿L#ñË¸=a9ô¿ÔYˆ	Œûþ%Hh· ÜË%ÌAW¿%â_ª•øeœî<\ˆäþRìr� ¡Ý�ïù„¹*øG�Ä�\h$tRpƒØe!AB»ßÓ¿ë*~:!6W¨äþLìò� ¡]�ˆ.“K�+Œôb ¸j j9‘õ·	b—‡	íDp=øÄ¹;e•^`ŠÃP^gÝŸý7s±ËD‚„v"¸­|âÔ‡øw$ª^˜ùp$]e`ü­Lì2‘ ¡Ý€Î–OœÚ.ý19Ñv�Êqÿ4§a0•�õ÷ÏÅ.	ÚˆØBùÄ¹À{¢NâŸã6NíÄßTÇ¡°ÐgûïãÅ.	Úš×ßy'è°¯�øçzŒ4ó?ãÁ®U‚%b—‹	í}¹3úÈùƒyOØ•¼R°ð÷¦­¡Ýz�Ë~°Àk"lŒZÀþûF±ËE‚„v�¾}1ëó½&Ð°^>áïËX‹}§Ò÷
?Å¿>bûïkÄ.	ÚˆØ’4ì¨Û½é6à9îãh79Év¸ÜE#á#^ùög®ƒµasØ¯Í»\$Hh bóÐT¸úâ��FÓÞÃBŸÉì×ú‹].$´±�Cüý.};“VP˜l?˜ýú¯Ä.	ÚˆØf±…9Èô[ƒÀ¬'cäó¬yƒX±ËD‚„v"¸ß¾bŠ“ã‰¬Wbäß¾ôµMû‚d¿~Xì2‘ ¡]�ˆÎ†)Â‰6…îá×˜8Y¸5v‰üé?Â\)m˜(ABK‚ˆn [¨83?��¾Å¿6l®\ü+•v	ºŠ]$´KômÊÐ+#ŽË÷¤®†yž ßÅ¯u?Fn‰Y,?N 4ý†ý¾žb—ƒ	íD|½Ù¢Åõ}\§GáŽ¶ê£µøq³sk1~çhËÞŠqvP”Øe AB»âM¶xÇß Ÿ°[æ?†ßì!Hôä3ÝåØ9_1T8}ýNæ{û_èÓ£ç>»$Hh· bü%a$[Ì#o¯�Ãwçº�£‰>ðœ€þ—;Ë»ùø´_ýbf‡c(ñó^,³ø&Ù†âGz‰]$´kQþ�0�m˜Ôc¾×DÚ}×tg ö p/ö
Øß;îø
™øe”R‚I� &ˆ0ÿC˜ÍÕµaÑ‹®Ýþ–ØÅ°À{ï¡Ñ'°Å�Œ!ü‰Øe AB»F³	x«ããÄà4çát¥ »ý˜ü7	áä!G²O&ÇžXbÇ!~§‰}ÿ$Hè@�`^ß¦tÝúŠ¸Bø'"ò_æñÀK±ï[‚	Ñn$ÌÕAøv„]˜ßI„¾IE/ ‡X÷*A‚O#|@X&@ôO×þ‘ë»ˆÈKXÉc [úÞ$H� ˆ°?$A¸€páZB#Â¾B¿ƒý$�HéÁ%HxßA„þ¥ŠaÀ`±¯O‚	z8�‹}m$H00ˆÐwK«$´S¡÷T1øƒØ×'A‚CÅjÀ@±¯M‚	º'�H‡„H�Ðê±Êû#Âá„+	÷±¸žpáÀfv%üóãDè§yàºX·$A‚>¬òþ’ð$a$!hÉÂ Bó¿ot²´ë:LÙoÂ6 w±oU‚	2¬òþ¡£¢WË?®{o¶ƒ®Û¬`à®bß²	dXåýÐ�âça¡ks�c5!	$´0VywW'ÖÖ=ƒ¿ì	ƒ¿î§üï~†2…ÂÃ„ÿ»X$HhXå}�-Ä¿|	=¯åÃ`Ë2q¯¦?^Ns}£ljè{X”Â73áÃcqð§�!ð_kžêbî´g A‚a•÷ï	ë˜Âû÷ÑX•‚×”C¬Êuídn'äÜ}(A‚m±Ê{>[p(ØVf 2Ö4ÏüIìb“ áýÀ*o¦È~·-H¯âGv»’£ïy‚jÂ™b�	ZÁèÀ¹ÿ%ü‚ð{ÂQ„³W7ožÙ§7.$œ„¡µ„]ÿ…	9]È*ï_³ÅÕùB†Þàã	†š0”¢	%´.ñýáˆæ´X¦„„Q„Y„Õ*6Ç‚¥„i„„>„Î„–„	Øuãê?6:Ñõùÿ^ãNE5Ö¾^ïðçÝa†2 ä$±ë\B;Ñ¯4‹Ý†0³…®WN;pŒN˜ÃŒ³ö0ã’;Ì0‚10Ã:¦Û—im ?]ëkHÈ»HhGhîfŸh~ª‹.Úçñ›0ã¼3Ì¸öfX&ÀtÛ"•âm[kHñË8Tìv!á=Fó“~aœèl­4¶„&�aÆõ`˜q;¦ßË†éÐçFQKÀT±Ûˆ„÷¤q¯",]`m˜£÷^�¾;oA§­Öð÷�Nð‹æù=r¶ØíDÂ{ÒpgéyL¿êì8móÌÝž�½_¸…FÃó˜$ˆHÍ‚„œ|È,*…ü²J((WÏÜÒrðŠNÛ€H¸÷<ìƒ¢À�|×£Qp×; .8ºÁ~s;Xuî†èÀÅ1Ä¾ßaŸl¶ƒ?¬{¤«Ì»½HxO@gWÂ möbcS¸ìì.�áœ�
©ùEPRU¯ß¼}Ããeì¹ïFyØÁê^5ò¾_+¯©#ÆQI¹…‘’	¾/èuÞöxçìÃž›6°òŒ8†1y¿	ôÛy:n¹^ïª©Ì»ÝHx@âlMîòÓ×ÈÓü$dçCu]ƒÞE®
ÉùÅr@†§çêå{‰Y¡i%ä€wd<X¸ùÁî6-n
Cv]‡Î[ïÂß68ÃÏV{ª2 #±ÛŽ„6Òàæm˜+Î˜ÁÃ Úõ��°×Æ]n ¶AÑéiÈðæí[¨®o€¼²
ˆËÊ¿èD°
Ü`É©«7„ö\…nÛ­àŸá¿×x0@:z\‚ö0jï«m€×\½ »¸Ô`ÓW=‚äpÕ32JÊE»–ÊÚzHÌ- ·°h0qtƒyÇ.Ôp¡ÇöÛ˜\ä(ù÷?ÅnGÚ ŒšÂr«T5´Ó6®PTQ%š°TÁ'&En ‡ì½À/1ƒ>©[ÐÒJÀ?.îxùÃ~{CšDr�°áOÄn[Ú HCqQÕÕ�']ÝÖŒÜ²J…y 2È.wh¢¯ß¼…ÒêZºò�½…“÷]aÖáú6ƒB'£¦(M4„ŸŠÝÖ$´2�F1†¯í¸vêUÌª·&œq}&7€�ýáyRf«êÁ«×o ›_žÅ$Â%gXxâŠ¾¡ªÙVþCì¶'¡€4®Æ²ÍÔŠ4È×bkB0Ü£Þ-î³q·èdÈ*­û²tXQe5'¤�¹›,?sÝÃÜMùÿÄn‡D ©ø^\cÞÑKPZU#vû×y¬a€Å³0x–˜A»ÚïÞ¾m6`Ð”•W ¬51×§ø® ”2µ�Ê¶ãj÷}ÅnëZáü£ç
AAž±©�ZT&öeµuð2=îzÂŠ³zë!à–é™„¿»�J0Hå~ÈUù3	+I£j‹xJÏìÜö§&PÓðJìKkà�!¿¼|¢àØ]øñ�Î“Š˜»ÁŒPÚiø¾Á¨i;¯R¥Ÿ¼ç"v;ÖµDèí<äpÄÑ›€rä–·Î%LCË#.;Ÿö–ŸÕ9¼9›ð8aG±Û®A*ñgFMKDJ�œ[ v»Õ	O"8{HœH/.§³ííØ;È-« ûÀHØm®sî™†íHì¶,A4�ï”*wêµuà²å1òägšÀqg°z!7¯¸4ˆÌÌ‡‚Šê6·T¨pUäìC¿æ€)O0óGw˜sXéÌB¡Ì%Ü&M¶14Ïø*U¨oT¼ØmT/ˆÍ.P0 ’FÕ+Cãäfð4>âr‹ ¬¦mÎ{Eéù˜û†)”‡?é!p—ddZ6œµ¢í¼A�QSîÇOÅnÛÔ€oòÙÐØ6‚~„ wžtñå4äQÒK¸á"äf€ÁC‰ùÅPR]+öåëI%`¥pÿ¦Aœï­ªk€ÀøTmÃ•ßZa»�Kà©œý\•gêâÑÂÍ²e�@žî¾¡¼F€4vy
·ÈÓñad¢Ü¼É0!"3²J* ¶�DCr!6§�Þ×A;OÆ~	OO ¸Ú-,�Ôj—ãM#isRë©�ŸæpUXJ^a4Gñ€]|÷¨D8îä£ÒN¹>£‡�_&ÉÍ �œ±ÄL²É8º²®^ìÛ„—d(„‘ÇX÷¬iÎŒ�JÏ†ƒ–šš@¡	á_Ånû:PèÇUQsÞ~¦Â ¢2òÀòY˜J#hêøÂu2L°£`2†¤å@2ä•WAu}ëŠ5@ñã5žz 8ºO†ÚÛHNi9˜»ûÁlÍ&qŽ`¯Øí¿ÝƒTÂ5®
²öB-¯W"ÈÓð¶ 3Àý(&SÏ`¸ã	ÎáñJ†€ŠaÄ\R
K¡°²Zez2CW5¢²šÄþ±¿Â=à
@½žæyp®À+2Vh_ð’°›Ø:h·0j:%G©b
Ûa�haä‰nEºÿêÌ@Æý¶tÈ€+w‰)¸p˜‚oB„SˆÏ+¦‰JŠÈ¸3
bù¿‡*ø»8Á©°bç	ÈçÐøúDgäÂa+'MŒà¸ØZhw …>–«26^²Ð{£hëÀ1o¬[d"\vlBM�˜’–‘Yùt².)¿ÒŠÊè<Æ(àD]iM�+khþ4ìi ±DgR“‘}¯9G�'CC¾íé/tx�BØKl]´4/Ï(U„GX´ÁF[vå1¶À5,.<~®‘!È†8wîÑs2„¢½ôœÃâÁ=:…× ´!QØ¿¡§D©BQFŒç	Æ[ï=H!ÿ‚°–«ÊÞ³5ï– ÆØ§�§µ_|ØFie
ì^î^ÄˆEì=œ'ßwÉ=�ö"p’I3ïpÅ#.<ñ‡3dL�K˜ÓÀ\æc20)S´r* CËónBLàŽØy¯Á×ýßrÅJ´Æñ¾‡™Åå”œ	N/bà2°.¦ úÆ¥Š],t®#„”‰€XLLó'±µò^Â¨)LSêþ‹ LTò23ž‘Þ‚Kh,Üö£y0v-ê›Ø#ˆÏi]qåµupÑÅC�	Dþ¯Øzyï`Äü£MÖŸ°ð(ðxîžOÁÑåÜ±¶‡k7,áœÉ58}îŠN4¹|nšß…{¶Nðà¡;xûøAHhddf IŠ(Ê"½+ŽÓ±»ŽŽ†Çƒ]ÐKj7H—_qåß�s8,cùQ°7ž–KN›©›ü»Øšyo@
³3WAo¸h.¸âlì\ K÷Að¯OºÊùïO»Á¿?ûþóyOøð‹^ðaÇÞðQÇ>ñÃ/¾§ŸÇïùù>æ÷sñ‹Î}¡ÿ�ñ0Õh,[µvï?ç/š�õ}jQ/c!/¿mognÀ,F-U™@2áoÅÖÎ{R�Û¹
ÙÙ?TPe¡¸DØu4|ýý4ƒ±S¯)ðUÏIðU�	ðåwã¡c÷±Ð±Ûhò»£àóoGÀgß‡Ïº…O¾ÕŸ	5‘O»+\ç7ß†a£¦Â¼Ek =#ËÀMZ‚¦À^ÊGwU&`%¶vÞñlýzºÏ·=‡ÊEõÑ—}*~}˜ššÅg]†Á'�Ð^ÆÀaÜœ%h"2{ì«Êf‰­Ÿ6ìFq,žÞ+a/žª(*±E®±)�Þ^»„Ö‰†Æ×pÖþ1ŸTþYlµY�ÂÏU°WœÝUÎù‹× Ÿ®bZS~Õc¢d ­˜´u»Ù=>0[Gm¤ð.rjTª°àœl{7é×]t1kC4­�¿ìià&,AWd—Á¼c—¸ wþMl-µI�‚Kâ2 !Ç}U×Ô(<ý?þªŸèbÖ†tñ›~´«)¡uÃ9(’¯ m%Öèš\…¹ÿ–� ÊððòUÿ3\t1ke ÝÆ@§nƒèöU	­±Œûø3/±õÔæ@
ÍˆË \ÃUÆÞ'Xãÿ	¢‹Y[èÜc(WI{Ú¬¼ù†R
r&H�üš°#áPÂ¹„;	/5ëjÄ³ù'³°DPE1¥Í�ÿeðí÷Ã[ýqáš–šÅ7øNlÍ‰rã¿'Gx„ðaœQÓ1Ïêâª•ˆùß…$¢È/(|/Æÿ2èÒs($3>	â7Tñ´ß©bk±ÅaÄÅ§-�X:ªW7ÖúÛÿSè>–@TV¾�›nË@V7Ÿ~Õ¦ÏZgÎ›Ò½õõïÇá6ë0g�¥bë±EAnøŽ>Å�|$lü¿ÿÐIèØ}œèBÖÞ Èµ7˜¦ÊzÐ©ë@&�üü›àãNà?Ÿõ õ4aê<8f|žNàVUU‹}©Z3!-46åj¿;ÄÖd‹�Üì"]„¾Ø˜{ïuV‘°nð¸I³àë^SE²¶Ä8€Ï;÷¥ÙrÚ:|ýéÞ®ûÄý¸W÷GÈöEü0f:ì;hLwnÖ¶‘Ÿq²vå¹›\í÷”Øºl5åîOá7žß·òìu¸ââ	žq—•E•Õô‡ŠÚzxýæ-´°SúÜ¼£—U@ãë×ðÑçßÉÅÿá½E±.Ä'åG{RhëK�+7î¦O}A=ŸncáÓ¯Ó�š²!Ãœ«èvëÌ¬Ö»½ÏoØpÙ’«íß[›-r£#Ø7?“ðyl’àsîQììïºþÿ"$BáéÿÉ×ƒD±NÐ¼  ­þå·ý¡SÏÉZ˜àDj}Ù—”EÓ¶ëc�àÂ¥ë�““'öm) ’˜ô6î°`'±µÙ"0jšéW¸ùsö�`z~gÏá®çsAŸ¿jv[Á >ÿv¤è"Ö…¸CïÃ54†fÝm«¸ëøˆæ\Ð½<¦ÂÝFÃ'�ÉçÆ’!Ÿé5ÈÉ¢XÙyÃ†«?[›¹É�ŒšXT¸ùìârÁèú’Ó "’Ó}~ÉŠM
€]h±E¬+ñ>ìüBè¡mSç¯2H4&Î‘à.O4Lò2qÚ|¸eaÅÅâ˜%örwßRÂµ‡h@r“gØ7¾ÓÌZ£4{àÉi å5Â"áº?\!ë�ØâÕ1ã�•»<Mf‚­1iÙMfL†3†,'*P3hž7˜1{)MS^^Ñb÷Š±îµà<ƒÐOl}äJXÀ¾ñ„lÍºe;¯ÝU*¼%'¯
úlAa‘ÂÓŸoÆ¹­3™Ú?¢ó ­í?uxýæì9}…Žß[²Ì°ç÷iç¡´ì>îØæ-^ŽÎ� ¦Ö°!Õ˜)è wº°`±5jP�Æ¾i<´S“#¤Þ’÷Îâ8ŒáÄ]gAŸ÷òöcM ]¼ú voO[ØPÈ)k[!Á8o1`ä4ø¢«xs18Lø´ó`:gðÉ—½`éªÍðÜ?Ø ÷[ßøÝqæ2€±5jPà2û¦�üÃ4*<¾	@Ÿ@AŸÇ›Š€#D¯>øñ—ý`ï¹kÔ b[YºlUÀ§á-W/º®ß©•Äb`d%¦ZÃöÑ{Ð80¹rÊô8DÀmÛ‡ïºpµãX±5jPqÄ÷çkø´zËi ¡‰i‚>¿tåæ÷b ›ŸtëöShK�¾<wõ6øø«¢—!›¸‰“’8DÀ¶²`ùFxìæ­ó=ã+<=€±5j0�›È¾áEÆ¦ éù±–nÏ8  L˜C÷8V1°44}³Ï_»C~~^‘ç!´4ð ÐGáq´Ë�šÄ.CUÄ^ÁÇÍ½‚/ºô…µ›÷€ßó ­î{ ¸OŽ[§¹¹ƒì¶öÖmgâ˜w®u!¨¬¬R?Î‹Ý°ôEÊLš³BáÍÖ¾=885vž¼LŸ°b—ŸPÒ^A—aäš›âÿ0™ž)¡	Ð öÝæ\[§¹¹çìŽÏ+�êÍNxÁ0aö÷l¹b)è³¸£LqpÑ”¾ˆOÐ�£¦)�¤šžKÃ§[pC^_OÒ#kË™˜dË‰£ÆÏW€Ë€{Ìí¹ Hl�FM‰=™7‹¡¿·Ÿ…Cxv1”	Œ_¯­oà|úŸ·{$èóx¼—˜)À{Œ1‚1[çÁôÓ)'ì™C—Í†Þ“fêüÝ4˜é»Á¼Gj£U¶ŽaîåðKÊ„sV4#Å³¶Äk—mLšöãbA÷�Ë´;¸#ŸŠ­UƒÀˆ#öÿÀm{zÈãÉÏ 8£ ò«ÔïäJÊÎã4€ÂV¶ï:Ü¢' É8bÍXùpÈZ¯’‹ï/ƒ³giÙ§R1™?òá5ä³ÄH.(…ÒêZ�–_õ‰„übz-c¦/lóû0�ÿù¼—¼M	Y-À½ ›¯*Ç²>[«�GÒëg!ïNzuò�ç©¹�Q^ªÚ¤Ox§D¦djxèÐ-üíàé°Âe¹Zá³9ßb)t:Cãßû´óè?b*<ŠˆWiLFdæC^y]›n	àp÷ŽÇóæ:˜(º€u%=÷±¹MÅÄÆ«-ƒrRë/ÝæjË÷ÄÖªA@nì.ûfsè©¯28hï	>‰Y�\RI»ˆ\¸ãáÇi y¥Âöôè3¢EW Öz®ÔXü2n
\M‡šüNPá„Ú°ñ³42fï 2+Ò‹Ë „ô0BOŸÀzLÉ¦¿5gÕV» ¶xõAf›ŠˆT=®~ðä0[«®o²o¶¶ám÷ü#å&°ÏÖÜcÓ!¾¨ê_+7¾S÷p@C£ú‰Ä††…Š2ôÌóœ«‹µ¿Œ[BVC7{8&Åü†ÝûŽ’GêBŒ)À^B|^¤•Ñ(CLhQUß ¯8êˆx>nSö'ß…ßé}Ñƒ.­‰-^])Û‰)£�cÞ‹«j`É©k\mù¬ØZÕ;ÈM}@ø†y£³›(ˆ[d¢Ü�"“hO€�M—•»MBÏ Ä®™Â >}¾é?ö$®ÓÙ �Kî/ÓêððP\ª>q6»f¥³¨3	œdcñEZíU°ß¿|ÛA½lûm”Ë&#6£ùU0—#Ÿá>±õªw�›úŠ}£›.[Bëäž äL…9�—ùe
ãRœ°úñày¥BÛ%p'!;	è§Ü0rý\½ˆ¹?s=t®ù|€Œ˜ìãÛ1eFÜ]ºÿÀ f Žá4ð§¥&`Í/»�{·ªÔé{Am1»´‚³'K¸Zl½êF€0

<�tõ«ë¡±y¬é'7�°ìb¨bÄ–qÚ%‡'‚
�}¨Ð´SÚp‰Í2½ rô–y:_®Yã˜ï3/Ú°G3X¸~7�5[¸ú"ö´dmªWÿQ‚ÚbR~1Ÿ‰­W½Ã¨é@…=|Ç…€ŒÑ„éeÕp—1•W
µ¯Þõ bÒ¸S¸âì!¨Ð7nÙ«˜Ø€¡§{SõÓý—ÑèÜ"½]î·oŠdkŠoÿòÛ0uÁ‘gñø©AÅ�sM˜ÛþØ_F|�ÈÚÔ˜‰³µÅ¨Œ\>.¶^õ®%ÀsN
 £‰[ ÿ!/úïFÆj ß ö&‚R³Õ.cÍYÆZ4ÌòÓ°sô*~ä�&‹r­ò´Û˜e·y)ë³¯ûÀÀQÓaæÒ�°éÐ8Çœƒ_ê$|ÌS0uþê÷"ý›¸CÖ¦æ-Z#È Óø ›ØzÕ;ÈM]`ßèuwNÀ  4€S®Ïè¿q"°³ “ñ¿�O g¡á®*ld8Ù¤jÌÀaŠ“5†Š>ÓÇì?›S�/l‘ÆŒ;#1,ƒs09Ç‡_|/7†OÉø¶[Ÿ0xŒŒŸ¹f­Ø+w�mÇ/ÀÓÛÔ(vŸ1…Å›öÂêÝÇ`ÆâõÐoøä¦¬KŸõ &ƒ{îÅ¬¾‰»0em
{™BàÇg ÿ[¯z¹©Ûìµöã4€ÃäÉ�páI€â¡€˜ƒÍCÎB;ëè¡ð´Áí¥\Çdþuï‰Øä¿Jï0~×|Q9š%vÛÑ0Ø=Î'`6%%ãÀ	V|2"ß‡|‹ªØ”…¸©Má�%B`÷<”«-cžÌ÷ïpPrS÷Ø7kÅi ²ñÿU¯J¯m½fÍi fnÏ•ºœ>ñé�VTF×Ÿ¥eå
â7Ô ûˆz?ò‡ÕsDoè¹É¶°––þê£§\m¹@l­äÆìÙ7ë­$ððœb¹ÜôWz}Ç.@YoBÕø3&§Ã^*€!V1þGj»?@¢á‰û/dm
ÓÍ	Áá;N\mùýLFnìûf]Ãã•”Q 7 +åÂ�‡”c �Î¡±êgŸÍm” ×Æõ}Ø”cb =Fkü¾°ŸÑ�0÷úØòb5Èl*‹Ñka­ÇJX|o�_$ª9bè5³M%&¥¨?F¿n¸lÅÕ–ã	-¶^õrSnì›õ�OS8n’Àýà…×B2ø&MÍBï:uEÉ š‚êw'ÚÂ;Kb b±¥ÙkÂLXýDýîI×z­„Þ“ußR­)™A@Èº:õyðL ž0`d1áŽ÷ÊÈÍ¸°o48%KÉ |“²å`§ðš7ÓsØ‚WÀª�G8à]D ~zë|´ßüÃÇÍÁ«EdK²ïôawÂZ�Ëi_ê:µin‹^+.iÊÚÑ·=†êþã6l®ˆVKwþVlýêrVìKÍV2 ï„,¹8†'(¼æÆ½l²êü-A€!°|@Sƒuì­ÕytljÓpÕq™ýrÑEÙRìÒw:Ý ¥KyM3n™%S$ž) kC£'ü(È ²ŠËÕ‰ŸÉRÂ=mÚÈÅ_fßØËŒ\%ðˆË�€sD¢Âk÷ž‡sÐ–«wÀä¹+U@ÓZõw:Å§ã®=Ctÿg^Ð_`kçø=óõRf£[¨'€±²öƒÙ¦…à% *–î%ü½ØzÖä¢�±o(.;b
ÊDŽÛ€eà•¬ðÚ-Ï@Î‚Á¼jB`Ääyj@F¬TmÖ®ûÍøÑ  �} m…ë¼õ3„Ú“´ºÑ~•PÊò";+È ¼£´1 1­þ±5­ÈoSšHL‡”’*‘?‰I“ÀÃ—)
¯]yÈ¹n
G¬…mfé;|’`x·]¸/tì&¼G€¹ýa }¦ý(º0[‚¸ãQŸå6éÀƒ_3³½Ü³qd w¼¹#Z³ŠËà(÷ò 	G‰­mA :‹}®ÁQ4 Ÿ<bÀi{7Î‚À¿1€o‡�jJ‡ýB€ŒÚ¨¿-À2îMY'º0[ŠcwÌÓkÙ-w4ìÜ	;@Xx” 8Êq"Ðº·ä¯g—”Ãi[î¨W.[ßjA.ò{ö…›8¹Ó| B{ ¸{�« .ºªN€)#Æ±kk ïŒ ÝúÉ× &èiüÊäêÇ+DfKq¡•~—P7võç‹˜íCÈ�¢˜Ó‚+žuÁf¶}öBˆ	ô[ã*A.ð/JŽgbAo7ûÈDî›Æ;Às–:˜¹+‡³é“¢³øÙ“…¸tÈ>Rlò!ý�m?€[ÃÖèµìvD­1èõ2W ¾ëýƒ §U]Í†ÅnÇ7ùð~S¹ï3çnÿÍ´[ãjA.²–}á¯ßPb :	÷nðË øöXx©5 Ì@£OPìô¦'òàfÜ±§o²x¶èÂl	~7ÒHïe‡Ë‰†¼fæ& ™s–2€\žL@�‚"}ö0÷‘âåbë[-ÈE±/<"-G~s˜\24=On NáŠË€<)”áÎ³µpß'È`ðŽÝà‡õÚ€1°¥Kÿé¢‹³%8rƒþçO6ú­2è5ËAî9pB�D¥çp¶ãˆätAŸçK‹Gø±5®ä±/zÅ™ë�UZ)Oú‘URþ.€e <)”Á& B­àa¢†7€®Ðsò`½6àåNí' h¶©þs(rþä«“ê^è.À‡/¢8Ûqq…°3ß˜Ém _‹­q• øgìªpÝü¶k÷ 2#2ŠÞmöŒI¥Ãƒ¼ÊZˆ-,‡Å'¹c§_D«5 <{¾%à?Ÿwƒí‘úž°OÜ -ÉU�…Çý¥¶Ù”…�™ª¾�¸àè®Ô†ž¸"è³2,?cÆ¥…þbk\-pÉBÕlæêó·hž cç§à�¬àzKO]åüŒ��€˜Žª% 9zÇ8½5àïFµŸ€»ãõB�™™u½˜EnüŸu´	ÛñšæJmxßMa½¶_ã<RlœØúr¡ÖªL ¹ä´8“'{#!èòÓÜ= ç�µpá®S‹ r™³îË�‹î.]”-Åï”DeÊQÃaæ#Y}5U�p+yV ®“ª&8lÅ98[lm¹ØEFM»�TÁüc—È˜é%T7¼‚•g®s¾ÇI€på0$?îü,uÔ>¨é©á‘`m™ƒ&‚rä:Ãí`&Ù´uŸ á¦–r¶a÷aD2œæN�7Ol]krÁì½÷žÿÔýTš rÖ¡°àøe­ç ðTœ–4 ÇïŸ¨q£Ý¸:iJÆùÉ×ƒi°‰>v)¶fb¾CC@Ÿ©†É€‰M™õlny_�pŸÇ¥p¶á„¬\�à·Ì[Óšc[ŒÓ«= ÓVk˜¼O¹k$„ÒUºd.Š ;~ÿ=L>1vÆ¨O:Åx
|øewÎïÁ(DL^‚“Oï›!`Ês}‹úzºµØ×Ë< )ä0P„ÏÁ¶BÎµdâ÷ù˜3Ä–³æØÞa•7 ¶Ú¾Ür&í»¨‘ØE	0€[¢ “ÝÆ€Ñ;ÇÃÌË3`‰Ý\˜uÕFm=&¢ÃM¾õÀÌ¼˜�¢­¯½ÔV¿§(!×y­4Øõ2· ã§�Œ€›L•Ó€­71×HüˆCÜs SÄ–³æØ–#3 JŒàó-60açÁ‰J´ŒlÕ=€–"†'cÃÄ§S[Ë½�é¼ôm ³¸€gÈÊ]h�ŠÚz˜sDùávÖö¡Æ°ëÆ}.-Œ[ÎšcCp%Û dü¯Õ^ðéf[¿WµÜ÷WtäŠ…èmqCø´;UÅ¼ü˜Ï¿“ž“Ÿê“ÛÂõ» i¨„ ¸ÿƒYÎ»ö$Ú¤¼"î9,¿‚>O:P^× i¥U°‡{_À@±å¬9Ö6ð€Œ?Yåo¶ƒéû¹s¨Ý{®:%85 ÓÛ¢²5‡Õ�®aA†ØShÆ°/M¿ç("{Ž5Ì*
nc–éƒ‡î‚ìËÙ~_¦fªüî˜Í©¨¡ÉsÓóáN@Ì;Æ9!þ…ØrÖkŸ¿Qg 2þ°‡;ÈÊWý^€£W-E_k&5†/û5õºáªÃ¤ÿ·ƒ¦ë]üÛ#³7|1ãÿ‘eå‚à¬ýÎö[×Ð ôÞWoÞ@au$WÐrq›ü%÷ y”,Oo¸�¥
3®ýI‡5¾‚Ä�¼‹;Àòi° e@\·Å¤b‹­­çè_�‡Ò¥Hš"Í ½<ï@ß0÷ÆÃ<ýÑÈAÃ'©ý«×¯!³„ˆ8«€3pÓ¥Û
ïÇ1²$9!Y…p/8Ž9ùÈ…¯Â Å–³æ8Vþ?BÅ�ì·ó§&¨OrÜì5 ¬DöŽDÍˆ‡©`å�; æ€«8Çð•–½†®ƒõß¾RÿÇ¨áqêì²Ø¾ë°\¼x2uqU-=Ž�œ%on/“9Ûîe'7�‰ßæE,ì³qW=ž™ù 4ÂÒ²¹¾+Il9kŽ}Yib =wXpbdjDgª4€3·íh…É*“™Ë]¢žâó^´ç€1x�(öºè\ƒŠØ…=Éú›Àj]úégý»ü8WÂLüÉä¹›ÖšžOÒUïF}Ê�ÕÇ3ô¥‚ÄV€mHœ‚ðoú„@TF4¾i:ã2(�óXq'±å¬9ŒkÿÑao†`øvÛÎBŠO…ÚW�àŸÆ[®¡1´Â:v+¯\|jýûSÍÖÞ%êÁ d=ˆ¯ú7™y²Î·Ð_&¥eZäD¡ãÛ&wÁž3ÖŸ�xÂ¯ºÞ'ò¤ÝcÎ¶›UX,éAàÓÿ¸óS*üÓ|¡¬Z9Å˜µO×w[ÎšÃ¸öCBèp¤:lVk ¸ÀUˆš3©äWT«¬„}çÍèdV¶¬âqO7Ÿ»·e~Ø±»Æ�Eb²ëÈþòsÿtå�¥“äÇ’³É<ÖMÛÃ¿1ýš°Ç€1‚Ä�ÜxE9 ÷¹0Q\SiŒ„8/bèvxZ 9Ô¾zMWvÝ°áÒÁ4±å¬9Œk?£ ã¾Lè°ÎŸ× þ¼Þ•Ó [:Èñev�ÊŠXºe?<s–—Á°aü[Ë†ÐÙyp_Ò­^?^™ßŽè/úõá¸½tÿªÇ‰ [æzç­Ù.Hüî1)0ë°ò~—½æöJçb`,™<ŽNU:8Éµ›�°£ØrÖÆµŸ* òDtØ�Ö<S2 Ü3À³üu¯¨¼&ã¤çI™¼•�ÉAg¯ÜB»¡ì„ž8Fýø«¢AÄ�c¦0Ö?[�L¢OZ±¯MµÙ<%_ú‹Z	_êÛb×Š;L… ¦¬ãj³×žø)‰ÛÔóÿ^Âðœ¥×E&r}W�ØRÖÆµÿT2 �WA‡ñÐaõS°ëgaº„Ë{Uõ*ç�K6ï£ë¹\!³»�kóÃ‚Nýûð
eKÈr˜vvôœ2þýYëëõôš:6h¶7`áÝÙðY÷ž-z��ÂãŽÿ¹×ÿG)¦¼ÃõþvMãÿ‡Êæ âpœ'bKY;×þ™× d<V¶EËà�x{å5ur(¬¬Q[1[Žœ£‰³¼\C8ôFÌw["ÎÎîÄ5°Ä~.Œ?0¾Ÿ>:öÒýì}�©ß¼á°Øv.Êp];F®r[Hß×Ò×7rÊ|Áãÿ—-•Ú*î	@Á+Œ›)ïþ[úGqÀ6³{\m»ØRÖÆµ¿Vk 2âDáæpjãörç8`a§0©"Ä.Ù<€/ºô£3Ò|Ño¸”…A1b‹BSnÓ.Ç
nµû"XtÌ6›	SOO…	‡&)pâáItG#îl4ô}üç‹ntHƒ=¿ÞOÔÞ><„ˆß-:™æ²Pÿ[Ø+‰ÛŠˆ^ž3>Céõðœb¾‡_/±¥¬=„€Œóá_x{n!Šëªåµuð4^õ­µW 7“Îã’÷2ÑTúZ[2‚ô`ÃæÐU£D¿O1ˆY¦…€÷’ÜôPø	—¦å¿vžJ½äÁõ]Õ„?[ÆÚÃ¸¶Ac ½€a»¹ó"í|ƒÁÅ?l})ïz>‡Ë®ÞpÏ?\õXíæ=èÖg]ÂÎ5cb84Àl=b7BuünÂ ƒŠ_ú:øôÛ¶9DÒ…�{Üý?Ê�¸|XOxß¤lùÓÿúÓPÎîÿ>Îß}±%¬ŒkË56€5¾ðûu�x@g1¡k²§ìžð¦[³ç8|òe¯æ#Âùm|Ù}\«_5À1²¡ÀÈdºè÷'ç®Þ&Ø –ŸUž´^zÚLIÜ–Œî?nüa¿šUÄ™K€p‚ØÖÆµ9ÀÚç´ðÕVî£Â4!š—`„—Ñ’46 �@U‚\>Äá*i”Éo~èoñïIZÓâ³î­…çï8¿K(÷öß6�”~ÄÑ›Š¿­Dä*/ÿ9FÂåõÿ*ÂÄ–°n0®×Ø ÖÐÔaºŠ_Þ+ {ÍÍ�³¯;{ÀØ‹iÅcô>õU…”âÐ7É´¦ ¢1»ÆëÝ úÏoù™÷ÖÀŽßöüô¿àâÅÙÞìƒgø}³äO3ŸÎîÿÎ¥D3±å«;Œk�55€O·s®+ÍÜøO¾ñÀ&ÌZF…�‡�ª:"\[ŽsÌÃ#Å$.óéKüãöMý~Ä"‘	5€ÍW•ïÀ#½Â²‹Ä}ûy¤Ü ðtl¶øƒS²`ÃEÎ�pƒÄ–¯î0®½¤‰ø{"�WÀO˜Â9'ðŒI†ôÒ*ºµ² š�ü7¥¸|H¥œqp‡Õ¸·#Õ2rû‰/ÌX¼žt÷¿£1ØõW—¡W¶£3ñhw®Y9’®ûk+|üì€í{+µÐî?ùüÈ±ü·Ýìž’Àq›/Šÿ ½'DrÌþ'¤rµÕ±¥«×n×Ä ²U*Œåg®ƒsðK*vÜ4¡
x²jEý+p�Náœ 9hé(¨‚ï?†EöÀç�›žðŸ�n¿ºá�l9{ŸÐawúoC#Þ›£±øq2ñË>½E ˜Ô¤ûoúøçæ†‡¿‚¸=â2äOÿ[ÏÂ•ÄŸZTÆÖÎ\ßµ\léêÆµ?
ÿ_Ž+ïƒÞ~ý”Ö*§TR‡¸ÂrJÏƒ,Xll
%Õµ‘™'¸²1ÛÐˆÉsi#Á½ð˜p„¹ã�ŸSéöSÜÛÒ‡�ô�IÇ&ÃrçùtBOi‰/mÇ�g1zÏÚblZ3ç¬Ü*¸Ml¿Î=Gõ<9[Aà×}Bå€sÌ×Š* ¯¤f*O%á¯Ä–®~`\;P¨ô>¬¼0»TØ‘ÊlÄ“Âå®(¯®¡ï©®o€ØÜ"ðŽS½¯@Fß`X½û|Ûû‡æÕƒ4†Ð=é¸Ò€[Vq›jK7îO»ö¤ÑuÝÇ„/z¶í}†¢Ðî?fÿáÚý·á²•âÒ^v�õGñŸpñUx-š°šôTrgÿ=%¶lõãÚ�…ˆÿ¿O(Ÿ©vÜú�VâG`²E,ègIYJß›š[ ð^Ìë–RX
Ï35 ÜqhbíÓ­£ñØÕÇ•jsêá¼N"â¼�C‰ŠüªÛ@Z¯BêßÌ�ûôÓÇŠ"¿+úc ¦ø±W›’WÈõ=u„[¶úƒqí	‰üðX¤RaD¦çhm IÅ•´°ýSr”¾7)'Ÿó3x²Kae5„g`&¢&7aÒœði§ÞïÌ ÏûÓ Á&./bï —"¥,F-Ïe[®ó<ÝÿøœB(«k sPE5õpÜ¹)Ù'æþÃCC^¿yKsÿ#ðÿ×œ¿Éõ=ÇÅ–¬þa\ªÎ zQ^­nÎ ‹¦)¯*lºb	I¹…ðVÅç1YrA	øªÉÇæ9+X¸~7|ûýpº"€Oø/ºŽ8gðŽ¡ˆ“‰˜£^Œ!C{#®þ©ß'/“8vl3µRh?AÉïÖþmO~õú˜8rfþ­ ü�ØrÕ?Œko¨3€)æÜví®Öâg Nò-	î0³†ølîÞ yåU‘™¯‘ ±Qm<túŸLæ ÃeEm�õÂÏá$¦¼ÂÉH±Eó¾°ÿˆ)‚ëôêîÙ‡gÁô�‚â®"=€çd8ù(<�¢kÈK¸ã§í+MJ³¸Ml©ÆµkÔÀ”ƒŠ[€11¢.Hl6€ª
\nA	©P¯æ HÌÚšSV©ÑAF+w?XµótëÛ”­˜šÏùÓ6Ý6ö*š†ÃèwµÕÜbQ¶ákû	Áõ¸Ù”;qíž[¶°ì÷¹Gø±¥ªw�›úrÈ¡ûgúv†IM
R$4¯„drN´p;L]¼èð ÇhªÐÐø²K+hÊhMÍàÖCoØpà$c$)–�¬ëÑàøYœŒ¤Yo¿ì+™±'Ö±ÛZÖ~þ¸¼Pü<Ò)$F�«bá'bkUo 73†0L—ByÙE%Z æ_GÀ°Lm~ÉÉ«àä…Uj³ºf3ˆ$Ã¡KŠ2:EÑCM®ß}‡Ob<�zÁ'dü�bÖtþ€¯§ðù7ÃiLÎ)´·•.sÅÀÄÙË×Õq›‡†ÿÂ?‹­Y½�ÜÌ*}ÐÜ#áˆ¥=a•½|§
±ÍÙXµ5 &·]½Þ‘qœ9ÜÙÀHÄâªHÈ+V™¼”�ÃbéDâê]Gá‡‰sà“¯šº©M‡~ö§Ù‹„D$
5LœŠOC\’ÄU4šR›ˆ£5mxÒ„Øëi:qï©É²Ó£.Üu\7ó�sgªÒ’~„ÅÖ«^AnhºR�[®XÒd Õuõ*…([så2 ã»œ¡—‚¸çæ}ð‹I‚ÊZÕ¿/e””CXFžÆ½¯;»Ãž3Wih2š®YÓ^y’Òi}²75tÝz
|C
Ú{ ‡i¡&Ô”o¿—¨Ù“èá#_ô¦«,Xï=U³oƒ¼Ž½üêZfîÏÕ¶�ÉûM`ÔS´ë:ôÚa]¶Ý…Ï6ÛÀ?7:ÂŸ7<n$ïù—Q›ßÞËrcÿgÔÄÀY8»¯ßƒëdìëO£â©ˆãSàEb:åóØdxHÆb¦¼`«é˜s„37ºœÒû00œ¦	gã5y
Ëó¬e+çYOJ£Ñ€VîÏèáÚšÁ+'z(r¡(«©ƒÔ"bLZÌ°‡Œ´íø˜µ|39M.Œ¦?‡Ð./;5º!ØtêÎDºJ�¡Ï(Düm<žŸ´Øká;ÈCñóø]ôlBòÚš~‡T8ôÁ‰XSûÇ‚Ë:(5ŽÜá~h|Nþ›µOà§«½T|³!¸ží§HaRê:_»qYytÂL °’r
À% Ö›pŸxˆ•(QßøFe $!EþÞZò�ƒ#`ÃEå“]5!^‚¦ÆÌ\,¥h…¥ZM&²ù8"Lî9Ãº½'hŽLm%{bb—”>ë2œvùUeBz_ˆ÷‰O{Y`Uçï†ÀæÃgáQD¼à2Ååß‚ò*Î:»÷²àcï:l
½)¶F
R yÌÂYtÂ”NŽéÉd\½ó¦ònÁÓ÷C†ñÜu™DpdZe ±éÙ`âÀ}Æ›&Üuã>øDÆCIU�Æ÷ˆc8dÀÃPýµ˜C`óAH\¶q…]§.Ã‚u»`èøé®7yWºù O8Â§m“9L0ÈpÂÐÄëÆ +ææ«®½GÐ(¿K¤�hZvIM“Ð¶Ï¸þüjë=á°!¨‡Ø5Haô`>õ<;Eí›ë.ÝVø½˜´,úzNe­B<6—„ªYb¬ª­£óëLtë 7^¾îaÑ�YT
�¯•‡+ê€ûpR÷*`ü��šÈBiçB{ûÏ_‡µ¤Ç€ÃˆQÓ@¯AãàÓNM�Ø]–ŸLž¤ô¨p<˜ˆ�»üºtË5f¯©MC�îãh¨5uðú˜«ÃÆÏ¢“¨·\½´*,cŒ÷@”V×òÖí/×¸	ÿZ¿WbkÔ  …±‰]85:„ñò¡ñÍ»±}Hf¬bÄRï¿íÈ™j	©©0‘”�·Ý|aõ9•\‚ˆÙbNX»€gxd—ieSÆ3Ð"³òµZmP;Çü’Æ+œµ´#½‡+°rÇaš('!eÁLl¢qbð?Ÿ÷ Æ�ÃŽ�:ö¦ÅÉ:Ü=‰F‚cq.ÿŸÍ«ò	ÇžœË–ßôN·iÏYµ¶73'7�îO›J+*“Ï+aà×{Îº¸ë†&Ýÿ`±5jP�¹Ë,œõ-´jØBÀößwg²-:y•Sü‘¹%J•–¨]�QBV.�8\©[Ä—�ï‘®ix¬N†€ÀÆŠŒ™%—[/ÒrôÖ[à£ƒ]¡8sÛŽšÞ†ÝgLéŸ¾×€IWq�EÚgØ$èÒs(§q|öuºÅC¦GLžSæ­¢™yÑtp¦^Æ�OÃ©[÷Áâ‘�ÞïËŒ9W…!½�Üyëíÿ687€-‘+ÅÖ¨AA
ä%³p¬<ýµnÈê ‹ðCbÅ)›•‹M= >$çäÃ?½ô˜Ä'Ž­ïˆJËÖj�B 1ä–WArA)=]985Û ÆÐVˆ=§ôâr*v&°Üq›¯Ž4zú¯öyKþûs±5jP°È/6Yç†Ë‡ä’JÞñ=V*[ü\s Úö ø�–WÖ^þ°^s\<g÷ÜÃb -¿X£%Gu¨#C	ãbHsR~	De5™ƒº“–Ú2qù»ù•uÊåˆA\ð¥ª.¦8O—ý„Oþ§Š­Oƒ‚Ê_Ø…„±ô†BzYµ‚ÀŸ|w‚�m@¤’p-êÛ ˜È%]ù'Á4Ï›.1ª¸ðø8cûE@$é)WVsÆCèŽ Hp®!ƒ<%1²—ÄS²´hjiâµ¢©á\	¦�{ó–GBNÝ&®®ì?ßb#\üÈÍGÅÖ¨AA
åsv!ˆŸ×Ù5
g¦ff'dä7€4ƒ]¸´xßÛvªèRê‹{n�ñ±»Ä%Cj~‘ Ðem�›¥êI�jÇ!F1
fd–”SÁ¡aÄäRÓIË¥Á4þÉY4ë’>ç&ð;qu»¸ªjN@£iÆdäÂa+GAåÛs‡…fâ_ý{ ïáþ~HÁôdTG÷J_Èe-óáì¿¼«ìäÑê€‰šºzØvÿŒ=±&ÞcpC�qëÕ;pÅÅ‡¼„°äÈ!B*CM'ÞðZ°Í ‘ðã#pøƒ+ 8¯¡n·&pØ›™ÖÞ�°ÈXøîTïÕHüM³ÿÉbëÓà …ó»°´�ü<€)ðÓöï2«ºã¬d xæZk1€ÜâRXcµúšt’sÈÙ¡0òäLlL;t¤ÅLAÆcw�ÁÒó9]‰À‰Çl2„©R³Ï¢-�F“’!©K`8ì¹i£UuÝf¥¹ø‘[_®[Ÿ‡Ç ×*ÆZº¢ ZÑ ®2ò³cªf¶påOJ7Øõq!*%Ž6w3Ç[­` lö¿Ð†�cN,€)-ØKàâf2&>ïðìýBè^�D2N.(¯$Oã:ú$}£åSØÀ^Î… Ø=#bá²³,;m¦Óýãæž7Ùk'þ5Ï^‹­Í)¨ùì‚3$
Y`áýî|vvZf¾Œ@É†7 _>%qÝÅÄ�“�ìVi \†0üô8w|1„ý¢7\¼M—/ÏÙ?†[O|‰a¼ ·Ðhœ�¡dØ™šEÆÛ94Š45¿2ŠJ!»¤òÊ*¨±p1¯´RòŠèçŸE'‚kp$XyùScÚ{Ë–cˆ{ê¶Ý
~¾ÚC;ñ7uÿ½ÄÖf‹€Öváò¹PT]¯ ð{ÏÃå¿»òÜMApôŽ#Ôp\RY«Ïr?}f<¥‘(BWzf$Œ6ž�neØð>'ú~µV`ˆ¯b¸/NøA‡-Ða{ìkb ßˆ­Í)´ìB4$Ø€GË~—+08=Ÿ³¢1€Ã|õ�<òD›Œóœw9‡\è¯“	°ÙïÂ70øì øáÔDbóaÂ±õ0õðÑÅÔVˆ]ýîÛ-á·š¬ï3¹/“�ãÒBl]¶H®e¨ªõV]Á¸†ÇËwÞ±ËJÀ•œIì¦ëõ¯^Á\ŽcdÜtåØFÁæ[ôj ª8è\?:§0ÊxŒ?¶†Î+Ì8xZtÑ‰M}�í·áoš„ôò=ù•“Üö[—-R˜«Ù…«j‰¦²¦òÉS2%· ¢Ó² 06	¼Â¢éî;{ß`º7ß72Ž†ëÆgæ@fA1WT’.{ÓÒbk Oi•ýîì#& nÐñ�NÐYüE¥å0ï ·°phÂ<3þjà¹@‡ßì?Üê	ƒL¿ÕJàcïöƒ)CÁÈu$Ìvs=Æsräíï>7ðü÷t(�+8¿0éÈ6˜zè�èÂ4—�º‡oÛÓTíßÖ¢‹ÏÇ=©lñ‡‰­É)Ü¥ìÂÆØê
"tœlÃ\~gmê%LvÞÑK°ãú=8i÷,}^Ð€‘²×<t^É Rs•¾ç´�ò„‘:L:zøÀÈe9¯ù¬£»Ò5=OO‘qÖãÑò;÷g®ƒ�I+`sô"X>V¿˜+�`©ß4Xôt2=¡d "æ:ýw´U…Ï�»×úL‚%Ï¦Ârÿ°*øGX:6DÎ‡-‘«`[èfØ°Ö{ì�%÷w“X	�n†9Æ§ÈG¯¹ñôÊÇ/ÓŽçí�óóZ¯Øe8ë�¥?ñãÓÿDÛ &ˆ­É)ôyìJX~úš(•�T6 å£Á°gaí ð·¥§®B�†qöŸ>‡©k·A¯ióaôºÝJ¿sÐÊ‰w‹òÜ»S¨ñé/DÀhØ[ ±fÝ`œu?úÿ¼'©ý,K¿K_Ó÷�¾Ód®t�5¡ÂŽÇ„Ì8\bŸ4¥ZË)†§	ð0"�önî>…5&?mÏ)˜±ïŒ^êë37í2³†“Ö.`þØ\Ã 8.™îÇP—'2½¤~¹þ©þ`o[ü/ÅÖc‹ƒTŒ‘&•ˆññ«ÎÞ É=˜ÛÂÉ{.pÙÉ�vÍ0döæCo0±Çï8ÒÐÖ-hÅkk \gâ¶^„…›â)/ž¨}-idî>0qåf*|'ï8®ô;~¬£¢eŒ/¬€›/®ÈE…O|UÜ½�¾?Ì|8’>¥QÐ¼'ÊÍ`y‚ïNYÅ)|üîé.?Ð÷¾Ö•þÿ6ÏsýNì¨3 4):\1í	u�¯xMCsÙe0fýZ>ßÏX}f.�~³—Ã€y«`—‰„Ä%ALz'IaZø²ªjhPs`‹P>¡?ño
åûO[�-RÉãøÄ¸éòm*f×€0¯ëÒ[Qy%<‰†.^45;Mó¬ÃÊs x^;ûºd³ÿ8Y¹é²âÚa#=;\¼|aç™KÐÿÇ%
Â—‘ýë.ÞæJVyd”¥É`ö“1*¸+y¥Â¿—qÎ»ñL¶L‡cIaÀå.JïÁ¹‚=i«åßÅeló‘}ö€û6Z²c×¸¸”|3qëaÎòBŽ\¼ž<Ð©M…™®þÄ�1þGËØâO¢á¶7�JîÏnü±É[ggnFÞ÷��ÿîÜ£—”¤‡$3NÎ'¦Â|mõÙëàìý®Ýw„GÏÀ°ù«x°ŒøtcÿÆs;^‘`83bá½iò'óþŒujŸÄ8/0Â¢—‚ gZŽ���ÈSúj/%±#—ÚÌ„�×Â Ëïc é70ßk"í!¨ûÍŒy‡ ?zÝi¥U¼÷Æ>:kÒö£jËoÝ‘ÓPVQi�ö‚(¨l€ßo~¦'ñû@‡ƒù\Oÿ¹bkQ�JþšÝø³JÊV™ñ…
Î™q\nîP2€¤,•€°ôPÌù>léFµ�V]`ë5k^‘à†&„sŒ�\\ªÆò8þŸÑÜ�—q´Y_pŠ¶�·ÍaWoÞ¾�˜üHË–³¬¶T~�y•9°Áy©ÂwàÊ š
ßïnOX&Ÿ;˜tk¨ü·Tõ pÅCh€ÉÑKÖAT‚þóH"~¸©¿§ÿþl.ñ¿ÿ›~ø@*ùJclNðÑìwß_u$à³ÄLµ€;Ì˜¯OÙu‚³‘ö6ZDÌamÔ3öŸ…AÖÊ_›¶ç¤Âw`¾B>‘d–WÓß­k¬£B–=•ÙÝñmñËèø]&B	x±3œ~z*ê´3YŸw˜jÁ2«>tÅ�m “í‡Èßci)ÿŽ¸ÂrÞ{cËÆo:ÀY–ƒ­ƒ‘«w(–/éI=Öó�`�kšþºýrù·+¶E©ä_²–’©×J”áÕ›7JŽ¹`ãå½ ¾�ÂaPìÔÏ8YÕ‡Œ÷Qä£Öì¤]Yö÷ŒÛ´_Þx§ìTœäê�Èˆ]hì_Þ•‹lšÓ0*<œèÃ±<»;¿Úa>¤”èþ”l|Ó–¡×aÈ•n
ß?Â¼,˜AçÖ„Ì–ÿ}†åhúb
ø€]Fc7ìã4€áË67ÄætÅ|í–½‹Î÷ˆxS¢ñ¯ó‡GJøÄï!¶E©È"f¥{FÆé¥Ù¨!OjvƒcîÜuÓV�°{ LÊÉ|>áù&7e±r›¼ÑNÜ¦“�F|"Áy°ë¾„ŒÓUûL¿=<“ë½<«à�ûègòµÊßÍV<ª�ï¾^d*ï»³n7§ô™¹¦ï=Eß3yÇ1úoæë¦Öö:Ý[|Aüf£¯îâß™NTó‰ÿ5áGbëOt�JeVºµw�úÒeuJ�Ž™àˆõAC ® nažsDu?{lûýôò‹O2ö{B³
9…’X\¡ðÛ¹ÙJ“x.u�õN‹Á5Ö�š¢‘üÇ7£A‰±Eª—ÉBó^q~® ºé{qEâ¤ÏA˜l>LIüüN(–#5»�²ÆÞß¸à¼Ur£�¶û$íu1_·ptÕª�”×6ÂGûuþöèp¬œOø2ž[{­¤˜•n|_»ŠSv0’™—µ5 î!W'|j±j;¿b·uÌú½JïÅ	H.¡àÑåläTd�]ÔØì²¬ÃÍ¡¼®Té=›=k`èý%~v¹”w™¥•½†_Íçä|'åy„™tŽá°ÇN:ë/3^+Ãdd†e³{Iý‰¸Î_MÙÎ
y¹áœŠì½Ó÷žVx‰Q–š îÕè}*LË®~ tØ�ŽW©>²ˆð·bk¯U€TÞf¥ãZ°!�ÁJŠÄ6²ß½å¨l « |€I6U‰ì†½4˜…ëi†O:öûÝ£“9…‚chm0Ç¥¦?%v¹^ÅµÜIAý2x`˜¥²É¨C]ãk^Àˆ@v`Ïˆ=?"#NœN"C§©»Œß™ 1XfO 7ée„G	¾¾Ñ—£4ýzÒSØ	=“ÅÖ]«�Ç–à¹à~_4G£Ã-À²ßdn¸Qe ©<˜ É6cÿæÛ÷Ç¥*—±~X±Ué³N!1¼bÑ­Á ª”ça¸&duå¤mGa$éia�`À¬¥�Ä}ž#F7c> ÷ëC‡ýY¤‹_¡©èeô[s­
¤Â†°+°T�iQü‰kÏì|ÞqéJïáŠà3€èÅ�CøTïm´X¥ðßue•7a|<ŸX´I›Ö ¢ž?ø´Ý½ “Øƒ˜°q/D§ðoØÚì�Ü$pÜ ƒ]yLÎ±“sÄ‘n}*|Ž�1½VþŸØškU •ôwv¥%êél œø‹åYvòˆIQøM®÷p ná^3ó}8^4xáZ¥ß¹öÄ�W,Úô�Zƒ”Ö*OÄ"ñ˜6\ù`—Fgâ<Íu7?x‘˜N‰‡œÜxüö›ÛÂ\&^‘¸oó.0±ãi�ª™z}s¦Øzk• •SÃ¬(7RÉº Â>„M«§ïÖîWœ½Áù¯¸4¥FÄµˆˆaõ pÓŠPÀ®*ûw¸¶ËˆKšš¢5 ;!òòÃ§J÷Ž	9qH ;®{p|ÀíãØcÄCNÌÝžÁZ•&€§6ã	Îˆ…�ZJøHG±uÖjA*æ)³’Î9¸iÜ¸p‰	Ÿ0)%ü±æ2bÃbn<áZDÚF*5 L2Âß—	
ïëË³ñ‡/J�ý;,ùO,Æ®´¦h�Ç:—áŒƒ›Ò}crVÌÅÈ|Ÿ*àdR^1X?¦‰^Ø¿±ï–-Œ´­oIñþQl�µZ�J9É¬ Œ„’¬¾ñ×ÔCªŠ&lbªoæì?ÒéE4ç{Mù*5žž}ãw¼sh² ÉÞ÷Î™(#Þ³¦h�\XNó0î'æ¶ðÄ¥²=aóˆó~55 &ê_ƒwDÌ:¤˜níßÇ^¶¤Œ[c­Fç”×*6òz<oŽ<ù°‰KzªbÊùˆBÇ8{æï`0ßûÙI*°ûÈfÖ¢);¹÷¨";'ÀÂüáÀ²Aš@l¸çå¯²k~ôž+ïýêb 2'¦+üÞ°Cwõ&ð?^¨‡Ïo¼‚¾÷^Ã?M•†‡ÅÖW«©��Ø»ßš
\•ðwÜ¸¯Ôè.>ðæýÎÂ³ß�	G¸€K0ß7š'„UÇo>¨ô{x×µ1÷…X€™vöÞT.{&ížC|Qo]èÃ ð0’egóüîDžNÂÿûH‡·ò²hó†ýÂŸˆ­¯6R!¹ÌÊ9iûX'ÑcÆ_|º/8®ÜÕ\sÁœCby?‹éª˜12b–&ß¼¥ãqk2ß7xá:�`ôZå´`ÈågoÐù <»'Æ\Ââ &_óî7Ÿt&P¢…h ˜¹‰ë¾–œz—ú»éª6	éb ‰yEp÷yì·õ€s®ŠCºá¤ðß'J5þ¯ÏÖÁ€ûoÊq´ã[øà”ÂûR/¶®ÚH…ÜQhøg®k$xÌÞƒ}à8’k|¹åê]8ïìÉ;Þ—SS-àø<¦k|ó†
¾iÒôÄÂM,ì‰¦Þ¬jB8|ù•OI&g½Â 8%’
Jè1Ü5�*çMf»ÔrÀ·7«!"Ÿ{UÁ:ºN+À8…jRNÑéŠ)Õf6�Ãw]À+6M¾/[U�hc ÉùÅpáñsØsßöÙ¸ƒ•_8<‹SÖšxðüÏq¥ü|¼ü“I=Lz X†“É¿{®Žù¾*ÂÏÅÖT›‚Ç)A®ñœ""·„
þIT=Æñ°t‚íf÷h2$Îìã‘ßø¡&båÂ¹©÷©óÅæ£©0ß;fÝ�Å�\´ï„`@bÃæâQGo¸ì ~	ŠéÉ–=âîŒ°k„ížÜ›bSÆk Óm#’2éïâïË®eÓMÅ®~à»hK¬üÛº‹Ô0ôm 7}BÈSß„ÆÑÓ�d8ÂWžB&ÿ|±žŠ�]†ÿwYiÜ/Múi
®y ä¾Û´K®¯ù .bö_4¾Æ�Ã	¾¡¦g¾—½+MqWà¥;¶PRQ)Hø2n·zÀk22ÏX°Š®‡i®Ê�ÙíV5ñ«QØí·Ñ­’WüÈÁ5òïÆž×ïo¸®Øýg†7ï1·o2²[¶ôóú6 kÿH0ªð7,æõ0Wf8ÿ8Ë+þ¿^ª‡),ñcyþýŠ’ø÷Š­¥6RÆ|~Çú´Ç”Òú=®5ã{|¿9ïØ%påŸ+ØÄÊa7aóA�Ä?bé&�y—ÿ`±gÎãÓU�V½[-¨k|CîÕs r¼Óº;ð?&¥*…�üÓ‰…‰Ã2áúýu×'ÿE&ÊËnÇõ¦×Ž‘!Á+»µ5 ×°8Ú#acÙiÅAŸF¿‹ß˜~àüþxŽ’øÿv¹¦º*‹ŸcÆÿ¶Øjó a­ªác}Ÿ…\yø‚_ÒÃ;„ŠÞ#:nz¨½ŒÈ7�¼äê£ð~\ÇçÛíÇf�é‹áÿ-0¡ñçÃL" µ¸)2�oÂŒ‹k¯ÞSk Á©Ù
�ß,ò[^@~v¥\­œ¨Vø^ìþsýþZSÅröŒI•—ÎÉàßNÙ>R¹MX[ðŠN†“.¾JßßÜó�±°¬ÜÃbåÿ}ðüÔøÝ–ÞÿGžðJâÈ)~±µóÞ€TÄ9MºÃHÂ5~ ÙF.#64vºiuÄq}x6Oãyº°?3T`2Ð�æ†V<RØeöÁZXm“�<_ãò·ÕÀqg¥£ÖæºÔ�q,¿	¨3€±wK�ù•8ñxÄÁ‹ó÷×˜Zó ÖþÍÄÉÝ HLé�½§ÒßÏÚ=V¸¦Œü"š®ô’Ë»²ÿúÈ3*êÿ\kà,£]Uá/ÄÖÍ{RÿG¸‹0OS3Ð–‡î8sî
dÇ±84`~Ž/w�ìiÿÙì}ð?‹nÂ­tW¹Ýô�›¼aõwÒËQ_esá)3µ€HVÌ±Øðú-lö¨‚þwê42€ß.}PUŠ†âŸ˜ÁûÛÂÀÃ Jz?xl\yà¥pM²½¸¹Ø¸iéwê�‹ðÍÍ*¥²™Ê=æ�'üƒØzy¯A*e4áÂ2}‹~íE8ëèA÷þ«B˜>Vfç®ÿnúè8k'üsþøÃK"zá	&ÖøÒ}æÿ¼P
ëÍ=”ÂW™Ä¥@!°×Æ2K”³%•¼#‡Jøìrt½YCî5pÎàxgü£•—
³È÷â÷óý6{À\‘‘…cóõ ¢òJé$+®àn@[Ÿ@È*äÞ‡Á…¨Ì<z8ÁÈÄµ‡ŠC7ææ®€øw;Dg˜*‰ÿ/)íÈ!übë£]�TN7Âí„v„©š
ƒ€NÙ?Û€HÎÈ4w€qç¥ïš°û|¸èüïBS"öÛð‹åNºå’c¥ŽþØ¤ÖÝ|Ì{/»¬2dv)÷S{A9Üyÿðïõ<ùÂPüê~“=	ˆAL²2•rÁÑ�T¦æÒeÛÃw\`Ý¥ÛœæwÉQø&±è¬|zõ¬�“W]½y ‡Ks�6/[ÊÅ�³ÿ¹¨$þÂOÅÖC»©¬ßö#ôàÉêó·àÊ#_­–ƒÓói`×÷Úu>X­ÁÓ]1ŸÏTçI°ø¬¥Ò5l1wl ÈÈLî­Ìš"2#OÐï±—Ñtee»­y"vëÕ;‚'?-ž<|�±ÙôjY§L]vQœga§x³`ô2Ý¡Æ;¿¥±þ¬:É"ü�Øm_FMÁDU|�™ÛsÚÅŒ@\¢ÇA1äv×-þFùí¶;ð}	¹'MPÚ§—‹añ•òäø„ÕÄ �—”_Lžvš%Á÷'æƒÉÁ¿ÅÂr••óî[v¼å‹÷‡ç#âœ¦nw‹¥‡~ÖjpsLs€m gì��à%Ž|NöÚ¸[‰ðË³uìzH•ºý­¤âþMè%ä‰‚+8…]NLB!ïþñpÌÞ+ð÷�:vóµ?›CÏúÂ2+ªxÕ#¼cR ¥ ”†³‰÷"¯›’÷ióý[,œÊÅ,3 ÜßÀ|OfÂä îÑ)™[¢ó$ l ¡ñµÂß÷™+;¿CYM�üµÎÇüØåþ’ð¯b·q	`Ô”kÐ_“ù>NØw	>ÞlGžú^ú>µ/K+ñ3ù‡SE°òæcØ|Ëvß{¢“!è›;¬\Ê€ÈD}üþCú7ŒëˆÏÌ�=ïáYXËÚâ�q Làj€ìµž‡3ËÚ‹ð7b·k	¢ÙÌµ~-¡#áÜŸíM¹Cgèõ%þ�/¸ŽˆÖ™¿>Y®¹S3Øy÷¡è€†Ä,Ó½örQãîFÙßq¦^U&'mã Ú)ÇÌdÕ3{X�q²×¾?ì*+[sÂŸŠÝ–%èR©ƒw5-)ºú4ó¡á%Â„ã”>| oÍ¯«øñ¸(=Ÿw˜`–HDè;-]`«¹l'Oä–ÿV2`&û\uþ–\Ô˜ôT.ÂW�œç6èb 8´9é¢8iˆË�LñÏ#C>6Þ2 w“ì¡©Jh•8RÚ¯Ãæˆ:�E¿æY“ð�W¶˜øùØíJ&lµö…]–`»¹l3w„m·]4ZR”q×ÝGdœïD{¸"�“~ën8ÁDøÛñDøå‰bzè]0šAHfS¾?Ì,û;&õÌeåÔÕ †ÇÃ%Ö^€rÆø¹ñ’…Òçê§=�<dyOì&'¡µÁ¸ö/v&¤ëê‡@‡=©-™vZ'~p²
>»”ýÍR`ÂÍ(˜|#¦]†ifAÐ÷b$üõxŠœ<ž	¿9Q œP�/ÿ»#Š‰?±`éó¬ž¾3€Ìâ2(¬®×«àn@_ÅÝ€i…%
×râ®“Òçâ³)].vs“ÐZ±7Ýš>Ù™‚_û:l‰€û2[ÅÓ¾5ÍBÝ|ªRQÇhˆ¶ù 0f~*k>hÆ?6Yáwo»5mÂ„$åä÷qÂØVa™°—ØÍLBkÆ�Üv§4t8˜/ôPÈvÉA‡ø×ü‘^‘ñ*ÏÔÆ Š+kÀñEM
‚áÊöA/á¦Û3…ßu
§CYv'$cãX•ØÍKB[ F„áyo­@h­™_õ‡I¹ó˜»ùÑÙw}€Uuð$2‘îÜ|�µ9)6UáwX‰`¥ñ¿`\»¨CS.8ÑÅÖšùÏc±Ðýˆ;Ýq'Ûî›¶T¬|± ºf®}õ¢2óV$0ï#{ó#1 �ØMJB[†ˆ×>[dm�ý¿‹Ä` ÌÈ·¨©àpOÉ,w~æ�d>ýZ9)ü&Ša¼î/vS’Ð–�‡@×s5ü_œ©ƒ>Ö¯a°Íúß¯5Ð|sœVŠ9¯ùÕQÅƒBJkê8Ï”1–9¹¤’ž…Dq�÷TÕAvEýö ¸Ž��Ê-¥Y¦™¿gã!Ý71“&~m~­‘°£ØMHB[žg\{Š°žÝøNÄÞÅ¢¦°RM¡)|lö
~vJQ¶$ÿ|\ñàÕ„ÜB:€ÂÖt×¦*b¯"5¿Xá·0¹,·d`Z,S4)ðG‚a\ûÏ˜,Ò¸ö-[ØèfÙ¨”s÷Ÿ÷ºûš&£üI+«¡8åÀ»ÌJ˜’ëUó±çØ…Ï©¬¥]®':£Êh/{åuðêÍHÎ+"‚¿¬` fnMG¯»½L†Å'¯1_Ã-åÒI> ãÚN„�¸„€'Ít&=‚±NÊ¹úÆ9¿¥½…?(ïIoóìzDqoþÎ÷i"�zÆ>LG‚!¼Õ�”x>d	ßãp¡¤¶�Ô‚—™¢²®žÇ$ÁæËVJ+.[BHV!\wÎN:’@ø;±›‰„÷ÆµC:¨X6Ä´S=î¼VP3 ÑÝª‘žI÷>~~¢&º®$Rì’ŸupÇÀðŽN‚ äLxIŒ!¥ òÊ*¡¤ªFÎbÂ4ò÷ÀøT°÷�fÖJß'#¦!Ã|¬§>�ô#ü±›†„ö„¦ÁM>q Àÿ}­�8É—Á_ÃSiÿhÒvz¿"½Ì¶Û“˜íñØ—‚‘ñmµÑ‚ºpñÉ«ô´(ž|÷	.vs�Ð^a\û'Â„Ù|¢ùå™:øâæ+øÁžßè1_äõÞw_Ã—·^Ñìµ¿>'îÊŠ¯£“y#ô»÷šgø®}Æ­0:vÃ FÀb8á±«_‚„w0®ý±ƒš¨Âß�¯ƒ¯ˆÀ‡Ù©6æ„â‡7ôìúon7ÂÇ×_ÑaÆ¯•S]	æOO5M`þ†ÎMà™y˜+¯'/‡’kã:COñ3Co¦Á0ã‡0æ�…Â$¡‰[¿'‹]Õ$ðÃ¸öß„ûÓÕ=a?%‚V5LPÇI.oaéŠcïb°íºÉ$Í(‡·tþ�}*®>8’|7GÊmÊŒËáw'ré¦¢¿O,øøh˜ùàC6Óˆˆv'üùoO\Â3jÊép¯yFß‰ð:áQÂ©„¿»j%HÐÆµƒ	/æ«{*ÿ…ˆ¨#*àÓ~¼Šî¶XœHÌÍ
W5p~C`/¤”ð*á0±«B‚qa\Û»CSpQ¼�®:
Ï¶ûìÆ+ú”EcÀymºçšp”ã[èÿ5|K~�Ïþ•fCŽ\Âk„CÅ.r	Z'ŒkÿA¸€ðN‡¦C*4Ç@z8†Çñ;.+âÜ NâÓƒ“p–C•QÈ8Àÿö&ÿÆ%Ê®äuŒ[À‰IœÑÇ€%œÀy-ç*	�	W~!vÑJ�Ð¶`\ûÂÎ„:4mFªÖv‚¯øš0ŠÐŒp1aÂÿ»%Hx¿`\Û—páÂ'„"	>“Ð–pá Â_‰]4$´_×~ØlÓ›{'­	Ÿ¦¨raa"aH‡¦<ùN„–„—�n%œÕ¡iâòsÂ_Š}»ô�ÿ>£²ßÑm¢    IEND®B`‚PK     p‰U]©îG½    +  admin/images/icon-search-replace-wpcode.pngnu „[µü¤        ‰PNG

   IHDR   €   €   ôà‘ù   sRGBÙÉ,   	pHYs  ,K  ,K¥=–©  vPLTEÿÿÿðöÿŠ¹ÿB�ÿuÿhÿ eÿiÿwÿG�ÿ”¾ÿõùÿúüÿt«ÿmÿoÿ„µÿüýÿÞëÿ)~ÿ8‡ÿéòÿ&|ÿ<Šÿ˜ÁÿlÿqÿŠ¸ÿ±Ðÿc¡ÿuÿ'}ÿiÿmÿT˜ÿg£ÿ<‰ÿfÿeÿÚéÿ7†ÿ¦Éÿôùÿ=ŠÿW™ÿ¸ÔÿÔåÿÇÝÿ†¶ÿnÿåïÿ0‚ÿîõÿgÿAŒÿ}±ÿ Æÿ­Îÿ¬ÍÿœÃÿsªÿ1‚ÿ2ƒÿïöÿ©Ëÿäîÿ”¿ÿ3„ÿsÿ¯Ïÿüþÿøûÿ�¼ÿ	jÿò÷ÿM”ÿìôÿØçÿ(}ÿe¢ÿïõÿ9‡ÿ;ˆÿóøÿWšÿ*ÿ%{ÿÜêÿÅÜÿ‹¹ÿS—ÿöúÿ‰·ÿ½×ÿûýÿ$zÿÉÞÿu¬ÿnÿ™ÁÿŒºÿ6†ÿ#{ÿýþÿùûÿg¤ÿñ÷ÿjÿCŽÿz®ÿ]�ÿšÂÿ;‰ÿF�ÿ÷úÿÕæÿj¥ÿäïÿÏâÿq©ÿµÓÿ•¿ÿ!yÿßëÿŒ¹ÿ:ˆÿâíÿV™ÿÖæÿ[œÿ¤Èÿ${ÿ¾×ÿ«Ìÿ|°ÿêòÿ’¾ÿ*~ÿ^žÿM“ÿ²ÿDŽÿÐãÿ#zÿþÿÿñöÿfÿÌáÿ?Œÿçñÿþþÿ‡¶ÿöùÿ¥Éÿ.�ÿb ÿ¹ÕÿÆÜÿR–ÿ+ÿf£ÿL“ÿƒ´ÿJ‘ÿJ’ÿôøÿR—ÿâîÿ?‹ÿU˜ÿn¨ÿH‘ÿÎáÿE�ÿ`ŸÿN”ÿmÿlÿ\�ÿûüÿ>‹ÿm§ÿµÒÿ>Šÿ�Äÿ4…ÿ÷ûÿÑãÿíôÿ,€ÿp©ÿ"zÿãîÿèñÿ½Øÿ6…ÿpÿ�³ÿàìÿÆÝÿoÿ	kÿwÿ-€ÿqÿ7‡ÿQ–ÿ§Êÿ°ÐÿjÿÂ6  &IDATxœí›{PTUÇïOF‚—	óÑ8N™:ÓÃ\‹˜ÂÂØ$²±¢ÙjŒ‡1cL€>F"bÝ@G‚itH3iÒÄi×Ä™]±ÈÓkzŒŽJeB=œ�v¹¯³{Ïaï¹{ï¥±óûƒß÷þÎÙóý°»÷î¹çÞÜ0 À @ðöXeæ�áñ b þ2È\Œ(€"@ün°½?bá" î·I&øsÜÔQ„ ˆ‰4ãÿ÷‡å²ü)  ×þm’¿ï½>�€éý¦\÷«´/È ³.bûÓú” &\N	0û<¶«11£W	0ÙÌ£òÌ%Àý9î2` €0 À €Î ³üg}½¡ûpãð oš=ÎLÀœoÇÒ|851 7-
]æ~%*õºÜò¥$Uè
0ïY«%Ð`þçè†:]ÀgÔúî†áZ��„ôa$‚?÷ˆ%+xèÂ °NòŒ
ò>8-žÓßó�f€d€#Èf@'¯:h´¤B{PÅ.^ÄÞIC  ½sHQË„Ã¼È€ê	´<äRúû†Xqˆž@@æP¶¾ÒÛOM 	 «•Ðð¸è;{Ê7*	´ ¬xS’Ù>Î€vi½ÕûuÓ¨J- O´Â’	oøÒôÔ�bÓ³»E5òØ^”àî×õxšy‘Pü×W½*ˆçà5±[î JpÛÀºämÄš&©¶ºA…�R­ œÈ«’Nê .ïyåùÇ‚áëW¼Mî@PÒ†Ÿ¬k (|™Ïë^AŠ/¼Äç²­H1€ Ü¡@I5Ÿ£F�âÚ*>/ùí‘ì–ôÆZ½ J·££«ê×òù†h×²n ùv„	P¾™ÏÕHqÃ&>[ÑIêÏUVê°iŸ«+�bÌ%>¿¸™à_ó2e`K)Ÿó6Jµªµ‚¨[�÷çåøÑ4 Ô	ÂY'^\ªífõí^¼Cí/º8ÎÕ	jûOü®å„¡²ð{¼ã©„Ñ´ü4¬UxÜ5 %Ò¯‘´kù;ú8Bh�>Eì.Æùç-Î'¦`�×Ch±8ó°þ}ï“G£¹2JjjÉÅù[êsÆŽ àìRÓîªœÿ¶Uã�G°²IMÏtõÒûÓ´ÞKhÙvNƒ?%Àž�œø†š9Ï÷ãüí6â¦ êL²Õø�uG\× —–ãJ/ú‘Ãú¿�þd‡ÐjGOG,»Vúþ&®‡bdªèógèëà ûÁ†lÙS1n�À’MØ O^jC¯(Sv±Þ�~Eò3²BûS |0äàmËÐ.Ë—«ð§ x÷YGÏ8‹ë‚¾+*ý) ’ŽIò‘\¶Ëýò9kZ¡:
€·Õ²¡n|qÂÎqG:ðSÐp óRyqÒ	ƒ¹R‘¯ÖŸf7tÃ½þäÉ"Þæ”¸5y,G»–ªõ§:Û£O�.%Lîü‘c©÷«>tRí¯û%oë¶==/¸ê.Z1 À  ` €\ ‘Ä5 âøb%ÀÉ$N,RD…\TÐ1ÖH—1d€”.äod€hÏ]¦ù_Y*­h ·ÔOýÃ4 áÖ«  ËÑ%&ùw77ã ¸x4Å?¶ÙãžjˆŸ¦þn4íÑ};zÄ	|¬Â¹?…36º&75£ÛÁÏuDŸ°ÝZ¹ˆ3&Ž½çžé¬ýç÷c €üÿ þ®œ­�Ôi°    IEND®B`‚PK     p‰U]RQ1=  =    admin/images/icon-wpconsent.pngnu „[µü¤        ‰PNG

   IHDR         \r¨f   sRGBÙÉ,   	pHYs     šœ  âIDATxœí�y¼]UuÇw©™D„2X´Œµ¢PFÍKÈDFB†·¨€ÚªˆJÑŠ ©¨ðE´ehA>8÷JC L1eÈ HÈ@ÌHæ—·»WÎKI^Î}÷�{ÏYk�³ßÏçûÃ=¿½ï¹ç�½×ÚÎ                                                                                                Jùýƒ£‚ßÞZ2¯¾[;Æ\!Lð‹Á›d\¬Ãæ^¦wœ�?8ø@pcÐWÀIÁCµcm
òC‚/ÈRÈŽ•®OÛ*×{üñÚÑÇù³‚Ëô'@î®žªoC�¿Í@~²ž>/|ù}pJð¯´‡ È\­>øÅ¹jË5–	ò7ÈMÖ±›¸–‰ë;o l_íaˆƒäQYë”`9~QÈl7�™¬Ÿ]°Í—Ÿ�|»öpTò}Õ^ÎS´ãîqÜ�·wÔª9áËÞÑåÀ~V{8ªù—Õ_Î«µã®K\7ä­v¸ó[’òågW÷Õ–jBþ_Ò_iGÞ-ü'
ùér’uÄ‚y5¾ü[ý¾öÐTò|C}ðemÓŽ½[’u~íŒ¤]ãú´­¬sØ<B{xªù|io×Ž½&Éy©�Œd2£Þ¯ÿVï×¢ê@þ�àZõÁ—÷Bíèk’ìðÓÎGÖÖö×]ËÄu=¼°§kS5 ÿkõÁ—wMp/íèS!ÿ·Áõ2’uàóó3|ùÃ??õÉðïí¬=\å†wÅñ[WíÁ—÷JíèkBþ~ùÈ:zõìÎ¿í{zØàÆ¬ç]vŸâJùgÕ_^~Ù¹‡vô©�?ÃÅxCî7å�L¿þCf.êüw—˜Kó�­>ð:×Ž¾&ä§ÈGÖçdúò·L\æZÛ×móßøºö°•òo¾¦>øòò�Í¿É_b i×º>-Ït¾`Q—ÿÆ†àAÚÃW.ÈÓÀàkø1íèS!¿[p¡�|d2kn¦/ßG^wÔ‘Vq»ö–òûWª¾¼¿ÐŽ¾&ä¿k Y[7ó²ßšL7€‹–ý¥›ÿ&zôòwª¾¼›/¯Y„ü�.Y–ÔÎHÖ�S_ËôåðL×Gÿ®>îÊRá©ù£‚›Ô_Þë´£¯	ùûä#ëè5¼ì×žáÐîÆ¬éÉS+ztï×|y¹ÐžÚÑ§Bþ$c­¿'eúõür½_ÿ­Î¢g@*q––²­ÚÑ×„ü“ò‘õÂÅÙ–ýzOXíÆnÌò'Òg´‡Õ±––&ývÕŽ?ò#ä#íz×÷áe™n Ãæ-Îøÿàvvè°ñÕúoõlíèS!¿‹KWµó‘uè+Ù–ýú´-v­›yg…žÿOœµþìƒÎê[aîF¤Ÿ�¬­›¹–Iofº\¸¤Ñ’h^õAÏ€-�¿Q}ðu<R;úTbÝ‡1hZOkýûMivcz¸¤Ö]“A–Ñ›´£¯	ù»ä#ë˜us\ï	›2Ý F­Z‘Ãÿ;òžä«>øòrs“÷hGŸ
ù£]Œû0ú?ùz¦/ÿ iKrú¿à¬Ö~NRë¿Y}ðåý¼vô5!ÿ��|dùÆ«Ù–ýÆ¯sc7¼™ãgˆ´g@œµþüfýÚÑ§ç>Œ®ï#K3Ý †¾šuÙ¯žvû?F¼µþý´£O…üNÁYò‘uèìlË~-“–ºÖö|–ÓžrÄ[ëÿ˜ã/šEÈ_a a;–„/ôêL7€‹Z®æ›ÊÁÚÓ@†xkým–ƒòã'ùîÊX«é ÿÍ¶å÷üÉ‹ÂM£ÈvhwhO…â‰u�™üjG_ò?2��¬cÖó²ßÆL7€‹VHÌ[›?¹ã3ù�Žkê-Bþ0c‹ïþOu=Ù·{<'µSµ<§Bg&ÞZÿ«´£¯	ù?ÈGÖ‘Kgg\ökwcÖ­üŒíg­¿Ý%òg¹øZ|ot}Í¶ì7xF^›~zj{Ä¹ÆÌZnñ=Í@>²›“í×¿eâJ×ºIãO¤ÏjO�üˆ·ÖÿyÇeµ!™�|„íXæZþ¸*Ó`ø|­PùO›ÛÅ3o­ÿiÚÑ§Â;Éç½›Í¾¼˜í×¿ÏÃáÑ¿Cs«ú´§JóÄ[ëo¹Å÷ò‘uì^öÛ�é0réråÏÍ7ŸiO—æˆ³Ößr‹ïƒ\ŒG­x&ÛÉ¾ýŸ–~ñWË÷ˆ·Öœvô5‰ñ¨õ‹–Ï_êŽ7€7úÍUêŸû-ÏÐž6�g­?Oœ½´£O…üÉ.¾òëv×wòâL¿þ¼¨õâ¯–/ºÒõˆ·ÖÿÓÚÑ×$Æòëáó2nú™°Ö�Ýhñ©u¤öôÉFŒ“-Yê´¹�#ÊòëŽå®ÏWfº›cí×«v7”í@”“m‹çhGŸJ¬å×ƒ_ÊÖé§OÛÒ[|Kùí©TŸX'ùñÎjùkä#ëØ�sÃãüúL7€/SÿÜÝ[‚ž1N¶D«-¾÷sÉ‹Ií|dð§l'ûö›R–½*wjO©ÚÄ[ë³vô5!��|dµbFøRoÎtµJ²Ú¯Y�öˆ³ÖŸßï§}*äÿÞÅw²ïfw~Æe¿A.[7¤'œ¹?7cí'ÏuV!ÿ¨�|d>?k‹ï�nìú,'ûZñ|íéµ=qÖúÏsv[|0��´+]Ÿ¶™n Cf•í×Û¹gdÉ9ÞZ«-¾w¾j YO%Ó—¿eÒò‚Z|Ki g@Rë?Ã@Ò>îì¶ø¾Ò@>²¶nšëZ&®Ëtñºõe¿zò‹Kå÷Oä¿h OÐ¾ä{µËXåð\¶ß}]Rp‹o)¨9Ùb­õ¿K/ô:�ÿ©�|d½jfæe¿‹–Weo×Û|Xk²ÅXëÏ-¾ÿF'ð:póˆd·˜vF’v¸ó[˜éË?àÙ²¾ø«¥BÏ ò‡º8ký¿&v!?Á@>²ŽX0+ã²ßf7fm—ýê)Ü3 ÎZþsç]²A÷òçÈGÚÕ®OÛ²L7€ÁÓËþâ¯–‚=ÈÌÅYë?B&àŒ�w�@;Y‡ÌÈ¶ì×{Â›nì¦*ÿ‰$Ô3 ÎZË-¾ÿÙ@>²¶¶Ïs-×dºŸWÕ_ÿ­r/ƒ‚{�càB5üx±Á6H²c¥�¥œŸ›ÛåÎË€³k/û=Ìµþ1<µ^]äd‹µÖÿ7Ž³-ãJÌèÕ\í÷FðËÁßz2ë=~ÿàEÁíË�G.�¥J•W©)j²ÅXëo¹Åwœ+1ýŸ¾'|©»?5§÷øÝƒ·lùò÷ªê�þ]ýï"&×úWeóD-·øþ��|d³þ?Â—ºçX½'|7<1TqÙ¯ž'å=Ùî0pQÒZnñ}š‹o%fµkmß;cN;¹WHÈ?årëÀ_ò'¤j{I>@²*¡��´Ÿi0«OøìöÏk²µ¸i¹ÂÑH½uÈ“�|¤�Ü­‰Ì&¸iù…}ý*Èßbàb¤=¯ùà
€ü®Áò)×x$u±µGcÿ%�IÛ`Bó¡ùïÈGÚ|Z®Çù‹_€6Ù3€üå.DRË-¾ËÔ½ÖÖx�ßÛÅ¹’uS³Álà"¤´Üâû^ùH›oÃò_7pMÒòjÑß5\/Q,·ø>ÞÅ÷7ìÚà¾9çÈ»Yg¸6il6¸Ã\ò÷„ö…)å3Ë
 éA¨��´Å4½$?ÌÀµixV³ÁuÉ^cí)ÂqÎÜa��b i_qÍ,ûÕÏtŠ�k”öe×tEkrÚL•6¡p	å�|fUð€ÅùÈÚ»à\ùOª*4Íêè<Âãí•¼õz—2½dþ)xÛ–IVä¯LÄùÒŠß7ÿ4Fþ—®UZî‡Ø«ðlA$[°W˜4ÒÊ,Ã’?À%/µ¯WÚkDòMBþv“EZÙeXò7¸fiù=Þ¡¢9ƒŒð¯`u_¸Ö’�»¯óÏ?çÝƒ\»´ô ùÇ¾‹®æ°o½¡¬/5píæÜ3 äCœ‡­ÎvZ'-'/µ§È@Ú§�Õ¥ïhI[�n`rHÛ¢œûÙ2Ð0§ž â<lµÍY8i9Æ“•’Òr�'/Ð…¤Å÷R“BÚ£µ£ßÌèg¡á§µ£/�éOi¬ûv$›Ä´3‘öíØù¸øú.rõå{µ£ßŽ8÷^°uš­’ß?xxð—´Wúp§Gvz”ãG9òÇ�ç’ºö#ÁpÉþë‚':^‚Hühðäà)ÁS]rî o3þx§§wzFðƒg:®jJ^ÚœÓé¹.9“›?~Ê%[|[:ÿýýefN“ðÏú“@Ú/hÇ¾ä¯5�‹†G¤…ñ	—¼)ûáÜ‘[i½S~Fõ€äæ[aÊÇ›p¬Aþ{²Ñð€mCà¥¨ŸUpRrgÙÃõfWÈO5��´ý´cO…ü²‘–�½ßiÛî1ð¡Š’Ò<Dm‚u…üÅ2‘öagaÙ¯+\J>–3·õÚmC¸ÌÀ*ÚGõfÙ6$.Æ}èÇhGŸ
Ÿ¬«Ÿ�´]Î¾$¿ÈÀ‡’Pù7�ƒ´·iÇžJRzã¯ÿ¸mC8ÓÀ’r¾ÓÜEþ@Wý‹]å—É6Weâ\þëröe|�@:ÕgIÖ÷¸~i¿¤–wwÄYzÍ^Ú5ˆøP’ò/°üF”dÿCl'ûòR¬½e?&ÎÒëYn‡³/ÉÓÀ“Vþ òO¸ni­.û}Ê@6~2-ŒOø`%8á.4p½ÒNv6—ýb-½ns©} ’Æs|@i'	M¸]"Í÷8‘|³Â[‘õ³Ñ°›êKòÿdàjx®À„‹ñO¬Ÿžk#$¥×oÈGÚ[ëÃ�E1nMå—"o+pÂíãâ[gÞ|_a™6ùäct<’ê;í«aqg’¿ËÀõI{Eay6o/�[#~5KH¿7ð�¥åC8êÔE74á¸Dz“�ë“”7ZY]öû­�|¤å¾ªaypœ›#ÆÕ'ó„{ÈÀuI;0÷ó é9Û¶�ó/ÉÿÄÀ—¶ÝñQèùM¸®IZ>ÊÜÞ²CþYùHËmÎvn$¬^.9LPû¤ýUŽn¦�ë‘öøÜòË>W?Om&´/¸ OËaÂ]aà:¤½³éÜŠ€Wx’íÈÚùHû‹fƒãÍ+1þŠýÙ5óK~ßÓ¿3:°¹	W|"®~>Òv©õo<¼�.FÃaMdv«�Ï/íUÍO¶Hö`¬2��´×åâc.HZnö®²:Ì%›.´?¿¤¼Ì´G~.GâÜƒÑ¥Ö¿ù�5pQþ¤�¬&øÜÒ6°Ì$@Òª>¶=ì%E„y·�ÓðÚúá¸­Û¨ï4ðy¥}Æñ»"‹$•oÚùH;ÃíPëŸO˜ûW¸@¹ƒÏ¾ÝdÃÛK7ð95<1ÿÉ–q³Î¦Ôúçê·\ –o:Þ#�¬'óiG|‚ÑØà½.Î½åìÝÅM¶&HžÆfÈGÚI.µÖ?¿`ßîâ\O…;Ê[TÜdk‚8�YgNZN~õ´/êû�â'[Ä{Ìz�ZÿüæÇ«ç\0Ô“›id_"•€üMò‘–—�[®'§øj_4Ôs„ÜdË ù÷»8ßÇ|E#ìÿ1páPÞç�Ýe¿ßÈGÚŒµþù…ÍK_±íxƒüôg‘dU&ÆZÿÁš¡ßb  (g“Õeg­?oÂj Ö?¿Ð¹ê-Æîª1ÊÍRÕ›lÝïÊÔ)ÚÑÇ¼æ›=Û-ù]ƒä#­‘§1~!ÿ²�@`qroƒwkOµTÈÛ@>Òò»Ž÷kGÿñî»ŽÅQÚS,•¤>%ÆZÿoiG¿#ä6Ìßi®ÈCSš!Î
Un_¿§vô;’œ³ã2LÕ=]{j¥Âg&/&µó‘¶U;úÚÄÙ}¥Êþ&¨=«Ò!ÿˆ�|¤åÓŒwÕŽ¾6\3çßdU”Ÿæ>¨=¥R‰ó¼öíèëCþjAÁæÍÿ”¤<HŽ±Ÿe i'¸Bkýó"Y—�k 0Ø¸97•Ì‘8Ï[`�ÔŽ¾ç�i 0Ø¸Å�”Üqž·ÀÞ¢}6øÅù§³û’³ú¢)ÎÚ.o~¯vôÙ!R°Ã@€0›giO�TÈ ¸Þ@>Ò~I;úÆI–‘´„=÷gwÙï~ùH;?¸»vô�ÃM#ã¼k—ÕiO™Tx3RœO“ƒ´£oò7Ö÷{ÚS¥&ä§ÈGZ~‡¦XëŸÜ®ˆüb�ÂÚò™ûhO•TÈ_l ?ª}~�ÿœ�@am/Õž"©${J^7��´÷hGŸ/Éî­wt¦+ä,¹ ÿùHËN‡hGŸ?|f™~¸pGÏÓž©Ä{¥ÍÎK¹�œ]¦0|ËñÎêþrò?7��´\ëo³óR.ð2Sœ5ÜVµ¹¿<9|5Æy2V;úâ!‡� !/ÏZ…üdùHkwv®�ßÛ%�:Ú�ÇìÚà{´§B*ñÖúŸ­½ä¿f ð˜ýœöH%Y-zÅ@>Ò>è¬¾‹)n2IþUÁÇèìànÚS òWÈGC›ïb
…ü0ÁÇh‹öÐ§B¾Wp™�|¤½Y;z=ÈO10 1Ùæø1Û"äo3��´\ë¿Ÿvôz�?ÞÅYå¥åÑÚCž
ùÃ]œ'M_®½>äi` bðÇÚC]ò0��´¯¹R×úçù\²,¥= UÖn[)ògº8ŸjGoò7�*k÷Q39zL;iŸt•¨õÏ~"¿ÐÀÀTÑyÎê£&—!ëç£áIÚÑÛ#ÞÉP´ý´‡6Þ‹çM¿bµþy‘ì‹ñq°H';»Ë~×ÈGÚŠÖúçï‡Ö¤*yœö�¦’¼ø]c i¯ÑŽÞ>I�ºö@UÁŸieMÈßg iùD£^ÚÑÛ‡üaÁM¬Ìò¦š÷ie*äOpqÖú�ÒŽ¾<ð¯—þ€•Ù¯haMÈ?n i_p\ zù=]œ…!yÈ]tß©=„©�b ÏÔŽ¾|�ÿª��+£6w˜ñÆ—¤Y;iï¬·fò»gÀ2ù„³ºÃŒü¿ÈGC›Ç­•òÀ2y¢ö�¥B~¯àrùH{“vôå‡üc²Þ¥=T5!·�|¤µÛw±Tðfò›¨e7ÔªT’_ÿOˆþ¼vôÕ�ü½Ô²WiQMxý[?içß¡}uàZö8·ŽöÄEÁ=´‡¨&äÇÈHZ›X¥†üuÖ¢C´‡¦[â;à“7:Ù,À*5üHE~��¶ä3Îê²ßVÈ·ÈIÒ´#¯.ä/60À–<Y{Hê’œòËK\»+1•€OO!?ÕÀ@[ðçÚÃÑc’“o´ó*Z.`;H;êêÃ›]â¬&ÛÖUŽkêË7Á¨þy�vû.Vòd`Àµä5ÿS´‡ 3äÏrÕíþü_Ž·®A’îA10ø’Îwe~ÉDþ#Á—ä˜—ü$z¹³þ"¶²$+ý‚¿N¯¨ü…¹3x®«ÂùñÉÁ°}]²=øiù6b[ð²à¾Úq                                                                                                   ;ÿÛÄ÷_ùáËc    IEND®B`‚PK     p‰U]úv”oû  û     admin/images/icon-charitable.jpgnu „[µü¤        ÿØÿá Exif  II*            ÿì Ducky     F  ÿá1http://ns.adobe.com/xap/1.0/ <?xpacket begin="ï»¿" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core 5.6-c014 79.156797, 2014/08/20-09:53:02        "> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/" xmlns:stRef="http://ns.adobe.com/xap/1.0/sType/ResourceRef#" xmp:CreatorTool="Adobe Photoshop CC 2014 (Macintosh)" xmpMM:InstanceID="xmp.iid:4918C28331B111E5AAB3F4228B4D052E" xmpMM:DocumentID="xmp.did:4918C28431B111E5AAB3F4228B4D052E"> <xmpMM:DerivedFrom stRef:instanceID="xmp.iid:4918C28131B111E5AAB3F4228B4D052E" stRef:documentID="xmp.did:4918C28231B111E5AAB3F4228B4D052E"/> </rdf:Description> </rdf:RDF> </x:xmpmeta> <?xpacket end="r"?>ÿî Adobe dÀ   ÿÛ „ 
				




ÿÀ  ‚ ‚ ÿÄ ­                       	      1!AQaq‘"�¡2B#±ÁRb’rU‚¢3CS“$D%       !1AQaqÑ�‘¡±Á2ðá"BR3br²S$ñ‚¢#4ÿÚ   ? ÖWçc¶„ @ @ @ @ @ @ @ @ @ @ÑGA]q—àÐSKU(âYò^‚÷†	&^XÚ®]‰iå,Ì‰-{‘©µl:+l7»t¾ÝQO9ƒk°Á{ÍAQ
[$njkT¸ñŠ²	VÆ=®]äzÑ6Â €  €  € Ï´ö]nå“êe&–ÍùÕŽá«Nm�ôœ‡©Xrœ–JÕæ_¦4ÅÜ8à„.eš²•9Sê‘po‹ËÛ}Ðíø…�dA)áá-{›¬=ã2Ü}£Ò÷zå^{#}
DDÅØÚ»5ï^‚&›(}Júµjª«öüa¹ëwš[ŽžQûÄEp¥w	"s´œðs à­tU±ßöY#uYgwnoÓ9>‹X»íï$nÛfÍ»m¯Ü;4ëÆ²Ö i.Ì€ÑÁ®èÃÂå»W–Sæ-EÎO3>Z±MJjù¨¤H*¯jù_óÒ�¨fäH ‚¨eÀ  €  € óµ¶<sS0n—ýŠ!ñr•¼‰æÖž÷rVü¯#G3õKÉ_bÝÍÁ;WAZÌ3ek½ªE»wÏ±�Ç»ëw‘íí¹Nè-ˆ ¥…ºdœ�&þ^õŒÇ7’±Rž™ªØðF¦.à›:ÌÐå¬¥Ežuµøª®ùíê*×{]E–¾Km[šja2†Z×=�úqç†8^«¥u4«üÉe¶mKl&©ª<i#p[lë°âZ†É+·¯õ»rçÆŒ’†¢pl±cÅ§î<Š‘Ëëä£™$gJkM\Ú6UD¬wBêRÕ¿¬”utÐoKÕo® Ö5£2;€y,O…ÿ ›µXsú(äck`ò?Í±uø.Ò&«{´²ù™åÝ«Å6K-! @ @¬cä{c�¥ò<†±�¸“� fVQVÄ½TÂª"Z¸=›jZö­7ó-øÃÅImàã¯1‹}çõdÞ}Wº,¦Ò¦·µ›|Wf	¤¨Uf2Ö?Ð¥ÃK¾0NÕÐBÜn»‹Ì[³(©"-¦iÕ#OÊ‰™|I]Ìõú QuUYÄèÆ'Ó¡ºµËñ°‘‚žŸ,‹™Ë~•Ò»ãy©í=›nÚôú™…EÎA„õŽeƒÝoÛÍt<«&Š…·}O\]àš�¤æ9¤•n¾æ&ã­L‹±ÌÞ@îoc‡a‰…sLù,¯“zJÜ�m£�r÷©[P$¸@h[Ý`¨ú½¡sñÛîLy�®å&ŸGF¡âa]=¹T×óÑË{$E³~”éK÷¡UÏ)ÜÞZ˜üÌT·vŽ”¦]í“Ù®uVº�ñi¤,Õ–¦æ×hUR®™ÔÓ:'bÕ³‚ô¡c¦�³ÄÙƒ�âZ†À@ @4—:¨èh!tõRœ3ë$ò™+Þ$�èÈÓ™Ë òšfDÅ{ÖÄCI‚ŽÅå¥knE·Õ3q‚žãøqö[ÒóÄòWØà¦Écç’É'T¹5pOâÅtçË>jþF}¦+¯Žî²¹CnÜ~cÝÝUS!ì:e©p?g¢6ó=^’TõyÌüî[“}­MMO�¤¼ÓÓepòµ/Ðš]µ~7%ŠÁmÛ´BŠÝ–ç,®ã$ŽüN<þåÔhh"£�’4ÞºWyÏªë$©;×rhMÄš�4ŒGÍZ3Oº>£]<o­˜Æ~À¹/ºaä¬æümEê¸éÞ—š——ð¹{o*v«|—k�5¶µOÇ$¤†±ÀÇ%\¥§Z‰[*"¹l¿r¢d†7H¨ª�Kn&·Å¾íÈ>®©±ÔQê)ÉsXO¨8;rR¹†GSFÞwXæën�ä}oS¹[j;Rø•SPÕA[Lí5ò6X�æaÄ(X¥tOG·­©ÐJIdj±Ø9,/¾eÓCp¦´îÚ6üšø›Ärv�lÇ¯Mô+�¹blÌŠ­˜=,^ôñN‚±�ÈèÝ%3±bÚ�Ëà¦x¨å°  € %,;~å¸ëEº<pÀÍ;±ÄÓÍÇì•#A—ÍY'$i½t&óJ²¶*Vs½w&•Ü_+nÖO.©$´ØCkwƒ
ºÇ€DgóaÑÊ1éë¹MUO“±bƒë™|Î]üÖUâ§Ÿ4zI7Ó`Ý‹¨‡Úû2é¼*Íæõ,�·ÈírT<üÚƒÐÌro-Yt(Ì¯&›1­2¯"âº]»fÞ£0Í"¢g¥'2hÐÝûvu›-%º–:*[,CLq°` ûÏZêp@ÈXŒbrµ4öY_+•Ï[UN…ìysæå°Ïk£º±¸ºŽS¤§6Cš;ÕÝ´ÜÐ²TûÅÜï™nöÜü²º5û’Þ”ùRÉO,sÂí3DæÉ‡'0âx\Ñ�V9˜¥è_Ôr*.
~…}Æ†ï´¤¹O§èª¨Ÿ$ÀäŒêƒˆ]±ÕÔP¬Žò¹Š«ÕyÊÁV‘§™¯±:î?;†9à¸‚eM"Çÿ »å¥ÖÖïE©Îš�Öüá‡÷Â½Q•”K˜–Ôþ®(Tjÿ ÇÌ£“D—/ôð3…C-á @‹ií*ÍÑTí.ú{m9UTycÇKqÍØw)Ì§(’¹ë+æw‚mî"s,É”�ÖõÁ8ì,wíão±Q�µ²@Šxj.,âç8ð:ï8óéSÕùÄT±þšŠäL_Át¯ñuôyd•õêï]ã©6uŸßeùpú¢Ë¾äa®ã­äñÕ/<áÌóè^Ù7·öMR—b�×µÜ:Ï,Ó<F[~—jþ^=F°Öµ�kÐÖ4 Ö�€ d ]!,BŒªª¶©é O 3+&
Ýß}í›6¦MXÙêÿ ^›æ¿‚G„zJ‚«Ïhé®sù—So^jLSe3Þ�±5ºâ‡wónçQª;5+(ãå4ß6_@àÑëTê¿vLû¡j15­ëÃ¼³Ó{n&ß+•ÛäãÜNlû›÷®Ù¹Øîó|jö‡5Ò»E’âèß€ÃÙpõ-”U.gG$-¯¾ý‹‚ô/�™Ó¥K&‰,oS¥Š¦žj:‰i*[¢¢º)Xy=‡¹¤‘º7+rµl^‚øÇµíG7KPî7û©³2À*mm{¤0·�qqÕƒŽe ñÁm­|ÿ §J~oúí¶Ï�oÑÅëzÖ}vbF­pÐ¼¦”>ãt¶È~UU(s›Ó¡ÚO©êíí7[,‘®orÙâU=ÆÛ#d‰‹]ñÜP&ˆÁ4�â{£=¬$}Ê’öò¹[©l-Mw2"ë>Éô¤VË%¯ÊšÐ’ÏÞ2é«‘¼	9îp'¯@ob¾Låƒ$g§w¨¿Rï¶Þë
|MI³Wóý‰wEœm;|°ÚÖ©èÛ¸ªp©¬l�Žœ1d&3†8sqÌKsÛ\/�õú�j¢&†ÙãÜkgù„­ ß¥¶^ºíð/WmÍb²ûÊº8¤B¹Oc‹½JßW™ÓRþcÑV+Ô—•šj	ê?-ª©¯GYC»ù¼Ñª;	w!QVp¢6{Ü©Õ~îL gK¸'ÏMí­3;¡¼W�D»n­Á{$\+¤|'ü†‡én úqTú¼Òª§óªš’äêBÏM—ÓÓù–ëÅzÈl²Qd�êcl_¥Û—˜.LÅÐ�—U÷áw´;Fc¬)L²½Ôu‘0ÁÉ­4ñB>¾�*¡X×¶y—d†SO»­DKA\Ö
—³‹u‘à“±ÃÂzûU“Ü´Mw-\W±ö[gbôá¼‚ÈªÕ-¦’ç3è3µG-¡vò«WóW�,º¿S·Ú¿ûÚï·îü¿îO­y ^.!¾ÏÕO‡ûŽUºÏÏ’ÏÄîõ'i%ŸÊÞã‰j @FÏÃrl«¾×yÕUKŒô@çâ:Û‡cÚG¥_2órùiWÌÛÛÞŸòï)ùŸøµ±Ô&¹ÝËÙÜQi/Wz
Ih(ë%¦¦™ÚæŠ7h%ØiâG‡J¨Å[<LXØõkUoD¸²ÉK�G¹¨åL-8I$—‹�OOYZ†ÐX @Ãhnè-°K`¿0ÔmÚ°XðF£	~dôœÈ!Z2ŒÙ°µiçNh_ÿ |;±B2Ë]+’hW–Vöüÿ ÑHÍË¶¥±ÌÚŠi]Ž§ÅC_cšrkˆà=j?2ËV•ÜÍ^x�åra¹v›”5ÉPœ®NYæoŽâ	C’f‰å]8¦’í¸*<4”tæ=g,OÌ~�£½]ý­"ËPï+gŠö'iS÷ùÒ8[æs­ðNó>šWO4“»Ú•î‘Ý¯$ŸµRõ{•Ë¥më-mo*"j>Éô5µw»jñÅ­2@AŠª!›¢váÖ)l«0Z*„‘/LšÓâò;1¢J¸U˜.(»K¥~Ê±n¹ŸwÚ÷Xaú“ñ'¤�b÷qw C™‰ÌØ­“ä´ÕîY©eDæ½Zº½7ÈsYèÓÒ¨�W—ø¹N?éÓø¥'sÖ¯í)¿¸ÎÓc÷$_�Ý‡¿Ò;¯ñ:Nç¬þÒ›ûŒí¹"üì*WûûvìmU³5Î�æv£Dœð<xqUªúQÏé=SEú,RvŽ±µ1zŒMwn.-ò†¾F6H®Ð=�Íp�Øx‚0r´'´eTµ%m›—‰__rÆ‹bÆ½aÞP\XÒ÷ÝiÚÖŒ\ãÀ s<Q}£*%«+z”'¹c[’7u¡N±XgÜqi£™�q8T8#÷°xðÁUèhW?¤ÅM7è¸°UÖ6šQÉªíå»úCwþ%KúdVoÚ3ÿ q½¤îX»Ú/.7Mº) ¤¼Ó6šnS=®’þÔoiíÁmCíÚØQZÉ›Ê¸¶ÅV®ô[PÖ—<¥•Q]­LN”¼å>TÖ|_�p¹ÒRÒç!…Ž x�z×_jÉÍÍ$ŒktØœOoÜL²Æ1Î]¿#›un+=¾ÌÝŸµ]®ŒùÕ€â$8â@w¼\}§‚×Ís!§ý-íû�¯§MºW{åÔ3K7êª<ßkup³Bt”K-! @ Èâ8”º�ø�yYµE‡¬’XÞÙ#ylŒ!Ìp'ƒ�Ä”r¢Ú‹zV¢¥Šj7:(<Ê²SÝ­Žc7>U+ˆn®e½@Ÿ\»:L-Î©›,J‰3Ç7^Ï¯AI‚WeS¬r[é=mEøêR½nÞ;¿h0Zêà&¼1ÓÖÆàX:ðAÃ£‰
Ÿ8®Ë“Òz\š‹våÕÖJÏ–RV¯¨Õ½tµ{Ðöá½7~îaµÑÁ¦¼2ACËž'<’@éË­f£9®ÌÒcn\Qˆ·ï]]F!Êé(—ÔrÞš\©wA`µPAåµ–¢ñus¸kYð©)C´óáŸó—;fi`nKNé¥³ÖzXÖøx¹zº‰]šÌ‘Go¤ÕµWã°Ëß4Ò=ÒI#�#ÉsÜIâçIï\õÏs•UVõ.¨ÔD±ãç[ÿ »Êùµu™±.pÁÄ‘ÐN(«i“Å€ @ @4
ë]Kk-ó¾š¥™IÀáÐFDuïD�=•®M(xÍ&o+Ñ…Ö—Í‹Ó"WÑSVáï�cqíPî
Ù»*,‘�gÈ®IíÈmcœÞÑUæÅéñ˜¨(©¨±÷ÀtŽ€éá%÷eB¥‘±¬íà‚?nB‹kÜçvªû�uÒ¥Õ—‡ÔÔ»9$8à: È ª“ÔI;ùär¹ÛK0²ò±¨s-sØ  €  €  €  €  €  €  €  €  €  €  €  €  €  € ?ÿÙPK     q‰U]S’|'Ô7 Ô7   admin/images/sr-screenshot.jpgnu „[µü¤        ÿØÿà JFIF      ÿþ Compressed by jpeg-recompressÿÛ „ 
$$ && 9-''-9B747BOGGOd_dƒƒ°
$$ && 9-''-9B747BOGGOd_dƒƒ°ÿÂ Ô8" ÿÄ              ÿÚ     ú$                                                                                                                                                 TFÎp                           SüÝÀ7ïl                           ¿ó¨¯º€    ¡ºh^‡çš\oGß¼®NßµŒzNô                   ç\ÛýÅK¨n¾êó­o¸Â�V,lÞísÞ!ßŸ?LÙ}'ŽØ¤ø7¼F™gL2ôš¯DfÇ‹æ_Aòï\“åR|ŸéÞ½šª§Wô­Zž¾þ¥                   ç_V�¹x¯²ylïuy¦‡é¾qÕëiýM¿Ö­w�Dù¶ÏÓw/œwí[[l™ë$í>y¼Ð_è½~‚ ò(×ü�óåþÖ?Kü‹¶ï¸½ˆñ�`ò¾�æí·=¸                   ×þuö?Š{o�Y{«ÏvŸ»n¸)êo}/SØtZÑ}#Å¢^{_Ï×�îØ=#Éì+#Øú[ÃwßV£Óµ�ÿ Ë~ çÇüïÖ|kë–~¦yÿ oªh¾Ëä]½/ÌâzEÜ°                  _òGóº]Î“SÝ}ÕWåû¬ýÒ<ë`‘·ù•ç}Š§bóN–›ÖŸ·iXáê×{„hµ;ÇŸn�(}>³G°—æžø�®í:Æß oî¾oÒ¨uOKÕiý/G«ôœ                   ¿óþ�ºû¨  [aØ )-ò                      #øäPo{Ð                                                                                                                                                                          p                            ,                                                                                                                                                 €éÛ�` ûò ŽCP â<�‡v                >zÞ¶ˆÎœgÖzbõhÿ 5}ió´¿`£³× ošžå¦nºw¢ ó�Ž£`«ªÚ¨v­bç-¸¼¢Çf°¨ÍC²âÍŠtMƒÄý§Å}b'>Úv
�¬žG¶ØæóûÉ™qlt±YÙ€              Ç–QWÜÙêö–ÛŸžmùó«ÿ ]ùÛ4Éx7?>Þ4i>Åã¶Þ¥b‹ØM�[2ÞV‹²`‰é@bò+ŠM†I2µËÛÎ§úo˜T[CŸÎLWzg²�Æ�
ªï��¶¡¬]UÍŸ»               Ç˜ÙL¯Ëï`ó-ºê$�
Ï}ÕcMÖhmvÞš¾á¨núW§ò�oj}–¿´f§ƒ»Ö¶º>Ýi
¤)Ð¶Úxò#Â™G}Å.ô5�|RljòÍ…ç–$½�                  aÌ   éÜ :w    ¼ò                                                                                                                                   ×Î`  ôfÊ                       °                            à                                                                                                                                                                                                                                                                                                                              ðˆ¾ë0‰{iã¯Àfû”‘å{ÝÈ                        §Êþ“²ùnÆÖ,î4ûhý'Ð~^Úýr_Ï2ï(öß,±Ù÷=
ÿ I¾ïKî                       ƒÍ4¬ý:—r÷ŸôÏ8öuóè§ç8ûVýa‡mK†×ñ½£Óöà                       æÐ=?Ì7]W½¾ççÝåì•;•Î¼ÙõlÙô]ÿ çïQÙrj[4û=7Ô²€                          WØ€                                                                                                                                            *ù²äB‡r)¥Î\SÝ+-‚Ðgf  )®TYn‰  GÇÒx Ms‹¤ˆñl€             i}¤ôë‡tó9ÜÛUï^yiLºnnlô»êÛ*ÎÝ'6¯?¹�¸ëpí*³ÏÖìóBÏ¶ñSG¼i¶3ñf£±“¯^mþs;tÕ{@ÍÓ6zë83«w­Rxö•’§Ts%L]��zL]šZ¬2+îsk<wïÛ•>Å-mÝ>Û8            ÎÛ¥–G¢h™äRaô­C§÷J˜ßêÝ)vZ{èuñ½OGëšÿ Z‘OŽ_¡é�»Ëq>ÛQ×ýsL�O±ëövÕ÷•Üî^q®û¥;S“yOÒªæê–/¥i¡b·²Ò¯åRlZÞóNí®o5—Þi{�I[Æ·ƒ]‰—\›/µ-œ)8vË¼à            !ñ#\rãsÛ´YØ2Â““§VHS"ÊëÃ>iúÕ´èsàéÜvï‹èÜôË?=\³ÃgëžººÂwHÓ"K‹;
[‰q3åƒ2>xs;tË_3·\›YPäç@‘V,y£Ì‹",úù�û                                                                                                                                                                                                                                                                                ®0                           f                                                                                                                                                                                                                                                                            
;>@    q[v               |–ÓÑ8íÃŽºnÇmI¨ú|]û€    .À    “À              §Š_ê·NU±}ƒCYeªûìà    ØUc�   )'€              "ë–Â�îÃ¦ÏÚ#ØWi7½=T     @»Ñè³EÁu‚M%Æ­{®û§   $ð                      Þ?…o†Ó*–Ö‚Ê»Úò€  “À                      cWÙù8äã�  I<                       ­¾     PÙ                       Øy    Æk                                                                                                                                                                       Waä    ¬@              Ic(S\€5ý‚šä    ¶ø    Cd                Ï¿ÄVDÜ¨/õÝŽƒÓtÈsj|þöÏÕ2€   ìŽ�À  $ð               |çkŠÓ½Ó ßú™Nõÿ +Ô7=;Ým×@    @»Ò$éöZäÙòö�cÐ±gß²   )'€              YÃ–¿KÚo±QìúöÅ­úŒ0dXXÊ    ß_�=ÇIÜªýOË='ço¡¼J÷gÝ€  “À                      m:Îê‹a×õ]×FÝ´½Ž‡p·   RO                        ]€    )'€                      “ò     Ãð                                                                                                                                                                                                    :ÔÅàæU·`                   'Çë8óbÉ�6�½õÉ�&>ÝrâÔúÉ¾—Æ<à   
+›zˆ°¾                   _æž�©yFõU—Zú?ÇàC¼Áƒ`�°À�C}MMÑ    (6³S‚s¶€                   ëâ'ë¾�ç[F/[òžýo|÷beïsç;OFçå»<[È   ®íÆ—„Í´                           m�T#µüÐ                           1Ç	                                                                                                                                                                                                 ŸZm­;q÷²ó×ÖìZvâ       ‡èÎ½ôÖß«\ÕZÏË¡ë¾¥'Dß4=ç.<€      :ù=¯ ëÒqd¸ÉÓ&«´ãË¥n}]ô-ñ×FÞ2€    Çàí~’°Ij^Ùæ×ÔµMÆ›Ã¬z&Ô       <ÇNØûÁíÖN‘¸aÁ/PúGšSÈ Ù#j;¦™ô       >ºñ]·išvñUî¾	u_ížQQ/¦ã¨ÞëÝ2ê¾…ê@    `ó[­……þûV¹ëLO<Ø{JÃ­o:õÿ ­       2�…KcÌvp-$Äô¶�®Zk»GJÝ·MôKÐ      w}Î¾ÖD—KöO0ÍQëÞyÙ[wŠÒºÎï²€    ª‘Û~qåÅ›¶H˜3a›�È3ó                                                              2À       ;€¤ð       n€         »        !r &€       1`          Ï”       � q4       Ö(         À        	€       0         	€       0         `         �ñ÷ä  qÈ    À L @ëØ     !€         L*³ùç¨««ìjå]5Ìç2èlâæÍÖ¾ú¶ü    !€ ˜×j.(gîfl'é÷°dÍÃM·Ño     0         	…W•{uUTèYö&¯—·I1{Ê+RñÓo€    Æµ®ÙÖJß^q'¾ì³Ê.lºj^Î     C          ˜p9p«´¬v±ç‡‡^ütÈ    À LpçWØµÎ{_äìéÏn\cË×Žà    0         	€       0         `                 ` &        À         3å        Aì ³€       °          L        !€ ˜        C          ˜        C 0        †         0        † `                a‡-5Ç`ã“ŽDY<€    ` &œ¾Ä      †         0ÖàÖz*ž¦Ö®^ÄÔäsÆ+®öö`    0 –»°ÐOßžg7&WZö]‡g      †         0Ã z)
5²v6§'6)Ð;L‹~     C 1EU›^³Þžgeš5Í7{:Íè              Ã£¸0f«M�      C 0*¬õ…µ˜      0         	€       0         `                 ` &        À         3å        Aì “À       °          L        !€ ˜        C          ˜        C 0        †         0        † `                aÓ¶±´^yT[ñ×»Žq±e�ÞG.�ºÖÚÅ“×³�  C 1Ôëß–­´s…ß¦g^¸ù�aY’g~ø¤F Ùj­yv   `         _^�½ª)nk¤l-k	ùzö·ÏS›Y±ÏOi6¦æŠÖ$K;aîí°  <€˜Ôõ�š–föóìmäâí³Ùj’4{©zÍý®»³j›meÃ¼~ýûo            Ã¡º˜!óK:÷¥V^3³d�.²Î‚Ò·¥ŽiÕ1'Lƒ]’Ú¶ü  ÀÖ!Uú@&*ëZÅÆá�X“Ä®d÷�k­lúUíK˜è6�bºÊÚ¦žFÁG»   `         C§|æŒ9À 8ä  c©ºPß`C—Z³9¹€ Bš   0         	€       0¨Òíöy L        !€         L        !ƒ@	€       0         ù@       ;€¬à       ,                  ` &        À         &        À L        !€         L89       ` &        À         &ûè[ó‘3KjÛ;`Z+»Æ³éÍ|Èµ“âu°Å(   † b	tSno¼CêŽÙšÌ¨vîjn)¶zÞ§¥ÂÄ            ÃVóïIØU4w8r]© åÏ—?9dÆëY—]¼²£¸©»×ís×v¿   !€ ˜ÕuM�]É§ÕÈ•žO|÷ëùô­ºãUÙõÝ£N¿›I›u    †         0éWiÝÓ¯å©—,[{«:Éëf^+­sb¬³ÉÚ=mØ   Äl=4]‹ž³$Ö]s�¯õ°ÇY:J¢òdJü¹àëû    0         	€€  :ö   À L�À  9    †         0        † `                `        À                |        =€Öp                 	€       0         `                 ` &        À         &;€       À                Ã;ôT|9kóÙ5’7¢ñ>üO�yØ    C 1U‚E,Ý…åûÌ.½¡v³ªí°ë]n*öÜ€    `         oËý‚ÑSKkÓ½Ú–Y=äó®l\ê÷8íª&Ù€   ` &5Mbû§}Ñ§VH›Þg}+rï¡m86-vÇg     C          ˜t‰;§~9ãZ¹Ž•žçfî•¶±àÙä    À LqŽ&‘´ÄæÆE]ç\¹*,òEÖöêšËé`    `                 ` &        À         &        À L        !€         Jì        …È 8š        Å€         >P       .@ÄÐ       X                  ` &        À         &        À L        !€         LY9Ç      0  :ö       †         0ª“ç^¢®¯±«•tÔnpuí�/¥Ø     Æ»QqC?py~Ó®H¼ØbÜ      !€         L+<£Ù3*ª§BÏ±5Øým;LUTî     0 Ö»gY+}h�zßs7%»ë@     À         &9ã—
»JÅ£¯ ä     † c‡:¾Å®s³±fà`�              `        À                À        	€       0         ù@       { ¬à       ,          ù        Bä M        !€         tî        éÜ ;€       :w                                                                                                ¯–×µT«:¬²ô½“]Ü€                          (`Æ™†;c¨Ú éÛfê                          ¤ôËÎjë»L¸m(ùÜ2€                                                                                                                                                                                               ¾w      Ú¶�                     gÀ      ÇÑ                      ¯‚      O¤@                     5_':ÐvÛ5n45€\`®mšÎŸ¸,sÓ€Z}"                     ªø ÷´¸f×Dš°ªç¶kØt+|f±¬¼�wæú÷ÐžQ¤{¿m&ö—a¤íi¨nz¦Ñ¢êÅ§Ò                      ¯‚{Óçi×¨ÞèÛ…Æ¡ºThz·£_]k9çÓÑÇ³¨´£ßùð_{“K;ô+êú›N‹æÅ§Ò                      ¯‚ª[Zý‚¶E]Œú™±ààÜ(fb“Ó^×C×-v×\¹ÇÒêþ§ZËkMy­ìšÜRÓé                     WÁ      §Ò                      Ï€      �£@                     :ùÜ      jÚ@                        €                       �  À                        À                           €  áÀ                        Ü  p                        P  ãƒ‡                        p Ç8áÃŽ€                       	@ 8qÇqÃŽ8                        &€ 8àãŽ8ã¯uqÇ à                       Y  qÁÇuã¯xëÇqÁÀ                       ° 8ãŽ:õëÇN:õãŽ8p                        ÿÄ          ÿÚ                                 ö>x             í¿R>ð@ £Y¹‹          ýÇNGçü¸•¬[5&²M1¾œ÷8muŒ         ö<¾þ¿Ÿð:YqeÖ.’Æm™ÜcEg          ýOé�Äxà                                                                                                                                                              }ÿ H <¬                                                                                                   (,            ‚ÂÀ                                                                                                                                                                                                                                           @                                                                                      %  
             
             
                                                       A@         	DR(                                                                        
       €        J    P €                    @       (        P    €    K×ˆ            öà       (        P    €    @       (        P    €    Mwù€    @        ŽœÀ    @        €   
    P         @        €   
    P    	¯£å   �        7€   (   @        �            (   @        �        këø€    @        ‹     @        €   
    P         @        €   
    P    	¯¯â   �            (   @        �            (   @        �        këø€    @        €   
    P         @        €       P                                                                                       ©è   rð           =ïK±³—S7;åÕ�Ž“           ÷½/;æž�œ½&ç×äö·^Ï?É€          {Þ–P�ó³xÔ²rïšéÏò`          §   ËÀ                                                                                                 ÿÄ            ÿÚ                                 äô             ñ~Y÷ûÀ êZ”         ‰›ŽþìjæÊ—6çEÍ¹Æó}sì         ^ïïÁ4³;™YU.±Z’ÅÐ         >_Í>×`                                                                                                                                                              Þ@ ìÐ                                                                                    Y@             	e€            %%                                                                                                                                                                                                                                        �-                                                                     (  €           X*P @           X                                                                     Q           `              �                                                           (   €X
       
‚€  @                     P   €            @(        Yçê   €        ž^À   @(        P   €            @(        P   €        ž>à   @(        V6   €            @(        P   €            @(        \øô            XØ   
    €                @   
    €                sáÒ   €        J   €            @(        P   €            @(        \óõ            R€           @   
    €                @   
    €    <ý@   @(        P   €            @(        P   @                                                                                           “”  H          çri–²oY¬5‘¯´          ó¹:½I·7JFo�g™pá×Ú           ùÜ•JÎ‰e•¿:c_h          “”  H                                                                                                 ?ÿÄ 7   4` 056Pp7@! #1$°"3€�ÿÚ   ÿ ¤c©øVd¸N>jÇ—ÍXòù«_5cËæ¬y|Õ�&Î›<×ûz}ÑYBÈ8×]}ÕºïÅÓ×gÍíiý½•~Þ“üŒ÷ÿ ŽÊdÝCcòR-:qš>ÊDü9½ aÊW§9ËüœïÙÉÍÉ[!#wM³)¬ òA’—êvYYÇ¬cKÔ.¢¶§yð~¢‹(5cÞIÉ±‡bgïÁ™æÙEI~2gýW‰¶÷ÅrÖ9Kb\?À[õ„]=Éå†zÿ ú{*ý½'ðnÜîŒ07mÓ‰2—o”„¶…&Â
@nÄó)Å�jœ ýÂ?�Q²ç8´k{³Â3ùv£‘s‡eY^Kò®IuÖÙmn¸‘Ž‰Q6N$cÚ]KÙ}„¶—�ÉmSh@�`è·…»©xòÀp9
	ú×êôRºV2Ãø×|2™¬Šw4³‰#¼Ÿ§Ù$['_ºG'sŸß	çê«Þä=8Í]ä£tÂMÃ¦ÍµËg�Ù[Ú™Ãvô¥Náû”²®l¾ÂÙmãcZýgp¯ Åeo#y÷wVÖ©Ä¤cBPnl¾ÂYmöán:”í_±{JÕ¢ê5kL.gŽ˜¸|%¡\7vÕå›Úé­å¨mºël¶ëï€8¥næb�då™ºrä°9Å¬²T3ê`/M˜FQÇX$èÓ
tš.¬qj:¿ÿ (Ú¯²Ò[u—ã• úŽÛÓsý³¹V7‹Q³`3nÍÓhH¦’Neä9¤5[D÷ê¤x.¥_3zÒA¨�³È³¼5=kÔìbN¥gwF¿l=SÝC‚‚{éÊ7©Ñ._Œ�ôæUûzOáÓv­¯d/žÎä�&vÑøäÅ™<I¨íå¦…™scl{ e“²½£¼ª�/í°Ü#øõ/y’Æµ,|S²<tba=ŒçXöRzü£Ì‡,(,‹Ç"âJþœ˜Éð£Ü},Ž²ÂŸ+À\9w�4ŸbúSª˜0³Žé¤T´ó<7ùÔ.ggâðü—Ê�|&v'ÇêKPGä½)�‹€y Ó¥òîeñaÕÒÏåcÉ–5{�à­+›Î!œÇ3&Ù$”›,žE¬OUì~íçVñP7¾öÝ)Žyc©Œ™ìXlê4ó÷Óóñíð	Hù\k«Î†úx(®˜[?	YÜÜ–+™vÇüÐáeødæS2�˜âP8Ã&ÒP3¹“ö};Œ“³és)˜qJLáp^)>æ>óê`è29N=‡U”Î1)I¨Xù%ÔoÙs+ÂI—Fn”•�}Òì™‹–Ym)‹u.|]P–¤n&ävtÞÑñV}ë©-o�Íì‘m›¾ù¿2�dÏ«Q•Š™ˆ’gÔIšäó±@iÄ1‘í ÖJ“1}d9 º²þÚ¶>Ó’À9¤´´�(.±CÖÿ ŽÜsù&G�H:jÝërµuÓ£ÒG/„»¥Q�’¶K'“AGOÄ¸jû¦ïoŽéîBø};ŸÄ â¯u#šäø<þ>õµ07Å’Ä!œ›úo*ý½'ðé½®­bú·Î`y WQñlaÐÅ½Å÷ –.ˆhhìR8….O=YéÖ`¸GñÍssâaDÞfa�em‹»ªÔÆ2Øøö½I¿×dpÎ™F0¹û“¿ŒƒÀ$_áøŽ‰LÂÙ/1„Ò2Þ¥ÙlKoó]ë¨,#‡Ë€'Ÿ�$"Hã¨1vdmàÏÿ —â–]ûZytköËå5WT†”«>Ž9…$Flõ€0ù¶óØÿ F²šwU<Õ»Þ®�³®£àÑ¾…Y|v™V&f$Áaq§ò2™,æ=ÒÌ~ñïV@°x³vØ¾W
ÿ dêø—VeX¬‹&?æ‡
`•Êú‚âo?Ç0Üv<ŒÈØ™ÏJñÇ"Ár8Éb:ÚDgÑÓ™	acñèHr©\šsé| …{ÜpíàãÇÔoÙs+¤¹m!Kãª2ír9¨ˆ˜®§Ay¸�
2É“={†Â+m¶Ëm²ÕÖ8ª9„g'oJ#jÿ +«ú¯çâ¤soL¢}S,i}Ëÿ (ÛñêsíO•G@d‘Y#!º`éÓf@½Ã¬s2m“II6cÓ×CÇò\‹|éÓvMÊé×N|¼®Y=IÞØÉ¼¦8ò~E´L3÷®pX'é¼‹UÓ!âòq5��w†±î°¹•ì›ÞÃúo*ý½&±,~Éç×Ðù6LÛmkÎ20Ž¶)9©9{­«ì"r!«Ê=Ê2ƒÏXÖû„xhÙÖW±’/F!n%j,k‚Å«qYd8¼>NÞÀI7èæ4#RóV2èÏI¯ÑÜcÈ¡Tv;dÛ+0¸¡åÉè¥ºQŒÉ¹½È±¼%Çfó‹{‘·ÈË"ÄRl°>3Œ°ÅX•‹7ÒÌraÑŽ'¤øÌiìpxÞŸCCÍV^5
Šs“%¾ëm¾Û¬¿À¢1™"¿ŽÈºw�dnjðÐ�.Æ¡�åz×í Ó®–ãs7{Ls‡Å�x£……Å‡'¿&·$éôLãËr.“bã`V•�…cj;èþ2sÔ¡ÇqHl\7Š7%Á`r‹èw‘�%Æ8°ç¥)JR”šˆm;ê1ÑúQ‹š=»5ŽtïÆÝQèrÌ®	«†’]�¿kÙÓ|%#ZÌG¹�yˆáqø€ÝQ³Æ€|Ôíb¸\V%åÕ’ŽéädvR\„ì´–Ýeò],ÆÞ8¹ÓAt–&òY|Œ|k¦¶3a‘á°Ù-l+ªt­©ûl’`Áœc@²e‘`�ùíx�Ó0‰3e–ŽÛl²§°SÎjú�ú[Rˆ²€›@ôÞUûzM4|ñ�*V„!KÈ_Ã€~áû’PÑSŠÙ,¶Ëm²ÏÍ‘Æà¥Ü�ÔˆB&â°!þ²vÔOZ�©žtò`G¾�~@ÈWÈ
ù!_ d+ä…|��¬K¾ò<yÿ UŸ(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò€¼ /(Êò�ÿ HÒœ ·¼ÖÝmöÒë·ì#…C=aØQ|*QP”~Öþ'r±¶Ù|…·RêRë7š|½gÞ®]„Â8¬0ÐæŸŠ¯Ø‰Å�‹øù§Ãš~O™±¶Úºy%hóòˆP‡Š–•¥iÍ?×[e·_|tƒ	 ÜV_Ð¦¾á„·Ù‹Æ4Ïdß¸È`qüK$å†QœÅcbã�AŠÈ]Õ…r<æ#qc2ã]A‡ŸyéÔ—êDÁâ]CçÑRqRÆW!{ø¿©îÚ?Ã£3eÕ(x¸ø¶4�”g/ìænz8i+Ø¶8\UÔ›ŒXÏïÆ¢‰" qvyVW>ÕÜ»'Ý5�Ž¾7&Êâñ`
çp½Kˆ–~&góx¼fQ¤kÁuv
÷tý`%…Š† äòXÜf“§ìz±W¹ÉøÌm—› Ë«0n\Œnær(¬v:�Þ0ê¼C—AºV•¥+OÇ€þµ4³ÿ Û¥Wß<6é+fâañö.¨ Ç\QÚç9ÈŽ"	‹,{#œyL[ú‰"]@²�`î òmkÔx«AKí·+kY€Es"i�xÔ=µ­ÖÛZþ)ïÐå–+ˆ²žŽ+£ãæ}•ßt¾aïÂ¶(�Ÿ©#g1L�½jx\Ö2QÝŒ«9ûþ%Me1Ð…°…Ì£e]ÚÎ³y4tGa¡óhÙWV3¾{)��¨ÄX\Ê>]×‡zÈ\™Ž^ñà|öõŽóéèÏ²öo=”ÇÀÔb,.e.ëÃ¾s'��¨Æl³&e�0i@eF„ZÊÍä1Øø…CÇç±¯�©ÿ âÞÙ‹³�‡g”•Û‰X)œz\£²_-Ž„=V+Žš-[Xû-?Ì@rŸ+ºø†Þ&7�ŽJ(Ì�ã/á›BI¼Ž»¨Ñt·Ù�±�	ÝçP¢€êð
/0Ž‘‘µƒi,Ê>5íìƒ“GÏÔ¶ïóM€S˜Ø>˜UËø—ØVbÆ Ôõ²u^øçøîbû"Œ”’—ÈL¸ìq»ïšú‘tË¶mžu†Ð8ë}‘1vØ&˜ñ0ö­Ýç …mƒG
ã–t»M:Uuk‰Ž•êóÜzW²{…IÀGÇeq	§™VtêLj6rK+Ÿ.8Æ²yÕYåYu$MÔ ØÛ'Ç³‰Ú´$·Pìù~7d�T›ÆÓî®Sq®À0ú›3œaÖ	�sâåÅ��»!ÍëBÉá–=ÉXâîc�d÷Qme1vì2HLòm€›J@ËH(¶®?>,‚RLEÈðÆð‘—½²Wüy�ÂúÖ)e�e2‘6E���‡02k¯¦mG†��q`Qbu­ev§-ÛÛíÝsö·µ<dÛrÌŸ5gQþ9ïÐå–<Ã"<3·Q]=nÍÓ§oÏ�zíò’%�c;nP	7°CjLòKÉÎì§"om9ûþ%KL_\’¬áÝÖ[çŠÊ3°Eê#š;—i�–E¡¤œú�ùËº´’†ÉŸI2xù^Èr9œã2zÛšcuÇ—�dfcÊÇ>§~rî­$¡²gÒLž>¾Ñ¨õµïR„Ö•Ž%:�ì1õ”ËˆÌÙ5Ëož©ã¯—ünÀ)ÎLCœ°�aàÝJÁäÖÁ9Œ¤ÍùT¥ñöCdÉÈ½›­)ÔÎsßÛ‡PŸó…
´Æ?fäk§mÃè‡*Æm¼uËß§eF”‰\ôõdân2eäœ/4'rîZ=ûþûm%·Y{Ž—9hì®qì§ †‘õYŸëÑÊ1Šéï‹()i©î�Ý!3|ÌS>šZÂf>^ûðþ3eUŸ†a?VméKêÙFDœÁYÉã¬`Yž~5è+�ùb&‘´È #ò»˜½³¦³´cëÓ«à%‚þc˜_ MÉË,“²ra´Û<¯
i”ZT61ž7q?Ô6`{�ã¬M^“”ÎG™VŠ>=€2Œ¶HÕ�©×KH7¶²3¸[	ø†QîAÒÇ'½½²ù&!‘F‰‘lé{÷u ¥À µ ›‡ñÁãT�xõÚœ…õ¨Û˜§˜½�5…«ìE«øvQÆ¦õÕÁœÎ8Òb01ê'¬lsÆ®éó±íHìi¤t;¸Ðcp_/±#EšÈE7‰sç§qW¶byþ7­(ñ“¦«†ùu‰Ñ¦#àO_,ÒWòd.‘Œ‡ÄÅòéláì›Ë'[V+µ¤…²/ñª<Ÿk5Yœ7Ï’õFÁôI3�¿ Ä2æÇ �ÂèÙðä$²Lç±ð#ð«¬~'òÉ¶7ãäN&ÕqÕÈ½m:Æü¬‰¬ÒÈq0KžÇÀ�Â®±øŸËdXƒy²‰ÐKÓº¹.>AŠúëxð¬‡Û�½ú|gšŠçñ”C8ˆ"“vÔå¾";«žžk²Aõ$XEbV²I'ù )·x+à(æ�ïaq76<c1JÆÃIEÓ‡ôú´¬69XW’.¬¨ðÇîÜ‘Æ& );¨÷¸Uö¿3ø˜L`0Î
ì¿ÒŽ˜F¹r'Gÿ iìlk¢ØgT¥)JRŸ™cFA9øW0ñ//Øä aÐ`ÿ  î{JS‘ÿ {º–âqÿ Ø>8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã…xá^8WŽã‡ÿ §ÞS©SòÒÄŒÄ«ŸçXÓ°[’0|ÞI“gÍ#?É'"²ø–,~2™ÞK)�9‚Äñ<æ]Ôñq¼‰=5ÍÙ¹=‘½FÏæ*ZFÙÕ¢èÁ‘´vÍ@í·àê¤ä´|i#1×wäÿ ÙWÙBYu•‹1Ó)÷TuN¡àÙ=‚e7•M5Ã1KK†d9\}&ÞôÛ(–¬«ÜbfOÏr™§5CÏô÷-c^¯H>e5FÐ¸–Od“l¦y¡2~§Í»¶ÀGf¸óaµêÑHÂ0¢È°Ì½”qòG]5žw?ŽP�T´à1éü–?‡´!
û¨ÓÐ3Ì26{	OÓ®”ÏDAšb²}PË çÛ0c5=%…`pâkÓü‘ô]“tÓ.};ý„Ž#~]>éÌLlË·§ÙÕWã”Æq·â­r*àcÇIÓœ¢ÈÂÊ¼éÎbñÜÍÒÑmòž§I=1bf˜NL+;Èæ¥rAbp³˜¾EƒµÔ~)9ó:ÿ a¹) ØåQ r‚�Œ§S£ð¶ŒÁ|TÓ7î:O rb¸f=Ž0èÜ®CR@ÀÙPeŸW!š�ƒ‰Ê˜²„ëëðêQµï#µ³¤“,b$%cäeú�	&Àu?÷Ü"Í?iÎ®Œþ�"³“:%4F�,e‹¾†’Ü‚Ž1’Ð1½9l&¸tU£”ý1úé~5‘–Z’¯™ÙÓÌô¯YAs†ð2`ŒÁº{!:à,0à¸”>;Ò¹èèY§C�êæE Þ>1ŽvÔ¬°\=¹²Ùé8|}Ø~)Ls×$úpÐ¯à3†€éìkd£;ê4(g[Â´Ë#™¨®C5)ƒôÞ!­®�`í!ÚcÍéý‰;ÒìviÑYÒu¡í3²4jV·3#ž�cF=Hw†ÅÁx£e:QŒÉ<#».éV/½‘ƒ’`Ñ9KÆÏ)þ›c³îï{~=ÓœwukÁO`Ñ9³Ygrqá–�w|g�Å™£ì°–\2Ht‡v{ŒÚ?¥x« EÆ0öX¦ûœ6¸A~/…ÅbW;¹†OˆEe‚l7í±ˆÀÀY âþ�ãw·Ò./Œ+8ÞšcÑy'­²‘ŠéN3òÇwäøœvXÀ~óˆ�‚kí‡I1vg©‰‹a‘x•^x�/Ææ�‘å1ÌÆ�å6Èñ8l 6E§Gñ�Òœ `Œ þÛ­)ZV•e[îaÿ F¨™fó®rÞZU¼;Z9qJóøk Ò�hÂ²Ô`ú5§á™˜8JÇ¹réµ¥uøž¹ðÙ¹t£z“ï>$¿Xï½CIú»þ'2°ù5ÈJYB0eþœl½$^I6øÉÏ7�8ÚÛ4ÚWuƒüRüN(ç~{îÿ Ðtè›‘Ë‚<§�sÖñ�
ý�\—ý8YjL71èŒa·	V®€õ¸Ü·NÏâµpáDÈz¤xýã‚þŽeœþ�bÈå�GØÅ»P‡&díµk)%$êV�Ñ {1(Õ”š3IzåVŠ™=]�î9®@ù$�~ârYÐHÎ>5Ë™üzð:|²†ò–Š­$¤dâZ4eGuÊ!GæŸ›vqNã€)Ö�Ÿ:Lªb:ÇB�y‘ä-¶“xøNÀúkôy%‰ôP*Ò
eÁÄømM‘ÏÐ�ZCÊ:|ÖA«è	Åâw<¼!ËÞ4µý§ÈºÇk ×$™rÙƒ+ã¥&Ïf:ÕëPÚK;K’·‘õ¸ž%$ŸÃ°fÕ:¦U<¬�ó@:Q(þ2øÊ³yn[Þ²7¿È¬o	¸³-�kYNN¹Dködu¡Èïk)t¤­G{ù‰¹'Mbãä¥Ë[-W¹é©(öSOf"I;É (®dI”Åµ¤¡€[NÙ‹¦îÐ«ÝNA¿�±ê“’‘q7l;8»gÛ¼#yMO»ué�’OüçQwƒ*|à÷¨G®ì‘jöùDã]–»�•••4lLyrrV²�Ž²XóSÀŽŠ(Þ`±jzH0Ùß‚$”mcÜšDd´£°–dÒRLÄ�…\IÁ0xúWV_V~¢¤'Ü›:.xÖ�ÇY_XÅ9¹™$EŒ1¬kë²xf´‘4Ôá›¶cc.Œ¶Ç*j]Ø®dÂ9Ë™üzð:|¦e$.�<QÞNc§nYÙYf³LZ0zl–ƒ|ændá±“h×GÈqý/dR’M^Å
4È3xB¹XÅ•ò%ÈêKàÆÛ&Ë+’x­qpIºñó
µó‘çÌç<›[i•»Ž¶FÈåc è“²Ô‡�½Ê½¾`µ}W³æ>1t£;é•š?Ôí…�ºR1³»ògRØñ”Ô½Â^ù»ÙIV­£#DìÙ£zêNQÀä`-k“¾u{†¹¤›2BÚÆ%¬¸7]%1#lTqÞTËîml‚ÃÊjA¿(/o—Ñ©^‘Ë·³8½^û#Ûœ”o–¾¼¦½”›™{]À!{Yãò�\ä|�å¯¯)¯ŠœrX™»e~M(Æ²-ŸÌ¹Œ„±ãÃ.fÎéã_Y$Å»Ë>éÇd[À‘ìLŽI$ÞoÄ‰�È]D†ÆÍåo£HÉûqùvL“²àmŠ[&ÌTƒ Gæ-Žêzû	3ŒÌÓô"¬‘ hö%ó×°Ái´[K,¶Êdÿ ©ck(¡>‰–Sùk˜²¶e*ØŒØã‰'úkåˆþÞb°oÒ±�Ô²55ú<’ÆrÖÑlî$˜6BúÈ†xÞ‹Á/d=E$X¶lÌû €Ç*ˆ¶,$.;WP’U>1RJ>m¾4E,³[ÖX[[HãîK‘–Òz4Ûi¼Ž,ñGHF„cÉ±s2Ô…5²ù4IbZÞV!È±HÛkxp{Zy4šcuŒ~§’(‡ �”•e#W#�Ê”î<…dÿ ©c‹8ý%ºË¿o>QŸ¦±Y9ëYhönßQvD©¢ã®äjÆV•o=sèèèFÎ^1œ�©8¬L}b$lrã ÃtížÑ…~‡jfèP¨ß·È›½”±‹,kõ|•÷³_†:åƒ2�å¤ïn¸aÞð�¼'ë8ÒËì1­ …^Æ×”;1
\É¶U8ÛhÖÆ&S?ré¾+@Í7Æ@Âµa+B47-G™lXeÍr–¶zŒdƒ÷°Ái´[K,¶ÊH–�Ù@¤\ä²-¦†Ö*6}Õ±Ù,K‹²IÆãjÁ†EcjÂÛ–øPlE/e¢›ÆnVåãHb‘£öøÀã.(Ie×à”¥­$<ÅL •‘žàì´Ó.ˆð<•c#3Ážîeú+U…þ„5˜´;˜«He�þ�yì##2ÁËiëú-VúTí°Þ5;bFÔòN"àÏ?[£§bæI‘Í1�Ž¬{	ÁÖ.¸¹�—MÇ;Œ£f“¿©bŸ±™^BžÐƒ,‰ôët!Ý¶Ä¥ŽÛN5tUžÛ¯ÂÜ[n1$àmlÚ>�/Z^îoíô\�³ŸŽk6®áÈWÒs³M£éõ¥îæñ3	¼|É“�âÅhI"’”ÃÙ¸5Cƒø~Jjò:.Swt8Ý£Ø¾¥(é¬s<ø¥N:ŒÍã˜4º·6;fî‡­Ãf,™óã';¶–¹¹£[ªÜ`Èê3Þ!uÆÇ´¿ctVÍÏpï5öZKkeà‹�lM +vç­•5ÖÛ}·YxBã´@fíl­�ÄÙ¸.%á¾Ë	eÃ!"£hì Æ0ÙhÄâ6=ÝûX!tÂ 6âbÈZšÿ ø¥8 [6oq.­›X{ÜZŒ 9Fq·nÐTcrP¡S±îÞ½…+{bãm?‘miJÓŠÙ2ÐÖ»w4¶‡BlÜð¹dÍå)GMÚ¶if¶ö7n"£+fç¸w˜í›º²–80BàwöÛm–ÛeŽ6wf·6FÇYe–Zœ³hòÚZå»VÍ,­�œ°dó¶®€Ü‡A€±‘Æ6ò�³`Ü[Äàmf¶î5ye,rÝ£V–ÖÆÂlÜ7”‚«võ=U:Ž`ö´«¡G°o Â 66nkÄBªÄÅÜ]ÕÉØ:‘Š½»JÅG–£!ïÊ;„O¾�Y;;5^¤ÈÖÄÚf²á•¼l{Kö7F \£;hö,ë[›<Žtl–5í ŒŽl]À¼vË¬ ##š“cr7nR¤ºÛo¶¶Ü8¨ÁwëD!ÐC{ Ð´‚ ÑÒ"¶îF\áÛ,¶ÊÐ·aÐ`Tˆ‹´»¨`Àê#öYÙ­n:Ìì¯#<~)Ûb¼�� Æk.[ÆÇ4¿cr„GÃ5‘QváZF­‹p¯'ÂÈ¸Ñ›}�lÝµ·XÅÆ• Â 61dÞ`Ýqü‹¬hÔvšÛ/ŠŒ(Æ;Ä!vŒWFFÜ"á7n
ßPÖ&.âTµT‰‹´»¨`…Àîí¶Û-¶Ë?ú!®­Ô¥{{Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Î»Ïÿ ÐÌQ–^L±ô¦#�¯”qåòŽ<¾QÇ—Ê8òùG_(ãËåy|£�/”qåòŽ<¾QÇ—Ê8òùG_(ãËåy|£�/”qåòŽ<¾QÇ—Ê8òùG_(ãËåy|£�/”qåòŽ<¾QÇ—Ê8òùG_(ãËåy|£�/”qåòŽ<¾QÇ—Ê8òùG_(ãËåy|£�*â8ò°F‡”u~ýºêYmn»ç,£ väXÎ?˜É–f°Sä Åeo ŒÙÞÈ1[[È#öRñm~´3ÝÚ­tÚâÔ6çòò0°ÍÜÇE¾´±‘et²jBÄ<}L%ÞM-[däLé³zÛCÒ´º”­<€vßz²û	m/³ø¸?Öçÿ ‹œýnïëì´–^;ÃšaNœÝš¶”•|’U¤ÎXv“1òq°YC+±ÜÅ„1æiè'Qñ™£!ÀOG[¨æ`,•¥˜6?VqtÄ…�›‚M®	WX;zâtš. øï±–·¨°íB–D¸Œk(|d™Pñ\LYsg’ó—‘Yž6l3³%4€œF°[ÌAü\ësÿ ™˜M9Ç±Çò­cÞ^ò1ƒ¢»9úÜßÎEq›˜V4œÌñb¸k);•eMfßMÄJãÙ1'˜E¿È¦¥›Ô31òq9‹™R‰œëìÆ&HõŽ�ú¡kå�cî'â-± ò|ÓÒÇ¶.|ø|kw.š¹»«[zzÑÓ,vÐ»ÌÛ�Ö3$ø¼QM„
-ì3Ü£	µÔa0h)jI¿Èeúe Âé¯7øÈ?ÖçþH¬ƒ<vÉ8þ£L?;Fp9VDòGÇ}724øsn* …ŸÁ›"a—dRG¬$Œ;.�Ðö0—š7‰DÎFNôô žc˜ÍI¾u�ã°YÆ/1ŽcNˆ“"w�âìIÒìU æaãžB=›Ñÿ ·9úÜõäësÿ 	¦#”Š}N˜ØæZDï$1÷wæ�`O�<uŸc/åY£<Æ6ÌkË¡ß@Ÿ�?S€ú�Yâ¹ˆŸÀdÐÙ•¹>TÛ9doÌY:Æ¤ñŒ™®oœ0È±§Lárø7/1ÌBd&Ÿéã ˆPŒÇ@0jÞßöç?[€þ¼ƒýnðÊã¯fpy ée´­kEm¶ÛÏj¶Ë,çµ[m¶S‹U,²ÚÖ´ÿ rsõ¸ëÈ{è<‚`Wÿ 3}	�CŠÏë·ÑÃyQ’”AOýiÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…iÈVœ…TöÆ8lªBWþ§Ï¤FÊ£(|‚¿úÝ�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
Ý�­Ù
©ò
íŒˆÞTƒ¯ßß2cÉ«Öol­í?¤üL1[ÿ å1É¢¤e�Ä·R3ñ1Nš´{üL=”&A0[ÿ Š™²ƒÈ!ËgßÝ=Çbg©)ê'f,W<�k’ævÃ¼c|àæ”²&rw<ô)ËãJ>£=jø"™êUÖß#�ÝnQ–‡«fãkŸ¾ƒfS¹V\Û°B :„ù£°(Ë[c–VµÏž¶|¹
i•¹[œyÅs›)–z
y•9SL}¼DÛcdùf­&f™¹‘³>u[%±—ŽOÔyg	„Ãp_ÃÁþ·?ðæ”øsJ®h»­ø�ÓS_Q‹ð5zÅèï#_÷'?[€ûÿ 	ÆïÈ)%Ù€6hÓ'vÎQØ×¨�D	\}íò‘þ³>v�z”Ðï:¤ñ�ñlncaF&Ãe¹,³i¶0Q9°&[9�ÆMxšu-ÃìŽSgckfóžÜÚ>¶dxü‘ÞÉövTLÛ¹�i	—@Îª°q\v¹bÃ¯¶w0œ�¦#þCÉX.©¼ïê–“#Çl¿ª4¥qÀÕcŸ·¡ˆƒýnáÔè¿;wu’™%-éá')Ò2¸aYxØýž±Ô¼†I@bÙNQ›VQäqzw’ÀR#,3ì¯/ÖG¤ð–3©!1É	‹1ë“ýW„³’Œ2±e‹¤­�º©	}ýÕéözÉú¥žÖ±R±ÒÑÍß°ÿ jsõ¸¿ñÜV?ò¼)>2BdS5È18œ�]Îá°8gv<¤Ó&Ò=J7Lzm ÉåŽ«9‹ÇÏ�‘Ýä8ŒNIpˆïéŽ=Q
Å=�Æd@°O¢úqèn®�Çcr&Ö�ôwM ¹±ÁVAŽ±É‰³Ï—#ýÐV?Ž°ÆÛ³(ìZ>2eìÈ'0XIç•zwø|d�bŠièy+Y<dÐlµf/áàÿ [Ÿø<lm433–J"&RqbÙÄ4ýÝ+fK1ÒÉžy²ŒÚ¸Üf6îm´ÞZÂûcz¿)iÊK;ÊN¡K´—ÀŽò&9¤e Ú5r8§JæÆM#)�¶kf)}âén]V¸‡Ï¢Æ£‡ÓÈ	X’€�ÿ jsõ¸ëÈ?Öçþ-0†Ì3'™-™†&¶$q÷F1Tc&ƒÆ½K!}E•áÌr¡ —ÊdÇF“ãÑ„ôÓ¦ó£kX°¶Å¡ÇX
§2á¥ß‹â€ÆbŸÅ]gO&cªvÐ8î:Ç�«&ŸíN~·ýyúÜÿ ñsŸ­À^^SCÊF•Êñû©J/›±åóv<¾nÇ—ÍØòù»_7cËæìy|Ý�/›±åóv<¾nÇ—ÍØòù»_7cËæìy|Ý�/›±åóv<¾nÇ—ÍØòù»_7cËæìy|Ý�/›±åóv<¾nÇ—ÍØòù»_7cËæìy|Ý�/›±åóv<¾nÇ—ÍØòù»_7cËæìy|Ý�*eXõ¿ò„BËÉŠB¿ö%ºël¶·\i:óZÏt¼÷kÏv¼÷kÏtƒ'^iC[u·ÛK­þ¡‘Îe¤%o‹ÅÃ›d0oÂ×)¶û.²„´N[ž·P5­)JÖ¢pÜüéºël¶·\ÜRµ—ÊdeÑÐ¢Ú:_­Xà¾ñŽë­¶•ºá)[ƒuöÙmn¼. â•¸(é},­Ž�—
ÊÖ–Òµ¨œ ô­C*×"&Kfs9€âgc¢)•†aä`©ÒûÄÕ �Ý}–[[¯¥öVÎúËgÚ?‚~{ˆ]V³Š,¶óöÛÇ	ü@�mäþ¿â¿÷(*ÿ PK‚Š‘(ºNÑœ¡”¤4dÐ†Ò5�ñŒZžbìv,ì]bÝK;â3ˆ¹FÇâŽäŸÏ¥¨ó!+·�¡`d¿ÅDJC%¹'ù"dŒ‹#ÔA³Q,&Jì_SouGÑ69„ŽÆ2ÉÖ;œJØÿ ';óÈÃãò¬ŸâÙsb¿ÏX6[Ž‹sþ'©ÅwZÄÐ‘ø«™V.qì«ü‹�,³bß1Žif{ÖŽ`Ó4Ž¿åÌndäÅdàà[5ÌÏéÕ†Å©"|~ ÌŸâÌQóŽéüu(Y ÷üdì´oÜ[oÆÚÖÛ©ZP]m·Ûu—‰–E€K9+'Ž²ÌéËvÁÎ`dhæÛ<’É¹æ­/k�¹ÉãÚ0,L”kì©ëKcrèF³-28Ë%²I·MÁJqJQOÇH?‡v'qÒu)«Ûz� ÿ Ñ¼,­îLÀà,qbŸd³,K–AÉ±ÈA“F‚S$œzØL%ãŸ“¨‘oÔØ÷ïÛEÑ–Nï&aF…Œ{û)’gXÜ’:@ùä ç±S™‰šŽËî–È±8óRèªÉbcŒ62âv:ùLë‘+ö3ñ•›É%ÊÑ�²áˆv]ü72{K•—ÚK-¾Å}öŽË¯½Ájsµø·Jk,þßxÒŽ-îµ»×q÷ÖÛ~a'jvýÃÊÿ äøÙe×ÝKlfÒ�íî»û~ñŒ”âÿ ªð/¢ð/ª°c8³þÁ’ÝG„ŽrF¡Çó8|ˆ—¿Âü®¶e£Ç?Ùø˜÷í£Ý)IxøVÔu ÙÀ]·�)WÞ›ñòÆ'«‘FQýV7•Ö}ô“Jý� ôQÌ]=.œ"~á“¾û{»U×ÛoÄ Åoq)ZV”­"/ÉÛ4›4Î6þ~ÎßíÍk5˜{	sÖQo|˜ÈÓ¸ÌežBÁó8Gfìö$ºë,Ss¹c	"aœå’Â¼Ì¹º¬›ånÿ ð­ÔÁr'ó±ï\É[u·R—[…d2SŽ&†öóu¶Ò-¢¡5ÿ 3}kKn­¯ó\¾0rö%Ëd\1©ªQRú¹t£¸h�ÙÁHÞö5ã¼ªEÌL÷Í1§î% ˜=siƒuõªÂˆ¼ëEÊ›%y§¡˜&çR&PæÌÌí;ìæ´Ve§pÈAŠÞâR´º”­0¼†Fpóv>¶ën§6Òënç¶¤/ ë‰d3³í]�ÁiB[*AtÆæ+‚È=m/~?9d³	ìŠjS!®??=Žä¢&ÏþXžÈ¦¥2ãðQóóØî@Ú"o"È§ä6ãxû'9ÄËF’Y[9»3#4+y&±Á§T[Éøàr±&ù(:¹9ÛuöÎdœ°Ÿs�`“ey‰‡0’ˆ½´.’Ê=zög§Å°ù9ˆÚW+Ì;<v“H¼xö^:k'ËÞ¼ñqbäõnpä?ÎuBWÅ†}’2ÐÓËøœÊÚCe09æ¬ù‡¨1±Ë#)tó¢ÏtÕå-—˜Žk‚{Á`ßó„JÒ²AÃAO}éä:iåÅ00½Å‡*cÊ8•é‘®s’Ì:ŽÁ±Ö­ŸßŽG·hç‰yt„[—;ö®J?F~§ƒ‰Vqé§zjò´w9HÕç�†y9\®5\ß€Íâ�6=)c×™+.ÿ ›dÚ8X¡Z^ÚfÞÈ¦vÿ 3ÔÏÛ¨ßÙÌöøP˜; Ü¾rÿ ¥W™ÌV	œlÝ2•s#ÓY‘9.æ+§ôhçå–±`q•=™—Ã!Ý†xqä£�žc?·‡Y}iH9¦Of|tÄ C„F¡ÿ Ë,Ðáí�Ïç�ËC²)›V=eS¥�âÏñ¹7Z0ÿ FjºYûuÂÃ^ßÓ7{f-†‡#Ž$Ô† b0>Zw1î`%ªõöMÓGš?�/ðîj{[šæñÙôcÛ\³ÊZQ„–vÄ¸ÔÌltvfî¹0`ÆœbÎ ÿ å€)˜ØèìÍÝr`Á�8ÅœC×?*uÏÞÓ>é–Q°½@/�–@H6Iœ³1½eÔáß~7eÖ³É,sƒžÈ†4ÄÍgRx—ìl¥`¹|dY™I`û¦rÉiêa-ªñî^Ö�M1†ÄzË*ÂìÇK*ððŽ/À&ÌìŽº`îDÔ’?œ“Æä§s@»�É°˜Ç�î,Šu+/‚Š5î	�JF]"þd™n;=&ê3€ŸŽÈåd%±<zb1¦H7‘˜„Åp‰w‹ÎÜã·A'¸ÜÑ°1^Ç¨­¡ì‚ÌAólÑYÊâ.¥±8–jŽzšöÀ³@°‚ †W]{sYoO¡$àã‚IŒ&_�KÉ_‡có±“3n¥1øL÷ƒ2Ã±ÉvÒOç§1jA�2@JÇ1ÎqJ8��Œe•ú3ºH?ižJG’*Cˆ¾
œq?˜ÎbŸÌ@ÜÑ�á½ÂÅV±yÕ�€²Ìnj�<$5@Ë¨Ñ0öD5ù†ú$%Ä\ÉaL"\X~¦ÞÔQÖM3Ë,Œeé 2l©û¤M‘Y“5Èa2lrfVØ™ÆNáóÁÓ0Î[m¶[m–š
Vî¡6™¤4£LâfTî`å	ÔS¼ƒÉ±ü�ä¾?�1Ê¯‘u)?†c²Q×dVIBÅg¸Õ]F0ÃqY&-r&rñQ½AÇm<K+”‹4ð¥£ã³\FçL"±¦ù›³ÿ Ä=ƒ‡’¿cÖqÌ#¬ºÆO2�ñ”\lu.ðkÂ®èö¯2�ñ”\lu.ð]±füZž2‹�ŽçÂtÍ£áêvÙ«fa´o…²ëÒ29…o«!AÂ„Õ8ƒÜlà¡[ÜÙ«fb´-[G0gyHÕä4L…ô#Æí[3ÕÔ$3âît °­ÿ ½[¶ƒC›Ó™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf½9šôækÓ™¯Nf©mDR†¿�ÛR”A§§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍzs5éÌ×§3^œÍ;h6Ã©ƒö‹Öb¥vlØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶l%Ô¹ãšÛùÃ­-xÚ·lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ4ö¢ñJ}¢Ê‚ñZëÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ4JR×ŽioçÚ\ñµ.Ö5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬iøÇk2ÖŸhÇû1}†ozçóÃï[}‡!ìËö”³Øf÷®<>õ·ØrÌ¿iGû1|hä»I`w¼D|`ÖÝ€.áZOÏÆåpVÖ~<n#‰½ÿ Ã›Þ¹üðûÖßè4‘báÛ†Bü%’`ÍÛv%þ2CÙ—í(ÿ f/ŒŒÓS¹3·óÑÌ#m}X�¿Ë%i"ú?Ù‹àáÉÚÍ³]J¸o40Øéã›§2ÝL;‘~Å³grQÒAdÿ áGrî%1hRq’-Ú¿võó™
ÇÇÚîN%ëp?|ñá%iÙ­³@)€é‹Y+¦oÞIúÐÙ3+©Øç–³º÷ñOYÑÓçoHúÈÖu'õ°É6}IÆ¶QÝ&FÍ¸[ó×¶+ŸáMï\þx}ëo‹×ï#ò¸ÆÕ‘Èž´Ê€Ôo¼»*ŽŠhžJn^)‹ØY¶Ñs
Hä¯rH˜öò3Ð3Lãååe¦$fîƒ„Œî;*ÍœÄ¼¤£Œ‚Ø61öe-Žéœ„[Ë²Yq
^FvÌœQQn_å°òb‹¼¯2\zR2Ù	yIGÂƒ…ùü~U‹IiÆrß6GYl•¹0c™5`ñÖKŒ“‡ßÅH{2ý¥ìÅñÞVÉnŠËß'di™³oÔM[Gû1|2Tm ìci{ØYuÇo½ó§²$a 3R›Ü8¬Ìh™ü?ù¸|è²q­Ùï¶"}ÑÊ;»æYI–Ëêµ�ˆ¾ ˜«FM�·e‘Hùþë”ýz!dþØ¥,Õ°ç*i
µÛa6™0ÛME¸,Ûšøëi((pÐÇÿ 
ozçóÃï[|s€ßd{I!:ùLRnNì0„—�”œ4DË8œ¦~�½m�äð€�ø1˜m˜MÕä³ö¹ü8Ê;;˜¿3ùÇÍ²)hˆè©ãbï%k3�–­r[£¢ÚH4ŠÍfèø¿ä&ê÷~6³osŽ¬‰ƒ å•s3kL*Ù&M˜eDÃ)€zã.‘£ƒÂÙIðc-¨ÒÈâ¤=™~Ò�öbøø†´„ ô<^;ºÖ•@�Z?…öXKka-ì²ƒ°A-ì8ûÆêZ®íf&á5Œü<•QžKÍ9iOQ“#�µlÚ• 
 žÞÃ³fÔ®ƒ·nzR† khLÕ©ëK�P†¥¡«pE}öâ%­µ!D#[ØP´jÛš€ 	íì5ÍÛT4Ö±chû)ü)½ëŸÏ½mñ(„qÜ# ¨·jÙ õ¶‹…(äò+ä)­\
3Ó3¥lnqÝNXCÉ™ó¾lÅ‹]FnZ4v=Nš°amÞ#¦_[K]6fÑ�•±«Æîî¶ç5l×}Vö­Šaœ†jÙÍGS¸lÙÈª'-ã£Xsâ8hÕØõ9½“
¶£;¬…ˆtÓø©f_´£ý˜¾Ã7½sùá÷­¾Ã�öeûJ?Ù‹ì3{×?žzÛì9f_´˜ž–4«rÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ¯»½Ó‹¿>Ë»7¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[“ó÷µ%´ûF?Ù‹ì3{×?žzÛì9f_´£ý˜¾Ã7½sùá÷­¾Ã�öeûJ?Ù‹ì3{×?žzÛì9f_´£ý˜¾5ÚCœvT.éNk%4³�±Ûò6²ëÿ 4T­.§4øÒ´ºœÒµ¥)ÍiZ]NiZÒ”æ´­+NhÎHf~é¥kZRœ×øÃ{×?žzÛñsOùVÝmôæß‡4VÝmôæÚÖ”§5¶ëo§6Ö´¶•­iZV”­OØòfB-Vê[JÖêV•§4þBCÙ—í(ÿ f/ŒìËˆ+8lÿ =cl]†g‰CÙ½~F?Ù‹á#ÿ ÄžŽv¤—Ö¯Cö»ÉjnÂ×òò¶­½
]•|Â�æäDRµ¤›Ú”™™32¹kL}ó33˜Õl¸í’‹bÆ¥=ÌÄ14Ãæ×ËT>µÛ)Õ˜Lb°þ,ÞõÏç‡Þ¶øÍÓÓ²è9L½?Í˜±Å´’ÎY†Œ!ì˜É2¹«*b9$eŒ~‰¤ÆW:�…¸„üQ;ù^Pæ9ËæÃ¥£\ÇdÕmL�6NcñQÝß�D¸ÉåØ#¹­ržÜƒaÙÓ—ßÈH{2ý¥ìÅñ Bà²!0°†Z„¾Ûm²Ú[l³Ây¡ÿ �¬aIêÃcÀr+:vÙÃ¶’ò§ü©Y&ÎoøÃ¦“’G èîfA©nx‘R¤�Ô{<ùµ×½võ›ªÚHàùj¿jî.iÓ”ñÛæn¯°Ñ|©ø³{×?žzÛã—ÇÜ5niàøƒñ9ÁØ¾�ßÈ°}#’d.š¶²G&žbøß <‘ŽÊç]³·Ôò¹È÷%’o'�äšgu²9\£ï˜“—a#}†„bcdwK·%ÒP9\ƒÕ''/ü¢u�05Ù	å…ü„‡³/ÚQþÌ_5lK®ºë˜²¢ôæjË-´²ÏÀÑ�¹~â…¦Ê±kåh»?ü�#èÑëÇTþLÞõÏç‡Þ¶üQ°ô‹�–yk��Ós7'ÓÜ}S ÇÇZ^˜ÃR>VRBŸÌH{2ý¥ìÅö½ëŸÏ½mö‡³/ÚQþÌ_a›Þ¹üðûÖßaÈ{2ý¤Ä†µ ©oy—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y—y•ÕºçN+wç[[­tÞ¶÷™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™w™>!®jZ]öŒ³Øf÷®<>õ·ØrÌ¿iGû1}†ozçóÃï[}‡!ìËö”³Øf÷®<>õ·ØrÌ¿iGû1|uÜwnm­YÒÊ))ÖLd ÀLnºö£ºå¼;t«ŽKhn¼áöÿ 1�›ksw-œÛZƒà	Àú™[ÞCVl#wmóF÷ºj;îþ{*‡zóÙnÐ®|ÄDÔO�Lö÷š×mo5Aeï˜‚þÃ;¯ÿ ÉG{ÍØ†„}×ö[+#ls[ï
F0•mµÒêJGTš¨Rˆ6Vòß ÂË­²þiÇ(/ãï&»&
Vï!ì²É%.¡ÊŠâ�8n;õ^Ùë'ÖÀ”¢�åní«šWGúÆ÷®<>õ·ÆŽšù>*«Æƒp6·^é¨
²qa£Š^ÎEŒ…·\ÓàÛ-kY÷,o3–Íƒ¼ì¥#¤{¨Î÷Ñâ-â8åbhÛÌU˜‹£ª4WËÄ47Œƒ—MYŽ„tâº«;/Èµ™ø†~à8‹ƒ9ÇX8r9Øbš€E7l$yJ*H·š‚5Á…²ñE4ÖÏÂ\m¸p‚©\_7"Z"óJS¹6™‡1¨dÎ]3”ÆFLÄœþ0gZÜG]—=bTi1øµC¹lÐU+†’QòÞûrÌ¿iGû1|rWÒlñÌsìÿ ¾*Ëáð´–{ìÅð–§‹1õ?!o’q)m8}’ÛZ1bÝìÔ¥Î]5LÔiZ| Á•Ù¦õ•(î˜g&3{´sé˜ŸdÕò6ÍÚÃØ6óìšCÞAÝÊ°7°w\H†u¹eŸ¦ZˆÁ¬<yÜ…ñ~'.¢o7¤Ëötkv0]¼$5Ì.±¤•–8ÆÂè—4l|¤§2ÂÁ—�µ�â¥î
ç¾âÒ?Ò.­CcÇ¸µ£„�(DÕÞBJXPRz)“HíÍæ/©.€¾²-,{’„žŽm ½e2�ÌÖ>è'O„VßëÞ¹ü‘�f¤á½mñÈiàd°´—9É8÷ 6ÊgVV‘1¥2œ‚÷²[ã¹D!ã¾!âïÎ$]’»rp2zåË1IÆ½ƒ‘�m)�ÜYÃ‘øÝ€i’ãqL1’%Ç"¾P½Ýø‘o69}ë¨Ÿ X‹Ã†vù”9`=>µ�ÇHæ˜îFÐ‘”�¿mdŒ™ñ‚CL''˜3gç¹ƒ6xk’¶~ôí°8��ÆlUí­+ó¿éá.qLVåªÝ{aIJtø`kaq›ÇÈæmlrãkL¿ŠŽƒò™dÅ¸äÃËtÜp¥s–�—B±‡fÚZ+*läî¡ä«LIüÃw,?Û�öeûJ?Ù‹ãÿ †Žž¢ÃbC/G¶ï�öbøM³+æŒ-"KHC5>=é�ÎGm©#l´±Ø·jýÛñ½‘õ(ä7ñÔÿ ”õ¤›i{¤YH°}GA“b;²§Ê2sL‚çŠ}‹‡‘ö�¬³C:ŒpÕ¹½­TiCÙ³ÏRŽSVz¼~¸ó†Ã„�½·¯E­ÒwÇ<µåðÎÍ�·h�S �g{Z’5Á ,cVã”4K¦N+{˜35æÉomV—:†( ¼Úoð5&l%	`òÙÉ6Ôhw±Ž*HKA8ÔïcJòšØmrCu\ˆ^šLK�Atüs0ŽÂ�d_É6xëýc{×?ŽG#ðªù½@Ê�™ìoøƒï[|r¸³ÊÃ”-£±ãÛŠºŽu†Ã¾ŠlðòL=hY&Bî%»9©9€ÌNzôÔ”�ža’_77+l‹Yè€2”xÛu‘�©˜’Mfq�¥¢,lÇ$ŽrúãV·±s\Z¬)fðpìJzôÉ�ó=[Cºj'MÔÌlÌ1àÝ¬§I	&92ã2NpÆQµne3Xû�íÖ8ª³@ã�‹}v4gØ‹H·$>vvU�ºC;|J°ì<sz5Z¨è‰æ˜ ™·“³,�cH×RÐo(lRÆÙcrpn³™‡�qLcLð¤I›7º5Û,£(3f’SCÉ¹læØù©©Æ2RíÈ{2ý¥ìÅñ¨…}kuÚ ´[m¶Ó‹v@dwgöZK.þƒ©JÒ´ünc˜»­
ëÐbfMÒÿ ý˜Ï¤…Ù7½søHA„w‘R¾¦w�ŸhaÇa?}ëoÄÊœsÉ�(†a%ùGTÄ±ÊV•§ã	&KN÷åm3ŒŽ‰¡-aþ�"šÝ1l½?Þ�öeûJ?Ù‹ì3{×?†f8’-5Ž2�ÈädùAG3ð‰¯ã½mö‡³/ÚQþÌ_a›Þ¹üTí%ä§äÞ¶ûCÙ—í&#5ÍE[{»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»»®¥ÖºqK¿:Ú]s¦ô·°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°Ë°ÉðÍkBÖï´cý˜¾Ã7½sùá÷­¾Ã�öeûJ?Ù‹ì3{×?žzÛì9f_´£ý˜¾5(­¯mÛÀ·�[u·S›œ7½sùá÷­¾Ã�öeûJ?Ù‹â1ƒËy²à6¥µ­M�’Jdð±þÌ_
¿²Gßt“pH…‰ü-Ý¶iRä,ÀW¬lËGÅ¹½>œ-&Z¼’kÞf�ŸÆ«‰¶ŒÞ]:!°£Ò]“2´”¥M“3õíl0ì(ÖC!{VwPòtpÖÛKL•��Õe›ØÂ�Åt“A0£ê’U»vvvùJ’Á•ä“xë›ï³"ei,Øåãf ©Î,�¥åòD´æ·%cq¬°—dì©}9ºI¸^¶fŸ>xl)©ÿ 4ÿ lÞõÏç‡Þ¶øß2ÚÉ‘C^iö-&[DäÓfRlcn6eÑÃÆ×BeòÎ/gj¯üQ,=2WgºR}„`•ÄNW òŒo�Êãb›šåM[CÒP×çqVÚ\ã;Œ/ìnp¹ Ž˜Ê2.ñ‡œ£èñXkóÈÞâ\äCIvæž�odµ\dZÄ†Mã\æ8®2ùK™ÑÍ3ÈÊT,„“fuxí¾wCne¦ÙÁZÖ÷#Î¢îr!üò.ÛéÍó�J2Žºba¬+a�Å+Í)_à$=™~Ò�öbøäÑ¯Ÿ�íŒ\ä³rlÃ\jÈVTÙìÅð�·Æs œÙ{šHÌXÂûdgŽî�Ö³²×]1K-š‡¼ÿ ºÝ§´wó%(ÙóI·…jG²Ûòºó–~™jŸÇqÛQYòÕm¤x‡iZ¬‡ôwi±‚Þ3wSiÞÓ¥·Ä–ÛÚÑ­Òcm|µ£¬ÜM„É,Ñ©Û¼8Ý†Ém¶±O¸#œzÃÏÚ+¢\Ð�©RÆ@P¹]¶ú]Šlv[ki$ëôwÜ9Yˆñ�ý³{×?žzÛã—[á?‚™£áõ&²QFss¹+q‘‚ì·$¾üžË,Ê1’àËü‡&¥«%vuo‡)•É¸`wz†^¡Ö·õô^t;[‚ÖÊbq�FÖå™þÙ’L]6g‰4påŒ†Jí†ØÜ–0ÊÂØûç€Ä™‚&WŽÆp0_�¼¸ÓÕË,Ç9Èí®2ëº_´ï°¡:Ììm~<ú…–¥\@áö¨C³Ð,ªÊÂ+1C¶m©kŠÀÊ�ÉÇ’äðâðÌ¿iGû1|jK‚íÕn²:"ÉÈÛk®Úò˜Ûu�GmÉô}¯™•µÍcÊ°¬DU±@ èÖ>÷²r÷…¼MY²O¾hf©“³­iDúŽ^QóY(‹P%´0F!Äy
Fñ+Y+ê�hÝH³óÙ•ª«>cêÉy €vù¡šÚN4tÞÖPÄsµql¡Ž€¨!JÂ° Û2Æ<=1\ÖÁ¯œú6Ã•�i"ÃÏhFÉÜ81RStzŽ�¤bìwkNÙXïSkFéë1‘Z§$gkWx³O‘“ý³{×?žzÛã19x³±# 2‚¬=q¼~Ìy¡�F1ÉOä…\zèÃ¸™“ùú59Œî¶Š[+Ù:J°šÆ‡-FÇ°8£’;nêfØ:|Ã|ÒÈ¡=~>Öjb+ÕbÜGÒ±�ð•Š¥%aí™ÄŸçèÔÌrø÷í)Œ�›'qïlÄ$*2½¦,å”ˆp9ÅcÏ (‹d1ÁÈÅ6hþ¸ƒ×%f%àl~x£[9ë1†aIm¤œShóÝ‡¾sp,——ÇÇ'HÛG�Âúô})h¿TŠ<r|hÈh!±�À#êÎ4¯‰ü‡³/ÚQþÌ_—h„;¯ºÏöŒÙ±ûwëýÃ{×?žzÛñXÙ°HRý§L=¨üºR”¥)Oà$=™~Ò�öbûÞõÏç‡Þ¶ûCÙ—í(ÿ f/°Íï\þx}ëo°ä=™~Òbö£ººV•¥iZV•¥iZV•¥iZV•¥iZV•¥iZV•¥iZV•¥iZV•¥iZV•¥iZV•¥iZV•¥iZV•¥iZV•¥iZV•¥iZV•¥iZV•¥iZV•u½Žœ[ùö[Þé½«JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒ´­+JÒŸ–4%ßiGû1}†ozçóÃï[}‡!ìËö”³Øf÷®<>õ·ØrÌ¿iGû1|orÜWVËýEšõjËí%´¾Ïçï\þx}ëo°ä=™~Ò�öbøÐá—¤!L 
ò’ÉÙ,†hM¢ãý˜¾ÈT¢c{‰‘‚TÕ,…[È4b:Ï–×.Y†>b¤uVO>{#I×¤Œ½¬tŽÖ“E£¡³~ònæOêÎÓÌ»iGN.Ÿ8-´×Ý8ävUÐ�Ë�¤`_éó‚ÛM}ÓŽGe]
éF¡�µýÔŸx,9§ÎK£)¦-óŠG÷ºãÛì¹È<ÖÃp/áï\þx}ëo�Ó5m�6ˆ#Ì Lò°ÉÜÍÍ&£¢F\Äþ{èÖñ9AHÖ.MU6“š¦\ùÕ³Y"¼Vãc”¸¬€£æe²«ãeîŒ±æM!I¥Ì^5´nÈã2�´w¾m%’
:´»ræ/Ú7dq™HZ;ß6$ì{X[%ïùÎP±ë¼Íé¯�ÿ âãÒŽé¶FÜÂXâ½óHéFÒ¬ øÄÈ{2ý¥ìÅñÈ¡+6'ÃÏIQ¼	`aƒÂÀR?Ù‹á�ÓMÌÚ@\íœ”­‘$¤”Ã·ô†¼T�–¶³[tÔ=–|×Œ­Ý*úÇ5Éi@¾búò6ó©JW+º«,ý2Õ�Ym°®iK©O—kjyûQŠÈ,¶ØW4¥Ô§Ëµµ=¥õÇ"«C³–3;êgÁ qmt£Ï.©mónùdÅ¿J§ð¦÷®<>õ·Ç1_/aÚß%;�ŽÍ“Y$ŒÅ¸ÉAn[’ü’£»(ÆBƒ>-ê•°ŸÝ�[kiHyb™�«YJ]Ô;ë^¢~�bËÇJbÏÑiJa¢“ÿ Å,¼t¦,ý”¦Z)[I\#ºŽã27Æ«™fôi€TÛ%l^(Ùý,»,}Y3àç¶•þ&CÙ—í(ÿ f/�.áÅãÕe\UÝ7¼Mm¼-ì²ôñ°^6#s€²ð¬Ž�o„‘­äd&¨V°íâègCõ™EI™JÕHÂ´zj9½üSWâ°f6¦°ä¹�,WêI�‚�Ìõ°ž6#rÕ°ü:³D„jXñ0¹ëa<lFå«aøuf¨Å ˜Q…i‹³¥imÆjÜ�jÒæp�š	ÀËlE^*Í c›øÀþÞõÏç‡Þ¶øÊG·•bvNZC3géC‡‡gØ�Y0…g17“ÑËiœ?Ìù·&Ÿ­ÖÒ³¤t»«^ß1,ØBtÏ�dìn‰Hf´˜¬Í%áÍ2£7RÑíä£ŒÀ÷F‚èªÅÕÖ3XVð×ËG·’Ž3Ý¢«QBÇ‚"Ø‹þDŒ³¶ËÜF2stuñØÄ|[W­˜,Hn¥/‹‹mÎŒ›!ìËö”³Øf÷®<>õ·ØrÌ¿iGû1}†ozçóÃï[}‡!ìËö“Öb¥vlØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶l%Ô¹ãšÛùÃ­-xÚ·lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ5°k`ÖÁ­ƒ[¶lØ4ö¢ñJ}¢Ê‚ñZëÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ4JR×ŽioçÚ\ñµ.Ö5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬kXÖ±­cZÆµ�kÖ5¬iøÇk2ÖŸhÇû1}†ozçóÃï[}‡!ìËö”³Øf÷®<>õ·ØrÌ¿iGû1|nrmÄ­rîïýñƒ[v€»…i?&ÇMªêö´þLÞõÏç‡Þ¶ü È±«òÆ[üÄ‡³/ÚQþÌ_¦0§rgog£cã-X�¿Ë%i"ú?Ù‹àáÉÚÍ³]J¸o40Øéã›§2ÝL;‘~Å³grQÒAdÿ à²u�rdŸ>¹Ø"ÙQÌ¬K¶Ö>zêSÖjÅ”™$ã"iuî‰<Íµ$n%ÓÕeY+ÌPmÞÛ2Z'!þ,ÞõÏç‡Þ¶ø½~ò?+ŒmY‰ëL¨FñûË²¨è¦�‘Éä¦åâ˜±‘�…›m0ª›0�».|ÞÉ¹iK¤Z@DÑôþ9"ÈR²’9r{âbç\O@c¶ß|‘³ÆVÍ‘É³F_=dŽPå¾(ÎT3ocwÍiÿ ¯ä$=™~Ò�öbøÈÅ·—¶E«‘b²÷ÉÙf,�ÔM[Çû1|2Tm ìci{ØYuÇo½ó§²$a 3R›Ü8¬Ìh™ü*ä2cÞâ`©27n;k†âooî»ÖYúe«"ýÚ¯íÚ 9jßgå½¶9•£qen­–Öÿ â�ï\þx}ëoŽpì�i$ Ç_)ŠMÉÝ†’ò“†ˆ™g”ÏÑã×­²ž¿?kŸ=;ì•“2p=•¹¦kÖmÙYþB*ê'è,ÂÎ1y
¢þÈªhö=–Y)K!bìÌhU%D:—øùf_´£ý˜¾766â^3¾yZ @­Âû,%µ°–ŒvYAØ „ö	œ}ãu-Wv³pšÆ~J¨Ï%æœ�³go „[5�MµçF‘mÜŠžÞÃc-•°šÇ¯Z Ehõ[c-ïØ/âÍï\þx}ëo‰D#Žáa …@�»VÍ­´\)G'‘_!H°5jàQž™�+csŽêræ9ƒÚ[GflÝÀª·��eZÕŸŠÚŽ*å9jÕÐµ90àWõj¶¶l6þ5�‹‰jMÍ¿��öeûJ?Ù‹ì3{×?žzÛì9f_´£ý˜¾Ã7½sùá÷­¾Ã�öeûI‰écAÚ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-ËrÜ·-Êû»Ý8»óì»±Ó{–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹n[–å¹??{R[O´c½˜þÃ'xæ´üáW‡�«ö�!>Ò·h«Z‡sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕR¼¯üVË)e+ù÷ÙKéEµâÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõnz·=[ž­ÏVç«sÕ¹êÜõ]´µ¥Mÿ úä¯de� ·–�xhòE›
[W,ß´e×¶…¾û�ËÒãNE€·ûH;ÇBÛIøš“Zœ–£[h½løU#uê®}cÈRµ­±¯+kÒ’�QWÓûeäk'�;¤áÝµ‹®w|óÒ	“YLZîöwÞ;2Kì‹µõ#¬°Döã€žÈæGØ
Î„!„Ãe)K-âUß„Àæ§þFðU]ù¸éMWß Dÿ m;uGUxÌ#nr7OÞ»‰;š<jÉìHÜíË7ð­Húë¨f@ï0<ÇBÂæ5ïe«Æ«—°#èÂ‘óÍ¨òRò>=·|Ã€âŸµ´îaÌÁ£4‰È¬0¿ì	uÖÙm×\û¨¬€{†ÓêZú–¾¥¯©kêZú–¾¥¯©kêZú–¾¥¯©kêZú–¾¥¯©kêZú–¾¥¯©kêZú–¾¥¯©kêZú–¾¥¯©kêZú–¾¥¯©kêZú–¾¥¯©kêZú–¾¥¯©kêZú–¾¥¯©kêZú–¾¥¯©kêZú–¾¥¨­„í×ßëÄ—‹‘ºÏå1ò^)Ø»¬þ±ÍlÈ+úÜWõ–kûfCðÇâ3ò�ñ›ÜC#�î\þ-ï¾Û)“â—cƒg}<$x’pòPå´Oÿ +‰çµfÞZ4Ðò`€0Œ•À({\7;C‘»„×ÈÞ¶–ïq,†<�Ïà‰�4¼€rÄÚ3qù0­ÅYf¿¶d?3£³é×�ßœš–«Û$añ˜yiüˆšÇñXÖŽš7¦-ŠÀ2o~E;‰FEš:H¾0Î
¬JÃ#Æ!àá˜Ý\ÛnÃÒÆ¸¾' Õ¿¯ÎbL"žF=Iˆ³a1Õ–g‰°‡fÑÌ~eŽÄ@0aFØ¹‹ �½ÞRÃ,9@h<¦~UÌh"æb0qQ“Ér,J6‘6Î@ÃÁb€ŠŒÞE‰ÃÙ	ë�‘¸\Ì}£ãÝŒÀÌKµiòÎ{ÊÃÛ‹C’5;HBbŽò#Ù%—ãÖc²V€,Ocg­{æoÈFK+´Ó’åØ*™û|	±£°§¹Á=¤ÌV()ÙÙkª<o›£–‘ž&ÑûùvRÍñ2×„‹$d`3èöuÌ™G1lÔ€€À/ud]²8�›dÁ„qŒ4­ãŸLáFg8Î9•øÞ`F?Êñ»ñ×¶YgÆõ¸¯ë,×öÌ‡áÆd=/Ô÷©OŒÚñ3é�÷Þi«ï1ìm–‘É²'rDÔÌr×“uÇkcè«•cq6y#åä inla5‹œ¹¹&tjFy‹É¯@ŸÇT3‘ð2—Á¼³)bødê#ï"rÖÔ…Ž²ZM»Ï�ã‡#³:Ô˜o|Œ¬�ï„jú2Qüÿ Ëo
à0ìaqöNØÎo®îã¿­iÓ+N˜9ä_6½þ8ë%yÆ/t>hFD�ÿ #Zº©ï#O Ðù¾MÒy3L¤��–4V&ðÊÉ'ØIÌdœeX©ïiÓbÙlt‹+ØHä×:0‡‰îò,šóYˆÍY˜ÕåÒNP l¬S9|ô-ÝŽËÙÎÚÁ›÷!mÔH­¹Ž-1#‘ïkò¾W“¯fÛIÚ6Ùû‰;éŒëq_ÖY¯í™Â<†`Q•Š±EÍÊCTÕ�9ˆàÅ9còéøÀZØs2S´�ã2)˜`Þó9;‡$tYIùi«ElƒÇ!Žok`ÉKÈË–Ò¿e“ÎÇ³ðZÅÎJÂÔÕŽvéÃçtæ•­µ¥h×<ÉšŠ‚Rs2s²÷ñY<Ü0ô²”È%æie¯˜e³ñ­¨Õ±ò™ç,ÊÈäÈ%ËH«Às55‡ÙæQp¨4ÆbJ9åïšžQû‰I–RjNfá] ¹l0~{Éõö!åùì-”­y­kRä3�¤Q"çe¡wz}“2b�¾HN3Œ•Èª+ºs Å‰%*ñÖg<Ñãð3´ˆdi'c‰ÙgOÅ"RæÙ1¨:]#/#,æÇO…œäÁGO]½s{§!Îr`‚£×Îä\\åçÆõ¸¯ë,×öÌ‡ò°­ÅYf#¼¸Ü�¶)�ŽòÎÅÛgõ�ÖÛ}·[sî�29î#O¦‹é¢úh¾š/¦‹é¢úh¾š/¦‹é¢úh¾š/¦‹é¢úh¾š/¦‹é¢úh¾š/¦‹é¢úh¾š/¦‹é¢úh¾š/¦‹é¢úh¾š/¦‹é¢úh¾š/¦‹é¢úh¾š/¦‹é¢úh¾š/¦‹é¢úh¾š/¦‹é¢úh 1FW\kê›ÊçãÊår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êçýî~®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹ÿ {•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Ïûœ®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+Ÿ÷9\®W+•Êår¹\®W+•Ü»—+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êåsü?+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+•Êår¹\®W+ÿÄ Z 		 1‘¢!¡"AQRb¤±02`aq£Òâ #PST’²@Bcdp�‚³$3r“Ñ4Us C°´ÁÂ%ÄD€ƒ„�ÃñÿÚ  	? ÿ Ù´ Iá“X$}`VÓ‚¶œ´à­§m8+iÁSÇ4gƒ#ßÞùÄ‰io1=™¢K’Oi$þ[�Ì°±dòj^ûßýAø�ÔIú:!$ðE©�Cˆ##°Pˆ\ÛhehÆ�hô�Í¼YU' ¹:Ts4!ßÄ¢hŒcNS�ø5»È�€ì‘€+¬‘¦œk?"¡„,wCK•ÎƒVZv�vl£­ÖÚü&± æ9qèÔÂ+x†Y�  I­‰V`à\\šÙöF%â�_ü i½Ü'®rñŸÉÐ¥±õ
X„ÑÞ<9Œ`\÷?úƒà�¤•Îd“WpBÄg@éDÐ~¶,�¿óùªå»Ø²~«Î´ÙH|Vô¢ÞÔIá ^^3ˆÜŒˆÕ8µ(å‚Y”H‘<òäçÑØµ#LÌt$Žu:>5Ê­D$žÀ_ÛM'¡ªÍÈí¼,x	$T'™§§�S�jx÷¿«Ô5yøUäÊƒ.‰"³/Ö^AxodTÏïTÉ,gƒ#ÅyíêþØOœnŒª–|7í³âLk•	Vc»Þ’H­³&Ô±½*4ÊXœÒp�$xvÄö¢mÊÆ»ÖHÔ˜Á¯åÂZ1�ÒNå�Ô$Z ßZ¨}àw‰SÇ
zR0AÌÕÌ3§¥‡54qƒÃ[Ï:¼‚'y"¦~¬ÓF§ ŠóËþ…:¢Ž,Ç UäÄG"¹¼öÐ¿£$ª‡‘4Á•†C)È"¥HÐqg` ‰«¸'ŽêE|~ïƒõqÿ ¨µ2F‚iòîÁGË«ˆ¦OJ79Šž#(È(ú)‚ª‚I' S$€ŒTŽxž&úœbŽƒ)šÊP}1ø–ˆ×srd?òB)Lkr'Ð¹@Ñžðhø÷×÷"ñÍ)};ËþEñæwþt¡•��Aòd6ßíYD‰„±¦¥"	Nþá”dû•MF±Ã�‚ªŒ <qÅyrºf•r5Œç´pÍLÒ\·h¹kaíkXN�2¼B§Žx%IêSRÉ%Î�F[¨>–H�Í”Î…P]FG�KWþg'úQÒÏyyÁ¢¶PÚO˜“V7{2IN®W	ýÎþ ø.B‡½¨F�Á#FK.¢å{@š�0ÎŸÑlŠ‘ã{[—?— ös‰ð�šÁ×ÒZrÖóñgˆó©¯ÔIáP÷vnäGé£ñ¶3Hb>¨%À `¾")” zUêÚYFPLît¡rºË=mýW–£{¥çŒëèhÁSÆ6¬ZíDòä`$8Èkm“y+“˜§ }dÊ2M_ü+gHe †„¢ëSî'¹“u½ôQ újæyîÏtºtkwN_\¸–R©¡†·#‰$ƒ[ë½�1AqªH×}0HÉJ”Ãu(¶Ž)=ýšªþêK«hŒÒotèp½­R´²ÚÎöúÛ‰
³>Ö·8�¡MHZ/â v5m%žæÊE1Y��>ƒcÐi,bŒAãð1X hÈ n¨Ü\J‰ˆ§{TF$�Õ	ÔÛÇ+[XZZA�oUN”�]m‘:;ÑUÛ³Š¾Ž(käO®Uú�ÖÔ»7÷q,‹ ®”B2€‚*c$; ôC…Ö®¾mB½)úzÚpÁ±!ù í¯ÎÏ§uVÚswè
ÑŸþtÑŠ“÷é;ßE°u½^]oïWz‚&ˆü$Ò¼û	õè›Z`7ú3‘èšÚ‹g²íK˜�pž"@nÍm[w\‰0FMò<ƒ÷8­(Ss;(àƒ_«�ýE«ûˆöu´�´0�³ã;vƒWO-œüäE8xÞ»-o&sÑ-6$¾u·O¨öµ.&»ÍÔŸçù=>Í¹¼Ly$CƒÞ´úâh­aˆ§õàH[®�ˆ<¯öÕÚ¿·Ð¿Ö]% #·…"\gHÆhÈ/ŽÐ¹îÎ—Î¦ài¶‰�û=Ø
zéã{À„C
vˆsÅ‹zUŸÄé$ÿ W ü€'š­Õ©s¨D2~ED²Ã*•ta�ÀÔ¥­l'ibó…RA¤ßMxÉ¿Œc JP†ÄlÑIý8ßÒSD	-ç»•3é$Em“j]Ë#ÎÌŒ\.{ VÐŠk¤ŒÉk„pÂQæ$QËîDŸêXÇžŸîsõÁí*˜ßÒnW"LåÝ%ÈÒÌrq€jn<ÒzMÀ©î¦y4Ž¨ç�©8]Wî… Œh‰OyÍ~¢OÌøL!³&óF
ñyi=³®Hv^ Ôàâòî¿áÿ [£èÅ6íÒBãÐtÓÒõpDÊ”¹Ö_è@+á0Å5Ú¦ö\êáY—UmW–áË™Áœ ‹•dØ©¹I%DF½9?úZRÒÒPõNÔéÍ¬®t9R9Õ‘PIy4²"4°•(…¾è¯=µå×Àkÿ 3“ý$¬ü'àsnqÇy é¦…6“¸Ð_Œ>d«ø­®f�‰m‚A<[G jp×2ÜF®žP¨2«Á
K� tq•#sVÛÍdL’,(\^_Ý§·€ÚËõÂ=‚é†“t5!!Ò¥œÈù;¸f20Ò¤t‚$d‰_ˆED ¿·…¡�ád‘PÆè0sš­£s&¿êá‹v½)úzÚoi³à–HâMA»/S;í&†mdFÉjRE«+Éô#êZº‰%³¶H'G`¥LCNjÚiDaÉºn´§¢ñi#…‹˜×Z·”ý"¥›2*E9‘Í$‹fa—:ô?Œ3šý\ê-\ÇÄ;¨rZ=H·R@Y5FC)’r @EË³4J>”CÑr „%×Ö¿q( ª  p x�g>†ÿ Óš†¤±�å9ôˆÝ­|»’òŸ…ÇdÓ}iØ�GÁÿ ™Ýÿ ùøc×&ÌÏý	�V§‘ãÄÝ’FGÂ§Ž�Îì@I«I~	i�‡äJiÄS=Î¸�5ãï)T«1)gv8
^Ü4Q}D–¦_Û^»î˜€HÀS§ê+R*$p>	ò±Qõ“@¬›H]<_æAÿ lÍžûNÖY,ðÆft'V|a“ŠÙ"S‹Éo
¨æ+uðWŒ4; inÑ€?¹ÏÔ|[Û…i@8gÏ©ð­ " 4Â¾sWJý¤êtÕÓJä®¨ú€¦\3ê¤’È ÂŒVc²Œþn?HúMàýDžq4,sæ*}%#�­§x‰è��Q¼—.ºZyŽ§Ç˜c TŠdÇ*2&}WWÓ'êË ÷V¬âøëw¸Ç‹¦®/·_ªÖ´gŠTR© eÜ€Swèæ¦ºøa$èÔ»®Ø÷^Ž|{6s–HÑÉ�¨¤–äŒoç!Ü2à *k¡w�(¬»££Î
æ™Ö+˜^(@`®4œf¥žHäœÌLÅKj /ôBú>=œ²\BF‚|úMï™x$änÿ t
¹½¶rÄ˜ÓrTñL'O‚{¡x…@ËºñG£šPÊÀ‚h ÕÕè2£#Bî†-$çÑ¥–Þé¾\°5ãÒßÞM›ö�.•¿]=5Å¤²Ä� €�Hã†¢mrcy4‡T�S]Ç$”,»®ÔÑèæ„°]c,øôÁšì¼¬¤Ü]èä^ÌJg´Ž™°ÅÐñ€©ïmÓõHêGX5'ËšCªG¨äŠäoà!\�édi®o
ˆæa»ä PÀò$7 hÈ0Cvd7JðjÓpw¤1Î³„×C:$œƒ£>ˆ Tº¦šÕÊÚ…$Ê¯•¨È@¿·'¬�
–‚â2�ƒƒõ�¤TÒÏ-É]rIæN Hãhä_:°Á§šW¸+—˜‚ÁW‚Œà¸•ÉidH‚I/Ÿ
†VFAÈiîv|ÜGÁ˜¶®Ñ¼
s¡œVÑÁpDçÎi¸ñ»º€è”b¶þÔ»�"&|
�a·ˆ‘¯“š2Ù_.Þm°Žùôý*ÚûGj,D”ŠyNŠPª   À y¬¯‰É¸·m%��…m¡´w|#š\%F±Å*"(ÀUQ€÷9úƒWBä%ŒŠvws–f9$Ÿ)'ò¿Q'óË(nDd”®­$ÐT  òñÛ:™‘+H3…œTkh¡QU€ v`˜æB�ƒƒƒOÐäèbÚ[MGýJŽú•õ*8?êTpÔ¨àÿ ©N�rÊQBvª/þÕ§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�?q§î4ýÆŸ¸Ó÷~ãOÜiû�þÈÙR5ô�‚Žú ƒÀ�ˆº†Þ"úÊá·iÕãuŽ§!”ö‚ðÈºÈÈ\Œãêð‘ùW�[+œ)•ÂG×DFAÌ&X¡GÊM8xÝC+æ$~UÔI;ãDEÀvÏ˜|uÌP†8S#…�]G
Ìq¥ñr" ±òˆUPI'€®dV*Å|‡û†ML¨HQå p­±(¹wq+ª»ƒèë±jàÏ±%ÿ ŠÀnÑèúKI%ÍÜƒ"±•Ò¨e³¼Á+ØÃý Ôs\Ý�sù úDÔZ]�t¤¸!Êñ Š¶¸ÌÊ¸ æ=à‘í-¬Ü+%²20lËÁlo<CR‰ašþ&WúRU�ÌâH"–TÀ–1�µ&¨&]Jxä ý Ð&åme0ãŽ°§­£7û{á>,eòÄçŽ;ËV¯…4^¿”}Ùò‘àžh’)g”±úÜVÑ–kiÆ£ù@ 2°¢ï,¹ÝÃ5µ[Oe,§±¡‰à*	Žþ4�Ì¸ÒŠÌS&¬î£€¶ÄdS‡G�™HàAJgÃÄ‹h2ò6š±º´�ÈÓ+á”I©Î	Äq¦È|Ê*ÊæÕáf8u.Uñ»HðZB}±¸´IŽg ¥ƒñcüuúèê	&‡+�ÃÉÁ¤x­Ú%Ä<gí¬®mã“äJÀŠ’æFcr�Õ—†V’HE¤I½’^ÙÚÕeq,`öÉØ´KÇnò'RƒQSV“—,Fï°`
¶–9%QÉµÔ*%yõiTÆ@ZIÁò~_ì3ÿ «‰ãu�£1Œ®š{f%z5‚*.g)cÆóAá�;LOÄ�8¨'lÎ™:ÙN¡’ÞWì�^c^h=æ’If`G›é&¡–ÞsØŠø š4Î2"Ld;TRÛNçIôsAæ�ÆDQã yÍE%­ÇôVNà\¤œ€§üÆã}«Ì˜Õ@†žå¤æšwGŒ�ç5–·ÑY85#Ë3Œˆ“ÎÔ’E,Sñ¿˜Ž"¬æŸ1�Þé´‘€¹µ³?ÈŽ1Ú@«yíšBà®OÄ.§Š	ÎUr+iÉð�xC‘évÔÛÝ• <X2Ÿ=G%ÅÉ ˜ãÇ‹ŸHÔoÂ‚wrc´84×‘ÚÄT=¶²5é>�%Õ´·h%IÐP+�A"¡¸• ³‘§‘ÎD«ÀŒš³š8 fyUØ3>•ÍZ\4„œÇÙØ”šÔ�HßŠÕ¼Ó¢S8ôj)NP°”ã5m5ÝÄ}Ž#ŠGJñÍËE íÇœp¦8‘�ÛÌª2Mm„ï1 ‰sr=Åmyipñ&Œ’¡f8ò¤µkäžsºà{Ÿ§M™Ä2ÂFîP…Â>k`XÏ´àÎöòtò£ÑÀZKhïL°kÜ4ÔK$YFÐFA)k¬PÄFèêúÂvP€l³g1-¥q€u8ÔŠö#j\È3¢Làš…4‘ßçÐUSGEÅÔÛ þ€ÆI*ßÎ˜¹»ŽD£W�¨zB�ÄVQÚa.J#è	àÚBÆe–vwô—{Â®ç–îÙˆŒ;d<�œ…Ï¡KÎ¢‚‹�øD„Ô:«ý“C¨G"Ê"4Ãtm-EÉòi36ºHÖH§ˆZã¼-|¬Éû£!kc[m+ù¡C �¬`àu´±�7§r°ü°qõµ1ø°µ.Iô˜k­Äv‰"î‹>èÁ )R(Æö"Ê!jdbÑ_¤ñ¢ÙC�‘ÃˆÊŸ0&�h­cFdmJtŒˆ¸xwLÌ
€s–«Ùe!Õt²úUé§½ªê(fŠdœ+ä`ÖÈµ¼µgU<ˆÈ†"‘ÕÐy”¥p0Ûj#Ñ8¤Œ¤¢_„gÊuuQ;Ÿ€¹élTcznLeüºB©Å<2cô©Ö•ãÚÚÃŸà¿â?ûÿ Àkh˜bŽWÌ
HgePN*W’þ3ý/Eø½%³]öïLüF[·l£�¶dHä �S&´’³\˜ƒzaè(»8-�)4^h=æ¶=¬ûA8ÜJ£9ä9,	re·ì‡†�~Z ‘#˜ÃyÕ<ZxÒñtîI�£Îf–»YÆ'ù8Tìî¯€E4LºJÈ�-Ÿ	m¤_¨é\Vø_Â÷«ÎqûÕÂxÁ>vÃiakµ‘Œb“…NÎêøSDË¤¬�	ÒÙ¥u�¸dD4R¨¸:Áó”ú¹?…+dÛÞm£Ì èÉ:@¨­¢“ºñÆGÓñ$RÎHÈ UûD¥È!F¤ÇN«³s�d°]@¯£I^,““¿òx8¯€Å*Ë±�K(8'SŠþ¢¿[ñWì3÷¯4¿éÔ`¼—,ùÀQ�]„ZÊ}Z€­
ßxùã»Ò1Zw§Ñ§‡
žÞq3¹hË)a¬ê*CVÉ‚×hé}rÆ�KzA¿¸¬ ö‚mÙöx“ÿ †Ž´5&Ð¾R;‚7¤rIcW�³¶‚q™uã�8 ƒ[^m§u	-yÂ•àIbI­±6Îº�æM ñàJ•*Em¹§–Y%ÞÅ©¦p}-uÿ ö»¯êw?/Uc|22ü¤qÁ–¿”ó�ž;€‡»¯sð8m'£”Þ“€ÃÎ¾•\ãýÅm7Ú=Ñ«Njëá8™äÞèÑò¾Œš­qÈŸ)vü¯¹?Ü„|iôtë­·,(,°Ë”KéC'ƒhoþ¯ó[­5¾¾:�m#as\¸‹y©£9Vâµ9¶¿€ —(�ÄVÞŸi¤"ÕÈ—cYÜÏ´/�Eç`kùA<öPŸ&S¨/¢	b]lÏˆ[Á§@âµvÖ÷Vh9‚ê}"¿”×3Ü©’T2O@õ+$Öq*Crª20 �1¯åÅÝ¬hƒÈc¦†á­Æ-¥A“á¯å5ÕÕœ'+»[´�!‰ ª0Ä^oÍÏÝèÓÛŸ9©÷:�[^�XÓôdUî�ÉM»Îp}Ôì$´Œ,sªûÖ¶ì÷6Ñ¬x=Ú‰Å1…`Ó¹eÓ¤i¯šöÔ"£¡z=¦¶Ü±ZËò¢ õi vs¤“0É%×NqW;ýs™uhÑÄŒdù©ÏÂ&ˆ<Q€rH=�šL5É}ø‡Ñ¿‚Hµc:u©\â®wåç2êÑ£ c>j¾ÝFîÅ­÷Y_ŠêÕWïc;œ¾€pIâAUä——¤Hýšr0Oi$š�àt{‰c•8«‰@«óxèu(eþ�àX’jóGÁô~kwœè>–khIgpØÔ@<@ÆA[ZY¦†D–S"j2:6x–«–µ»P3 ¦¶Œ—³G‚š³ØGI$š¹kKÄÇçTgV9vŠÚrßKg^,O‚ïVùHÜèÆ2 ãšŸ³^óq£³^8êÍ]éÜ(�Þs�éf®ZÒñ1ùÕÕŽ]¢¶œ·ÒÄA@ÙÆW†KS›k” �ÀVÙ’KŒöÊè\iô@-W»�‚«îõêÈÒáWmmu 8IÈó`ŠÛsKp	×$ˆdÈò–ø„’)VSÀƒØEm™m£sò<`yHÍ\µÝÙÎ$a€¤ñ<NM^=•Ñùl£‰óöA«ù/®—ä3ðÏÚI5vö×¨]Auä#®äœéíœü¢Cj´šÚ¯4Àñ,eT/ý,j5{¼øXa¼ÝéÑ©tðÉ«�ð2´š´hâ Æ2jëáà G£¥±œš{ÝšCa+¨å€qPºXC'êÑÌÖÕ–Åå$º�éœE]=ÝÜ€ƒ+vqþålm¥¸‹¹ž%gM'#K‘ƒüîÎåUÒ¦D�CãmaI¤Î¹U vÉÉÉ¡¬-åMãRj$‰E
9ýƒÞxÔ_çÞy¿Õoï;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóIÞi;Í'y¤ï4�æ“¼ÒwšNóÿ É÷±*º7� ^/æT­š	<ñˆÉÐtì§ÕÄK"¡‡ÄßÉ´°@^5Æ	iYOäXÄíl]^Yx“Ã7i -Y$ãV†�Î‹¬†ðcTp»ŒðÊŒÖÌµ¹1cXŽ:zëa¤q·£Ã&=%ÖHjpðÏÉyÕ†GäÞ=»É;«”ò€´åæšÂÞIñfdŸï/ƒ>šÙûÕu1ùA*�ñ½Y¼K¬0	ª0ÿ ZTq(b°Ù…í@dËj¯å#Ã,Åšvg'¨h©Úy`Þn¤vÖÁ¡8tÕWÇglÜ¾ä$�ÀO Ñ5µžöÒ}Édbt4R>��IÒÂ®¦ˆ|$#•ë­®Bnf¶Ë6”Á:kh=¥Œ#V€Nˆ�œ(ÒÔæ�îÕÙ²i2î¡’T)œ0Ò5hqC2%ŒƒÎD¯[uå»Œof‰ÔÆ ÃÑ©—Ó˜Ï 	ð]CwÚÌÉÅ3)ËÇšºGÂJè�à•ÀÐyÀ+y¹Þ4œ]'+_³Kü&¯RØL�õùtê©~,S™P„c@ÍÒºƒ<a^-þa¨
þQ0ÚÅ¾HLŒ[Ò Ë«�Je¹³�ZL~SÆ}*Ú“F'Œ<ó¼ŒtF•µ^xfbCêbŽG‘%Ëï@ókJŒÙ,-Ye]Ún†Xk¯å‰O&ä»¿!—UJÓ“—z{]£!ŽîVÔ{[Hx€IŽ=\B÷iì©™’$RKG8×åÐËW&ÜjD•ÕôkwŽ[ÐQ_Ê'ŸDŠ&”Æ¯8%ƒŠP’H¤J£€t:O÷‰•Ò6eŒ d/øÕ¬6^‚\È%ýàXö‹L3©w~Rê´¬~r\ý±tC[bæ¥\Å¿‰4ô:p­£´o/mb™´0&P4Ð‚¿”@Š¤Â†Ï’0Ý€-^Iur@%‘Ù_óºû@( ¯ÙGñ×ËžÚX×ëu"¥Ki.DZ§@×	 ¡&’Kùå*?ÝYC¹ÀJýš×ýw¯Ø¥¯ÛÏð-%Äex…$é¤·’öi9R\kÜ1¢¶¢\lûÄRáX>ryœT©.´y]“Òv'OÖµû4¿Âj×~ HL~;¦5êô¨–"Q,Z†¯ÌIÙûÉG]±¦±ý`•·n£CiƒO
˜ÛÊ)W×÷-®‰¾ @çÐ_F¦H#ºƒBÌç
pM]Es"Lf‘¢`á;4�‘@‰F x‚R¦’wcÉ2v©
ø ×ò’iç{mî#•;e#"01&†e–Ê%Açm2ÕÄpK,‰,FB?�ŠŽ[é¥xãÞ[”hÃ¹©%‚Æêu‘¦LEì`H<mûÍF�ÑHÏõJšæk)$‘ã{�‡=¸>EþñLÖsÈu>ä�|åM\\Þ9±�5mnÑîÌEF�ÆœyªæöýRº�?xT$4˜ÞM!Õ#ãÎiî­L�©ã�”'P4nà6¡0#uÄ…X¾§Ô¤“SÝÇ$	¡D,€œöêSàZÜ9Ì� 9ó�A¥šæå>CÎCh>u 
ží'·DDX™—M3¬W14nP€À7› Ô³È’Í½&b¤ç viJe# ƒÄžêÐ1É‰dê¨¦ºy£)¼™†S>†� 5}}$3q†wF@Þ�Ò£‰"28á†*{©È@ûöVÆ�6•Z3!�ÉI!!_ÅrÁ«{yd¨P‚ã9*‡’¯oÕ= é÷jÜE–f$å�±Å‰¨‹ ŠGS‡FÉíSMsvcl¢NT§H-Äk—S*’HÇn ÕËmmqÄäâEÝ.�ÀúT÷w>ŠLë§¥EMu'Â·z÷ì­�Þq�*¾•oí&�–“p@G>|04’ÏsŒ,Ó�Å3è  k�;¹£:dJžöåAÎíÝUOî j5Ž(Ô""ŒQØ ÞàÈ5³­mK€Á
FX>�?ö5¤Š‹!Œ‡ €�šI„Â NOÖGåKþòSXL“çÏ
ƒ_Ã“V¬hÆ9ñü˜Zi%}Æ½…�ZY	?›-¨ãòÓ^æ'“Nq�#8¨÷{Õ'FsŒxFt©<ªÖ¦eÓ«WÊ—D—V!‚uõ}³ä¸Èiué	üÒ”G«Vuä‘žï\ÜÈº–(W'’Å4'E(ÒËùi¯s}9ÆqI£z�´ç8þ`ú"LlŒœy)q¹ÞÆ«Ø\c ®­žÝß9�¸Œ4ƒu»�¢Æ­YÒÏçð6˜ãBî|ÁFI§×ä«`ŒàãËà][¨žM9ÆtŒâ¢Ýïux™Õ�,W�ÏÚßøV¿iOq§H¤»“FúO“íï«¤Ú²6%ñR2ƒÒëˆ›Éæ`‘WuÙÓ *þ¦É·,³n—±=4D×JÌ#äñM_Çu	�,±Âã>jÒo.ûUÏOJ¯òÑÜ$  R„ùG‚ôh–éEºè™l¨ÏÓS­£u!HäÐŸ5_Çy¿‹@^Ãæ8§ \È§A êgI«ô‘¾ì‘¢ #p3[B8tê	”\ÊAâ{;’®â´H|F`šŒ²QæÒc°Í~É/ðš½ŽÒÞ0V!§Q�ƒÚM ·6ï\peóÕâY[k"(¶<¦�»<¤¤plƒƒK¨Fï…ô‰l[F8Ý×\vú4žÐ)·7Óª\.�9\�j@wjº�|\Ýn‘ áÏk}nn vš¾–à‹a»™9_Þ©ÖÑ¹sri
	'Ž?Ä
¿Žé#Áš }� `Ÿ!¦í’b0¼cWñK»å·4…¨õIrÄ‡Ó>ª¯â˜Æ5Ëo `-1C<«•ÀbA•­§¼°�ˆ‘‚"rAéÅm›«ÑðŸÍ¾ÃÝ«…µ¶´:$”¨bÍR,ÆdÕê ÿ WIq8:ÝÝ¯˜vv“Wéä”¤‡HS‘�W±]E#èx‚ ‘œ_Äà2™mÄcJ†<+„ˆ®>¦¤EÖß��Êâ1ôW©ymu(ˆø�
à»ŽÌƒ´® ³äPiÒæÛFc¹Tƒè•t¶–p>ì9PÆFUî`]âÊ  éWI³àWÄI¥d,<æŠ5Í”…EÇþÕ´‘Ê™`³š™mã¶ÿ �9Ž|Â¿ÞíäRRåò6*d€5ÑifeÔ@À L³�Öò@
Hð:O!ƒw<Á_7mHŠ.‚ ±xÁS!@8ò×Éu>£L5O#©Br š¼[¦!q¢…êþ0ú7¢Û@Æž8¦ÜÌÎªÝ�°AÁãW±ÄÌšãµ8q ’8š]2]$Ò Ü”($ £Òí"¶”W
Œ»èL`ŽÂ&««ünsÁAÇiçWI~5ìÏo£�I‹ÛÀ
—ð×ÎA«Å¼´w	(¡>Qà*—.¹&`E«µ¼²•ô9
�šea<'ól@$ýz—–ÚÀš0�qš®¯±ºcÁÒ5x—¶¥ÂÌ�•Ïšœ„ê18§Kû§¹Œ Š§�ôkiD^5ÖöûµÀQ‘Sˆ¡hU¦‡H:Ëìú&¯„Š6p{t�ºÄy]ôï©G©õ8VÑ�{§_Á´tÑÜÜ!EnKk ñ­¡Gr$Hju 8’G¥C•p8eN)u9`‘©à\ÖÐŒÈ«­­´/:i·3eTðm-¨;khG!Þ­¸Œí$q4¡]Á¤§I©4î¥]êàÈiðÒ¢îÓ'Lj] /# Uâ^ÚëdÐŒùªlAxä¸À:ÔéÅI»”H€6ì'é§îKBø¸�_-ÁpºUT(Lq¥ÔP «çf8{;.ðZ”+ÇME¼—áR2G�2Ú&¶ŒQHŠÏða� íÆju·;‰ŒêPp€‚£<3W�íZ'Ûè ©×ÇU^G`¡Žê«'23A~mñHWƒa8Õäv–ðëT:u4‡QbMðËCÚÃ :š¼ŽÁCÔ!VNdf�5Í‰‘_OÐ3[VgQ[e�p0~I&­Â]¶t+¼?Q=�™«ø�‘w’[h
;H¥Ò%\ãÌGa:ŸpË9tvù,Ÿ#Î™FT «g’	Ÿ@;�) ‚+hÉ)š`Ü>´Òi\YÝFr@ ¸¨æ¸œÈ4NJ¦“œ±'Àû¸šÓN³Àq¦­3#Ê	Zýlu½Žáa˜§âAï¥šêIX*Ç–jÈ
 
ý¸Ôeá¶“cÈ	©…Ä÷ Fˆ€“ÚkåÇqaæ5û4¿Âkúßõ¿káZý¹¿‰«öI„Ôâ	 ÕØà�JN E#$W‘´“Ùœ‚3Z ½…Ùdì Õ¼è�Jd'KãÑ¥- •œ(âtµNXââÇ�©F0)4´Ùó0ìjC£fÙ˜p}7%†�1ìë¹åÏ�F
x2"Šá‹·˜e~~ÚÚrd)èêö©Äó\¦í#PIñû(bD�Æb{H¤.c¹.ÎT©ÅN$–â�# êÆ;j&-jÛÉ“ÊòO,ÓÈÄŒîƒ¶ó>lT2CÃ–9>X“Ûàý¸ÿ ÓnDÓoa‘¸2’k/od„É(5éG_·/ñ-~ØŸÂÕýWú‹_³Eü"®d·ÙÒFZFCŒ·oa¦2r›Ù5^Ö^)V0RàøŠAó05}%ÞÏ–}GPCôÕñË˜Ü±Ud¨'g†2ÅŽèçÈ3Wòü)elÄìT(`)!ÊnÕ¸„ññ_®z;¸¯\K§äñ'U�4’pp©_µ�âzý„ûÛÀR+É&mm7CÄdÕãI³$‘$—H,"9ò`ÑíWíMïJRï,šG�Ö@ƒ\ZÛ^¯0ÐÃ$êê²œ·iãShš8Â¼:õ¨Æ ¥*n²¨õH T¯rI¤N!jg¹ºm$>²ÚF{KTeá¶Š16<€�Oð¹¤`(ò	ÍBæÌÆ"œ!ù´ñ],×RJÁV8\³V@U P"ÒæÑ“
ÔââigJðP)dŠ«'OŒ	©EÄ÷NŠª€ú@Ôo%¤¥¼å8®(Mrò0.Ìô
ªP	É b™•‹ª³¯SW2]Þ<~&]‹jò±@(düO'É©CIÌ)"yTˆÈ¥,Ð¹”¨â@f§ÝÜàë×èÒ•i¥IBŸDº_±'ðWëd¤ÖmæYXDN¦3ˆqãê#�¥*òJ²i<@.1_±øW¥'ñšùÆÈÄRœlùåyüÄF{?íHM²!†Btç#=U(¹žéÑUPg`Õ“™Xå`3Œ©ÖgyŽŽÐª+õßsÀ¥ž6YŽ$/˜o„` :Ëú"²'[–áÄd&M]Ëu|ñ|‚ì[zGP$˜.€êEkÈ!•·^\†$VÐ–K­L^6r1æ
!EÄ¸SÄ¦<EÈÖY‰È¨ÛCE»ƒ#ÙGá­¡,—Z˜¼läcÌ
·v‰%'r[H0jòK€¤¬jøm^m4¬óE&õý#Êê§“:s¹ÖÛÌú8¨f‚Ø¬oÛ'Žhæ9P:Ÿ üé¶Š\p. ‘V±DOŠ5H‡Š¸ø´†&<Y)¨c•=PÃ¾­¢‡<t \ø-â˜DŽuo0ÿ Â%Ñÿ /š¡IPœ•u9�Z20Q€*G›gOé" |Ç#FÚ�²†*|ëž”2°ÁdVPFþ’ÆrmI­Ci>qž”2° ‚25GðDPª3ÛØAHNJ¢…óàT1ÆÒ6§* >vÇJÊÃ ƒä"¬mÙc@c\(ó
EDQ€ª0 ú «8%IÐQªÆ �õT)�¨¡G!VÍ!9,cRIðAfC—(¡K9Ç‚13Œ4�@r<Äø"IPñWPÃ‘¨Q" �Ú¨ƒÇ²¬mã�pe�Aµ¥½ØyN@Ò¹SVVâ\çX�sŸ?‚ÂÙd!„k�jå
Ú”:†ÁóŒø!Ž6‘µHUB–>vÇVÑLjVjâLçJ(QÝPÆ’IòÝTo¬Ž5r4m©(%O�sÀÔ1Ê€ê
êçÁ¨’HÛŠ:†SŽÞÐiBª€  PG*g:]Cú²·
�­@�{ÒO‚Þ)€á­CcêÍAJ{HE
;ªÖŠð.�ˆ¨’$ôQBŽB¬ ys�m“PF�)Ì…Tÿ óc�CIœéE
9
‚9”v€êêáSÄ"…Ï*†4yNdePŸ;Æ¡ŒÌH“HÖ›>Xe `@H«HV'ùhio¬yj$‰E
9
†7xŽcfPJ:“ÃÁaldÎu×9¨õÈdB!{×VP<¡FY£Rr"º0ÁVyˆ¨cÜãNïHÑ�6*ÂØ$˜Ö»µÃ`äf£]Þ�:04ãÍŠ²‚7ô–5R+£a�~°jÎŸÒD ø"IñW‡#V°ÄOˆšˆ5´P:HÙ…ƒerzI‘]`«‚*ÊßÒHÀ5o$}¨ì •Ï¢O
”Œ{A¬m×X*Ø�FAâ*4HÀÀE (l
´�£Œ ãÌÕGðD@ú€«myÎ­Úç5IqG”ã·´@!@ìÍŠ…"@s¥(ä<ÂLçP�sš‰%ŒñWPÀãè4ƒF4éÇf<Ø¨’(ÇE
~�Vß˜cLz‚ç'Îh(»»|•S�‹æ¤WF*Ã ý`Õœ?¤ˆ¨ÒDn*à0?X5alÈ,»µÁÇž �Ú#˜Ë(%?åóxl­Ö\çX�AÏž Ž%f,B(PIòœU�º9j¨=µEà¨¡@ÏÐ*Öåa†t@¬Aó‘VVæ\çY�ugÏVñ*ÌI� >xêóÕ�¹Hó¡wk…ÉÉÅF¨Š0@ }@U•¹—9Öc]YóÔ1Æ]µ>…¨ùÎ8š°¶.Nu—9ðX[	3�B5Îj$’6â®þ”*¨  0 üˆuÔ|ÕP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨TB êP¨:…AÔ*¡Pu
ƒ¨ò¦xmm‘^r‡ìý¡*ÈŸ¤Ë'ýêÇídûÕcö²}ê±ûY>õXý¬Ÿz¬~ÖO½V?k'Þ«µ“ïU�ÚÉ÷ªÇídûÕcö²}ê±ûY>õXý¬Ÿz¬~ÖO½V?k'Þ«µ“ïU�ÚÉ÷ªÇídûÕcö²}ê±ûY>õXý¬Ÿz¬~ÖO½V?k'Þ«µ“ïU�ÚÉ÷ªÇídûÕcö²}ê±ûY>õXý¬Ÿz¬~ÖO½V?k'Þ«µ“ïU�ÚÉ÷ªÇídûÕcö²}ê±ûY>õXý¬Ÿz¬~ÖO½V?k'Þ«µ“ïU�ÚÉ÷ªÏOÒ%“þõ3ËkrŒð9t)Åsæùüp É5³£6ðñ’Ljê Õ’[Ýœèdì�œ“N¨ƒ‹1À"H¾’Ãº�QGÇ¤IÒRî§]~ŽFjT}'¤ƒƒæ8©ã2(åSîe{ÄŒ¶•l©Fô�©Óqk�D)vd�<‘G˜Õ¼¬Nm8d´‘$	nCäg
*x£-Ã[Ï: ƒÀÔÉ¥>QÔ0>º`ÊFA þŒþÉüô_ö¿à?†U�R<àÔ"öÒCèëÔ !�­”–»C:M?ÓôpÃ+W’Á³,�ãUˆINÎdÕäÒØÜ´qÎ’�I°E(Œ6Á‹Ð—µq5y4¶7±¸“+�@Œ�œTæ8Eg†àkæ*â}[B|I$„
«ÚHw*í6‰$ËDöã°f¦I®£¿Ey–>	$
¼¸{áeý¤hŸà´åÞ'xµ$)ì£ šÉ?5ƒ…;ÇPs[Ãx,î|RFìèrðÕåËÉ$å£ r %‰ ÔÆX"Þþ†�¸�0aWRÅi��" s¨-3´p E.AbŸ ~ŒþÉüã#�æ€G¥d¡× NÜACÏm®«ÀPßÏ¿µÿ  ùý+FÏ*È¼T‘€Ãé³.6œzò“eÏ'ÃVÎkkV�€pT‘Ô dÕ³¿Ú6·ZŒ°„,T·xý`ÖÀ‡gX!S+ÏX�è’¶íkYŽ¤ŽÐ àkaKgxˆDˆè‰¦@ ²Ÿà¿¯Ý¶ïÿ §åPæÞMìkéŒ`­l¤½DX…Öí¸/ft•Å,×Û@^+ÍºMde_Ð†öB&è)×¬FœU¼°Ið‰‰P£r5Ë+¢iHÔ³8àE$,71ººtÖíƒƒ[
kÈšRñ¼a´ê# ä„Ã5Î°‘0ÃfC©˜�%YÏo¬Á£{&¬kô¿Fÿ dþà¹š¬®â•ÄnW\dé*ÀUÄÑÏy·Åàr�¹†-|V®d†÷mOmx˜£/§Õ[Jh{3YØ§•LŽ¾R(¯¯–	P]Átå’EsŠ—à÷;mSsåŽ#è×ò†öþu�o­o%üÜ¢§k)ï¢ßÜÎ§ÇŠ?D[vòþÚ9‘.ínÜ°põtmdÚé¾{�Ht†¶ýåõ”Æ(îáº:ÿ ¦
ºTñÛÝíKh".t¬=.ÿ ÚW0:í%»YDÀœ(cC	qr¨óPßÏ?µÿ  þï?²ðpº·’!ô¢ìÙ[56djiOÁ¿““^ÍÕ+l÷RAhîa�åºzúj™î¯dŒH]4‘1Í[˜¶$+ÄIÇtœŠ±–ûhNàš2©ò–«v¸¶‚ßà×É>?UA<òÝJ�<®š$C«-VÏso²à—A>P‹sV÷3'æžòwM	
åªÏá‰³ �î-¿Y*_É%¿Ú3×q£›Uº[„…†3”Œ�òù‡óÏíÀ?»ÏìŸÀ&XE½ŒÆèÄï	pàiýêP	â@ãàP2rqàP3æ y‡�@'‰ùïö¿àÝáÃM ô‚.“ú,å¡Žyz!×Hþï$xgˆæ9£8e­½ÎÚ3[{Ùc­½ì±ÖÞöXëo{,u·½–:ÛÞËmïeŽ¶÷²Ç[{Ùc­½ì±ÖÞöXëo{,u·½–:ÛÞËmïeŽ¶÷²Ç[{Ùc­½ì±ÖÞöXëo{,u·½–:ÛÞËmïeŽ¶÷²Ç[{Ùc­½ì±ÖÞöXëo{,u·½–:ÛÞËmïeŽ¶÷²Ç[{Ùc­½ì±ÖÞöXëo{,u·½–:ÛÞËmïeŽ¶÷²Ç[{•´b¤y§”æI¤9fÿ °ÿ ÚÍ<§ÃË7ý…lw1ŠØ>ÕljŽ¶µG[Ú£­ƒíQÖÁö¨ë`ûTu°}ª:Ø>ÕljŽ¶µG[Ú£­ƒíQÖÁö¨ë`ûTu°}ª:Ø>ÕljŽ¶µG[Ú£­ƒíQÖÁö¨ë`ûTu°}ª:Ø>ÕljŽ¶µG[Ú£­ƒíQÖÁö¨ë`ûTu°}ª:Ø>ÕljŽ¶µG[Ú£­ƒíQÖÁö¨ë`ûTu°}ª:Ø<®c5Ã<GC Ã/Ïý³aÿ ]*êÔqhœ8éü›�ÓÜ"³‚=~.G76Úµåp§AÒÚO‚çw5É%ÐÍ«'TÑC-pF‡Ñº�è±†š9ãsé]Cçü]ÆãF“õz5;îçx±êÎ¯¥£5ho¶„œbR|Lðà	$ÖÍmŸs.DçOƒV;È–0ÚÕ¼rYr °å²‚cØí¬2�Kª ‚\ƒþd«Wº¼¸ÿ ‡
œVÅ’ÈNÀ$�£ú¢øEäÝ±Â;=#[[ç=’�C¥ÅBno'ÿ … 8ìô�l‡°Ž‘1Ô úÃx-=Œr‡É| ã¦­—s¿ïõöëÓèãÒ«E—xªd�¾
d=5±`K«x®Ì‡ÇœÄáqþjØò=ë†ÕgÛ©r€Tf""IeN%0áˆ¯äôÐYL|GrUÊúC Mª9]œ0È?¢?²ü¢<3Äì8ª¸$~MÔ3¢¹F18pqNpžÿ kþóÿ hÍh`ÝÃþ–½\jíµ�Lë­ ¶72HwS8ÈÃ'`¯åU«]#©…0ÿ +ÈŠˆ ,[€:{	©c{“r$P$G ‚kþ"Û ¬h£3N3Ê8	 Ö×Šö|;Dº�0h�oˆ3p ;š–	C’bG‹}þ `ÕÈ³‰œx±Wò¶×F¢bG§–)õ”…¿¥�Œ×dO„”�è7KRÿ ½�±¿×êgïÐÌH4EþzR¼×_ë­0]ZÔgÎb2¬TçA^KØÿ �«öà¢?²ðËfétŸä8n“O‰&Ù©¤ÿ ](ÑÜÆ†‰Az‹ôN‚»aÙ�-œ_Cð>æ¨åƒm2#Ðú1­Þ¯ngm;�ƒKi3ë’£+ûÕvöÖPÀ&¿hø°#:iîm6Œ+®	„ÄåÅ/Á.mƒü"G*DàçMl½¨öAô›±ÑWQ›#øÌN âMXm$²2h7¦ÃL4µç=	[?h^ÛÀÄKu@ÅS	-åSåÏ”ä#ùßö¿à?å¸„h×¾e8ÑœcH•MsÜeae ˜ø•4&Œafˆ€øôNAÈ£5Ìèr†bCç Që†h‚ºÿ ýOs8�ƒ,R²”Èô°K:5©%E@9 öäÞÇ4k¥eˆ€Ú}�jkÀèÄ™®§Ï¥•¤mQäÇ*:fš{—ŒåVR4r‘²‡1È‡ŸQ§¸º(r©)9àiQc—x­³‚1Úo>	ºÑœ�|ujáŒæšWÉ¼f”‚Ü1ŽÀ*YÌ÷b@êì¥ñƒœ (Ïì v…€×���ÀÔ× ìäD‡K('§•©&HÄ¢LÄ@l€G”,c·…"BÜHA¤g¢?²ðÇ<O�8qƒMùøöô±\¯õ�gø�a-nìæ´ŸÈ3ÊÖwûNò[—=5wa M·ÿ 
Ó“Nœ)­©ä¶�¶Ð@17¥ÁkHBÁwü©Ã÷0HÑK3À í$ÕÆþÙîâ�Ü+ À5MdlÕt�4Êùh³Z�²¨„þ¯Ä5Mbl•t�4ŠÑ?ø™¿pÇ5a°ZÅáÊšßW§ƒBÕD×{øÒÝõ*j#ùßö¿àÝçöOà>¬™•´Ûî±»w ×š¹ø3G2Ê’èÞ`€AÈ¯øvÐ$J}-5y¿;ZèO£w£uÚÇÉÏÊðM%­í±Í½Ô_)+ùc4Ö\8âÒÎ¾bjÑM‰‹wº'€ãœúYí¯å…Òl£Ù¸1e‚zÍ[`b(Êx±ôóéf¿•·m±øPšI�Ð×š�o`º¸’F�¥Ô&‚	l×ò²æÇgÊäüÇ¼1êôNiÞG‘Ì“M!ËÈçùßö¿àÝçöOà?¢ÿ µÿ  þï!ymnRpƒ.…86*ø§�wRÚ¯¾ÊO»Wße'Ý«ï²“îÕ÷ÙI÷jûì¤ûµ}öR}Ú¾û)>í_}”Ÿv¯¾ÊO»Wße'Ý«ï²“îÕ÷ÙI÷jûì¤ûµ}öR}Ú¾û)>í_}”Ÿv¯¾ÊO»Wße'Ý«ï²“îÕ÷ÙI÷jûì¤ûµ}öR}Ú¾û)>í_}”Ÿv¯¾ÊO»Wße'Ý«ï²“îÕ÷ÙI÷jûì¤ûµ}öR}Ú¾û)>í_}”Ÿv¯¾ÊO»Wße'Ý«ï²“îÕ÷ÙI÷jûì¤ûµ}öR}Ú¾û)>í_}”Ÿv¯K Iÿ j…áµ¶FHŒ;³öÿ ÜL@‰¥óš“¸T½Â¥î/p©;…(ÇœQû¢³IÊ¬3«O;@V!—„±¯hýÒCS„d0=„-M…x„`ØåG TÑÉŽ:69S  d“ØM q(Á±ËÁÞãs­™Iq­ˆ8 Ó®¿G#54léò•X>±D 8“S$€q(Á½ÔÁT’N ©£�%0î§PÇ‚ç¶¦�¤_”��#ë@‰54r pt0lr­£[=o /‚Ý§W‹åÈáV¢atc6÷Nï[èáƒWñÛË¿Ÿ^�IæW½ÆåŒß$14ÁGœœ
`WÕžÊž94ñÐÁ±ËôÉSÌÒ‡�ŒàðZQ�5(I Îü“â¿qþès­-fdÇ¤‘Xß‘œ(l³¢>µ•ÁáÅH­¶»2Â Å¤¹”(G�5´®šxØ—.Ç˜‚UhJ,%Ë\ný#‚Vß›g]¡š�	.}åE]=¾ÍƒCNPd’ÃVjþáÝr&I”€G!�ÕÁÔ0ú�fþ3S´&d�‰Ä!�Æ«™üvcã�H1è�ØÀÖÿ ý’peÝy_W�þm<+oÉg2‘ªÖd$ËçL’µvöû2Ô¡” ÔIdÖM_\H£"x¥dz9 d5NÐ´ñB›Õâ¡³’*ê}EÛ¶B	˜ô@­ðÙŒs6ïÒÏ,ú5·å°¹B3èI�ú9%x×¡mþ«Q—w´¦ŽIòFAžbM1G´ÎOŒ®k²[X �Øz,€©ÿ C/´ÊM w'ï5\,!‚rè2X“‚ÄVÒº71>eSÚ<üÔE	àŽ\yµ¨oÐ^™cŸ£·ò1�Yæ3ùAÏ÷BV| Õ”—Û:D
Ž´ƒ¥ÅXË³lãmLçPYbª³’þÖÊ‰àÁrwg>0˜¯ä¤¶6Ð±"„—bG˜(!EY¥Ô%[˜eÞ¿’¯²È$M)RˆzTvU·ÃJYàÓ¬’£NqåWòf+Ïçf¹‡RóeO•ÃÛ ƒ\Ë\9âÕg9µ
38�ŒcóD|ª²žãAŸ^æ6}9ÑèÕ„wû=€Á»ÖùÏ¸ŠþM¾ÇŽ6iJ”NÃ�\dUŸÃG`ž:ÏbèäE&¢ÙðgóÓ\C¨s`•g;["EªaÆ3ÅªÎ{‚’K¨C|dF¬c½³(âÞ·¯äËì€¤ï¦*Q>¾
2µg<–ñ­¾¹’6(¸•‰ËU›Ü‹`™XÔ¹ë¶=ÔW&û/lÝÐ*ºäŒRy6|qáÆ
Hc#è5es¾Í…ŒFh™!‹(�IóP™mt	 Ó¬�¨ykù(–o«ó’ÜE”æÊ Qª HF@ò'è!ò#ér¬2€áTdšÔÄþG”öý_Þÿ cŽM*7
·]^}TØQÁG`ü…$šísÇèþø7×Qwš‹¼Ô]æ¢ï5y¤õîŽk¹áš,hæhÉÀÝJ ,£‚sá²Èa�þóú³'ÉÇäÝhº¹Ò"�C�ZÛ@í �û˜K„¥›Æ �0 ÓëŠhÖHÛeXd{ÏƒÂòhÎ�ZFqš¶Ü~u“F½'éÀðYn>q«y¯_iaóäAH~�#8«xaaòíˆ9¦¼Ù¦>sN¨<ìp(ä¸‚R�ž×w§°(>�’™«tñ‚‹¤i
¦¤]~ŽFyQQ0™,5‘×°ÈG³ 'Š‰’HÀ,53QYíb‘ð052‚jTf^ Hðl¹´Œ)IÉâ4‚k`E:#ib¤ö¯œr2W·Ìhù2*H³á  A�ÈE¬È±i]=„µJŠ[€f Ÿ‹¯ÑÈÏ/Ó#$�_ÉØ¡‹P]lMlŽÊà£Á=‘¿nª‘Cž‘š*&ˆÇ¤°Èñœ-H‚kˆU›‚‚ÇÌ(¨š…Ž×D¦Œ³�08‘R¡qÅC�ŠØ8:H8ð@ÅåM[íCHñKÑÆsR#ãŽ’‚Þ3‘–2äë›/L28ŒÓ«�:œÓª/�ŽAàE:´™=+§ –¢ú)�ÇuÖ{Bç¶™vsh‹Jà�­…JˆO Äþ‰b¥”¨aÄdq­—&¹07Š°ÑÏ5+Ç´�k1Ã'ÈI\%¨‡"yÜ�’*õ/­îôåR	RçH5èÿ ûsW	j!Èžw dŠ½Kë{½9T‚T¹Ò8†E8–cõj?PZ×´¬g 4±F\Fã%‚‚«äyç™“þ¥b#ê«¥¹ºµÊ¼'#È*éÙúãMÇ—}‡:êá/Qì!{eÂ•ñ2’m8¬ÌZÝm²¼gH"´›ˆ š'`1¬hÈjº†ÒÖ	˜´Œpd‘¼€á«-wlƒ�ÂŒ‡p‘åØù€v5´¢Ù¶p¶#F`(‰/-u‘2ãÇt�q[nœ# Ãnpg¼Õ¸Ycaº˜2à>p‡ôëaï%ñ‡õqUìs‹X�ß¢�Œßæk²G3]èkÆ·ÙÑ‰etVÜžåø%¤(q ôr3SJöL°	xŒ>+éþ«ñbÔ Üþ¬JÚ7·;M0ŸADs«ÌÔååi#Ç‰ÐJÕõÃß›ž2HÝ„TÊGR%·»Hž$)T¦6¼µ�]‡ ‘ŒŠ¹Ú	´ ‘NñÓèa§·ŽFbË“_ªu~Ùÿ à+nÜ^JIU·� ó.FEM,–Qøð	8�¨Šº�m!”iŠ&20ùF§imU‘çÒì ò5ÿ Àüïîo\ßÉ4‡åPT’IsiŒ~^RßXímé/rÊXŸF¯¾C?¬CÄþ™ý¦*»Ÿþ“ûÁáæ‡�[Vò÷ixÎ³è*Œÿ Hj�É(dBìrHIÀ{poß0v�Üj¿!qR{Y#‰úÐŠ�Ç-×æuŽ!<bqWAv´F7Ò¬ÞZYY% ß�àc´z9­«u²îÑ†cœŸDœãÀ%ø,èdq¯ÆÉFz™á²0ÂÎTƒ�Z¸™}ºt�êÙš"°XÍ~¤ÿ  Õ<±@QÚaÁt<JšCis®«/ÜEO/Àì£Š$:{5|$ÙR©Ñ’]_Ò¯7ÿ i+öù?�+åÁ‡LúCyŠ¿ºsÌæ7F ©Sò�6¹-Ó\­é.M\_Iy4„&år¨µ+Ë£¡·wô?¢ZaÕ¸Ç`5i¼ˆøÐÐ´‰õ:ˆj¶híc•Rªa~[EH¨¥øã¼±Ê™þŸn{=²½¼�ÈŒ%WeD ç$>z?þÜÔRüñÞXåLÿ O·=ž�Y^ÞHdF«²¢s’£‚]j"AèÈ;Hú�Z›Ô˜�$ÇTa<çp‘·1,NHþªRÄT»È$ÈVÒW�ÁìjRDw‘³}T�ðýŸ³áII04®ï'Û|n×à˜8¯FOô«yçZXœ!`à€¨Y-ˆ“I>“‘…åGxž/ß,)'¶º†NÃãþé	šÙ·ƒàñ8ßÉ'ˆùà J’ëcÝ%†	ßò€Õ,³XÄPBòyÌ¿§lÁÙÈ	u"M#ÑÒ5³`Šõpð˜ÀBHâµm£i[ Ý)u9hN´zKQ•½¸eA–W:qÊVÎ¶¾ŠòFe–W ¦¢[Ò¢\\ÄßžGR®ìá»ZîÚï;�­_cú&£÷rÝï£Rà† '„ÖÊµ·‚8Â—�æÒx5Zfö9xµ§¦ÇŽqV°Knð÷á”HˆÃ¶2KR‹Æ•%�Ô	Áj"¡cz#Â ÈH«;k&	/2‡»-R™dTUi ¹µˆƒ42Íõ‘Vû™çZ�jùG Mlë[Ø®äÊÏ+€TdŸHˆ¼†ÄÁÔ‰¾I U”e`ÚWFáÁÆ—¬-íÈ("A$â­·Pß�©‡FÔ‡X?$ŸJ¬ ¿´2‚V`0Où…mEJa˜HD+˜.l[;™`½fŒ=!ƒR	 ÅØpÔìXãôÌ;ÙŒñ¶�J½ƒéb(ˆn~G'°I„ŠÙv°B"�õ¦¹AíÐ0ÜZ­?ßŒ™kO×ãœU¤ÂñZïa×Å2X
{û¦Y]A jÔ¾('ÌbÛa­2AÆ{	Z±·�ÓJÒÈ{üMm%{Øçõ¤`\sZØö»5!lÍ::—Ý$ø ŠáãŒ)�Ø.
ž%{4-±kFHr4–>ŸDÕ¬60>§Ý�Ku5*€ óVÙ±Hˆ2ëOÔ”áœÕ¶›9àuŠ]jrK!àjÛ61ÂU¥Ö¿«eáœÔ]ÁzKK�0Xê>QW ë¦+$“1©ô°	mºŽõÀŒëVÔ¾?¢O¥Vv²Á4¥–æFWÉ¬U	D¾U�\:1q‡†’}*·¶šÕ¤&;‰Âgú@j¨5v,šÔïFXØMYC´,¤�¼Nì‚Ì*íežV!EP!_6TŸÑ;:Þi=6Œkýê´†Ý[ˆ‰g|U¬3 9* ùÆjÊ}_(ÇR~²*ÎÜÝî×yÃ+�ZÃ:�² pœf¬ ·ÕòŒq…'ë"­¢ž<çL¨wÕ”ú†	Ž0¤ýdU´3Çœé•ŽF Ž—8HÔ"ŒöœH®Œ0U†Acon_÷QªjÇŸMl»D”ç.° =µamçyDª�ŸHƒ[.ÌÂ¬YSršA<H¨#†%à‘¨Uä*Î_–ÑÆ¨[ë#�lûiÜ’5f¨#†!Á#PŠ?ÀVÍµš_MâVcõš‰"�~J"…Qõÿ óì5'HÉ `ãÉQu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu�¨ÑÎ‚0O˜��8NOÐj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qu‹¨Ô]F¢ê5Q¨º�EÔj.£Qut‘‘œ‚Í)=½¼M:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tA'hú¾<€<~ÓõS¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¥Žœ ~‘óI±Õ’GÒi•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò  ;Õñàãöª‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*�AñqÙÛÄ|Òõ½çæ©îøÿ _ÝóÕ÷�š^·¼üÃõ=ßëû¾aú¾ñóKÖ÷Ÿ¾½ÉÔ³ûAVÊ¥Î•Ìª2|Â†3Ÿ�“2Åò×³ò¤Ä²ü…Áíýê{¾?×÷0›70 dM$ié#•6›‹€Li‚ucéôo«ï4½oyð¶5˜Â 2Ç³·0hYs“’þ`µ•²�üHÁ:r8(÷“^·¼ø$ÿ v¸B4�>X§"Ù8åìÔõ!XÖ3$  sS„D�øìˆªHÀúêQ<sÿ Ã�|3UnÇ`0Š*Q<WLrcq�s,¬8TÂâ	Î•�5p–À&LŒ$‘œÔ‹,MÝÜê«à³ É4T¡CÂÎÕ:\5À'a�'<jè\Cq&ƒâ�ƒL]:ä�ÿ DTëqËiW ­W`3–0¶‘ùµóQYf'LÚ@_§®Öâ$êT3úÔ÷|¯îðÍþãy(Bd‚¥"Â)!†à`c\ œ“S€BÓ]`‘æ5v‘Ççºƒ¹E$`yÉ«…º‚ó"	€ †ðÜ¢"?d®€ˆQ}äÕÊÞ[^�Ê R¤X)®âá€8«•¼³¼mÌ)G«Ø¬bÓ:‚\‘œ.jd¸·h[sxWò•µÄw1*™¦Ý¼�˜©ÕÖÀ�j
¡íËÕÔW¯z A#¨PŒN	­ —–·²ˆØh¤’:Å>�äÓ°BÕÚÞÚ^¾í% )G­¦’™³îÇæW'Åúi’âíŽ&¹m
zZMm(ïmgœE*
TŸ7è¿WÞ>izÞóáàDeXqVÇa¢�ælØ_)_&M.˜ã½oyð®Úu|Ðñç•§_ª3Cµ‚D?ÀÓiI% ?'¢dŽÙ·Žã‡|'LR6�xìˆÍ"@ûÉp"†˜nS)'’ŽðG&¹p¢h�T˜ö>±Woqg»%µ…4â1"�$ð<~Í^µ~Ò)_à³ Ã�# ,ÓÈÎQ‰ôœÓb0Z®;)‰/"yiÚGÖ¾I y¿Czžï�õýÞùË¸åÿ )4§wr÷qùÂÂipÎ±@¿åQªŸw÷	q•¬HŽú+ÒÊ£³ˆ>¢ŸA“ˆWâ3DÌ–³o¦‘8 5˜íoã9±�Å6üC8šiWä¨nðL‘�GÄR�[F[Í˜!,úÎ¥CRˆè¡¸p¿`ÿ ½zõûzûÅ$Ÿ ¼‰BÊ¤€®ª·ÅÜï  Ã!*˜ò±4J@ªÀ½_<;&ä“,ðŸ•NóLfS,ºË¨_GÍ“ú/Õ÷�š^·¼øntkÆF€xUçÙŠ¼íÕŠlã=¾§Š‘�iPiF¹ÎÕ´SÊ­¬0 í¨ã…ÙN–
0„ÖÔ‡þ˜ûµ´áÇþ˜ûµ˜'#F¬05
Gž:@H¾f Ô)<t€3PÇ&8jPqQ$kæPA‘À²‚EF›À1¯V<Ù¨Ðº|– >£Q£•9]@8¨ÕÓÌÃ" Ž<ñ* ‰|Ìf1Á
�"­!	«V
#ËúÔ÷|¯îðÆ�2°¬‰ 0@
› ŽÎtÆ¡|øiÛ]Î¯}.Ç8¨!µ‘Ñ‚2 ^0¬Þpmûoú)÷+o[êWîU¤okvËº×¥Ããè«X ÇB…Ï×Š‚9“Ž—PÀs«X`Žíæ­a˜Ä�«5o)œ‘…•YÁ3¯tG:‚=ø]"]#^<Ú¸â �å�ä;(,¹ôIáPG)�µ!u¤ùÆx‚9Pÿ EÔ0ï«8!Ïˆ5s&s¦E;êÖ�xDPá[:×w¯^�Ò‘¨vú/Õ÷�š^·¼üÃõ=ßëû¾aú¾ñóKÖ÷Ÿ˜~§»ãýwÌ?WÞ>iG!Æ{@ìãQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•)ÑØxðøðN5ö<*)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨ä;HÀãóKÖ÷Ÿ˜~§»ãýwÌ?WÞ>izÞóóÔ÷|¯îù‡êûÇÍ/[Þ~aúžï�õýß0ý_xù¥ë{Ï†ãB&Œ!³‘W¿f+ifYX «$gÊhåŽrÇòˆ#ò#ÀAÂî@:ËqÍÑ¾§»ãýwå`GœxM0açp)�psD (‚*Ÿ ïuç^h€Iz¾ñóKÖ÷Ÿ¶û/–'±+Æ»”"?ü3çjrò9&-\µšõ½çÁØ²ƒ×ü9â„ýG:«µ-!Öæ5#ˆbÎªq¨äâ�¾vÚç·‡†FXµHãW˜TŒ-î_vèNiØZÚ®J©Æ£Nâ	ßD‘±Ío~#4çªÿ ]´ˆUíü£>ZFÝBA¨Ð”Y„­9Æjÿ ynËÛ¢|ÿ £=OwÇúþïb\ƒk'×Àg÷«ÿ ³. ¶©³®»bÙÖ»Öÿ �êiÎ;’òÆ‡ÆÔtRÉð=¢û§‰Î@l�ášD´Y5Ìˆq¬�’JâÎú]ÌÑ9È TÎ–í5±©\Z]Ë¹ž9.Ê�ÖŒè/å'µ·¶ÂR[>$jÕ’A˜-ULCY¡8Ù‚ð}Ñ«$â¶¾þÊEí´ã¡½"IÈý#êûÇÍ/[Þ|(QJŸ(+SFö
ú‚u‘èš  0 ¯[Þ|ZXdY(É$Td\\”‚0ug"£tšB¨‚§*Ù§ˆLVU_”2N«f‚ÞØê]`å›Ãng@Ø‘å`ð"­^kV×™k·ià�q"/«g·µ·mdÈ0I«„Ù2öh]L>º²kKp„ha§Q?EYË43¨�U‡ÂlØx¦4ÔG×Vmio»*†ô~Œõ=ßëû¼1³Ü[Ì“DjbTàãËÓ-Ã#‚yœ¨î¨eŽæwHñ*”m1/²{¸ÉIã�å�LJ°«	,ìl´Þ‚ßÃf×Q#éž$ùz[ƒ-lùlì,zÀ‚í�jÑï-nÓLñÆ2èkgËe³ìŸzÆ`CHÕ²~²Ý�Êku>]U²äÙ¶k	MÛ�F#Ñ­™qukxª¡RqÂ¶GÃ¶c¨Òa�[ùëfI³l·%'K±ó/éWÞ>izÞóá�$ùrj.£QuQù3køK†ÆœiÁ<øÖtº•8óŠß~õ{¥Sj7xºq§ô§©îøÿ _ÝùWÏ‡HNœhÁ'ŽNxÖwrÆÑ¶`×Â~¾Ùýe\ëøi¦ŒhÇÓ“ŸÓ>¯¼|Òõ½çæ©îøÿ _ÝóÕ÷�š^·¼üÃõ=ßëû¾aú¾ñóJC·WÓPõ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨Ré>'gø|zê>>øT=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡êP¨z…CÔ*¡Põ
‡¨T=B¡ê‘Ù“«>_š^·¼üÃõ=ßëû¾aú¾ñóKÖ÷Ÿ˜~§»ãýwÌ?WÞ>izÞóóÔ÷|¯îù‡êûÇÍ/[Þ|3Ê�4`#cˆ«›�ß©nî'wUu�òTbIÏiúü.óÑ‘«UJ‚FT$j#è"+?b) úªâ!º >Xx¤ùL’cŽ“Ÿ°e�+.x·gfsŠ‘Q=&8:IŽ!H&§�YWQ€ yêæ=Ö­:õ 3æÍ\Å¼Î4êÏš®¢WôK |2,kœeŽN�(ÎP‘Šº‰Ñ,)ø@ì¬§ÕÈ ÔŒï‡ÔÌr{ñ&®á2€5ŠhÌÝšÏÊíÁ«´ŠMÀ2:·ü2E\ïð§ó¹ÎjîYÆ5ŠuDYŽ]B¤à….(öUÜ-' Žê•‘dŸ H2½†®¡gôCMmƒ/ÉÎ7•2+éÕ¤°z¸�ßÑVÔŠ‹çb ©ÒLq
À‘üßÔ÷|¯îðÏÿ N­Ö¡¯OŸqÎã)`‡œ
ž4–cˆÑ˜o¨Uõºî,ÄÈ‚xWQLŽ†�¯Ãuf, éq¯Ÿ³³VqSG^›°Ûôš»Šb£,�"®á�Ñ5²3€BùÍ_A¸×»Þ—5y³WÖûüéÝï¬ù«h[$ÙÁF�<3ÇyÆ©(Ï›&®¡yÔÄ¬qÈ´-ã—Ñ.Z“…¤¯¡ó!!�3É!ê’FÔN$<I­¥jÒ€¢Uí>aO¹LqJ~_ŒÀŠÚPÁ1´VšXÜ~a�rsæ«ï†iC›œçPÉ­§jdÎ1¼jdŠ1Œ»�ª3ôšÚ6ÈÇS"ù|ôF1œÖÑµyIÀA"’~�WF“^âUF*jNÆ­¡lóp$“[cà¸ù±¿9ƒ´f®¡IBk(ÎÒ<¸óUôHt#‚jhâŒv
9š»†}?(#‚GÖóÏWÞ>izÞóáDm-ñˆÔUqÄ
ˆÇy&C“Á>‘A�Ô¹(ŠòœùZ½oyðvcŸ®Žc³¹Š/¬5Û¤ ÿ ™¿ÿ ´5G¤è'°’O´¹s áÄþþtÜˆG`8ZŽY-à@wQä‘V7P28˜VZŒB¯¥Š�Q>§ê5E ï<¬I æ¢sm¾2œê-§]�r$x?^¾ãQ�„G	üéí%�–¬.®&�’òÏDæ–Qq¹‹x0t²š�âˆêÔPàŸöU„á”3”ï'4�¦XbÏ’¨•K \�Äé¦+¾:Õ“Q á%þ– 8šbÌ’¬y<Hb¡oƒë2KV3šË8$`qeVáV’ÙÌ¸@0sõÔ„‡�¦¼ö�tŒÔ"9"tÃ¯“\ZT<ôÑ;¶„ÊN)Å í_-[=Åª.^5óš2ZÜ(#u€�¿›úžï‰`ÈÃ Ž~W¯îðö+¹µ”ýÃø¨“Ì¾‚­FCÑÕÎ³è× üT»È ¸$DOc;1 š]ÌwÎa–%ù<@ðÙBm’Ì2ÄTi	P\Ïai
·Áà\–b3’+dí9#”	�‡J<gê&�hVÑdtôŽ¡H£øb+ç*j .`¶û'[’Àj ÷Mcð“9És!Må�Ñ_Ýbƒö¸ýÆ †Õñ;v¹b8šØÛBöêrÍ,â-@çÐmUÂÁ3}òé:®¤·¶a&¶Œ€Çó¬tŒƒ[ðHŠ
]°2<¬Ù¨•îRÚ ²‘–e­ã‰çÙjÒ•.wtåË˜�@–$Uº‰–#¦éë‰§.ñ\$Z��l­plÌ¦s�{Í:³ZžPJà×D�øµ³§Ùw(ta²<º¿î*fe–c÷=¤1Aª­–	­ä�LˆHc“Šâ÷11úÎƒDîZÕZ@5ÔÚj!kqo:§` Õ„—›>8õKq»r@­õ…ì`�o�Éçv�çž¯¼|Òõ½çÂÈ¨Á@cé«ØÍ¸}knq€~º•?xW­ï>ÌªÊñö�’(byƒ³Œƒãžºf‘€âŠ£³…"HRb¯jO»‹o°,©‘ÌÕõ¿ýU«ÛbÇúÕ¨u’0Œ¤â‚›…]2Dx0¨ÖÎ9|Åª?Ì4ëÈãQëq*¶2`ÏIªG¥rËIùß�nôä|­qSEÊ¤”iÖ5}oÿ Uiã�ÖUb×°`×É‘JŸñ«T¸ˆº|â¥O4n \‚Ò„¸‰Ëè$vöžÌ�®¬£…t�D0ËcÈ(˜Dƒÿ IH5jÒD0ñû¬G4cPíùªÑ¡§,8yèoeÔ¬{@ÉÎO_Î|F>�8§Ü]+³`�r3ÃËVGÚ5LX1åšÒÕ×xÙtööýTšä,¸�új<‹vC/hqŠ L�PÜ3�jÝm­Ñƒ9qZd@1$5j–Ëvå˜�æþ§»òí5èÓão1œ€|Õcö¿†•¤†FÆ�ÚA>Qù^¿»Âº®D–�<e4 ]Ý	d�dÎ±Ê’E&‹™ÝGk:#\s4W%e�Î5«±à|ãvpX©h¢Ô?xšÚÖ?õÒ¶­‘cýzU¬wI4"7BáHæG£J�x‘„š#µlËXÛ2�UÞO¢¡ÿ t6{±&¡ò¼ØãPïeúuì úDT{Éäè\�ÁÁâj<Ü�›¹Ñ‘ò÷zqš¹·µ¹HØ´rÌ€à¹­­cÿ ]*Ho%KˆÝÄR¡ÀÁ¯‘4l�Ž 0Çelø¯ FmÄºÂàœMys¢8—HTÔ¤�Gyo+K»,0|fìÈÈàÕ²¡µMY¹“ONÚ@—BÞ%Á#�†ÆEX,RÇf ·!Ôï|R´7P.µÉ+‚}Ù±dÝµÞ±ÃÒãK¿ŸZ9í©µÇ¶“óßÝéÈùZ1ŒÓ‹[øåw ”pAcØOŒ+cÁYuÜ™��*€M&ö-�*oœ²‚
và‘èÔ[É�ã*º‚ä‹T:¾,FF€ºi�]Ef$@üÊŸ¬UšXØÇ yJ¸bäQI EÓ-£i]_H&¬"°ŽÌ†ÀpÒHGh�çž¯¼|Òõ½çÃç T)û¢¡OÝ aù,åî3‚FáÎ†U�yÁ«4æjÍ9Ÿˆ�]Âéç…Y§3QÃcV<¸þbÏ¼Xô‘§Î½Owä°TQ’O )qZyÎs’|8k†§Ñaù^¿»òžB÷Ž@Ä|\ç¥ŠQ”ùU†­™6­™ ùÛâ-gTÐ“Â¶d\Ú­–æéÉÎ?˜¼»ôˆÅŒ�Ÿú¾ñóKÖ÷Ÿ˜~§»òd*êuý>cR˜ ‚šŽ[?H«ï²üU&½¼lc9$þ_¯îù‡êûÇÍ/[Þ~aúžïÊPÀ|¤/‰õýß0ý_xù¥6‘Û�§>Z›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"›Qñ2xy>=´Ÿ·ü*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›¤TÝ"¦é7H©ºEMÒ*n‘StŠ›PìÈÓôüÒõ½çæ©îøÿ _ÝóÕ÷�š^·¼üÃõ=ßëû¾aú¾ñóKÖ÷Ÿˆò*dýáS'ï
 �8ý;ê{¾?×÷|Ãõ}ãæ—­ï>Vw�@%ES¤U¼Šù–VL«(ãþZõ½çÁ‡tÖ¤ãIy Àg€4ŒÏ6HÇ ”ÔR™"} ±ú*9"˜vèq‚qáŠìÄb AŽÕ=�ºkQ2|˜ÔxÌj) ”Œ¨�cU$š• sŸ újÚdS.ïIUE8„¶‘6ŸÔ3É¶ª¾-6QÀ*|àø¡ä’§ÁMG2´P¡y$�ÙÚA«{‰#SãH©ÙHóEåÐ;G×šlÂT'ÉJñ+ŽÄ k9ó
‚hCŸä•´ÊÅA<¦ �#~2à| ¤çÈ*áWìWa…¥b%m Œ`TSGü‰]p¦ œB[]>)¥Ï¦¤“³I¥váUW‰?Ï=OwÇúþïR	d‹z�Ù �K&úu0JêÎ¨äy®òWN0 yZ¡¹{‹y·B4PL‡´Ö÷*3º˜`�<6ÛIí�¸f–CâøÅ3ZÚI±»…]ªÞ{K‚¹E�të¨¦2¤AÆ�m\}5eu÷:@|ã9«{¡lÏ \èüÙ«[¹­Ñô”A»ÏÐM8xäPÊÞp|	r³N¾$ñv´°ùL8f ºF‚Ú3$óŒ,‡¬–¬¯g‚3‡�#*9®-»5nÀÔ£�È$p©[² ùLÇú?]$°G !`7ŒO  5kuh&8ŽI”¥}¸Âã&­/!‚S„žHÀCRa8.;KäQV—V©)ÂK* ”®Ây4La~“š·º‚N#žTÒ†­¯³¶•¹Ýá$…®ã×£³I#«Ê#TŒÌM28Ð¯¼|Òõ½çÃ+«Äc}
p$ p u—Ðå{O SAMÔ�²¸îQ^·¼ø?øshsêµgT7iº>¬}•Û"¡ú\PÅs§ê-ÛCó¦L?ü¹Ù‡¹i"y»ðáQZ!†@ÊÈH=ù 	[pÃ>|Wë×Üi@XÄaG›(ÇÀ5Ž�Uè·ñ™ˆRëD´]CŽFžag«€Ý�žS€Ev¡•Á†0*Gmž.[uŸ’^€0ñ ð-š*T¡óÐÎ¶E¤4ŠÉŽuÛD'<	8¥Æ�
ýy®ÝN çÍ@vL¸äiF#Àóa…ÎZÇçè Wl0B'­»@?Ï=OwÇúþï`‚èE)õ»^ÓiE¸>¤'MPZZGGé�f€3,­£ê.uPáåÒäz‡‡ö÷%Eo$ñÛ)„O�ÆI¨6lmk0txÙƒq¤Ò†1Ù\ù~×¸Ò ±$!£‡QH4ÿ ²5céÝêÍzüGÁèÇüb�<1ìèË¦Ô4§¶FÌ´°ub‹&@Òxœ!†Cq*�}¢§•ö*ßHmõÃi<ÄÐÛ´€xÍ(ÊÚ2x‡Ö[Æ‰\(:)FQâ+ô`WldƒÀ±Ó@xŠ¬‡ÌÙ PÕ®XÔƒå^ÁJ2·Qã‘¤#ŠÍ‡Zÿ Äløm¥è*µÛkil·’}o† ÷~�õ}ãæ—­ï>%u}*¹‚¶\ß
â[Iâ|¸Î*Úã÷)H#=‡ëð>’øÃc8 æŸR²:³cŽ¯-K¼g}E´é«‡‚x§|Ì[ ÕÃÝKdŽÎ %ZÞ~àÿ ½ZÞqôýêí­æ*vf¦h®bÆ™”vÕóÜnŽQ1�Sq‹FïO~j]Þ$«N®&�xñ±œ`ƒRü>ç^=]9Å$ó�V¸Ð`å�œÕ­çîûÔSÆ¸‹€o*í§·tÐ©Œi´å6ŸªÆ	j½Á‘Éi7~B0@£§F
ÉŒ�^•MªX‡‰8\5m¸‰tcúêMØµ”8]9Õ‚8Œp©4kÓãc8ÁÏ
cª%P’ �ŠÚ/4(AÑŒf¤-³† .r’¥ÝøáµiÕÂ¤Ñ¬«ÆxTÊ@ƒuæ/¥qØ(ÓÌúüóÔ÷|¯îðÉ»2i!ñ«ISš}â¼R#É§ëÏn*}ûË.²ú4y02jöKK›{¼Å*vü¢ÙUì»BæY�ÓòBŒáA<kgm/ú+÷«gm,“ú¥ûÕ´¤²¹ÐÈ]@�W/o}n‹”µµ¥¾6ä4qéÒ€Š¸Î`ÜîtwêÍ\î1*É¯F¾ �8©·[à¹“N¬i`Ü2*nÃgðmî=M±Q]Ý2BXICIçÎÕ³¶—ýûÕÔéÆT
rÝ ®	áŠÚ/ui,[´Œ®�ØúMmùÛg~ .’WÑÎkiè3JY§Üöé`P5Sha’le„žW5v^êÜ~jíSK‚>ŒšÛRÞA!ÒF¢<ç58„XÎ%£V¼tñáSnw…<}:±¥ƒpÈ§!íãEŠu*Tc8­»-Õ¬L‡jÅL [)–@¡5‚ñ«�ÇçUõè×ÃèÈ©·[ÕQ¯N¬i ðÈ«…1‹=Ç˜Ë¡4�"”ï.˜iÏêÓ‡èWÞ>izÞóñq¢³œ¹ ß_ó¸RM<5(8þ{ê{¾?×÷~TÆòœÈÊ >v#�ó»h§Ñ’›ÄŒù³C ~�õ}ãæ—­ï?0ýOwÇúþï˜~¯¼|Òõ½çæ©îøÿ _ÝóÕ÷�šRH8ö�Æ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':$ãGiãÃãØŒëíxT²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRÉÎ¥“�K':–Nu,œêY9Ô²s©dçRHqŽÂ{8üÒõ½çæ©îøÿ _ÝóÕ÷�š^·¼üÃõ=ßëû¾aú¾ñóKÖ÷Ÿá‡ƒRôš—¤ÑÈ?§}OwÇúþï˜~¯¼|Òõ½çÃ"¢f!©ŽhÅ8D@Y˜œ HÐYÂúÞLv°—Ð|‚½oyðDÉu“>löb¢_H-ž¸TZÚ`Y›8Ò¢¬Œ³G&”
x�Äšµ6Ó‘•ÉÈoÏ&s|gnj-Ô£Å„hmžNÈÎr	óU¡•´šOkä«-´nËyã[5Å›	Ií ð8­šïhüRq‘ç£Þ	JöƒÛ[5Å›	Ií ð8­šïhüRq‘ç‰Ý²‚”“ÁkeºZ±>{px‹y¨¬fØ¾0 b­·1ÃrÙÖ q­–ïn¹ñË`�+:\p<A¡}OwÇúþïLð#ŸW”g#áP%
]X*ÏÀb­„’]!vbØÝ ò÷VÊ{‹˜f1ÄˆýŽ‹7g`bÖ7es-�þŒÍvÖ¡Z×z…ÂxÚªÙ®/® Ñl‡·ë5³ZÆIÆ!rÚ•Ï£[9ît¦ �ÚîÞLb¶^îcr"Ü<„dÖÃ™vk°p[AàØ­‡,»5OdìÚKHTä��fÑ€ÀšØs.Ívnaˆ<°å—f©ì�›IaéŠb tƒúLOúë`Ëƒ‘ùÝy ·ßZ\GµÐ|ñÁbmmím"))pûÔ	ÚÕüž–K$ÉÞ0JŠL€à7 àƒú+Õ÷�š^·¼ødÓ4E?Dœp5#’’èžÃ‘éŸ2ÖCãHþ“W­ï>0NÊÔ<eºWˆú±öWÈŽDúØQÙÎŸ¨7m¼Y2Øôr<'�°ËW�Ý» Ã‡ÚÚÐå$(æ‡jýzû� ýñC³ýŸžŠýoÿ v¡À ¾(v³óÑ_$JÙækkÃðvO˜Ô50˜(\:ð#yCV‹hÈs€*þbx‹èƒ…¯Ö¿è_SÝñþ¿»Â?ðwjþG¡ùÅÚ	-»Wg¸×lPÛE?[Œš Lò¶�¤:¨�úMªO>‚Àø{3b1É*õ-&’Ùwº0@_Ê;\Ç8hCD±’ÿ F1C…†E~×¸× ±ÿ Qkÿ &éWëÇ½ë€X€ÿ ¨µÿ “ô¨ávÔx€IlWò–ÔÙÉŽÆPý UÒ\ªdàÃ}I¼ÝXB@ó’ 
Û¶–Ï—BÄ­„úÍ~Ñ'è¯WÞ>izÞóá·Ö¯£úaq�[.!12ê]|êÏí0Îyø3¡ý=‡5“†Sž$7.C6¢\‚{€¢êÑÜŽ‡rZ„—�g´ý¶ß¿økbMûÿ †žHå£8Í"@pÂ¤–âTù;Ã�´Ï¾1èÓ‘§Ìª0Ñ€r>°h°GÆJöÃŸ-3hÜî³åÓ�4òˆãm@‚5yxœ}4X#ã%{aÏ–™´nwYòéÆšS$AHñøöœÕÅÃDDe»)è¨]#³ T’KÊG=ƒêÅM;Çœˆ‹4ÎË¨œ±öýXýê{¾?×÷xu¤%H0rÍk}ÛÆuà±œÓÈÊòg�‚Äã@(ËÅv­±.¤—¡=íà‰Ê™Xbt¯×_É;Ÿú¿‚¿’—#·õ¿‚¥ž€ ÞBÚIƒ†‡þ¨q ©î.æ‹ä4ï¨&8`SË¿hwZr4c–iäD	3 ä}`Ó:Ç.�JÅ!¼ Ó>çàßÕ‘¯N�ê[�Ä/©2ëòñ8Ç–™Ö9t‚P€Þ)å™÷?ø>¬�ztèçA¥µWXäçÈ^^¼ ä@d*-Œa4/f áŠšyíî”+G3 Ž óÕÕãÛƒ¨[´ƒFiäxÃ–Ì„“õú+Õ÷�š^·¼üÃõ=ßëû¾aú¾ñóKÖ÷Ÿ˜~§»ãýwÌ?WÞ>iH øÙííâi×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó¢ñ;GÕñäãöŸª�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:uçN¼é×�:ó§^tëÎ�yÓ¯:u,tàô�šH¥Ž¬’>“H¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•  ÑØ>¯� �°ýT‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yR/*EåH¼©•"ò¤^T‹Ê‘yTj‹ŽÎÞ#æ—­ï?0ýOwÇúþï˜~¯¼|Òõ½çæ©îøÿ _ÝóÕ÷�š^·¼ømõèÆN°8ŒÕŸÚ
¶U,ÚWTª2O�PÆsñ2ft]E0{éOSÝñþ¿»â§Íäqï='±N;sŒyLú¾ñóKÖ÷ŸcYŒ ,{;qS‰—óA{K“À
ÊÙ@þ$`�9{É¯[Þ|»\!H,S‘l�röjz�¬k’P 9©Â"H|vÄU$`}u(ž9ÿ áÈ>ð. ´ÚhììÅ0²†’SÀ
œ\[ÎÁ5cJ4`�@a|¥ªï\Æp5àp#†\¦€A0iìU&®’4Ñ½Xƒ„úIƒy1ç
{r{ªò;ÀÄjˆi ƒæ?£=OwÇúþïßî7‘2„ vH*R,"’n5Ê	É51H-5Ö 9cWiqNq+¨;”RFœš¸[¨/2 ˜ oØz¶ ½ÎèKâxºiÕnÞ0ó\0E«Å¾²¼q� ­Ôê�íÔ�`i�Ê^¶–öìÝ€f>CâàÕô:Rö�àÖÐŠ÷[ô´T¸ö’;N*5Ü•�†U·'¦¶œQ\ƒ$ ")ÑoÒ>¯¼|Òõ½çÃÀˆÊ°â­ŽÂ*9Eº9;ìØSÅ”ðÉ¥Ñc W­ï> uÛN¯š<ò´ëõFhv°H‡øšm)$¤âã4L‘Û6ñÜpâ…ôFð~¡ÿ jVø$ñ�­|„
Yg‘Ø`FÄéúëöjýzû�zŸÆ+ÿ .ÿ ýulÓBùV p:�_H&f‰I9¡†Ò2>ŸÑ~§»ãýw„~rÂî9ÊM)ßÝÜ½Ü~p°š\3¬P/ùTj§ÝÃ=Á\eC+£¾ŠÆC4²¨ìâ†ASYª«·÷iìÛ¸•D¨NÀÇ’£¸»šWD2§ébkö
ý®?q®$Eþ¢×þL?Ñ«7¹µ“R8P“¬�Mmi–åäP-ÑËæ€T€8íý!êûÇÍ/[Þ|75ã#@<*ó·ÿ LUçÙŠlã=¾§Š‘�iPiF¹ÎÕ´SÊ­¬0 í¨ã…ÙN–
0„ÖÔ‡þ˜ûµ´áÇþ˜ûµrc†¥ºz,2*Ñ�ª¨ÓyŒkÀÕ�6j4‘sœ0wÒ+©â¬2)F�:qÙŽÅF‚<c@O*µ…ÈB Fzžï�õýÞÑãa†V ƒõƒQ"D(@ó`TÂ™Î˜Ô ÏŸ­#{k¹Õâ¥Ã Xç6²:0FT kÆ›Î­¿mÿ E>åmëbýJýÊ´†m?'x�±Î¡ŽH½PËÈÕœç‹"& �~WN÷H×�6®8¨"™3�2(qŸ>D’FÜQÔ2œvöƒQ&çF�Þ‘§N1§j‚5‡n‚€˜<F+gÛE'‘Ö%>¯Ò>¯¼|Òõ½çæ©îøÿ _ÝóÕ÷�š^·¼üÃõ=ßëû¾aú¾ñóJ93ÚgŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœ©HÎŽÃÇ‡Ç‚q¯°qáQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•E'*ŠNUœª)9TRr¨¤åQIÊ¢“•G áÚFš^M^óóÎ¾ï�õýß0ý\sù¥)@xŒ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@£’{I?pGh"®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
¹èsÐ*ç UÏ@«ž�W=®z\ô
”¸ `ÿ ùº6ÑB�‰_”Ù§’îÚC‡×Å>žÚ”!n“Ê¥ˆÁ}`ÓÓ“Ã´ÕÀÔ§…$õŠpP�A³ÙŠºÎ3¥±Î¥wÃ(ÆAJ“Zƒ¤œÛþ>o€ïþÇÄÎ8Ñ ˆ[S°c,Y9íà½«“ÔXÑ0Èójr.mç} ·Êf—Pªî�ç«$·�ã+ WRÓ�YÔ²ÊGUl˜fŽ@rí"‚ô…øã„b<ÕnŒ`êÀ‡ÊÍ6¤G@¬N{(ÙG§JÌÝ‚¶]Æ¬ï7ºN3œç•·ÁÙ_þe5úè¿„ÿ {[U­¦a‡ÄnU«k5ÃÇÚ‹ºuU<«iµµÆ0Ì"r}5µârºCœ@Å_	Ô¥Ê˜œ`öVÝx`rN�Ë¶œù�\—�ò\”|’|¼+oIð_CrùÇ›5vQ „Fä‚¿á[PÎAñXÄãÍ[CLQÉ­Ótç]]t?ý«i~jà’ƒrÿ ›Ï¾¶–7­¯rçV�E6¤q•8#<ÿ ÷°UQ’O` U›Ü"œoîÁú»l�hü²=£ðVÈö�Á[#Ú?l�hü²=£ðVÈö�Á[#Ú?l�hü²=£ðVÈö�Á[#Ú?l�hü²=£ðVÈö�Á[#Ú?l�hü²=£ðVÈö�Á[#Ú?l�hü²=£ðVÈö�Á[#Ú?l�hü²=£ðVÈö�Á[#Ú?l�hü²=£ðVÈö�Á[#Ú?l�hü²=£ðVÈö�Á[#Ú?l�hü²=£ðVÈö�Á[#Ú?l�hü²=£ðVÈö�Á[#Ú?l�hü²=£ðVÈö�Á[#Ú?l�hü²=£ðVÈö�ÁJÐ\�ÓœäyÔÿ vGª/ø3…?¥N	»‰Á›Iþì¿ªÿ UJþÛñ�îËú¯õWòl÷�I�-­ppxšÙÎ"A–ee|~é?”@Ô@É8>sW©>ÿ P#N‚
þ] ‰JåD¬5lÐ³¯ÔGÄI8Œ¾_8À§F’¹)œJÃc¤•WuV5G,gŒ0AðXëŠU�¼A�~³[=ÄH	fVWÀÿ )?’è’M«ùÀÒ¥ªHÝÌk&S8Ã}ûlÆ?»/ê¿Õ_É}Gì­æ"F§3Û d*Ñì¥;«iÆì!Ð¢ÙtfÚº€Š=y!™€	�W%§›Ì_ �DGR´»"ycøÝ¨¯ý Þ�+îfÖ­“«(9¾�ãŒ�}™âíŠßÉ,îbQ$…üÁTj«†iæóÆG¢¥2ì›©ãG:»P?™½Pqóèa�Da†£ÈÒH5Í»pIlêáS?i,H*ƒÆ­"!7àIçWX…¶%!X¿Ÿ&¶CC:e¸-ØÌƒ€*b¸Ä@°«€Âv–©Œ–¼]	'Åá•Ïx5´‘ä�Ü#ü�Ü	–&¦s  ”9 ©8ìÏh"¥’$’YuöÅªäü!g»�Ä`€1«ÊjâA|¦Ú¸~îiõªÚ³$žš*ì½íáS:ˆ
<§îðK¸Ëñu¤Ö±O²zA[$VÓ{{¢/<-”qËßžhïc„iÔx¬S‹xŸ
[kmSv°’]£rÒÇ Ón¶u½Ü«âqoáR®Ù.áRr‘×ØËHÚìÊ(ÒÄ’jðË|rBï0WÊ ÅI®&Þ<L}Ž;já-ã’Ý5Jä  5xÒÝ8ñ\;õñ*mK8’0íXûrOÕŠ¹…Î–glôö
—yæLNüT'kjú…\¹¼”1gâßòö
�Ém8-Ÿ•ÙÄ7ä~Ûñ�îËú¯õWòaîRwÐNÄ�V)lì1¼/¼#¸S’Ì!,Oi$–£„‹ký.Ml”Ú(ÙÕå)žaim¦%
²–�u )�–Òâ'|ö’ðýbŽRÌ*ÿ �ðÆˆ¥àw'ÈZØÉ´�ñ*jÆÒÞ)$Œ*¤¥�Oc QX¹>w(cqÎ¤Aµ‘çõk ‘h�6°ªÿ �ücW1 HWV�ŒŽ5w-õ¶– 0ÿ —I£�/0t�$¤�Akg¦Ð¥÷gÑ#ˆ­•ignð:•iHpÅì\VÅ�j\H±—8Ž±’à�{*Ñ-d0äÄ„™nú›qÖ´Ú^hT§ù)7pKq$ÂçŠ…rZ®ÅËÇfK¿›$Wíö~ä¯ÕÉAIŽxƒ~°[>Yöd¥Q4&UWÓÕV¬#’@[GúØý^–+kp¡Á#Æ!joƒÞ”hßvté�vò5âÜEt]‘»BûÅ'-í™W}
~¢Í,K.¨ÄM©@V£Å¨¾7;íCKkÅª($,æF®ØVÈI œk œ
þMC²`›ÐF1Ä`Q I³Ä`ŸH³Ô&H.`>F˜ð0s[Ená%ú¿G÷«`Ey¡tOžæóU½´LŒ‚)Ÿ'�ù¶Áücû²þ«ýUü›¬Y•e1hNr{qŸÎäÊ [:séMªI�Î1–c’{*ó0¨Â¤ŠM\´Åv_¨
»0Æí©—B6Où�§Õ4’¼ìNI«­ðˆ’ž"®3ÿ (zL*0«"‡ÓW-3(Âç /Ô «Ó¿�âhCò»Oiraßi×â«gO”HdšVÔì@4H äW‚P
d@H«¦” ÂŒQõÀ«²±~­€eï«¶‘åP ªÔµzD*0ªÊ¯§êÔ*ý¤‚\ëVD$äêãŒÕÖlÂªˆ´'9¸ÍHÑÊ‡*êpA«ÿ óÓ5rËrà†‘€ruœë¦Õvy¥G�4œ�%\oŒ@„:pü T�ˆr¬§½\ú{¤Õ[EÙdbXH‰' k¼µw›0ª¢-	Á#·«£÷Æ•lãþ`jä¥Ó’]ÐÕž9P1WÚbˆªÆ¯!·Ö!Á–@š±«Ò­£›„Kº:UðºÎ4“W-ð¼“½`å†žWlnâ $ªÐ VÐ#A±dŠ¸2Ìˆ_H ’>H�#
ìŠÌ*w’v9.Om_jÒ0¬è¬Â§y¥n,Þáæ‘ûlÆ?»/ê¿Õ_Ò¿¶Áücû²!Q¿Á\1ý*2EÜMþ
Ú�÷d¡•†= ƒW�nŒs»)¼êíµýŸñÖ×öÇ[_Ùÿ mgüuµýŸñÖ×öÇ[_Ùÿ mgüuµýŸñÖ×öÇ[_Ùÿ mgüuµýŸñÖ×öÇ[_Ùÿ mgüuµýŸñÖ×öÇ[_Ùÿ mgüuµýŸñÖ×öÇ[_Ùÿ mgüuµýŸñÖ×öÇ[_Ùÿ mgüuµýŸñÖ×öÇ[_Ùÿ mgüuµýŸñÖ×öÇ[_Ùÿ mgüuµýŸñÖ×öÇ[_Ùÿ mgüuµýŸñÖ×öÇ[_Ùÿ mgüuµýŸñÖ×öÇ[_Ùÿ mgüuµýŸñÖ×öÇ[_Ùÿ 3OpF7®1�æQÿ Ê—ÿÄ ? 	     S¡!Q1A`" 3@Tqr€’#0as� Á25B4PRp‘ÿÚ ? ÿ ÝŒ§R¡Šls�@%dîþÏWô“»û=_ÐVNïìõAD’ �x|–kr×�<@6ùŸ(ÚÖö‰€Ói?W%¥È4�]èi ž‹„ïà‹H0VÔ"0{ÈƒÐù/ÿ K_ù¿á]_v…ÅõK>ÏÀÞ—½Ê�{¾Ò¥ua]æ•Õ(8ÛÊav_hÕuCaxnäò|¤ÿ qÊjdb�Š´…1O2ƒD™+‡Ì‰ô•�¼ÌòLh0dB-dTÄ”ñÿ Ð9ª~gîFKN!yO5€@$ Ü8¿
9óA‚%Æ9 ÀIçÈ'6  ÈM Ó2cšáô>c’ÃðâTùâoP›¡�ANøi´uOlÁÄ$H.åèÞà&IôP!C‚
-—8Á0S›Êb=Ÿò~â�¯g]Vªa¬©þµÕ¹¯[´m(Š¦ w¨Tín»2…Íã�¸»ª@8D€»+³jÓy¾¼%×/ô?ñ|¤ÿ qÊji ó,lÁ%‚2!ˆ<È2‹Û'ðÂiKJh&: F=e4ˆ ò”^Ü8dýéŽ'îX¥°|Ç’/œŸ¹|%�’±‰=0ÀAíÌˆôXšàAë(9 �$œA Jin'ªÅÍ¡¾Š¡È&œ.9òðáäGbt„÷N*Ô [ÌG"¤4’ŽfV0fyI”c©>ÏìÛ:4+Ð¹{[‰ÁÃ‘Cµ;4 Õ ¤¯ìïµÒýKÅ{;ít¿RíËª7wÎ}b`hlõ�ª‚GöqÚÞe˜YÃÅ.•âƒGuâƒGuâƒGuâƒGuâƒGuâƒGuâƒGuâƒGuâƒGuâƒGuâƒGuâƒGuâƒGuâƒGuQØÞ÷Äbq?ÒÎ?¿$ýT{|üóûáíóõQýÏt(ù‘ûáíóóç÷ÃÛçê£û¡B…Ð£º;¡G×G|(îŽøîŽèÿ ¿Ê•*T©ï•*~¿*T÷Ï|÷J•?™ˆ IL¢\×=Ç[ëÔô÷˜%¤`…ZáõÃC è?9íi{ƒ[æP¡�Ž}ih€õ'Þ•+T«Ý0 ~sØÒ÷ˆ’²ü&9õ„z5½O½Qõ#‰�óžÆ‡84˜ù§Qm»ªÃžy5¿çÞ…ÅÑ$˜üç°5ÎÆ>iÔ™lÂ\CÞïôô¯ôCfCážpŸÂ·aÜ÷ÿ Ë þÆ{JUÚçÔç Y]=ÊÈZéîVB×Or²º{•�µÓÜ¬…®žåd-t÷+!k§¹Y]=ÊÈZéîVB×Or²º{•�µÓÜ¬…®žåd-t÷+!k§¹Y]=ÊÈZéîVB×Or²º{•�µÓÜ¬…®žåd-t÷+!k§¹Y]=Ê­aoÂycKHÌûk²þ�ß�¹õLKÜ:”ÊŒ¨%Žû�{ª±¯c	‡>`|Æ×¢÷amF“Ð˜ç5�.q€<Êkƒš‚$'Õ§N1¼6z” Vb†,<VLÄOœNüQ1ójýÿ 	ö×eý¿whÿ ¢�)ý¨åÕ>�jL¸¯‡…  Ö•YÕéðYÅy‰˜çÒP¯^›)V{å¡Å¦Êkë´Û8¸—<=Ð¨U®÷°ñÆH ¸lº®Ü$¸‘K“ÿ Œ•G²š¯?I' *‘m'ÐN .ø\ÞNz§^àÔkñó5 ´¸Dt…™©Æk›QðjÄ">ä_‡qXUt±î z"cP“S-<à«cR�[fñæÔ¥0|‚¿%õð¶c	3êIV5x”`kNõ€�8*Ë„Ö#ó
­ZüW´T#† oÄ ûÿ Š}ZŽ©WrÈ¦ >f+8ÔeW’\™T®+5æçM':	š§UÍ`¨Û’÷šd–|Õ¥ZÆµ9©!àÈ.º¯Ñ?ðŸmv_Ð;ñ÷9Œ|bh0dJsZðZàèS©Óx{Ð…Â¦Y€±¸zG%Ãd´áß.^I´i5ØÛM¡ÝapiC‡¿“ËÍ  €9&Ð¢Çbm6ƒÔÁ¥�¸ºÂàQÅ‹†Ù™˜B› %
ZÚóä…:`´†	h�ËÈ'Ñ¥RØ×GP™N›'gÎ.,%¸ÉæQ¡EÄM¦<¤,¥3Yõ±È�(\*s81‰´(°Ëi´ &Ñ¤ÂKi´Ð&Q¤Â\Êmú�ÝWèŸøO¶¬.éPk™S”™gíu6+?k©±Yû]MŠÏÚêlV~×Sb³öº›ŸµÔØ¬ý®¦Ågíu6+?k©±Yû]MŠÏÚêlV~×Sb³öº›ŸµÔØ¬ý®¦Ågíu6+?k©±Yû]MŠÏÚêlV~×Sb³öº›ŸµÔØ¬ý®¦Ågíu6*µý¿	áŽ.$ýC¿ÿÄ 8        !R1AQ"2`cq 3S€#4r�‘ ¡@BPp°ÿÚ ? ÿ v9Íh—]Kæ7õ]u/˜ßÕuÔ¾cT"GŒ=¨OXÁÂßsÙÄ�Ÿ=Gúy. €‹€ .° A®ŠzA‘>öŸÅgáT¨lôè¶µy7€Oe-�ô«°]IÜ
ÚvvŠôLÓwð½›÷søŠtÚa‘‚‹Îp7+ŽPùLq…qÝ§GfOÜ˜�Éû‡ªÈ8Ze^wÆJã$ ‹¤7Õ9+³€ù³Mt˜(’#’¿˜SÚ„ü¡ÜŠ&Iw$ÜÞO$×DäNhŸÐL@T�D©q�É¢aœLø?ocªí˜Ýåª£öZtÙ³Õ—–ñ
uZ[KéÒ«¤ÞkjÚZæŠ4DSoò½›÷søŠ3"è�´‚`‹LŒ�A†¬¢ÈD8Œù¨7œ‚k®˜NªØt„FP=VaÆ§/YE§<‚‡#’-$bSDg "t…8»Š`ÊS„‚obhLL¢$)w%Èñ
	"DB­ˆŒá	äƒöú5žö>˜&d°ÛAßIË´|§,.Ñòœ¶O¥@5â	$Çìø­C­p7FKæ,˜°~bÁù‹æ,˜°~bÁù‹æ,˜°~bÁù‹æ,˜š-h‡åg?ðD•œ©ñ‘è�Ú?àgÂ1õzHI€�TÖ·7� ªt[JHãõžç‚Nà�kœÖS‚Ndò4e6S›DOÖ{œ	<]{ƒiz“ËÆ�cY6ˆŸ¬÷Ö’¡UÕœ$4w�� p�¬÷HS^êî²Ö�þ4�¬÷]i·zmõ�Ûµ¼9ŸØÏ´Ö}2Õ‰­©bkjXšÚ–&¶¥‰­©bkjXšÚ–&¶¥‰­©bkjXšÚ–&¶¥‰­©bkjXšÚ–&¶¥‰­©bkjXšÚ–&¶¥‰­©bkjXšÚ–&¶¥‰­©SÚj^2	ðÖ×ñ§CZçh%¹½àGHk‹K€È{†›À’Ò¸q o(‚	5®wtÑÕÔ‰°ÇM®¶èÊcÝgy¾£Ã[_Ä�/yùÇd æ=ÔéÍðL’˜)º÷X¹�:nsØÖÁ ‹XzÐ  …Q”Ú×{ FHÒ¦d ;yµT�^DOÍ¨{M1˜;“©Ò-·ûfauM°‚ÑÝ”E;é2Á˜”m¿el>Um{*›@-võ³ˆd™‡;‚Úk÷æs(EÌí›y¦2��%³tÎRšÆ†2)‡KˆE‚Ç1£.°'ÒaZl„'0Zi@åYŒt69@ègy¾£Ã[_Ä� ‘¸ H2æ™‚¯tÝqžjçg™Ïz/y\a^ü»G-Ês”j<ˆ.$+ßÜau�ˆ¸Â.q‚IÉ�0KŽJçAsÞš÷·ºâs�IW¾A¸ÈB£ÄÃŠëŸcZ2Ž*çs;å¼ïq(½îÈ¸”^÷.$t3¼ßQá­¦‹êæ¬5m+[JÃVÒ°Õ´¬5m+[JÃVÒ°Õ´¬5m+[JÃVÒ°Õ´¬5m+[JÃVÒ°Õ´¬5m+[JÃVÒ°Õ´¬5m+[JÃVÒ°Õ´¬5m*žÍRðH€æÿÙPK     q‰U]n\µ~ö  ö    admin/images/icon-edd.pngnu „[µü¤        ‰PNG

   IHDR         \r¨f   bKGD ÿ ÿ ÿ ½§“  «IDATxÚí]w×º½ä½›ä¦@è„:¦÷Þ«©¦Ó�Á`ºéÅ ´z¡·0%ÔPM‡Cèpž÷¼8W:if¤iÊþÖÚkeIÖÍÙó�¯ìï_ÿóaA„'ñô_\‚ A ‚@	€  A$ ‚ H A� ‚ A ‚@	€  A$ ‚ H A� ‚ A ‚@	€  A$ ‚ H A� ‚ A ‚@	€  A$ ‚ H A� ‚ A ‚@	€ H \‚ A Œòe+}-šµn'&Ò¦N3–Šu6Š÷í™§Ïˆ3gÏ‰7o*¸}ç®Èº}Gùïë7nˆÓgÎŠS™§Åž½ûÄwë7ˆ‹3ÄÄÉSEÿACEã–mÄå+‰÷óäçZ“ ˆXâ½Oò‰JÕk‰½û‰™³çŠÝ{ö*ùíÛ·Âj{óæ�BÛwîSg¦‹.={‹ò•«‰ÿý(/ a>)PDyªã‰¾wÿñäÉa7ûý�?Ä®öˆ”‰i¢AÓâ?ŸäoG ÂEé¯*‹�‰IÊ¦zñâ…pš={ö\ì?xH$O˜(ÊW©Îß”@háëšqbzúlqíú�°7Þ«W¯”óü�ƒ‡ÅÊ5kÅ¬yóEòøTåß¾KwÑ´U[q�šŠêqõÔmÜìŸÿß±[‘0$Qy’Ï™¿P¬^»N:rTÜÊÊ¯sÜÿpíü…‹"5mª£àoM þÆçeÊ‹IS¦‰+W¯ÚPØŒg9/Ö®[/Æ¦¤ŠæmÚ‹_–ÿþøSË¾ëû9±[wè¬Äú�›Å¥ËW”¸€;{î1zÜxQøó/x� ¼l¤v�»)î½ÞÍóäéS%Ø‡§h£æ­”¸€]®'oáÏD‹¶Ääé3ÅÁC‡ÅóçÏu{+7oQ<+‰‹ Øf£àÉ‡ˆ½^·.|ã­•ŸS®ó£ü…E«ö�”¤Þã< A‰Ã•÷ò^!¸ÎÍÇyZOôn=Üë2ª¸æú+×¨­¤½zMóú=~,Ò¦Í?+É{‡àl-UF)¦ÑŠâßð@	þ•«\ÕõkRµV\Žg°DüñÇŸšGž)3ÒE¾¢Åy/‘ œ…üÅ>W\w¤Â‚Ù»wï”Š»]»+1¯­Ñ‡ù
‰ø~	âèñŸBÁŸf+q;Å<H „*Èê=` xøèQÈÀ"÷«ÕäšùxX“PiÆ{÷ï+u’ l‰&­Úˆ/…ti§Íœ%Š”,µ',JtQÃß-¾�:|¤’nLŸ3O	Î-[±ÒpËñoxÚI):÷ˆW²ˆED+ Y²\å»½|ù2è:þ|ò”¨Y¯!ï9€=€3*6\ú`qØ\Vm|dê7i®lp|�ã?ý¬ÄÌ4ôÜ¹{W>zL,^ºLy×iÐX|\Àšˆ=‚¦X³`D€µÆµæ-TŒ÷ 	 vèÞ»oPwùý¥ËW˜¾ñ‹•úR9;/Y¶\ürþ‚á"3.;ºèDS�Ù‘{mØ´%(¹feÝ-Ûuä½Hˆ.p£oÝ¾3èÆ@1L•šuL‹+ ¹îù¹óçƒn†pì¯gÏB*ÃñNœÊTÒxfºéõr<´*³«Öˆ<‹òÞ$Xtå! ,PÕ¹{¯ˆÿZkáÖ/Zò�iî<R‘èñG�õø¾Ýz(¾©Pµ†Ò b{ýúµ)ýÈ†Ô¨ÛÀ"„ÆA°ôáÕk×E­z�x�’ ,*ßÍÂ@1�Ú8÷Lúi‘â»÷(B3�Y†s4‚�HM©_ ù˜y¼¸xé²>:9âcÖhó¶íêG’âÂúQ›€`zAO°|õÍ[·DÃf-#ú|tãá¦~mòyD‚'{¸ß«výFâáÃG¦~'R~Uk×�hÍÐµ,þ²c×îˆÉ˜@ü³9ƒ¹ü›¶l5ôd•]ZÎpf¶Âà.y º¡ê"1ÄJÐ3îwÃõ¡¡JÍÐƒ€dÞÃ$€°Ñoà¥pG­:€pÏ÷È±Ã%¶2:_­N=ÓÖ‘v+ídf¦ÒMîz9ZµÜAÎ¶�ºò^&¿©ÉV;ï_ùõ×°nÐ³�H¾Õ†[³×ä˜FÉ®††¸†MÂ«&Ì9Rà8¦–ŽM5–÷5	@G´\Í ®NM:*ò‚¹ªV˜™I£ÆDå»ƒt±Î7	'=»ïÀAÕÏ�·p1ËˆI ¡�Ê6Èg«å·ÑÇN_<ò÷f¥ÕôjëÍ^«�j”ãR'–!‡b2²5jb÷bã	@ðd‡ŽžZÔ:œó>òø8.ÄÂ¬ÐÝÃõÄÂPíˆl„Ñï‹šµ¬
<1ôIðž'øÕó«EãýFÍ»Q/%ÀfVìy™ rÏñ3fÍ1ì@»ðé_|Ú°©<DøçÉ¯àBžÑ–]T¼÷$S6šÚÃoòÛï¿|bœ]àqÀS ’×j%¬F$¹�5•œõ³¾× 76€rf#ßD®VR½mÇ.¯Ç¼K `µ€ÎíÅK—Óý9hBAÚÍNæfÈ5Tqã‘º½{ïžj`ÐÃÙo žØ¸�ÔJg?û¢¬îÏù²bqùÊa7óÀ·Ao€ÞkÀº<xð0às�5 xhŽ‘‚è?×û(X±ªD– ßðT7ÒW€6mÌ1”Õ„$  #²Ô¢ýFy1•7”l	 º¹uTYir’³È4 k@p1 ,!êT2ÒG>xØˆ¨Œá&3ôl ¹Jïõ´éØ% Ýº�_}]ƒàÖ–^¹«¹S·žº?C6c™ß'h×ÀÃÓ{M‘ÃK<ÔJì@	Md9vœîÏ˜8yªpŠy• r{	0bLïuÍ]°(à3 ŠäQoÀüE�i¤ï×ë~ÿˆ1ÉÂIæeÈ%”ëíP+“2�à 8$»í¨/×+i­.8€ùÇ�®½úèº¶ÅJ´#Vä�Aw æÏËy_ˆJBåFÏûT²{À�Ü°‰1z\ÏõAÅXÎì (ÌªÙ$€( Úp²A�Gï¯5Ô“`CŠP¯D»ÚQï›ß’ œˆøþ	?æÊ5ku½5jÅ"$ gZÖí;JHO…èî={â	�‚'8…Š—
¨Ò»qó¦2FKë½7uértÊ{Ÿ?.Ò¦NÉ&šŠp…JCãºÌþžhñ}¥ÉFPuÖÓN¡QY	Ía.�NìN€¤”œïG�ž' ”~£ihHòb[*ÎÖGŽ�êZcÖ�ÞØ�lpBp Ô¤«0ÐRo¡O,Ý„ïy¨-Š<j©·hæ*êùŽÛwîò(æx*_×Œ#Øºà'gÉrÛ¨þÓSÙU=®¾ªx´lÍwß{¢-nøÎÝ?Äl�Ñ §ï]†�÷5“¹¬@È]€ÑS²µëÜM—*�”|ôz*N¼œõ7Ç|�3OŸÑÀÈõp³H$€(Å²ôÓþƒ‡t½wùÊÕ¶‰XCEØ­ÈÂØÅ&OŸ©‹°ä9·ïÜuSm€{@.÷Å™MÏ\¼Æ-ÛØ®Á'5mªë@­æ>¦EB9÷‡Ü..và¼†”š¯-ÌX¢+mæ$^3mlJªk6ÿÌÙsm¹Æg9¯ë(€æ _{üÛoJº˜`,Y¶Ü¿ú+§¯µ N{*É(hWuúooÆÎ1W=…ar½Â„´)$ ; d¹
Ñû©3Ó5ßá»¨ø3Ô/ôê;À±¿�©ð°Ð£+¸jíw=%.Ðp> ¸Ã×²³³•€ Öû0Â	†®6#J7vAß„ÁŽOÑ["^ª\Å€F—‘ b”¼ÊÚn“¦LÓ|´ßœdèRw|v,Ð³OGuQâ»b€ˆÑljL>È[€+¤LLóûA ï‡	±¡Þƒb›hŒèFJR®)�Äpmš¶°ýoÒ¡kwSëûÑÈ£6ÞËlÛ»ÿ€.Yq™Øàé� b 0¯¬ñ§§Öƒ>­6œQYˆ±àjiÂ>¯æ´¶ÚY¤½÷f¶PcóCª½nãfÊYÝjkÔ¼•æ5bš�¯a\	 �6pVÖç…Âˆ>Zýä÷­G-‚™ž Ú”õö·GðNà¥˜eèÀC€×·ÙjO 3"õ(KË¦§ÑŒ`20ÜÑ×ÀÌZïéß'*O~ùïší	<züØVòÕUkÅÔÍ›ñä—ÿN4<�ú:6ó©ÌÓ~ïA	 ŠÀÍ!ŸÅÐ¨õ>µàVo~«HÀè$#«€i½jÓwÍÞüÑ"4*•Gš$€ �G{eeÝÖì¤S+éŒÖæ·Š°YJ–ý*f¿‚bf_�R³’�ºÔ��°òq$qÄ(@´šJp>ô5höíï¶êÌ¯³cN
ñÓhÿÈ‹Ã±êÌ¯G¢Ìª˜€@9%øÓÏ'H Ñ ¢à2ck=!ge…ô”Þ'¿Õž dÎõ?™…"%K›Ú>­÷É-O Ä¢%‡¿mô>$˜€yfÞ´i3l³ù­"Ä7¢Ñ ‚35ÃÝüV“ÀÀÄ$MOGO_=n<	Àj÷ýØ¾)g­Â3]ÕpÜþh>">Êo]¯z¾¢Å•ºX¹ýÑ<@4Äh3ÙÉÌL€•¨V§ža·«q‹Ö¶zò[í	 ¢Í
‘Q´NCY×.OþhxZ©Vµã¨žÆ"@˜?i²aÆ]¶b¥m7¿U$€þõ÷M…WïÂ®›ß*€d»–G*W£:¬4ØYpLzál¯%@iVŽÚ,·?Ø1eó¶í¦>½ÌEÉµ<,#R)[u�˜yÀh0­¿÷íê5~ï�æ!	À ÷Zîß¯Ó qÈ÷4iÕÆÖOþÜÍ¿zí:KÒY¸9#Q±Eéô†M[,ùnæZu¯˜é	”¯R=äßÂ Rù^q�Ä»s }—î5ñZ-g¼´ùsmÁâŒ°®+V­±ô»9�´"û¨ ”SÌVÝ/ž& ¨åúÚ–í;4ßiã�Ó7¿Þ³¬Úæ—eÖ¼Jˆ}hýÄ¢|-iÔX€ÙÀP_9v\È×c¸�Ïü²Ä”Õf$G={Þ‚¨~·9óÚ6&€c§V}…ìibÒ	ÀD ­%÷™kõÅ÷8ÄóO~9E5$idLŠ¦œî	h©1uîÞËïõÈ� LDÍzýÝWZRLrtÖË›ß—jh²’[H ®QÓ°I Íg¡>£ÇeCù9	À$$Iô/ÿ=qRó=W¯]çæW1§@Aþ~ýµ…ˆ§I SŒµ>µ¾ÝI€IX˜±Ôoq—._òõÐôú™?”AÝ¶UûNÿ|¿øþ	¶ñ´2&P/Œ˜ <N­ÂªÝ{~ô{�Cƒ�A ‡�ó[\mÔÒ¦³Ë“u´—ÚÍpS£LÚlO·zZcæfÌšã÷úu6’ ÌF1ùš–l"Þ|òkž„±‰î$O Rç¡>¯Gï~~¯G‹6	À¤
@Ù´¤¿×~¿ž›ß%fHŸ;?ägá>òµ¿ž=#˜%8ékpÝŒŠ6Òíw¶Ùá8 E©PŸÙb¡Ôä:ÀÕ¨k…2an~’€™$páâ%ÍÏÁ}e¤V… ¨øóµ»v>2pó“"%Ì<Ðj¬:söœß{ÔÒ­$ ƒ˜5o¾ß¢jMÿ‘�<ó3&`VL@Kì:¾¦U®NÐLnõ5­áŸ­;tâ“Ÿž€%ž@ÕÚu‰ÏhU’ t ƒŒÔ ôIÄÍO°„š·io¨@�¼8	@Pý5r®›’ÊÍO°„âû%ª?Ù¼u	 R`ð…¯5kÝ.äëgÎžµ3¿|<¡EßÐº­˜ š¥B½z€¾vðÐa@¤¸yë–ß¢¢µ3tßÀ>ùé	Xâ	¤LLùZyø¬¦ÙŸ îÞ»ç·¨hˆùv7?IÀ˜2#ÝPÍŠžÙ$ `¶¯i¹ôèäæ'	XAZÒjè°ôµó.’ "Ev¶ÿÜy­aVMÆá™Ÿ1­{Kž@MJ@”	€O~š•ž 	ÀæG «~XyÎ�V¬È
ð`ƒ  AØ¥q�AÀ¤	"V`Ð…@+°(
Aº÷îË›�°%Æ¤Lð»W7mÙJˆèÿ÷µÄ£x³¶„o:LK½š ò€£sî"Z@ª¯M�™Nˆ¶ AÄ
XKA“1bŒÿ¸*-I0‚ˆNŸ9ëw¯víEI°˜ˆ‚ÚÑj4Lùâþƒ\›!‹Ñ: fÅþ ë­ë‘'BcPâð€òYL
âÚ„Œ—�²à& œÁ 	 Ö*‰8à{;c4˜Ü 5Œ Df!>ÂZ €£j 0žŽ`,ÎpšÚ*	Àc�Çƒ'�O%˜…ƒ‡ú7Yœ8É›.`°EÇn=Ä®öÀ»wïÄ¥ËWÄ±ã?)Rìè©O’¨háC…ëYY·ýÖó)H &éùiõAÞ¼ñtQ ¯nÄƒÁ¼û¦­ÚjŽÇò"Š–*°fŸ—)O0ïçÉ¯Ìfóµ:óæµfŸäSŠ¨ž<ybªÚÎäé3¹¾:÷ˆ÷[#hX8ä»;ƒ €£9®©¯ao>u|Y±Š…¶Âê1€ù‹ücTë7n&XeÅ FÞ|�¨T½–¸wÿ¾%›Õ‚Œâdf¦ß:%�C0m;uõ[d”]¾—ãæòü/Š—.PŽj¦Ar�ëì�üÅ>¯ß¼ñ[§juê‘ L/µ,ü™xýúµßBÇ5lÂ›ðo 8·gï>]ùÆÍ›Êf†¸Jã­•9
@“VmD|ÿe Ôlä¸Kƒ¦-¸Öºôìíä“s@-À€Ô�ôž–aV"¦'ëuã‘iiÔ¼•2áÚõtÿuèU|¿q““¾¿³ ³Ù|íTæiÞ„cß�ƒ!7?jÓµæÛ‡�[ê^—¬ZÝ{À@€U¨Z+. x¥d¹
Lùå¤I_½z’  Nã8Ô®ß(à~D±	ÀBÆÍº}Çiª+–£T¹Ššî?fÛqÓš‹¹ù­ñ‰S™N»g €Ùo¾öóÉSž¿‘›×2NYÿ0Bá	 ÊeÁ<äQ²!Z–4j,7®‰À€_{ûö­SÊ�M Àõ7üÒ”iž¾?û¢¬®"žÅJpóš„å+Wû­/š¨xÎ$€i3gù->\1¯G©‘Û×²‹—.+ñnàÈ�§`Q%«âkC’F’ ¢…/ÊWR\._ÃdV/ß”ð‚ôŠ{ðZhØq3‡tWÊÝ©ùŠ'Ä2ï½}ç.Ï·ý>|øHwY/ºÑó_®rUnjƒ@ý‰¯­^»Î©×â\�K0á ÎË7f‹¶<#=�¸°}ŠEõU2.žXí\@™ªÜõ¶xé2Ïß ý	‹r]YhÙ5lÖ’ÂA°mÇ.7Í©p. ãR'œo/åù›´qË6·#`Ø®s7nzà¸$“«ÃJÝE hÅ”£±úÿÀP
h&DjhÀB§ ×40õ‡> ‡KÓ9› €…Kü~”ììlæ»¥zõ÷í�ˆÐ†=&e‚çË­å~‹±)©N¿.ç ª åfzúln~	µê5RäÔÿü3;l"€ô•W×‘~¹ï$  ã›å­¯˜Ë|˜¯�2µÒà²ÀŠóbóUùÊÕÄIõ­é.¸6w Z0ÁfFÀ0…~�\ZÊ^¾|©l/­jL|íño¿¹¥�Ê  ¨ÅïÜšÃØ«ÕäF×)öß/Aw!‘CÆ^™È¤É6*9Å-×ç@F ’W¾];npýÀÔåýéªø¤@O£,¯Žž£H 6Z^eëÐµ;7·`cŸ;^“Pkàöµ6rtÀuwêÖÓM×è.À4œ/´Á²ÄÕd	v5<l„ë[¬åŒ	¦T»ì:ÝE @ó6ínÖ%Ë–scô ´Ê’'LtõìØµ; ¦T¥f€ðÝú�Bõ9ÒJ7 ÿ�h(˜˜äÚë—Í`ésæ¹ñZÝI f=|äÑ¾yë–
7¢‚Ò_UÖ<8düµa)Y: ‚{Ç¥AOw €´–l«Ö~Ç®ésç‡Üüð¨&­è€Ü½go€æ$Æ¢»ô·v/¨pÀºÅ÷qåµbJ K–ý*¢Ï�²Ò‹/BÀ¡#G]¹†Èï{,~än@90² ¾†È®…Cr§'£dÄ‡%¾Ô¯R‹L	fj�õìÓß•½rÜãò•+âã…I NF³Öí"Úç/\tÝ™îÒå+ª›e¾˜_‡Î5·àÎBZ¢Èiã©‡ˆ7$ÂôØ�ƒ‡]'‚˜Ñ­¬¬€H¬“Ë÷‡û	@­L¶nÃF×\<šh«º­v£²�7Þño fç“&ÃÜÒãŽë°|óçDÆ+U¯åº{-Î²mÞ¶Ý+’hÞ €ÜôŽ<ÉÑìÎÝ{9þÚŽ;néæ?}æ¬+ã&¨e�íÊÕ«^J{‡  ¨·Ê=ðhlqúÜ¼EK¾	h‡6Ëå>:Yñ ÜXî,÷ø?yúT”¯RÝK)_o  Õ\Ù=~ìøwtCö4TìÜýƒî€žšaSìÙ»OñŒ®w ü¿ž=(õukq	@ÂÔ™é7>Žn	p!°Uµv]…ì Å™Úÿ×®ßwîÞUÔ“eCú¯u‡ÎÊ€7ÿö¨ç‡œ—l‰#Fy±èË›€ ÏÚuënÌôÂ¤áA‰ÃUG†¹ýºËVúZ<xð0àÚgÍ›ïÕªOo  ÷VM-A â¥Ë‘ \ñä p®ºšŸH ÄGù+e­ž@ÖmW�ó@N®…aÊÏûÞž*ímÈí}W«€«èÆ¼·× FÝRq0—ýÏ§½ÞøEÈ� Ÿ8•p“@ý5®QS€CÑ¦c—€ÉQ0ý\^ãOÇPÄDƒH�ÞýH CÂ�D%µ'Ò¤.õ$˜@\­ÿ=y|ªk®]’˜÷ç¤ÝpmPò�»`QP9s�ŸùI z²j)BØ†M[Dž‚E¹N6�“5Ÿ3¡—£ý$ £uiÓf¨
c"MX¡j®“Q Ý¥VÙyo®	À0ú$RÈ@©m¯¾¸F6!kô+¨©! ˆ@ ×‰6p>F]€šmÚ²UÉ p�bË(Q:GÃïGÕßæêµë®Mã’ bÐJ|øè1Õäà…)9vÔŒÐÄ¥f(ð¡4	Àô¨å"# b�Ý¢7`=0±gëö�ª­ÞÈÖxDÌƒ`Z¬ZMynõ [U‡cDð1Ž,;;[uíœEÕ×Š`9 "‰Û`…·äÕí ˜žý%øÀÒeß®òÄ´b€ÍÐµWŸ€)2¾ÅCËW®V\V®Ux(S¡ŠØ¼u[Ð��´fAr­H 1ôô—­Xt˜&Òˆøw7NÒ±
n²0cIÐù„ W¬)‹²H ¶A£æ­Ä¹óÁÝTHP!ˆH"(2aO¨á$Gs:7y¼"Ø6PÕ{ÀÀ Ç‚\� ¥ÆÌQÿØÐXµæ�\ƒ”Ö–~€í]=ÌéSkEõMîÝ@tîïZñM­Æ+lèã?ýR¤½üãR')¯ç½Ep\×šPÔD8eùmèÒA¹Æík‚q[ß,Wf4†2¤û&M™Æ‚€ó�súœyš7=ìÂÅKbâä©Ž—)÷sñkÅ‰³æ(s
õL JM›Ê¢*€û€¨5¦Ñüzõš.�þ7o*Ñn±p’ˆÔv0„¤‡	»z’åhê¡«Op= Z�.5Låø’{ÐëŽ6eL<Î[¨˜m®OkÌ@ÜEPÁÒwjjKßoÜ¤ôR0¸GðlmûøI“ÅÅK—OðÁqA2l@¤Ñ¬ã…`%´õ;tí®SÐ‰\µþˆP–yúŒ1&Y©¨ä=@ þ‚€Sf¤+›*’Ñ^èP„Üùêµëy,Ž]zöV*çàž7hÚâ90Ô0àÿµl×QyÍ�¤‘Ê9“s‘žƒj2ÒpF7º¯¡”7ebšëÆ‹“ ËŠb°iñ”ÅÐJ§Yî‘çz/L["–æÌ·h­<•øqoÐŽ¸X$ÔÓ@;.¦0»q¢0	€°MÅ!t	ÑzŒÀ¤®ÑóFg@1CÏ="ö[¶ïP’˜"Œ¸ ƒx$ "Ö¢%9O] Y0`ðP%P·`q†"‡¹óS™§Åé3g•Œãí;w•xþ©Iü¤ìÞ³W9û# ¯£oÂ`¥%®ü{”Õ&A ‚@	€  A$ ‚ H A� ‚ A ‚@	€  A$ ‚ H A� ‚ A ‚@	€  A$ ‚ H A� ‚ A ‚@	€  A$ ‚ A ‚@	€  A$ ‚ H A� ‚ A Â¡ðRy�á6‚Ø    IEND®B`‚PK     q‰U]Fi�L  L  )  admin/images/icon-all-in-one-seo-pack.pngnu „[µü¤        ‰PNG

   IHDR      ü   ¯‹Š‚   sRGBÙÉ,   	pHYs     šœ  ýPLTE    Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà Zà ZàMÊN   ÿtRNS $@Ui}‘¥¹ÇÑÚäîÿõìâØÎÃ´ ŒxdP9>g‰©ÈæàÂ£‚\3Gp™ëþá·Že<,kªèZSžçÕŠ?)t¾úñ«`wû¸arÉù³[J®ð•0ƒãÍ±ô“ý°8qÆR	nMÐ­"ø=šË-÷l1Ý¼ïÀ6Ÿh�
Ü#büéAX—ˆLò5Y+ö¿Û§C!ßH7¦;f ¡ÌœzÁÓT�2›Få»Þ¨^K–N�yó&˜*‹½¢uê/€’%O¤E_†Ò'…(ºÊm¯c¬.Ù|4]vWµíI�”{~V²ÄÖ:Ô�D„‡ÏB×Å¶sQj}Ñ  ÝIDATxœÍ�{`MGÇÏx¯¾VëQ¬Š¨Ú&„Æ£šHKéÄ#’êR‹TI6ºiêÑJ¥i(ÁF=+^¡UlEâ‘’>ÐPÝeiYV=KÙ.ªë¹÷žû:çÞ3gæ7¿9çúüÑºçÌÌ™ûÍ¹çÌüæ÷ûQl‡èðûxÒöÞØw©®¯xÞ¼TmW©ƒöôÉ&ÂßèZõc€¡.v[Ö%/Öð¤ã‹üC¬j¥ßÝGÊäö& kˆq|ù½¸&Z9šØ"§7†X(@G×¿�ÑP´£¡õ22Â*ÂC¿¸!±¹þ&±=–Ð›�bé�vuhð�ôV- ™�Ë¥Ò[UéAÈÙmÊ`!«%7©£ï’x¹?¹T\þ/©�HÜ‘ØœD’÷�—ùÜ£“DÈi�I ¦YÉ�²Úbó¹¸BNK’H%Ÿ2Æø²©<€Ì�ÑŽìÿúNäH A€Q·‚ñõ�T0Ý^€Nï£Ûf(™Šl+@ÆÙuÈp¤¬ê7Õ N€ÌòÈy¨$ÐìØ'#ª£]PS]×û/¯Œ ¡é&Ë‡}|$îzNø&àéSAzö1’¼-XST€¤�÷kZC¹,6(`<™.VÑ:^!Ù"Õ„HÞÞRŠ­K.?‰‹D˜@p¯^Ëh¿/˜¸ú(¼’=Üxãuh¸ Ýªo×±�Z] –¨ ©õÞÖ°—®‘ca€$ì¼«`?ãÎ€Þ‡02ö–ƒÊ…ð^£¥A<^²À4FÖx�¿0D€f?È4ÇZÈxò*wY€ SÅ†ZÁ çê¼Eùhþo¡¾‡Äf£8Kò
�^WtºR¤óä ùøñÎ…ÐJ_s•ã`&÷oêîa,×�ˆO€¿‚‡ØwI©¥¸xød_‚CZîmv!rsÑ}	¹d³‡ ³÷Yà˜aÞÎ*Â`âµ¿Jé�)Çí^‰neê„%˜¼;‘ã‡dÎ42DY8¬-äE~s�¢L(k‡¶<ÞR`^€%@á…·p=˜¹ºï ×¿–Œävzß`Þ^€ô:ˆ?gîeÈèSæ1œ»W�tÍ«hé!ÎSÏ¥š�³ŸdfT3W�!@Õª˜kW�>@÷y9ó‘¤2õ€þÎ_A¶aÃæ"sP GS¾o“s<gð?2§Æ0ñ~D<arÖT€GÂæÿâ‘û8*öŸoppåPñžä<8ˆ~ÒL€ð¡oŠ_uRšÑÑ�†0+ÖŽ3zn¯úñB(œMšÐù‘Uâ×¼½¤·áñ¿™ü1\äkôñ@ñÎ(K{RO™€šß ŠòIcI½(Þøø¨BŒ=nywÚº Kwb½¿¥=xÖþÑ´ÞŠLZ°Ì§IˆîÔzˆ|B mNÄ•^4¯æÔ«¦¾Ä”€ƒžÛ1ý	ÿ’r‚*À¦DÌõèw€²þy“jÿûõÔêÁ˜þPG4fŒG]Nù¨+õÔ3û¨§>¬K=·!Õ¡ÄŒê(L˜\u9åW“%´±³('î´+¡VZLyªrSØÇð0E€Ú¿"/Wåý\ÌÏÇ�¯<gòŽ\Âcß2ÅøG`,@‰±Z ˜�Ý²§m·Ñ­‡%ºgÈ¯ï›2®yÚã‘ƒ›ÒØ.­ÛžmpÔP€¤õÈ€ƒõO£›ÐñÞ.Ÿ<×à ¡ ;»¡/¦¼Å¹0ÁË¤]Â‰QŸŒ(Û��¿ØÆh|ò&Ihdæý�¿2#pC7›¢$4â£Ó­T?pÈ@ üóÖI�e2Zñ"gi6:)à=(@òY9^ Óÿ$¥7_ÒV6Äø	 ÛN)—R–ô’ÓŽö4š‹ìºþãÉ Öü÷ÏR.¥·“ÓŽ‹]]ä´ð*@šDÝÃ’Ry]ÖêÌ–¶úÏþÄôF˜Átð­Nóò�¬˜ÌŽkõŸýØÓIÒ…”É|6pN¾~VVKWô+]~,þàsI×©ü“¤†\”Ï•µBë7+ô€a°P)«%ûž‘ÕÒ½§µŸô¤.–K<QÒ»ÄK^veI-éŸú/,ÍbóS’ò‘t‰fÖZKkvÑ	�¾ô¦œkl\)%°YOç«’<ÕtÃA� rfŠò‹$ýÙš ¥’‘¥ù =#e¨dgÞ’ÑŒ±_IiF;)Ô
0gŽŒ@ÈÄÔ–Z¡Ð£ŒVÕò­j�òÌžn¶�¦×6­hÞ„ö?ƒörP!¡Z}/¡Í”H# v-Dåóæ1ãµã›ð�DÕñ†[kxKB4`|MÞzRVÂ7²µ�ç_>Â+ã�}ï·!¢¶}|ª¦ÚÝ<(Ÿ @‡àfûfDùÛ=[a¹%Já@±~Ê~§É2r5å¨�ç=ñ…>^�¤™ØÒ¹î–²õþƒ¾0ÒB ÁJÊc=Ö�´¹kÏ_t»W4áõñ
p¨-¥¨d�&L¹ÁÂ¢±o}â˜±“&€ é6cIþÔ�Ù9:/„†—øˆláþx€XBZîð?²æìeH°žETÜ»ˆW€ùÇïß„ò_Ç^jðÂ=3"� ?æ¿ÌþFüeíåå"î¢‘-]/,� €w@¦Œ“5¤>Îo‰uÿ< FAoKš4[AÈEî¢nG>· 	•¸“|›où`OœÅ«Ky‹ÉWÿç 00òæ%oÇÍ>]û™å‹N=v³ÏÈ'Ä3Jÿ�;sè5�¹[ ~Ÿ )ÛÅíÓáÿvzž$FÒ Nr&'JÌzDô çž˜ÎÿºH�åöAcÄ˜r¯Ëó&ñ1êˆÑ]bÝÂcê|î•­•qÎÿºXñÿØþÞ4¼æ??„»ÿqðw¢ùü9Þ’µÕÙƒK þ%ñœãâ�@ïòVUZ.v	&€!ý\çmï€ÿ° áA;Æ“}ëÆ5J	oˆò×�	_¥w6wõ!à€<`6¼K¼ÎgljŠÛ&æqg�PGÃª Nr?Ù¯"LÞöÜ/qçÛUGª õ®p7�ñû°ç˜ŸÁ[2é©Án �÷^è“[î€Iyüe�f!U @l@T¸xW[î H¤£Ó‰E `0ug`Çpêq@açSÐ)@ÞQÈèvïxÑ¬Þ6Üëç•J;¯â bqpèIÁqªõw Ð§ÞéÍê º$t˜<«àÆê;`ÅëÐŸgD™* Ü3lÞ‡"Û<X,@Ãq™Ð*Wn«ÄÇ¬ˆXHµT€î#â
ƒa§ B‹‚Û1R3b¥ 3þ#òzÞÚFàQ¡)þÔiÿÖ°N€â?öÅEµ�Ä$dÕVþÞVÞ²·@Ù ÁÙ³Cg~jXÛTÜ*ºLu%w¼T¸W°º¢h )mÑO }˜xtÎ¢Þå’3²1¢Ew &Â#¢ŒàÜCAæ‹î€Zô€k&»Op©Ò¾¯Ã*ÑþärÏv‹yžGU4Íá±¾Ç8�ëuîuñ÷Œ+Ì�|<?‡à¼ãeà’Ÿå¶OPˆ¾b~‹ïˆƒpïi‚Ë@	Éö1=‹Q€M9Ãñâ~DÛcÇˆ-�=MF.e`Ã
>JA„R´+&8á¡Ól "ÛóÖ6ç8�5±A€�ˆd'ª ¡âF.åHmF ¹·ù1)�``°A ¾eÆ,íI`&QŽÖb°A€Ó¬�‚	bˆèlØEÃ¿3
<ý�xãnz/2?�y‹Uûy0—±m¸·1?o†* æÀúëØ!ÀoñtêO #€Yº ÀDÖ«AÌkpÌ8FÀ<ÃÔ× f ÄôšµA€3¬á¸	è‘àÝ0è‡Ø÷H cP š6<ØðÄÌÕÉ&oXV—wÀ«ˆ]?Õé0&uf+ý·w æ!¨D0&1æHÐ†; â¸xÛªIc�Ëò0µáÀ$™R�¢³øŸ±JØp(Õª·­šÅÅFV¼t’Uà€Fc+k¬O&‹fšëZ:9
ë©9œ&×JÝŽ™à>ó¿‚B×ÒØþñ¥"•;,<Õ‚]ªèe‘¶uð(l>"”µÈµ8*ö©T‡ku|>–òØC…²cãšv-�‹Œ…Có/™f õ"!b}.¥ÓSÁ³m¹$àCÁŠ[ Ð¸�˜§çâ'ù ¼	�ÛEì$U´ƒÿžé‹Û£CQr^á.Ê‘¼_�ÛIÊ§ÁG³�å€Òè$`Çä/»;fÞËzUÀQ²Rw`–“hÖ`™Å' …‹Û@ÜvÈK“UÂÚV×N†¹B¼·ùáHéÔ€Õh�«,È.¼ê�CÍ$Î‡7Î�ˆ·´ÇY²@îŽ·pkÞ:™ $ßôºË&Äàþ(áÑ¨L€³ î€eoÀDË¶ë#žÌ*“÷æ$Øà08Gª …_rÿ‘Nñì¤çJ=pðÌ¤ü“c_Ð`m„i3 ±ts>›æ�ô…ÍÒÉ§]‡OSâ7Á.V£ù5�“ _Ã9f{¤P6ÙÀß9�G€&t`	š"S³á•œðMµ¬úøÞ¢ÚàiˆI ‹cs/€ÌZF¼®yö„ó¿à
ìq#„C·
Çd(]ù3¯j(@,Ã‘¥ ¹(ÿ
n²ZGàÛ”píçç"4t�ZÃõ)á¿wr½C°N©´	�.a&�HÍ	È%¥O¢qè»Ò%Û Ûˆê'ýÌŸ\ŸFdj*´ó,ÿÔ.H¬@&)ÿDJ£H<à2@¦‘ç>¸BêçGÙ…Üd¸“­ˆ$SS^œÉ.c@ýš¼^½=f1­ ‹{iå²?’'ŽP:½ÃÏj(™o^™ÑEY\©'3–rËr¾M<û<ÉØ›`Â¬ë·…Çv6Y§QáHDo�{O¡„Š
ãz«ý<&å/¾=i6aF­ã1§WËcl-X4ß7á™’XgQæ)Ç?¦?	ÍÙàÎ­,˜RS)©u¦W�¿¾Jgæ´úý#,Ù9Âz•½°/i�ø‡){•Rð&XNªjÏöRoš�
ûF2sÕ•×C¸…yðn´á`ßZ—9Ô­=µlû•v³nJùåŒ�I…ÈíØ�4öîz©Y¸’’[Þd‡_áŸU´ß¯ht-à¹HÂ@[.%V–áË ðçÙ	Ó­™�o8�+ûÃšî5á}
 ÃQï^:ŸGßøà�*è­·ÿâü^CÄÂÄý0N®.i‹™ì]|ƒ8½™è×|¹óF_6Æéõ•qŸÊØ`�#ŒDE@€Ô‡à&2#/òù¶X°Å†¢|ÿ6Çr\€°c’vÚÑº]Y²ÉŠ’Ü¥/³X€âK`c¦¼¯ÉYªßf'G8—§Uj3GÅPbZ#;tÐ·Ù‘·Ñ’r£ˆ5®
�” éï¯„iBôä”0ÊtÁL¯`åP\|˜mµ%j¿6‚åF<	^! ò�nÖì'@ûîuƒ^k°; ìÿDå‚~™ÊºYó"Øp1Ù/æ.*	—¸Wôc<´awÀ%`Î"*¬-7åmº:�ñÔ‚	€	lÒñø.ýç Ö|#i§Öæã0dí9ºÒß¥8Ð‘UÊ†Sò~â06÷ÃöG%e¨¨¹�'/&WÃnFT;L 	^çNó0â	K…üÌ( àµÆˆlA^Åø·ùrc	½\`y… G‚R^®qFLÞ.aóafv‘šºÀó³ÕÅ‡‰¬•ùa”¡ÌÐ›ÿ&ÀA›Ó½i‘nc^f:OAïcHÁù÷:IgEré= ™)©$<-ÖÆñ'Ve#/us‹y�³úÛ1ª9ÃýÿìsÍhÝŠÐ‚¶�2·÷ßJûž3Œ
è§ ~Ëm2 ·ÎeåÙÛÑÝïÀyVRtìXPc
×BiÂ®’°fw�.9žh^9!&÷G¹Rcº�ƒÆ‘Á¬;ãÓ]}ô)1=Í‚æuM ¬/jRdð{«†ÁÁ’7L¿"î±DMvB�ê~è`º%]ÁCkÑáÖ§L*u,79É"òÚî]&a�˜Ìjâvôq–I”lýË˜Þœ¦FÈ›Åu~×qÉë´gÈþÛÏPÎ8èý eM)ìæµd²ho&@øPî}»qÅÐÓ·Aü2³Z‡òDr1sôÂÙôQ™idï#a_ .;êÑ��‡—0Ò€�ª}àÁm}0ÿœM|*ÌC›‘Âw'úÇŠ|ÏöI¬ê?©¸_<w¶ƒ¨ƒf+ŒØnÈ¦5Fù`”f;ÞÞ\¹?[§ÉÅ6$‘3Ô‰yÜC€¼l¬},÷«h·×ãšñœv†F^t»°”¤<Ï
 'ä[ÓÓ¬èþYØÌÐŠReßÌ)ÝâZ³=À|jÐAS!¿T¹éóDÌô$BŠçP°ˆmÄ˜f³ó;B†92HŒ¯Éðºå@©x�”¾ƒÃEÌ/žòÜ&l&—Ð÷·õÀ•âD†qHËåØ‰/Çn^$:Äòø|q&¹YÆ¾—î:X‹“.x³ü`‡„öÃxÏ+@z"÷†Æw)ùœÓ'þ<O±ðÜÁƒ´ÞÊ[’¿ÑÖõJEúJêr{|B2}ííxG 3A`Tgþ¨cPª³gD7õ²•ù¯ö…åz{7ExWxûZg4»�`²»„HDn{è_”z
œí“Å×X+lþÀÓÖm�Hfn5‘�ß`Ò!�ïqø	�{Ö�¹”êÏ‰HÂËÂ¦"	Lm`Ü~xz]¡ŒŸÉWn`,"ã'‘¨~Á”§ã‰$‡Zy¼B²Eª‰æ|M:x\°¦5¤½X K¼èA<éí­N²ë%0š¹wDÖß„£äZ¢I¼Ôx²h]TÚãÑ1Õeq½ÿbñÊÈ¼Ï/®ÁÕ—@3‚rìÅ&¾Î¸³ ÙŽ”½­p³tæo¥S„¬ˆNâÙt^^ Çüë;þüERùúe^Ã(£FÆ	nÿŽ¡òGkÅ^ý:¤ (©évK çëKÀ!)³ñ‡pîŸ‘’Z’&€cŠt¢)_¦,,¡­
9ý8‘(€ƒÑÿ¹ƒÊ£Íé±L¦qZ® Š2è«¨Õ’›ÔQù|Xz²püò3.—JoU¥!Kd·)_ í›ŸÇî,b@\Çð,³L,ÀAxè"™tit(žT&÷Ö÷`• Ê[tãOòkFô¬+g±‹‰a¡ b"²ú#Í&'ìYÏ@Ca­ Næ¤4n((B¥”c§Àvn ÖàdÇ_:/¸	¼T¼^ü¾œˆqsì@¥!$¬úi†Ãlm²2iË�8f&YØ(€÷’:ü>2wp”Íÿ)³H™${    IEND®B`‚PK     r‰U]ä+ß(F (F   admin/images/duplicator.jpgnu „[µü¤        ÿØÿà JFIF   ` `  ÿþ LEAD Technologies Inc. V1.01 ÿÛ „ 			


ÿÄ¢          	
       	
   } !1AQa"q2�‘¡#B±ÁRÑð$3br‚	
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyzƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚáâãäåæçèéêñòóôõö÷øùú  w !1AQaq"2�B‘¡±Á	#3RðbrÑ
$4á%ñ&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz‚ƒ„…†‡ˆ‰Š’“”•–—˜™š¢£¤¥¦§¨©ª²³´µ¶·¸¹ºÂÃÄÅÆÇÈÉÊÒÓÔÕÖ×ØÙÚâãäåæçèéêòóôõö÷øùúÿÀ ¤  ÿÚ   ? úÖ€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €3µmV×Cµ’þùü›hék6ÐHÚŠÌy p¤Ô¹(Úú]¤½[²ûÛ)'-DßÉ&ßà™Ìé?ü=­Ü-��â™äáHæ€¹þêãŒ;²¤·µj¢Ýì¶W·[-[¶öJíöI¾†NIo§åå®ÚôîÎÞ ° €1´rÚ‹ÛetŒÉ,x�(mÐÈÑ1Â³ŒBWœ‘Œ€xÖ0¨¶œ#5ÞÓWWó³Ö×^l»)Óë	8>×VÛË_/Cf€
 (  €
 (  €+ÝÝÅa—7#†i$cœ* ,Ìq“Àð	ô©””4¶_ÖËVû%«*1rj1Ý»"¶“«Zk–±ßØH&¶œ€Ë�	Sò°VR † ‚0Ek(¸;IYÙ?“I¯½4g)k�¯šv×UªÑ™ñx–ÚY¯íÕe¤3’¾8y_>[åàï	óp29¬e%
/þê+uýÒN^ZßM}lióTTÄÔ$ŸKNRŠóÞúmk_¦†‘©Å­YA¨@bº‰&@à
ê
XÁçFz[Îœœë±”d¦®»µ÷6ŸähÖe…  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@{ñTãÂÚ�ÿ ¦Kÿ £c©æP�)KeZ‹~Š¤[6§¼¿ëÝOý7#˜ñˆ¬¼{c• ¬÷—OnÂ³\E ŠTw�æš(ÕJª²¨B]‹mšÞjµ:­ZŸ;o²½âº¹JöKmÛjÇùhÎ–ò•'u”£dÛ[(;JþIu5ü[¬ÉcvÑr+
¾U¬V±Ý\1+÷æFÈU›î¬QÇò�¾Iã�7ï5ï5´mî«-›ZÝîõVMiÕô5eôVÕ¶“ní{·ÒÖò~õým<}usá«]R8ã“R¿œYB„:B×&g‡{ó¬X�¥eá°6dFò�çN�==¤c7}y#ìùê=¼¶iY»é¿\âÔUYOUIµ¢³—¼£¬åÍöw:Í#HÖm'ê™¼Œƒ¾ÜZA`‘Ç–éûÕ
zoy7¼œ„¬“VoMÑ§u®–Z««[®új­'gtµ»Kf¬ô»×Gg~¶zk§—øO^º“LMA*u)no^Yˆ„ölÍ*žFé'ï·ÌÃË9Ò\ô°úÚ¡Cž_öâ´#}¥m–7o¡­F©Õ®Ú¼¥Z|‘½¯¤S“íõ}_º®ô=ÅW’é6öé&¯–¸+%ÄÑC%Äî¡vˆcm°‚rÍ&ØøB*‚M§7m®¢µ~mÞîËM·mê´BŠq†ºµkÉè–÷ÑY]ô×Dž�sœð¿�K[êÆòíôTY–ä@m^xd…¥¢*Š22UTqµ‚�ÉªžíYFÒç•>[èÚqQ}ZæsW],(Æõ>ovQSæíg%=¬šŠI¦¯{µ{¦”á|TÚck�
LÖípºxµ�È�L{Ä~y&s*¯ü´f1ùœ™:ÅöhÔ‹|Î
JRÚÍ'yAmh½b¥~t¬ÚrºtZ¯(8®XÉ®U½Ó~ï;ÑûÊÜÜ¼®7ºZYÃsã{‹=Hy.-à¿Ö#ˆ5ÝÖÄ‚ä‰g�Ô£,8Xã¤u8=b•wF/–)JMîÒVI+ï)JI-ì”�¬Œé·ì�i.kO‘-µs’W¶ÑŒbÛ¶ºyÜ]Åok¬[iO«ZëÐê0W‹ìË5¼±'˜VØb‘…,¡Ã¨ˆâ¦+›ž<­rÇ�K]W2Œ£.—\ÊI«])'.){ª3MYÉFQÓNdùe¶ºå’wµâï¸šf­ªø–úæ(µH´Ë‹;©boÙ¡w0Äÿ ,’™OœâtÃ	!)†ÜA¨¥ðB¬½ëë8­9=æœ4ÕI[yuû*Ö*¥Ô§J>ëZB[ó^)©ÙèÕßÂµIk+»ž»H£ˆ¼ñtöRÜZ½›5Õ©R\µÅ–@k›lÄ<Ù"é%·ÊÊÀ(�ï��&¹Tå¢NÕ?éÝïË=>*où•š´“�4lÛM>Xêä¯O¢œ•¹ ÞÑšè�Ó¼]ìÛ�Yc}¥wv®²Á2‡�×£+røƒÈ9*åÊ÷_ÕÓZ4÷MhÖ«B"Ô•×ù4Ö�5Ñ§£[§£8ÈoÖÏÃ±ŸX¸	.2´ƒ\ž:nUX½üÌR‚æ«¯všu¥Õ{�*qâ¨ãßázuW&áNRŽ’•©Ck§RêRIïËO™¿—©„€ðþ±¨øw!v�’ôÎÙÑG@#¸€:	87*V¸7Þ½Jo»µåßX¤D’…Dâ­‘O­•H%	«íyG’V].í»tl¿ä!âŸ÷-ÿ ô€×-o÷	ÿ �ÿ ¤Àè§þ÷Oþ½áÿ ôícªðü‹ºoýy[ÿ è¥¯KüYúþˆá£ðÛÓÿ ÒäuÕÊt  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@w�ô«�oA¼°±O6âxÕcMÊ›ˆ‘�ÎÊ£€O,(ZN”ºF­)?(Æq”ŸÉ&ìµ} Ôo~°šùÊKïmz(°ÞìÂ	Æ1Ot’ü.±²×|=¨%¥ŒW‰©]5ÌwÍqb0êª±ÜFA™–¿ ‰\2œ|„“SºJ‡ÀãÏïn¥Í)KžÝfïf¥dÚK›—SIÛÚ{T¹“Œ.ÍrEF×z(¶¯uv®Ý›ÐÌÒ|©�ÛYK²ßVÓï^ö!VŒÊ·È‚O)œæ�È!I)¸q•ÅhåÈèÔ¦¿‡N0”û.“‡5·Ié%»KT›dµÌëÆ{U“jIuNŒÒz¯z;=mŸq¤jÚåìëöšº|*Ë+]Å6âB‘ÄÁ-/—…m,x�›½´÷Uµ½ÖýJú¦ÛvÑ+’ù“JÉë«Z+Yê“ÖíÛGk+êí¯¥øSÒl#Ô´ô[mrÖk¢cgO.òÚK©eó²1O™4NNèŸ •çntÛ¥
)+¥F”*Âö¼£Åì§´•ÓZ;­&•J•[v½YJ”í²vÑ­Ü%mc£OÞVw¾æ¡m¬C«ÛøŠßOû^û²Éh×ñÏk!�È]$g08aò>É7ä|µqµ7VU>F§µ”T½É-íïsiÌ¹“ònçmé(9Þ;§ÏÈ¹¢û®GfíîËdÛµ3Âzž§u¯¶µ[G­ÁmM¬Š¡`’6QÈrÐî@Ìé‘Á(6â¦Q¾Ø§ïª³švvû‹ÿ ãk|M+´›±¯7ï)Í¯uSqqê““¼[ï$Ü®®£ÍÊ›å»[›ßÚèÓé×–pÂmí$ŽMHÜÆÐãˆƒ2À ŸÌeº¢å¤Åg‰’«
•$¹y”œ¡»“w¼"×I¿u7¬T¶“VkJtéÃÞ´¢¢öI]r¹__un•ùšÞ)Þ0[ønçRðþ…}i3ÞivðÈ¶÷,sÇ-¸Ia,U‚;.Ö�™J«¨Ü1Èí¯îb';]ZTä´O^Všo¬e+§-z>z^õNö¼ùâ÷WŒåkÛìÊ2{w]¯@K¹îD—5¾“jO˜e·’bç€#êÊ«‚w;È­Ø'$ŒV—|Ý,’½ïu¿D­}îÚÙ'{}ºêúZÝ:·ÍmÒI'ÖÇ3â�/VñX6m¤Çkq£ìú©º„ù
’Åå�t”gÉÚqÃ9uE-%N«|Ž2‹šZ¶—ÅÒI«¥Íe­ì™¤ö”-Ï¤¢¯ev½Ù>±iÙ¾[½-³=}F ä�××Þ›!+$›»K~þguá9î¦¸»kÂ—W$D³$Xk{ Akk`d")dë%ÉÜÌä0Œl�RRJ*TÝêtu-~X]kq¿Â®Ýäù¹¥Ì­·~e§*µ5ºƒvæ›[Jo»²IE[•IKªÓôû}*Þ;;DÁ„D^€¯$ž¥‰%‰$’I5r““æ{ýÊËD’Z$–‰-ÑhB\ªË×][oVÛêÛÕ¾¬ó«ïÇâÝnêóÄ6Þe•¼Q[Ø!”€Ã™'œˆdIrÁ*¹+ÐÔA(ÆSÄ”ÿ ðpVŠ¾ÍI¹JÛÇm.Ê›mÆø#ÞÚÎo_ï{±ŒcÙ¶Ú¾å[�‡vÞ¾±Õ|-h"–�.î5”þòÒe))ýü»wDvÈª' œ
Òq�¥ü9ÆQ–Ú=%	w²”R•®ìöÜ‰Å87ûÈÊ3‡�®¥Ò\Ñ“³z+6ÚìwšôÍQXE±ÞŸ¼+hbn7e1'ËûÀ¹ê8æ¹ªEË	*øÜ±/*Š*í­Ÿ]:ØÞG
¯àP¢›ó…J²–›è¤žÚßKêoøBÂ}/E±²º_.{{Xc‘2­µÑ0Ü¥”àŒeI±5ÝZJu%(ê›Ðå§Ùèï'÷Éµø3£®s` €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 ŠxVâ6†A”‘J0Œ†FàõÚ¦QRN/fšvÓG¦ëTT[‹R[¦šùøsk0Þ^êw–`ƒöK‹²ÐB¾ÔY¤@q…’W @­ÙÉ)5fœ’z­om"Þ�S"ÖME¸§uh¶´z4žé[M=F¡TU   € ìaI¶ÝÞ­îÁ%’Ñ-ì:�Â€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 "‚Y8*7 ~éïÿ  	>Ë/ªÿ ß'ÿ Š ì²ú¯ýòøª >Ë/ªÿ ß'ÿ Š ì²ú¯ýòøª >Ë/ªÿ ß'ÿ Š ì²ú¯ýòøª >Ë/ªÿ ß'ÿ Š ì²ú¯ýòøª >Ë/ªÿ ß'ÿ Š ì²ú¯ýòøª >Ë/ªÿ ß'ÿ Š å‚X�¾WåýÓÛþ@HNUí.ØÏ§ÊÍÇlü¸çÖ€$û+ÏY?(ÿ øÝ eoùë'åÿ  ì­ÿ =dü£ÿ ãt }•¿ç¬Ÿ”ün€²·üõ“ò�ÿ �ÐöVÿ ž²~Qÿ ñº �w#´dîÀVà˜°ÁÀø{Ö€šdY²ï°¡023ŽTŸÖ€%û+ÏY?(ÿ øÝ eoùë'åÿ  ì­ÿ =dü£ÿ ãtdå‘ŽJ63Ó9UnqÆ~lqé@Ð@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P*$•˜!UBò¥‰;Cg†\}ìw ù3}?ïÛñÊ <™¿¾Ÿ÷í¿øå LßßOûößür€&oï§ýûoþ9@“7÷Óþý·ÿ  É›ûéÿ ~Ûÿ ŽPäÍýôÿ ¿mÿ Ç( òfþúß¶ÿ ã” y3}?ïÛñÊ <™¿¾Ÿ÷í¿øå LßßOûößür€*Ë
4…‘‚Äl# ‘�ç‘ 	¨  €
 ½iþ¥?ÝÊ€9Ý3ÅqêRÅ¶¹¶K£"ÛË(€Ç3G¸°_&y�ÔfrE�§7CßŠšÒôãUEïÉ.K=/ùyÕïïmdì¤ù‹é9SºÛž<÷ZÙý‰YÚÚy«õTžšŒÂÓ|Co©¼)
È¦æÝ®SpP+¬d6áòà€21Ÿ›<z.KeRùVŒåšP|Ý�­~’ß,¹üÕcåz2Œ%ònK—º½í±»AF>‘®[ë^wÙÃ¯Ù¥h›x» "`�Ñ89Gãv-c‹i+ù«¥$Ÿfá(Í/åœ[µìÝ“‡Uþn/ÏIÆpwKX¶¯Iè]ÝÅaOpÛ#Le°N2BŽ '’@àw¥Õ.®QŠÿ ¤£ó“K·pÙ7Ò*R~J)ÊOä“cÒFgd(Ê«·Jm|ƒ� 1q·£oUä�»†HkîÖÞº'MZïx½-ÊÚÙÛÉ;ôÝ«wº²oKY«6î”´(  KÄ~:Ñ|%$pê÷ÙæRñþæâ@À4Q:äeIÜŒK°¶:	&[‹S4yÙ${×*ÊpË‘•`N*À0<†Qõ‘¾ô\”~€0“[WÔ[NØBª�&ÝÃLª²<!q÷„N’»‘¼`l&ˆûÊOkl¿š)¨ÊKÊ3jmù½Þ_=ü›æq^®0”ŸeË¿2²Çâ;	fû:HÅüÖƒ>T¢121SJSÊY2Ô.Æ
¤‹Þµº®eÒé]»_{$ÛJí$Ûµ˜KÜÑôµü¹’q½¶¿2³}]·Ð-|Eay*ÃŒÍ#:)1J±³ÆX<bVA‘v11‡ß…-·Ñy^;8©.—‹IÝ_uª½¶wNÍ4‡îÝ>�Åù4Ú³ív´½¹®šº’¼Oˆ"»´3Ü²Ç$Q¦\*GºU3œŒDùÚX‚§8È)Þœjw…6íüÒ§	´–ïã÷m{ì›i•gÎé­ùêF>j5%®×Ñsmk§dš:`êt`È àóÐà�¡êÚ³iôÐ„Ô’’Ù«¯™M¿×·ýs�ÿ B’�Élÿ ÔGÿ \Óÿ AÁø«\×l¯~Í¢Åk$qÀ’ÊgXi€
EÈÛ`œñÔ�R¯ï7ð§eÞö‹úR4i(Å­Û—¥¢£ÿ É�ñŸ‹cV‘­ìvÆ�#~îå~TRí‚Ò� ãžOšÖ	9EKg(§mìÚZ}æi95îÝ—«Ø÷%9 úŠ—£±1|ÑRî“ûÊIþ²_÷Çþ‹Ž‘D´ P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ B}VÎÕÌSON:«ÊŠÃ<Œ‚ÀŒŽizbíÝ;þ~­¿ïôüU1jÁÀe ‚2äz{ƒOm·Õ¤0 €
 (  €
 (  €
 (-~ô¿õÐè¸èº†£m¥B×7’$§Ws�ì©=€É=�ªŒ\Ú„r{$®ÿ Ç¶ì™J0Nsj1[¶ÒK¦­èµvõv(i#°×K­Œ†CRÁ¢–>;HóQ7ƒ‚¹µJ3¢“šI7m%¯gfìýL)×§YÚ›wµõŒ£§uÌ•×šº7+œé
 †kˆíÀ2ºÆ‚)f
1Â¨Éf< 9'�M&Ý’»ÕÙvZ¿¹n&ÔUÛ²]^ˆš�Æ³� Ÿ ¤Ý•ÞÈi6Ò[½�+^±Ö­MõŒ¢ku,€e*W–UÁA ‚2'z´§‡|µ—+µú=;Ý]Ô+ÓÅ.l<”•ùz«>Í4šÝn]°¾‡R·ŽîÕ¼ÈfPèØeÊž‡¡ ÔÎ¥'NjÒ[­åt]:‘­V›¼eªvkði?À·Yš… V¼ÿ Q'ýsýÐP@ zÓýJº?• yW…ì¼™lþÏú\Å$âóíIx-ÒCö±ä©iD;EŽ7_1ƒYÓOØÆ;/«Sƒ¾’çP¦¹u÷ô’•Ó÷ONeL*|s½ïíç(òü6u'ï;{ºÓnÏãæ’ÖÎwµ¢‰ÂèÖor’i¬ñÜ»Á*DŒ–sÄ
ÊÊT‘�É$EÓ�•ÙTô9sÊuVŠT$’z>g<;qk{®WäìÜ\’mM]dÒÿ  —=5÷%íÚ•Ö–÷—[«¤ÒfWöN¡åØbŒéî·�*´rËÚ"f·G8#¸Äv´Ñ«D7¬©ÙG÷‹Ýöx4Õ¯ïF•ewçrkÚA+ê®¥ogP�Üß³Ò^ÓÔ¯eiV¤Õ¥öeR)û9ÞÊÍ¦¿‰IÕ§–=1ŽšŽ²ËEn¢'#)XÑÞ"ªÈ�î `»vÜQR.oÙ7¬¥Ë)];'ñÊ÷³|¼Î:ûÒ²Z´U6 ¹Ôt„y”å»Š÷ak6¹�£³²wµ‘ÈG£k‚8$†o´XµŒMok,+¶ñ»ÚI1{« W™¹òÆöE9Ü1U$ê*ÊÍ9¯h¬ÔW2j2Œ.´œã(ò»Ù*KM5tÒ„©JnêQ�Õå(ËW);Þ\²ŽÖzÕœŸVQ»ÑtËý"â+m2E¹XáiÄöN$’HÝY‰yý²`¾gïbiËn`²à3�¹£([ÙªÔed­h*‹žÐ·4W³æSV\ÉòûÝ3Š—,¡+ûWF¤nÞóp÷}ûòëQEÇ_u¤ýÛ.l]�ÓXÛÊ–Nš^!H^Ü½¬o!žâe‰�XŽ×€*¾Òb*‚—·ñµ^Þ¬¤¾+§†£I¥~hª©7k§É%gf…gÌý—ºýŒ_Ãª¯YÍ&íi87Êô´§Ýi"¬ú\sÁvºE¬Öº|¢ÅV·–ÓtËwºi"¶dŠXñO2QoÚ3ye„kxs»¯oFQW¿,T£ÎÞöƒÒÑvåqœšJWtíiò+KØ×Rv·3tÚ¦—óI>mRwæŒy�­š†‰”š…´Ëma,62í¶µy¢i¼û�;6ñ/ï•Õ![¸ãä‰¾lEýÄ�´«.T×4T](Y8­¡ÍÍËk(Ô×K3F¬ÔÕù¥	)4í-$­+¿¶”äîîåml‘ÖxUZtiöt²UiÇMn…|ÆÛ"Û¿Ïn%?’ÿ <{¶±$f®Nön÷²ºrRå¶‰s-‰5m“Qvi£(Ù7m¯½œot®ù^ªÎñÌ×2ÒH‡ÄÞ±ñ_Ù~Ü»¾Ãp—	Àù¶ýèÛ?òÎO—xï´zTìQÐ]ÿ ©÷Oò¤31ÿ ÖEþùÿ ÑrPãœqÖ“½´ß zœ4~½Š8çû[›¨î>ÔÑÙü×cç*¸¶;o$hL„…+•Ú6Š� à–ª+•ßFÔ¾7e¥Ü›¨“ºsJîþò%ïsôæÕ[¼mìÓ½ôJ0ŒšÕ«Û{:úU•åú<…l×S¸™ŸsùÙ†õäˆölù¤EÌ¾h!	_(Ÿ˜�Ò4¤þÌ4·^hÎ:íks_í^Ý/¥Tø¦—ÚTÓòN•;úÝ]-¹[æ»µ‡x~ÎòòÞÜ8…m ºž`êÎfr³Îe Ùi¬X¾Zî$L4�)KxÑ§Ê–Ïš‚…ßkFOE{ÊÎé^/7¯´Œv•YÞý9k¹iÞòŠÕÚÉÚÍ®g	ÒÌOg¦	#iÂºÝ¢ÿ ¢™|ðÌt®à7	eÛœ
K—•t…:JMÏÚ1Š¦“éïJSåvrŠ»VM=¥Þu*òßþ}Ö”ý¦Ÿáå÷µQšŠ¾ºú50(·úöÿ ®qÿ èRP¶ê#ÿ ®iÿ  Š æu�&ú{·¸´X$I HXK/–ÊPÜòYÝ£.3È\Á¬V—G�Ý?üêÖþâÖý^‰¤ËoH®±çÿ É”|ÿ ºÿ «£˜o	ê¬’G¶Ôy±ILÐü¾lmoÝh°¹Û»vTÝŒ š¸¾V›Ù8·è¤ŸuÛ®„§ÊÔ’¿+NÛ^Îö½�¯ÞÞ‡ª(Ú ôžº‘Ê”{$¾â’¬—ýñÿ ¢ã¤Q-  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ |—ñn+;oÉ¾7gž(dvóv¨%vp¢& @O$ç8ô¬i|S†ÉN×ÞQ“z-¯'ÑèkSHÁïîì¼¥%o]<�?¾‹N²�GÛ¥ ðÍ QÉO�inã<)\Îrñ\ÒQwJé}ý¿à™=ÿ ß×“>åÓ¡ŽÂÎSåŠQAcÈT@cÀè98…UiZSœûÉ·ÓvÙ�%xAEn•—©ášO‰uªÛø‚yæ:N«{=”p3¿• ©o BÛ™Õ·ÝsŸ˜Ò¢šå¥Sã«NU÷Œ”¯É÷Z1]T–ö¹uš÷§#Fq‹¶Ò\¾ôýÅÞúz§ˆä)âûAÿ ¢£®_ùq?û¥ÿ §$nÿ ‹GþÁëÿ éLõÏ	œh$q‹?ôJ×f-ÚUšßßýNj÷Ÿþ–Ïœ´�^Ëmo&�©jWZë\ík'y¦·0îo™ƒ¡LmÚXù�´v®7+¦¯:I+Áÿ ÿ e]ìúio½¾dÕ�T²ö¼×‹Mû>]ÞÝ:ëÍdì�’³LõýSâaÑu±^Z"ÁçˆL±ß[I0ÉÀsh„Ìªz�åHŸ›
s¥ûÙ(läìº«ÞÉ6´ZïÛÌ'zpsf*Ré¥“|·ÞÚÛ½¯{jiÜøÞæ]BkO“Q[Tº˜M+ªŠáŒ¬ ªá‰ F	TýûIû°råæóNÒvÞË{ö×ªOÝû«Yòórí£WŽ»'.Ÿæš\6Ÿâeðæ±­â7w—Wöñ[Û+liX‰7Û_j å›i àg"hÝÒ…(îëâè£%y?/ø/díUm’©'hª4¼Ûn*ÑK»þ®ÚO¬ñ?Ä)ü-0Š{8]8ÞB5e�npŠÝÀžP§ 6ÄßŒáG æ\ÍkÊ¥dÒ»iÚÍÅ=7Ù½­Ø\¯•>­7g¢M_Ng¾ÝÞÊïBå÷�íVöEœš”÷ÉvÊ$H<¨X™Rø#äÊŒ•²qWf§Rá¤ùg%­žŽÑZ9;;ÛFúlí)®HMhê|1=Þ©jšë³ò¾*üX‡û4_½©Žynä´†ÝçDÆ™åšED…Fð!‚±‘’'¥+Yº�sßÝI6�¤÷¿ÙÑstZk:‰Ý*rQÚí¹&Ò²Ûg}]¬<üW·]2KólMÄ7)jÐ%ÄOy2·ÚÓ1yEU¿xc57§'/ÛrŽ¾íœm}ýSOf�ïd%«šzrEMÛÞÒNËn·Në¦Û»ï‡5[�fÍnî`KFv;Q."ºFAŒ:ÍÈA9ŒsW(òÛ»WjÍ[W§�Õ�üÈ‹½û'e­ï¢×Ë[«>×ênÔ%¯Þ—þºý q^-–+MOKº¿ÀÓâ’`Îÿ êã¸hÀ�ä'åPà¬Ü+ÙÍwá“j´!üGN<–Ý¥+ÔQók–ëª]O3Ô}„ê5oRû&àÕ)>Š1“woDÜ~sxËYŒèw’é×+çE°h&Ð3¨m¹sÈ#<Ôáé¿oJ3‹åu_2Ñ÷M=¡½z‹ØÕtä¹•’\¯UhJÒV×}šêbø…î´é¬tØf�Ev%yešö[v–dTÛ¸ÌÐ†åÄP¬HÇ…Û’zJ3ug$—³Œy#)Y9I6âÜyùU•æÛW»¾–àªçN!ß¶oÚNU%U4ã%{>wwîF7piZò»òêÎÎ:úfž{›©–Ý­¯Š~ê4ÝåÜ^˜ãrÑ’A(žc�€äîZ3Ÿ´¤¬¡IJ|ÐI6ånhS¼–¶Ù¾Uï>Å©N•7N»¿=^Jj”SƒŸ,ê¸ÂI&¥ï%Ïgïjß+4Òjšdm{q+-ž¹ºÈ·.ÀB^3¹§?1£Ü|»†Pê9WtR…X8E'S)4à—¼£=¡ïr9[ÞŠv{;ž|Ûž
’v£^š�ªIÚ2•Ô§î¹¨ó;9]§f›iIô:�ÅåÖ¥.™opc†ÖÖ¶fÔdµi7©ÝpÒ,3µÑV[{„X1rG5Iâ&½÷RJIRŒÔR³Œy\  ¤Ÿ5Òæ³²q²¿uW?k,à©)+Ö•9J\óŒŸ:Œå'T¹^‰»ÉJúzE�¸:lfñã–ãìãÌ’#˜Ý¶rèp¹VûÀ€<W›ˆå½OfœcïZ2Ñ­6{ìôÜõ°œê4½¬”§îÞQÙëºÑnµÙE¡#xsFµÖaÚ][y7è£;N]aº wB|¹qÕlµíb¿}V®üW½'ÚNšŸ¤÷�i­ýë?€^Â…lv�ÕdºÓU%jŸâ¥×½6öPBÙßÝý�FÓb&Þk&~Ôö^lªTÅÄqJàª’þZ„ßœ–Âík«º¸Š²»”,”Tì¤�åÈÜSÕ%w{omn³£9Ç„¥(ÔöŠMÍÓ»�œb§ÉÆ÷“Ñ'+Y4“O^]GPðÔVzŽ¡p.!F»·—Ë™¥�”«½±vÙ¼Èñù-!Œ1ÉÏ$×',+º”hÆÓ�8JŠ‹SŒ’“Š¼­F\Ö»ZvHîN¥Nµy¯gN´Ôí7$¨Ô‹·<œcÍ*SŒb¤ãöŸYhš%Î£ö»}
îy^æ“w;ù�¹­þÎ’„'vL_i—ÊÚ~]ˆŽ1ZN4Ú–"œR‚„é%eg?iË‹Ù.{ïws8J­ãB¬ÿ yR¥:Ú6š¤àç8­n£Ðö]¹-¬ÏU¼ÿ Q'ýsý×Œ{ÂP@ =½ÊG«n(äO÷ho¶Eêß÷Ãÿ ñ4 }²/Vÿ ¾ÿ ‰ í‘z·ýðÿ üM l‹Õ¿ï‡ÿ âh ûd^­ÿ |?ÿ @Û"õoûáÿ øš >Ù«ßÿ ÄÐöÈ½[þøþ&€¶Eêß÷Ãÿ ñ4 }²/Vÿ ¾ÿ ‰ í‘z·ýðÿ üM Cqr�*îÉRÈýÇû´Báš=’*—ØÙ uÁV^½@	ý¦?ç”ÿ ÷Çÿ ^€í1ÿ <§ÿ ¾?úô i�ùå?ýñÿ × ûLÏ)ÿ ï�þ½ ÚcþyOÿ |õè þÓóÊûãÿ ¯@2Ý¥*ÈU†	ÁbN;}ê ŠÓoÄñJJ ¹UÈ8È9/ö˜ÿ žSÿ ßýz ?´ÇüòŸþøÿ ëÐý¦?ç”ÿ ÷Çÿ ^€Ý™÷ÈÊS{d×Uy¾í X €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  	ø‡ðËSñ^«öû)-’/&8ñ+È­•-ž'äcŸÂ²„\\ÛûRMzrF?œY¤¤šŠ]Ÿþ'ù3†uÑÿ -¬¿ïìßü�[ÅòÉ7Ñ¦f}+«érêZlºt2ýšI¡ò¼Ð…ö\…Ý$®@;†	œ`ÅUí.¶NW~j÷·Ïgåp¢ý’�÷Œm§Gk&½«Ðó»�ƒZ3X-½¶ë{åXÿ Ó3+�êT³ùqßƒòŒmÝòž*ÛjJt½ËJéo¶ÊïäïÝmm¬ãSÞºk¶þZéÒÎ÷]o©¯sàº—Qž[°dÕm"¶b À�£�Èœwo+»fWnq¼ã'9$ã:qÑJ¬j.¶Q“—/žö¾�ìT[‹¦Þ®�)Óÿ ?Úò·moÝž“¦ÿ eéðiûüÏ³AöíÝ±nÛ“Œã8ÜqÓ'­]gíœÞÜüÞv¿ÝÀ˜/gn¶möÝÜÌð‡†ÿ áÓ“Mó~Ñ±ä3g—�ì[w¾1œgw=xªnê1þUo][ýBÞôçüòæ·m·žÇ	qð�¥Bºƒ-»Ý‹´ŒÚÄHrÄ°’PË,¹Î–U^NÆ8")~çØõö-[¥âºiöŸY;öI-Š¿¼ö©{¾Õ4úÙ»j¿ºµ÷Uµiß{ïMà{›}B{ý#P“OŽùÕî Ç(vxÆîAˆ¶NYA`I ã

»´^°RrQÛwv¯Ùè¬º$º§¿ï/v|¼¼Ûè•£¦×]?à»Ñ¿øf—³^]‹£ÍÕÌWVó$X{Y#ÏCæ�08lû¾@8$
˜'IEAÚQ©Rw¶ñªîà×oÏª³iÔ­7'%îÊ…»8+)'Ñü¶nÎöjOá”Ú”·r¶ cþÑŽ1p¢Ò#ºXÕ@evs"DJîòQ×®Œ(å\®Hó¹ÅvnJM7£—UÙGGfÓºM¦¦þ%Fû®We´[ÑÊËÞ³·-×.‰ml<%{i?ö”úmävÛ³Giç‹¸£ùv ;Ò)IAËîòx$¹Oš¥gß´|Ò¦�›mYZ]4Vº³ZípPµ:iÛÜrQ›Ùu|Ñ[¯}¿={+Aá¯‡O­è1‹ÒöwBò[»s4I1U�"âxedU¶çå'‚TÜ£È©%e(Sä’I8ë&ín�&­Ö-µk­%K™Õz¸NjI·i>Ue+®÷w¶�tìÎÎ]Zi¯aå´SM(ifM*ÉRH‚àBöÊláØ–‘ÓŠ™{Ê1éÝ=S“zK_…¤’Ó{j8û­Ë«I&´k¾½o}�ïøV?Ùµ¢Jgiei¤r‹ï`ÄŸ,hŒ($yÆ ·+Æ0[AY]¶÷oVüßü;m¹JÒ”Þòì¬´ò_×M’:º‚„µûÒÿ ×Aÿ ¢ã 	¦†;„1J«$l0ÊÀ2‘èAÈ#ØŠ6Õnµ^AägE é¶ñ<Z[GØó#X#T|r7¨P­ƒÈÜ+gV¤š”§&ãªnM´û§}>F£J	Æ„T“M(¤š{¦’Õ>©î[»±·¿�ÉºŠ9âàì‘×#§ÊÀŽ;qYÆNš-©.©ÙýëSGÊ>ÎI8µg“Vím¬W}ÂHÑí­ÚÞ3”ˆÃ�O<ªÚ§“È©«ö“RöŠRçÛšïšÞ·¹ÊŸ'²ä�&žï*åÓovÖÓ¦ƒÛJ³hž&)˜¼‘˜“dŽq–uÛµ˜àe˜Àç�SÏ$âù�ãð»»Ç}»nöîÊöp´£ËKâVV–‰{Ë®‰-z$¶C.4]>í)í­åH@XÕá�–00 @ÊB   .©Tœ[”e%'»M¦ý]îþdºTåNP‹Œv‹Šiz+Y|� Š«° ÇéŒtÆ8Ådõ½õ¾÷êl½Û(ém­¥­µ»X�,mâƒì‰ko´§”D{Nr» Û´ääc&©ÊR|òmÊéÝ¶ÝÖÎûÝYXˆÂ4ãÉ¨Å^É$’¾ú-5¾¤éSÀ¶’[Àöñãd-×6¡R£°*½¤Ô½¢”¹ÿ šï›ïÜŸgOcÉgüœ«—ÿ µ¿Í¥Ù¼hÐBmÐ‚±ÐÆ¤‚©·h òEÒj^Óš\ßÍw}­¾ûièÎžË–<ŸËÊ¹w¿Ãkn¯¶ú“8ct#ŒNSË2ì_0 9Ø_Šç�¹ÆyÆjyš�%ß-ïké{ZöÚöÒûÛB¹#Ìªr®uU+.eß–ûòß[m}wÏõ×7ÿ ÐMIbP@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ DÐ«ß0'®ÖeÏ×i>æ€È_Y?ïäŸüU BúÉÿ $ÿ â¨ òÖOûù'ÿ @�¾²ßÉ?øª <…õ“þþIÿ ÅPä/¬Ÿ÷òOþ*€!}dÿ ¿’ñT yë'ýü“ÿ Š È_Y?ïäŸüU BúÉÿ $ÿ â¨ òÖOûù'ÿ @	öuèK‘è]È?PXƒô"€' €
  ,v¨ÉÆ{OR=hþTŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU TŸÝ?šÿ ñT yRtþkÿ ÅPåIýÓù¯ÿ @•'÷Oæ¿üU 3�H#vãÓ=³ë@ -·úßø	þk@4 PSÎ–Èd�� �À,rÄ( ($ä�8Å?íX?é¯ýø›ÿ �Ó°‡Å©A+¬j\3’tR¨$Äe�à×µ ^¤0 €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €2åÿ Zÿ Qÿ  Š m -·úßø	þk@4 P~§þ¤×X?ô|tÄ_Ú=!™÷`	­°1ûÖÿ ÑS£Ha@  P©¨Ïñiö!>Õp²I¾PÆ8¢ˆ¢¼ŒªU¤;ä�V ñîÉ&E
r’rm-Rr{Ûšü±JëYrË[Ù(¶îùc!Ú)7«nÉ^×²¼Ÿ]"­{'ïJ+DÜ”Oª¶‡
jhšIeò¢kky×Ìb�" €=Ì‚BÀGÞB…ùØ%VŽÑŠw³vßmÚ²[-ZÖÊîöNÂOWuek½­y(¥«×WtÞÖV»“þ[:Ú—q#”\˜'£È$RÊcC3\C+¤¤²�™`Qm´ºs-ÕŸ-ù¹^Óµ�ù[µŸfMÒJODÒ{4Ò•¬ä·�î¾$‡ÂEd.M‘iÃ~·¸	!ŒtŠS•4Š&8�äá¾_”â7‹š½¢œš³½“IµŠJí+Å5v—U{z4ž—i-t»M¤ÞÑm&ýæ´3tÏÙßØÿ hH³À¾kÂ­î|ÇuwP°ÆaY'fT,Vr„:·Íâ¶P}gÊËV¯Íí¼cÍñü2K™;�ÜÖÜ’’mè¬¦àµz&Ú^çÅ5¹‹ïâ[�.C»¬ÌÊ‰É9d8‘~ÏMp3Ä¡¢3Ä›ilÔ{®eguË§½u¢Wi]»]Û}
èÞÖvwÑÝ«¥ggv—2V»�¼´Ô<9«�nÕîŽÝ¢æê$(8n$‰	IÜQnŸ6p«ÐSVŒóB2}µín�·õniF;._'wN’k£R“V²jÖz¦oT€P@  P@ àg­KvM¥{'§!£�Ð5kÝZ3zòÚ,;}²Å'Ú-%&)ä3�ï"Dò lò§Ë�©ÁÍ´×+”f“åÓwy%­í%+«8¦Ú‰kÔäŠÚn./âjí&žÑæÑ«¦¬ômY¹ÛÅ¶6‘@×;ý¢8YfŠÂôÀæ}¢<:C*FdfcyK®åVääêãûÇI+IIÆÍ­Ö¶æÒ.Ëy/wGµ�²R÷KÝró]'·~]ZôzíÝßÄ61Ý}„ÈÂ]Â2|©LBF ¬MpÈYX¶&�Hw.îˆ®o‡ÎÝ/Ë~n[ü\¶|Ü··,¯nWk“QßM¾\Öåæ·ÃÍunk^êÛ£j�Â€
 (  €
 (�_Íµ&�pˆ¶ºŽ—papñ™<¹rJí•A…sH”©¾~tô”fÔ{J1§Jr_â^ÓšËx)=9dýÇmÉ.éÎ¥HA¯îÞ®ú©Jºo–{/¨µ’æô0Ùyul‹oó;.%‰1+4ŒÛ#ÜåWh98QÀ§d úÊ
O²ïèµZ¾ëR¤¹e(­£É¿÷©Â7y;%­—“dÓx³L�"�ÊÎ."iâC<®Ñ#"»Š7q°ºïANK ˆ[]iî¨¶î¹Tf›Œœ¾V¢ß5ùv»÷£xNö·W(¥fŸ4l¥oÌ›ømÍ£ÓÝvžÃÄš~§0·µ—ÌvC".EŽTR¡šYS,¡ü§}„€ø<UY«·§-¯}Növzò»i/…ôz¡]hÖÒÙ­¯½¯²•¾Ë÷´zhÇXx†ÇR˜ÛÛHÌûK)h¥D•T€ÏŽ‹è¤€ÍÈ£pÉI]s/'m�žÏ•ëgÑÚÏ£Ô§î¾WÝ¯+­ãu§2³¼oug¦ŽÛT€(  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (šÖ¯oÒîÖËO{xMÂÎîóÁ$àDx
±Ü[`Ÿ0å‹61÷jS¼Üz*ntá_¢÷ÛÙì7îÅ>®q‡¥áRW·_�-Öå;OÛGh—�11i•Þg–°Í$&v’8Ýa‚Cty™T)åØ)jÒÉ¸Æ;Î4ä“{:‰8Ç›DÝÝ–Î[Ù^ÂiÇ™=y\—»w~T›÷UÝã{MkË$ãwk½›Í~ÊÆe¶‘œÊÁNØ¡šmŠäª<­n°#B¼Åá°ØS„—3å[ÞÝ—3µ£w§6«Ý½õZj„ÚK›¥¯¦®ËªKV¼Ò±GIñ
]æ+’«;Ý^Ã"¹Ìv³ÉöÆý *®ù¬~c.ªM9c/úw’ì“ü®þ»³µìír\²qéx%Ý¹S„ß­œžËEk÷v­<Iaxe	#FmÓÍ:)­ÿ uÏïTÏbH¾SûØ÷Gþ×JODäôJÉ÷MÞÉÇu{;]+Ù¥{2V²TÖ­ÞÖÕ;4�šÑÙµ{7k«îˆ­<U¦ÞKä$Œ’ž}³C<¹Œ y‡Ÿ`Å—\HÇä¡`­†ýØÊoEs_Gnks-Ó|²Ñ¤ôô­’×™òÆÚ©;_ÝkIiÕ]j»«ÛÓuËMY™-™÷F’¡b��² š8Ì‘±,±†�±Ã,Ö½´kªoe(ïÙÚé^ÎÛ2n¶]uMlÒµÜ^ÒµÕìÝ®¯º5© P@  P@ eËþµþ£ÿ A Ú ([oõ¿ðüÖ€4h  
Z„o$8�K°x›h Tc�Äà¤S>×/üûÍÿ }Aÿ Ç¨™n&„ù2F±»33±ƒŠ8Iç,;Q°”† P@ `jºuËÜC¨éæ?´Û¤‘æ,±Ë¥�º+´L4e�G&0Êc;²¢n-ÛU$“[kÜd�ŸÃÍ5mš“Ù¤ÐÒ’IèâïkÚêÒ�®´–�{§½UÓ­5†¡¨µœ×koÚ^yíRI*ˆþÍ< ,�EÜ¼¡¹Ž5‘’GÍq´eÍ¯Á(ímdÕº½4ÕþwË8Z×ä¶·øjBm½®£dµ×­ž˜gÂ®¡$®Ÿh´šè]u-BnWÇØ£i6Ér–hƒªêJïh¥û´¢þË›OI]ÊršÑÙFÎVvnÿ ®ÚýæÚûJ1káÑB4Þ«Wx®©oË{Xt^ÔäÔíï®äG[K©¥ßö«–ó"’ˆãQfcKX?65Ê™•Y¼ÐIWªo‘>o‰Óä}o.jmÎïT¥É&à’QºJé\rÕJ+g(µÒÉJü­-ì´Rm¹5v“wPÏá;Ùm"€˜÷ØÝÏ<>]ÝÕ·ŸÞvD“[¢Km"ùØýßÚ„ÁÈ�……§#{Æ”hµv•£II>­ºI¸ÉY_Gt¤•—¾¯£¨ê§e~iJ¤œZì•F”£$Û³i+ÂVí|=y¥´–1B'E¸Iàžúîuo´<,d[É ’rê`O•àÚÀ•Êà1Ñ>[Á|El“‹Œ§+¤�¤›«7+´Û³ºµ‰åÒûIK›vÔ½Å;ìÒŒyZO•)+{Í­ÿ i·U³ÃtÑ¼²\ÝNL{¶â{‰&P A
àÎ@f•§,"¾Ì#æÖïÐ¶ï)OkòÙvµ8FÞvåßK­l¯e½R@  P@  ãŽ´�í¦ý/µÃÔã#Ò/îïVúî;KY#ŠX‹ÛK$�r®¸U›}¼;#�¿x©ºrî²�Ûâq¼*F::�”9~Ê“i©·ÖI'î_–r×¡IÚP}!5+õµ¤œRÖÉ¶¤ýë7éÕP¶Ò5«&²ˆEeso§ÚÃ»ž.1³3Ú¹H>d*Fn\úå%:µ*»¥)>W»Œ»ÓEÍ-Ÿ½ð¥Ò”ù¹ã
P¤·Š÷–ÊR_
¾¯•|Z¯ŠÎ×„XÈü$wîò'Ú-d»7aŽ§¨Dcs ˜° {I|¹Fä%¢Ü›”³eMû4–Î*i?ŠüÎ]Ã¤¹dÓwÖJÍØÚmÉ¹/´£•ãd¡KU¬®•õK~[Ù\ôZ�
 (  €
 (  f_‹Éo¾ÒG“}älØH’6…0 ®’xÙIÃ(nÅBN1’‹´½«©-ywFG£Öœ¯x¸»;¦ÐÛ÷“µãì•9-U×=W%¦©8ÔJé§{ÚÖLÀ¶ðî±kc»K²}¦êk•Žâ{1(žg‘f†'š6MÙhTbÛL¤(-£´œ:ESåi7îÊñwZ®t—4Rn7½ÝšVZûÍ=y¡ÊÝ®á
j�¥¥£)59E=SI$ÙwÃÞ¸ÒÔÌñ¸¶¶¼…°Ò1-quÈA�`vw/¸õ|–¢ZÂpë*Xhl’½u!-‰7%ËeµôZ#%¥Ú¦"{¶íV¢”uz¶’÷¯×f÷%Óü75´Zl22ae%´ÛrÏ)º<¨ÈÌlrÛO ã9Â¬•YÕ–Ñ�9Ó]×4à×•’‹ë½ºmÒåisEmˆuR}­[O[Ô�úo®×¥á
M£K¹@âÒ/.ÿ ´µ	÷|¡	ûÀ6öû�r#–@Ÿu>\cW>g)µiIY¯‹FÔšç~õœ£ÝÙ]½ß?"�,V±‹º¿ºÖ’Š¼cî¶£&ž‰jÚŒtKÐ+#@ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  kYðìåå¬·‘Asml³îŽtYùAQÑ—+±²IgŒäâb¹fçýÇÝIÎ¿–‘jûëÙ±½b ¿ž2}œT*FÞ~ôâí¶�î•ñ<Uá½CXYm-5³–ÐÃ}¦âÔA.ÙFã´d\Æá£S²*F¨q�Š›[óK~xÉ=ôN-ÅÅé{©>}_¼•’Žµ ám"ž©h÷ø”“OE¢ŠåÕ_™7îêÅ¦ê:mÜ’Ù‹ya¼0´¾t’Fð´q¤,c‹22"‘4_qÞÁðµuvŸÂç)¦·´¹o¶¿»¤®ìš\­E_œc[š4ãNÝ=×))_}æô¶¶Z«™Zo…¯´yî.m%„=ü·m.ýÏå‰&š[i!%	Ý˜¶Ç»uupælÝý—±‹·¹£êª%kùÅ«o¬-¢i¸�jUV®“‚ke((B2_Ý•âÚkâVRÕEÃ4øNòE¸ŸQš;q.Ÿ5´’5åÍÒ«—I<ãö„†8¢!I’(Ö5�Ì0SNeMJP²ýå
‘OdèÎ¤¹e6ùšnPIÿ ‹ÝOYsò9Ê1•Úä­NN:JJª§Æ)rÆ^ì¶¾¼ºµ¢ªžg�®Þ?6Ñ¢þÌ¼µy¬&k˜‘îd·Ø|ý��ì"v0.Z5\´‡ÌRZ3”n›•	Gšé^œªÊÉ¦œ’|¼Ò\¶æIYš)ròAëiIË–×·'%Ú×‘¾oq{×³w÷uêü7 K¦Ì×q˜Gå$ŸÚW÷Û��Ïû»Å YU°�!ì\ã%óhÒÓ™¦Õ“øy¹}í·4º%«v2Q³�õåM'ªß–þî©_•_Wk$v5™¨P@  P@ —/ú×ú�ýPh  	m¿Öÿ ÀOóZ Ñ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (._õ¯õú Ð@_�õ[­"Ò9¬¤0ÈÓ,œ©G$|ÀŽª¯é`©BµGŠéE½ÚÖñ]îxy�z˜j1©B\²u[²z8ÉÛÞMn‘Öhî÷V6ÓÊÌÒKNçs³F¬Ç €2I8 ØWX¨Tœc¢R’^‰´�O'R�*“w”©ÂMívâ›zi¿cGË­ÿ }¿ÿ X�!å�Vÿ ¾ßÿ Š Ë­ÿ }¿ÿ @–=[þûþ*€,z·ýöÿ üU Xõoûíÿ øª <±êß÷Ûÿ ñT ycÕ¿ï·ÿ â¨ òÇ«ßoÿ ÅPå�Vÿ ¾ßÿ Š Ë­ÿ }¿ÿ @–=[þûþ*€,z·ýöÿ üU Xõoûíÿ øª <±êß÷Ûÿ ñT ycÕ¿ï·ÿ â¨ òÇ«ßoÿ ÅPå�Vÿ ¾ßÿ Š Ë­ÿ }¿ÿ @–=[þûþ*€,z·ýöÿ üU Xõoûíÿ øª <±êß÷Ûÿ ñT ycÕ¿ï·ÿ â¨ òÇ«ßoÿ ÅPå�Vÿ ¾ßÿ Š Ë­ÿ }¿ÿ @–=[þûþ*€,z·ýöÿ üU Xõoûíÿ øª <±êß÷Ûÿ ñT ycÕ¿ï·ÿ â¨ òÇ«ßoÿ ÅPå�Vÿ ¾ßÿ Š Ë­ÿ }¿ÿ @–=[þûþ*€,z·ýöÿ üU Xõoûíÿ øª <±êß÷Ûÿ ñT ycÕ¿ï·ÿ â¨ òÇ«ßoÿ ÅPå�Vÿ ¾ßÿ Š Ë­ÿ }¿ÿ @–=[þûþ*€,z·ýöÿ üU Xõoûíÿ øª <±êß÷Ûÿ ñT ycÕ¿ï·ÿ â¨ òÇ«ßoÿ ÅPå�Vÿ ¾ßÿ Š Ë­ÿ }¿ÿ @–=[þûþ*€,z·ýöÿ üU Xõoûíÿ øª <±êß÷Ûÿ ñT ycÕ¿ï·ÿ â¨ òÇ«ßoÿ ÅPå�Vÿ ¾ßÿ Š Ë­ÿ }¿ÿ @–=[þûþ*€,z·ýöÿ üU Xõoûíÿ øª <±êß÷Ûÿ ñT ycÕ¿ï·ÿ â¨ òÇ«ßoÿ ÅPå�Vÿ ¾ßÿ Š Ë­ÿ }¿ÿ @–=[þûþ*€,z·ýöÿ üU #* ,ÌÀ’w¿Aÿ  
Þi<„˜ŽÇx¡”Ì
 <Æÿ žsßÅÿ ãÔ y�ÿ <æÿ ¿‹ÿ Ç¨ óþyÍÿ ÿ �Pæ7üó›þþ/ÿ  Ìoùç7ýü_þ=@˜ßóÎoûø¿üz€1¿çœß÷ñøõ cÏ9¿ïâÿ ñê zHŒ±t(2Á�²'<1àô'¡ y¤òb;à~†P0( óþyÍÿ ÿ �Pæ7üó›þþ/ÿ  Ìoùç7ýü_þ=@˜ßóÎoûø¿üz€1¿çœß÷ñøõ cÏ9¿ïâÿ ñê <Æÿ žsßÅÿ ãÔ y�ÿ <æÿ ¿‹ÿ Ç¨É ,„¨[¦ç<ãœ®Üãžq@ÈŠ •ÊõÚçŒóŒ³¯8çŒÐ|Æÿ žsßÅÿ ãÔ y�ÿ <æÿ ¿‹ÿ Ç¨ óþyÍÿ ÿ �Pãpí°‰±œ3žGL‚®Ã¸Ï9äPÚì9ê:’OAÜäÐÐ@uñ'þ<"ÿ ¯…ÿ Ñr×±—_àúTOšÎ¿Ýãÿ _cÿ ¤Lî¼?ÿ  ËOúõƒÿ E-yõÿ ‹Sürÿ Ò™ìá?Ýèÿ ×ªúB6+œì
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €+^¨“þ¹¿þ‚hj ÇŸ^²¶¾‹J’B/.¼q„vÊ�ÙbÊ¥|­÷˜t¢>ó’�ÙW~Iÿ KO5Ý÷R“Ù»/7§OŸçÙš�*DU]•L‡j@,ÛKmPz�ªÍ�ÎÕ' 4y/_—Å}áçÑ~®ß›KÕ’PrJ‘c{*î`«’XôQž¤ö“G—W{|“oîI·ä›èkÓüÚKïm/V‘% gZj¶·Ì©ïgŒÊÖ@æ2ß2�ã`óßæ’|ÊënXKåQ9AüÔ[î­­�èì÷¼ãó¦Ôf¾M¥ç}.hÓ  ûŸùoÿ \þÖ 
 ç/üCö&Dµ¸�m‚y�·
¨eUÏ³@PåˆQ“J/šét—'«åŒ¾ëMjüú!µk.®<ÞŠòZÿ àäM¤kÐêÅ�$–ò¡ÝL3ÜÆî†7‘V@U¶±*q¸ èZ­¢’íæ”—4oþ%ª{;5~hÉ)½�žŸ“¶ÿ 5Õ=zìÓ5ä¸Š&HÝÕRDjÌ9 ±
	Ë ±8 “À¥ä·µíäšMú&Ò¿v»�e~—Kæö^¯¡5 Vžî+V�%m­;ùqŒ¹ö;ã€qò£œ1œ�µ|«{7ò[þa²o¢µþmE~-"F”#*Ù|�…bNæ ªqÐ± žIÅ^WüRûõZnÕÝ¬›Fß}¿þí7Úö[µyh  
ó}ø¿ë¡ÿ ÑrPß—þºý SÖ5›MØÞ_¿••RÛ]ùc�ò¢³r}¾µ.J-'ÕÙzÙ¿É1¤ÝÚè®þô¿6Ž?þ¯†¿çìÿ ß‹�þ5T#·Óõ5Kxï-[Ì†eÜ�†\ƒßÄ
¦œtzhŸÉ¤×àÉMKUÝ¯šm?ÅŸõéÿ \äÿ Ð¢©(k}öú�ýP@ y×ÄŸøð‹þ¾ÿ EË^Æ]üY�ÿ éQ>k:ÿ w�ý}�þ‘3ºðÿ üƒ-?ëÖýµç×þ-OñËÿ Jg³„ÿ w£ÿ ^©ÿ éØ®s°«{#Co,ˆpÉ°=pB’<uõ¦Œägíß0ÿ ñªAqö�dóÝ‡™•+yHâ0zÐŠ Ô¤0 €
 (57m@Ø4EÉiVBêwtC„\áNþ0nPGU'³‹†žSö–ÿ Ówë¤•ìî„ß+Šþe-Ãìÿ ù;tÕ;]4ÂÃS{»›‹Y"0›aº±a&ü*¿s |‚3´äPµ�6Ï™Å®ÍBœ÷ïûË;itìÚ³í.Oî©_½å8ÿ í—WÖÏT™fþk¨T}Ž(çnwy³Q@ÿ ib™‹Ãf:îeã2ß.½m÷Ó²Úþ­-7)+úéoø?ðzì`ÂM-Ìi%�·�›d»•d”DR97Xð’	ec˜Ç
	”R´9¥/‚6»¶º®o‡GîÆÎI´Ói$Úvj-Ú:s¹N)}›Á¨ÊòìÛ\­EÝ]»i~¢Þtº‰'�”•Ôú« Ãô5S‹ƒq{Å´íÝhg)ÅMlÒkÑ«˜Pø€ywr\ÄÐ}…ÕJïWvßr¨ù~@äÊhv]ßÇƒQ´Tº¹8%²¿2ŠÕÛvÖ®Éw¶¦–´¹zróß_…9¦ì®ôPoMZé}:&¨Ú´M7ú1Um Û\‹‘Ó$HÂ(Õde¸ÿ hÕÚÉ>ý¶kºnÍõè¿EÕ­­ÑüIöi]/½õí«—T�ß›	Aä´©#8ùöº&6¨mªKðÅ·psà˜Z©µ¼ytïÏí-w­¿‡}/¤–Í8�û²Œ^Òæ×·/³½–—øí­µOtÓ3W\»¶�ãÔ`·‚-Úâia¹–-!w!³„’ûd+´±ÄmÆp+;ù8Åi£”�’¿–�öæ�ô•Çgx¨«¹7ÖÚ%«ûÚZµ}m~V>I¬Ë k8fŽÞYÌ»\<žX�ùd<jÒ¢»Q�Ý„`¼¨êÒzs9F=u‹”lû^qq�®ÛµÒNäÝY¸ëË9t´\TôîÔ›Z+;&åîŽ²ñ
ßÞµ¤gÙpw\�r|²U™mDlL[ÁPï*‚ÁJí,GÞ\Ý,š¶º;8ót�4_2ÝÙÆé6Òr÷Z^v×Eu{¨÷qiÆZ+5%Ðéh  €
 §{%ÌH¤I4„ãl’˜�YœG+vÀHÎX-zmým£×îV¾·²oN¿#ë—rYûx ‚o<OrñÌ.Èû;YüÄÊ9ˆò»Nß˜€7Ê”•Ü\a(Ûâ|é5U}uI$ÝÛ²èÙwÉö”œ_m¯}>wK—gªi-ÿ ˆŸL±†êx1s?—›e“%7“`ùb76À•AË©«i*‘¦žòŒ[è¹¤¡5Ï$•µw¾‰I¨OÜ•[h£)%ÞÑ”’Õ+^1rwøR{µgo_ÖF‡Mˆs$«7}ž%Ü¬Ûž_.]£
@ùI©¬Û´£m[ÝÚÖ‹—Í¶’KÎû&h–’–¾êOEÞQ�É.k·Ù›Q½Kd¸†y‰F’L]QÈò¥û92–^FèâOWæÕ+¹_–*ïO{k´£{ig¼£};»(.{%k·e®›Ù6÷×M“¶½•ëÇ¸"FÌòÛÛÍyI^äÍ¶-¤|›[¤rJ¢–fÂ¡'IEÅÊ
ÎQœ£½•¢¢Ü›éÍ®�ì’r”bæ-8B«Ò2M÷jÜ–K][æÑ]-/{]¦_ë÷V2È¿f‰â¶Š	'"á„™™�vCÙÊÊABt‘$ 5*Íÿ uÕöQ}nÕ6›WÑ~ñ^ÍÙ&õØMÙmï*~Ñ®–\÷Iõ»}Õz�]"‚€
 (9Y‘‘w°ªäÄ'�“ÆO½'~Ÿä¾{éÞÉ¾É½·³Ñ×ü$[‰¢º·Uº„À8¦2G!¹sCÍh¢*w©óŒì\8ßœSÝ.M[“…žŠñ‚©'}tPwz_F¹vºø_½¢åæóÝÅ+iiJVŒu³o}%i¢Ö§òn<Ëp.¬Ø‰%‚E‘et�ŒeO?ºXÛ ˜””`ê-Ty”ºYÂ<Íu½Ó‹‹_Ì¯ËïrÔcy*}Z‹Vê¥'+4Ô®ŸE£wW‚÷ÄñÚZÛND1ÉyÊ¢âá`…ª2NQ±ƒ"¢…�™Ù†.æ]§J’¤š÷[Wz_V’K[ÊVm-­6ôWÎžœjÙ«¤ìµµÕõÛE³}ÚVÕo5ylÖÙŒ!ÅÌ�Æî’ƒX/ÈÅCË‚r—²Œ’¤…¥oÙê¾+6¬ïNv¶¶ø,îôrVæÖÃv‡:³øvzZS„¿ý¿ukìÓ¶�Ës©½½ì~QÙp\	K¨ ¤m&æ?w¶Ì6îç\–Ö‹’óJTãò_¼Ó­âôJÍ¹>^WÞJ>—Œåÿ ¶z{Ë[Ý¶©säv×*Cpï2,Ûä,ˆÒfH¼¥TFTb¬²ÈA*T·Öëí(¹ÙvN1µÝ­+ÍtqßÞÚî^íšÚé>Ží7¢ê´wëÖÖM¥³Õ.ïìw�,ñ4Ñ˜æ2üˆèŒ%Tb7Ì‹€¦T?6$;yi]K¼yom½îkYèþÃ½Òékëaû­[gÌ“Ùû¶éÛ]îí³³jöµE4óöÆÿ 0ìI+È#�œ¬b<•a�Ü£î ¢®âÍË—™ïh9[m¥Ý½­y$ÿ Ä¥uÈvÙmy(ÿ ä²•­Ý¨¶½-fÚ3,<UkyiotË4ov�Ö‚âG.ãµ!ÞbRê<ý‚&È!°Elãir/òµÛKšÿ ìì¥fÒodEì›èœ—›·e»Ò×Q½›³ÔžoéÖò´)’›÷S…åo”óH)mòg†<ViÝ]u½»¾Y8ÉEo&šwI7ozÜ¶eµm–µü“I¦ÞÊ-5ï;F÷WºiL5ë3n.Õ¤hË˜Â¬´¾bçr38eÚK)ŒN4Þ–ìÕÓZ«-ººI=öz=tÖé}�ï¦ök{nšjÛ¦šÐ�¼I`¾XWyh¼èÖ(g•š<ãvØ£v 7�
’ H¡èÚþT¤íµ¤¤âï³RQvië¥·Wk£ÚíÅ_Oz-)'{Y§%{í«zFVf‰â;}j(�CÃ$èò,rG*|±”U¤�€dNW çŒàáÚÉKO†z­9ÓuÓWÙ«KiFó³k´åìõqoîm+ò½U¤·Œ­E|]k<·E½#·µ[‘pÖ÷Ö¶â<´c¤H<ì²Fw#buqr^ëºVi­Ômtìïy[—âKÞvZšZÓŒ,Ûr”ZZkf¯ªÞë›dìµm"ì¾'Ó­d0M6×Œ¢ÈÞT¢4gEt&Ã~b°òÃ¸ÜÇb–pEW[$÷’KvÜox¯æ’íwºZ£5ð©;k+ì¬ÛŠ“_f7OW¢êú–_²xè;�ü¦VŠe”Hqˆü†ŒL]ƒ)T–`À¨ ƒIéËýëÚÚÞ×¾×Û–\ßÊ“nÉ1÷[rêï¢³µ�Þ–wI=›vWz¬¯aÔ"[’ÈI«#+)Ã+#…te#¬¡�à�NÖùíguòkMôõMn…}×mÖÍuÙù4×tÓZ2Ý!…  P@  P@  P@  PkÏõ×7ÿ ÐM M@?â¿
Þ\ë¶÷ö·rC%Û-¾È”£Ek'8>àIU~iõTW$Úz©^¤º+C’1�y¸'óvÓGQÞ	­mõ÷¤æùµÓÝ�;óµºž�«�·pô»n¼ÿ Ë�ßsÉ«Ž²“ÿ §rÿ Ò©…­NkÊúr)cçÅ�ßÚ¦Y.�ÌR¼²³Äª"¸‘Ëvò”ÂÑ)X¨"F`kÿ +ÚøhO™ô›�zïUñJé4�îýíJûmÚü¸‰EEixûJ‘åÓ{èÖíY(Ú:Ò=­Ýœ/4¯åZßÂ%º�Q¹–Ýƒ®‰pe]€¡“!`v*�óm—ñ)J+—Þ©¯üº›VoãNMAIë'Í¬ÚyëËRæv¤î’éV)Þ+Hµ)J+D¹gÒ.:‡Uó5¨ÖÝØ¥<#]ÈÍ´C.3c°ÅLÈ9Ë,�Á•È©§¯£Só³MÚïìIYÚ+ìî¯vœì“¶éSk¢´œk~uiÚN[M»="žM´÷ÖÞm¦|ÕÓ›g*¦õƒ°!$ ªn`DnF2ÏÊp†‘]½žK[.W
œ×káV½åöW½uk”þ7ßŸË¥ýîxrÙu|Ö²ë·RÝ´³ÜD‹Òiom£eÔf¼uÊ¿œ�réŠl!2JÅJü¸ÞÚÓNúÊ¯’åT&Ôn�åi§+½uŽº+g{)É[HÒßV¤ëÅ9Yè¯km£ºwiú|QˆQc\�€(ÜÌÍ€1Ë1,ÇÕ˜–'’I¦ÝÝÿ $—à´_!¥mùþe;Ÿùoÿ \þÖ¤3B€<ÓÄú”º\Z„°*<�5¢#$qãËFmï!T@QYAb2Å@É £.Wµ×Ö%~öT)=;»¥d®ßDik¿J·««Z+äœ®úY;´µ5á³µ[ÛÛxÌMt&‘”—óbóä'j±c–Â‚[9­ù}�IÓOHÓšÿ ÀjÑJÞ]—ùÜÜð§7£sƒûéUûýL­nk›Û¹§´µžäéáÞXšÜ"ÎŒ³\æÏ„:ˆà}‘¿E9ZÎ2P^ÚZ.m÷ýÔ9¡;%¯3æ¬­ÕÆœ–Æò\ßº_ÊîµV©+J›{/rÐš×iÊ.É´ç’î[é/oì¤™ü«8&´�ö–)Žï%HY�¤#†•H]à·E%'ÿ /ù%%¯,9h98èöR”“³òø¤œF\ÒŠKþ]F\¯KÏžµ£'£Ž±Q–«û×åV‚t±¼ûXÝËr�|¢G2JêßdºÜ¡ÙÙ f}#1˜ó”XÛš^òÓÝå«k?(h¥{É-wzßWªÒoâµ;Ý[þ_CWZ/},¶ÛBHÖw™4Õ¸œ'›¨B¯æÈdå#FL…‹»D_äwbÃœóX§)$Õ¹½�V´Væ§‰„ ÚÛáV–š§+üNîêÛÝU©+vXiNJûÙÉßÉÚÛ+W¸Õo®ì¥¾BÑ�½¬ Èñ"qöÙ<ÄI0¼“2ÆÍÆî¥ya£ån3ZB¤œ•åËjjöi¿³'VêI?yr&Öé$ãxo:qi»_šNIIÙ»I*IT†ÿ ÒOÝ}/…d’Ki¥†â)òL7oz6¦Q®dDwa&öù·V¸€*ÞŠ7ÞÏ[Zë™Ûmì½Ûõ¶·wd­Ý¶Òê÷´ºú&¬íw«mY4—A7ß‹þºý%AAß—þºý q¢ðíÛ¡*Ê" ƒ‚ŸÈ#‘Á#ŽÆ±žŽâ_“7¥«iÿ $ÿ ¶¾æ“õ>P}fSn±)‘fV%¦óæ%—œ)Bû �ž=Ílú[K-|ßs¥ÿ /#ì¯	Ú5‰<“i'¹&%$ŸrNIîy­ëiRih”š^IlŒ©ü?9éLÙ?ëÓþ¹Éÿ ¡EX�o¾ßQÿ  Š (  :ø“ÿ ×Âÿ è¹kØË¿‹/ð?ý*'Íg_îñÿ ¯±ÿ Ò&w^ÿ �e§ýzÁÿ ¢–¼úÿ Å©þ9éLöpŸîôëÕ?ý!Îvµ/øô›þ¹Iÿ  hF¢}Ñô¤2†©þ©ë´ú9)ˆ±Ha@  PKX¹Ô–÷+å­³ÃŒ�ÛšDpqŒmÂœœç8ã½ÓŸûÞÎßöçµ½ÿ ðb·Ïm.š»ƒþ_iûÙÚßø¿ËäÈ´¿ô»¹§	$qÃÂ7d"È®Jí*ÁÀÆ[#9ºIr¸>µ%?+8RŠùÞýÚöz©©­-Ç³º�I_îš·�þyúŽ“41Ei¥Aj–`¹šßÌkE|ãjƒ¼À£ÆTÚžgÊ¬Ì…Ñ�[÷µŠVIôw¾Û5¾›]Ý«¤5h§Ë¤›Nëµ�õÝJü¶kT“I­
ú¦‹q©¤CÈ·†_)¢‘ÒêáDHO#ŠVî 9ò§1Gž6�I$¢¤ä›|²K™õ{ßGxÝ]òMó5w._²È¾T¬•âß*Ù-­f¬ÕÒ\ÑV½’¾ÍnÛh¶V�ÑÁŸkÌcC0E]�|ÌoÆÞ1œb´rnSžÎm¹[K¶Ó×¾Ë~Ë±œb£Ãu”oÒÉ­;nöîû™^{ÄÔ#v@/¥ŠH² b†UÂä!ù””=A8í[â…Oh»;MM+ô½¬Ý�¯t™³i¾©:N›¶êþÒíz)«y¯™wK±¸ŽâkÛ±RÎ‘Gå@ìè0‡.ñÄYÛÌ#ýX
ª«–Æjö�*ë''åxÆ6óønÞ—½­¥ÞzÝmîÇ•[®­ëÙ/³lÜ�ß5•†±s©-îWË[g‡;·4ˆàãÛ…99ÎqÇz˜éÏýïgoûsÚÞÿ ø1[ç¶—»ƒþ_iûÙÚßø¿ËåW6©w4f#ws#¼eË˜ÀUÛ«à
U¤
8f}¤ç$ZF1ón^|Ó»ù¨rÁ7¿*ºKB´sæwå´R¶é%v¿ð79/ñ|–lº-ã¼–ÊawÜ»îq2•hÝâXÂle‘ãÿ XeRªäylTE(ò§´%)GÍ¹Ê¤oÛ–r¾—ºŠVWmK½¤þÔâ£.ËÜTäãÕÞDíi{×kÝg \[K8�m-nfºŽE-ç¹—Í>[&À‰ƒ1(•ÌŠ yi¸•!î¨ßxCÙ¤¶k•E7ÛEÌã­êZwV°å¯2_nJM½ÓæSiwÕY7nX>[=ÎÆ€
 (  ]nÛˆ’;Ëþù^i-ËGµ¾T–8¦d%¶ä…fà¬¤‚&Ú««ÆÏNïK][XîÚº»I;Çš-ì�´zYö]mÙôO¥ÛVi2»éÓÝÚAk$p["M–(dgŒCÞ¨„Áw2Æ
"ì.7ÒþôfõµÛÿ ¤¡m~ÌœfŸG’êOÙ”vº²ômsßüQç�]ïtö£¯øb]TË5½ÔÐË2F›1nb‡À/m,«“–!_øÜ6€irµoùùNo¿¹(½?Â“pNñænúJW§ªjÚòT‚ÞÞüZ×²wJN6|©[T�i´áV‹{�®¡<Ù&h¼¥Ò<pÈ¢S6ã„ˆFcÀMS×¢WæºW²×ÝµîÚåÑ¦ï~½Õ­¥Þ‰jívõ¾ÖKK4ÒÞúZÖÁ:&¡m6‘%µÍ¸3I</4¶ñ™%”Ê¨¡-çßoæAm6ï´l×UB1o¼UœœuWÒ.¾Mw’Œ�õ»ÙÊMÉ.ÎÖIèõÕÔvNrÖéJQvnt‹»£¨æ;k´·�!hÙ¤ÉNÒFÙHüËy¨¬0¬Ûw�Ò6á»†­É·}¢ãã-ÚÖ7M]ÅÙë¬[ÒQŒ%¢N{oùyeµI;§£MÇTÛ(jžºÔn^äÛÙf·Š1;I!šÒEów=¹Û›@ÈD¶ìJŒíëDmù[_¼çR_�-5ÊÖßb]\m-SWMuR’R´RqÔ§+õÝI_K«o³;Å@ä€}}èz»­	JÉ&îÒZ÷óH  €*ßƒo ³Ø.67”dÈ@ø;K`1Ûœg
~†¥ÞÖ]×–—ÖÚ5{^×M^×V)Y=vþ­ÛKï­í±Ë¦‘{%»Fñ[Á2KÂH.e¸3M«~ýžÖPÁBn]û€ˆjïgE[•»G¥¥BZêù­&îÔ›–²o[çk§}¤¯.©ÆJP²Ñr©+¸¦•´V½Ö•®�rRê[Ÿ-n/6FÌñÆ«–Š‘ùÜìÞZrØòäåR7¥*PÞ\í·¢æ”Tz^ÉF1][wz^ËX>Z‘¨Ö‘åV]£)Jý5nOÑY]îQþÅ¹µSÛ¬\YZ›VY]Ñ
ºÅ¹’EŠF4C Çó£0%N+z’æ©VQøjouªJRqÓf½çÍ«¾WÍîë…8òÓ§	|Tíkm~^Yzlš•�’jÞö“�
H¬m,‘�›I ‘‰TˆŸ{Q»¨�IÀ¸ÍNÓƒW´ŽºÉþæt“}ÛrN_7äSMÆk¬¤¥ä¿}­z$š_-ºhÞØ½ÅÝ­Â	jò³‚NHxš1· ƒËrG2x¥$åÑÓ”>nt¥÷Zçm7³’ºŠ]&¥òP©¾ó_+üó--u4»yî!µ“sH©7Ú¥/$’ˆ�@‰�ÍÄÙv‹°TP•Ôl¬¤Ö½S•´WÑò'¢Ke­¥7'*væþêjËk-›ëï5w¯WËuZ-8_iaîu8!,Ê<éíå¹º™Û8UKu²VX�bUˆŒÄ1.æ®¢¹UÒéÕ·ÞM[[_[Yi¨ÆÉ+6ï§]Ý’Z»GîJ×¼·mË{'Üö÷VâDŽÕåÞ'‚âÝÏ™ Ø³Å`Ÿ»×’F*oÍÚT§MwNS¥+Ûµ¢õïdºÙ_áKxÎ3ò²…HÚýï%§mú_ h:‚XÚZ¢ÁÍœ~J]%ÌÈÑª„UqÛ�0}¡ä¶•ÄDª©wá—nnjžÑé{9%ª~õÜm¢jÚ);8ó6’jí½¤·NRqèýë´î®ã%všWM%vÓ²Ðm
s¿æ�çÔ£¼·ú´ò²Ë÷ÎÃ�÷z|Ã¶q÷}Ÿ÷=µÿ î'·å·§µ�öÙÚú^mOûÎ•¿î±æ¿kû9Z×Ý^ÚÚ�ý|ß³ºšñçxÄó[�¢DQçÃHŒŽ»Š ÃŒ ’²„^ÉTN×ÑÎ´ªFI+sZqqm+»ßÝMßYÉnÜÛhÒŒ]ïËyEII&ì­oyÚ}AŸK’7•‘„v¦†v%Œí.rà±HÉf,[®~ñÑ§Ö�ée­(TŒ´VV¼×-–×ÑlMµMt�yo}*ÎŽ½ZQ|×ëmÌ[«ì¬ítÝñ%òHÑ[ùnYÞÝÁŠiJ”Bž\oæ°ÑdŽ1æÀRIIÂÛÙ(U] ¢¯fµ\ò¥4µ|«]M¹yê-ÝGR�ÿ �Í´šëe9)$ß¸Üô¶šº‡‡çvºŽÐD°ÝéâÍw3)‰£YÄxU�ÃFÂ`îV@¼+çÛrææÝÔU/ÝûŠI®šFé«Ý»Y-GNÔÝmNé¯îû­5Ýék;+;ß Káë‡K”n.¬§^[…·�Ã|¼1ò`+’¹8«ÙÅö©9¿I^ß=uüÌÖ‘Qëì/ûzÕ5ô÷×žúw‹RðÔ÷o<ÈË¹¯"º‰DÓA¸%ªÛ2<Ð,Düä4{ÿ ‡r°,•š÷T{§Rúµ¤ÝÕšê´ºi¦®´º’Ñ»ÝmxF;'¬jJ¦Ý�Ò½ÓNï¥žþ‰§ÿ g[ì)å;»I ]eŽ|ë€²¶@\å@©·²ŠÙ-4J×nOmýé7w«¹’VmõmunöJ+ÓD•––F½IA@  P@  P@  P@ ZóýDŸõÍÿ ô@+ƒÒ€#0!�L@óY»…b¥€ú”RÝm{uµþW·æÿ ¤ƒôþ¿¯WÝ“P@  P@ gNAûF;@úþôÿ Q@ÕƒŽAé@W:%µÌ­;yÉ#€Åssm£ •†XÔ�8ÉÆx’å½º»¿[%º)|†úy+|®Ý¾ößÍ…¶‰mk*ÎžsÈ€…2ÜÜÌpÁÚ³Jê	dãŒóT´½º«|®�¾ôŸÉÕí~ŽëÖÍ_îm|ÍzC
 (  €
 ­1H‡}äãÛËñ BG™(ï¼{yiþ€êÒØÌ1¤Ñ>7G"«£`‚2¬8 ‘ÔJÉî4ÚÛOø;˜ßð‰h¿ô²ÿ ÀX?øŠb7!…-Ñb‰V8ãUUP0T`  €:Sm·w«VÑhG‘ö…¨�óø´xþF�Äo¾ßQÿ  Š (  :ø“ÿ ×Âÿ è¹kØË¿‹/ð?ý*'Íg_îñÿ ¯±ÿ Ò&w~û2Ï�ùuƒÿ E%yõÿ ‹Sürÿ Ò™ìá?Ýèÿ ×ªúB66ŸJç;I™7WHäd‚8ç§¥ VþÏAÞoûÿ ?ÿ ¦ þÏ� Ÿ5¶�À4³0Ê�AÃ9È ›O¥!†Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@Óé@SpÁ¨Å g�Ûþyÿ ãÏÿ ÅPc[Ï?üyÿ øª ?±­¿çŸþ<ÿ üU ØÖßóÏÿ þ*€ìkoùçÿ �?ÿ @ö5·üóÿ ÇŸÿ Š ûÛþyÿ ãÏÿ ÅPý�mÿ <ÿ ñçÿ â¨ þÆ¶ÿ žøóÿ ñTj8íÔ¤i…n£“Ÿ®rh±Ñí¿çŸþ<ÿ üU 'ö5·üóÿ ÇŸÿ Š ûÛþyÿ ãÏÿ ÅPý�mÿ <ÿ ñçÿ â¨ þÆ¶ÿ žøóÿ ñT c[Ï?üyÿ øª ?±­¿çŸþ<ÿ üU ØÖßóÏÿ þ*€ìkoùçÿ �?ÿ @A§ClÛ¢M§×,™8 }:–Ý"dúå‡ò"€!þÆ¶ÿ žøóÿ ñT c[Ï?üyÿ øª ?±­¿çŸþ<ÿ üU Y·±Š×>RmÏ^§ù“@7ßQÿ  Š (  :ø“ÿ ×Âÿ è¹kØË¿‹/ð?ý*'Íg_îñÿ ¯±ÿ Ò&z‡ägÿ ^°è¤¯>¿ñjŽ_úS=œ'û½úõOÿ HFÅs��@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  PWy1<ƒ�ŠÍ� &€)m—¼®²Ç�Ã(OæM %ÿ žÒ~Qñº 6Kÿ =¤ü¢ÿ ãt l—þ{IùEÿ Æè Ù/üö“ò‹ÿ �Ð²_ùí'åÿ  d¿óÚOÊ/þ7@Éç´Ÿ”_ün€’ÿ Ïi?(¿øÝ pð¬¡Žÿ *1 $ NCðv€:§PZ 6ËÞWÙcÇá”'ó&€’ÿ Ïi?(¿øÝ %ÿ žÒ~Qñº 6Kÿ =¤ü¢ÿ ãt l—þ{IùEÿ Æè Ù/üö“ò‹ÿ �Ð²_ùí'åÿ  d¿óÚOÊ/þ7@Éç´Ÿ”_ün€H¤Eg.²¿0PA
Í‘µWû¸ ç­ òI#ª¹�c!~P¤’UX“¹[ûØÀÇJ M’ÿ Ïi?(¿øÝ %ÿ žÒ~Qñº 6Kÿ =¤ü¢ÿ ãt ø$t”DÌ\2³B‚
•ùBŒÞ™â€"—ýkýGþ‚(´ P�|Iÿ �¿ëáô\µìeßÅ—øþ•æ³¯÷xÿ ×Øÿ é=Ã¿ò³ÿ ¯X?ôRWŸ_øµ?Ç/ý)žÎýÞ�ýz§ÿ ¤#b¹ÎÁ‚ÌBª‚I' É$ž€w4KûRÏþ{Ãÿ ÿ Š§a]FÕÈUš&f  $BI<  <“ØQa—) P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ Vûþ=åÿ ®oÿ  š m yž¹ãÕÑµøô¹žlÖ2y$yw¶í‘Ä#'“òylpI¥Oß”âþËQŠ[ÊO•ýÖ—n–¾¨s\‘ƒ]nÛ{(«ëÓ[Å¯š}ÝÝßý–KhÂîû\Æ,çnÌC,Û°FOú­»NÜnÎxÁ¤µqíþçoü›!/…Ítåòø¥ü¾+ü¬R·ñ.�tÁc—ª»håHÈ‹>fÙ]6hðK bÊ, Ô&œy×ÃÊ§ÛÝi5$ž­{É6–�¤ìôš|�yœ-ýåwM›åm'º\ÊëR­çŠí­cŠUŽæDžu„¢Ý©.Á¹Æ1·hÄœ„'kb¬ù£œ¹·ÒÜ±”µOguf�šMÍû±bû2’¶œ½t|ÒQÑìÕ�î®›´w”o§ý³j.E‘f1*¹ŠQ0]åb‚� ,c\ NÞ[Û¥þäìÚî“Ñµt„ôü>WWWþ[«Zö½×tbiž${‚¯wåEÙáØnP¥gxú–?.Õ�ÝûTBW�3ÿ ŸxyiÖU£6ÒZ·¬R‚Zëm[CjÒå_Ïˆ�Ê”áï²ÒMÉí¥ôW4Ï‰,/9�ÑD‹×†t“Ìq”_%£åÇÜù0üm$‘Wµ—vÒ¶ºÆ.MYlÔSvvv¶š«‹¯’MôVråNïN^m.´ÑÝèí³‚TW\€À0¬ŒåXSê¬Á ÓjÎÝ»4ÿ §Ü$ïªÿ /Ì­7KŸú÷ûZ�Ë´Äêoy$·�ÜÖÂÜÂ‘¢-¶ÌÈŠIo6	Žæáw¨<.W9[¿üýäôŠ§JZ|å-uü,SÑ¥ÓÙó¿7ÏU|• ½5a¢j7Ö×_Ùú�šo5§òå’%Œ¯–í±wÆ‰‹$;\Ñ·Üyw¤­´”ŸŸÃ¦ŸXÎJÍhâõ³WžoÝiÞéË•y^.IßÍE¦ž©í£ilêZÚé×P[.³æÈ*ì#‰˜`çÍ™• Êànb~\z\ž_‹R”WÍSž¿ÍË{×U/v<Ý{u8óËþÜæ‹~M½¢ËkV�Ü5£¹Æ�ä$+f$�|¸Ô„l3²Œ�¹Ü@*êÒ—HèÞÉ4¢íëi&’ß[|2³³º�Wk.®íÇE×TÓí¥íu|‹¿ÁÙäƒw•-È†C$ÅZ	¤S
²#H]£UCÈ¯’ªŠK[4Ö“ÒÞòqQvqÝhîÓW·£“M{ª;®[Jq�ù¶z7³Þß;�â?-.m°‘;0hfó1“(Û…xž22Êñ– 
	Í-Õ«8ó-U­ÏósmdåÊÖ–ní¥	!$Þ‹~u[[¸ÊJ6ÑÝ¥ÌžÍ+$Ü¢Ë×½¥¦|Ùí�e8ß+¶ÄÆÐw4�òÆ‹—váš�«;¦“Vw»½’]_ºÛJöZ»&®-R’Ù©4öVŠM»ì’RO[oäÉloáÔc2Û’B±V�«¯Š’#`ƒ†PpAèA§kYô{uêÓÛ³M>Í4õ÷]¾[ëø§uÜ�ÿ ÖÃÿ ]þŠ’�Á?ÖÍÿ ]þŠŽ€9Ïk:—-ýŸ•æBS&pì�YÕI"2Ÿ˜cúñYÉ¸¸Ûg+?K=¾i|®ió]uIµòÕÿ ä·gŒ7Åmu",,v¬†Þø!aœ€ÙÚO€sÁ­6²Úú¯Næ~�7ò=ßÃ÷³jZu½ÝÎÏ6x’FòƒùÆàT1,Räw­'IröµïÞË›ñ½¼ŒàÜ•ßymÙI¥øoæj§ü|/ýs“ÿ BŠ³4#—ýkýGþ‚(´ P�|Iÿ �¿ëáô\µìeßÅ—øþ•æ³¯÷xÿ ×Øÿ é=Ã¿ò³ÿ ¯X?ôRWŸ_øµ?Ç/ý)žÎýÞ�ýz§ÿ ¤#b¹ÎÂŽ©ÿ sÿ ×?ô¦„XXS�Ò�ÊZ„j‘¡Îƒÿ GGLF�!…  P@Òù‘k~Y–WŽK9$òÙ¾E"h”mE
¼~b�Ä# Ú¢}&Ÿ_{ëôÒ1VVºŠnîíÌ´•;iuVë§»ìmùÉëÝÚËB==æ·¿¿Œ¼×B8íÝ™rY„Ä¬`˜âBØUqNvÎZ”t¦ô»Ue6•*VíÖR•´I·Ê’Ðoø–½“§ÖÊõ+.—{$º¶’½Ù&£$w–È÷‰yhÅŠ¥¼sysÈø;@k9Ûw ¶<ï-W/0URUI?±¬¬ì—O7wM5wŠæKwbâ÷¾‘M]¾ÞV»ù/yÛM7ç5{ok©=æc±R’Y™qöÅÝæÚ! ¶›�¶­ûÒàv*K“ÚNæŠN7VƒJ-ÉÙè¯%¬eª�*†¼Ã„Sä‹O•ÎJJþú‹qöjëÞº‹’n/Yk&ýÖuºn£qr°,¶Ó/›r<ù€D®Ñ†dÚfóÁvÿ ©Æ{ãšÞ¤TgRÑFRQëu{+oßí[gå~zrnäõrŠnÚYµw}¿ò[î¼íÍ=õÎ™ªRIn$‚x#ˆ»+2™míFT±®F“hU�9È5Žð¦–œÕy/}m*‘ŽîúÙ¾[ÞÎÚt:”œº*.¥º^.³Z+;Z);;´·¾¦Ç‡™íåžÊá$Žâ1¬Zî{Åt—z«+Ì¨c;¢pñ$hŠ@+�F/ìÝh”œmÙÚ/Fï)+I[™Þ÷Ó«ÎÍ=~Òº~ŽÎñVŒZºo•Y¦¬ÝšNHõ¿(Ë+Ç-œ�°¶Hš%UB€@'A““—# DUãV/§²×gï}bökmV–øSw•Û$í*muUtéîû]uÝ½oñ4¬´3­4çŽòåôÙ'&Ò#
-ÕÝäð=ÓªÉ™Y¤ù"SÊ Ù’A÷‘qQ~ë—II%§ÙŒ­9'ÝÊð[YÓ{Æe4¹£}=éYÿ 2´cÚü¾ûOu*myÖ»–cçê^tË5­ô0GÊâ/|¼m
Ÿ-ÌÞc°wC"—M¬¡E(;{6•ùç(Êÿ ËíjRMt�$b§uk¸»¶›D»µR.×§O™réï*1¬ïÕÞO’ÏN[Y)^Eôßk¬ ÿ K†9¼àZiŒ°\6Ñ"¬	eX<µW9d¶,ªT	I,¤>Òíìõ•Ôâ¹ùµÒÎÜ©ý´ùŽŽe¯æIµ¢·$½Ö´Õ»>f­xµÍy%.Æ€
 (  ­e`h?Òdš(Ã ’XäsÈXÔÀVbI …�ƒ1 ®Až«vöI;]ïÝl“nþêW”¬•ÓZ'²VÕ¾ŠëóvJÚ¶ìµhã¥þÔe´ÒÙd’I"¹�Ã]=³ùqËÃ·P¬²ïHåQ!‹&In“ar÷»mëÉ
|ÖÑ9ÉIIÅ+]Þ²|°´›vj(ZEiuÍ9(ß[Akg}UîšzÉ%Ë®²Z—š¬‡G‚k‘^åíàPÒn‘<É'Ý,†LºüÃÍo0–ÃáÏKß”uŒýä×¹xû)U[k$’—/¼“|¾õ˜—¸¦Þðn/í{ÞÑSv½¯i;ÅJÑvJ\±nÐ[˜E´¶—¿i·{iÀtŠúîáåw�^5Šã)tÁ•�ò”G†VÊ”Ë2mIEÆí§((ìù•¤úÚ^ëRæ“åQ~õ¹}×gÓ²MFwÝr¶ãµ½Öå­vì£w+<ë©u5¬$šIK[Aw<ñoÏ™
Ël»eÚJË,ò³ù·J™æ$Úi7)µeQ›Ú*RRR¨¯eª%&ì­MIY^Éò· �Ý_qníj²Œ»Î)CVí&›»�Ýé5	¯uQ42°³H®a�QˆId�Q¤˜ã†Øì"Cü,’ãïW4ÛŒjÞéº5dº8û9ÓŠkª“rž½aìÚÝ—IÒKokNþ~Ò�IòùÅEBK¥äÓÖ%oM2Ë ”^B·K&Û¹ÚçÏ�ye¦‰�ÅÀ…T?(Z&0(yy®é¥U‚VQ’å�ÚŠ¼Ô®úÝò-%+8ßNeÍÉÜ)Í»Þ6”ºI¸ÆQ²ÒÚ)¿†:;kk/E¬Â€
 ()Ô4nŒ`«à…*0rÀœ€GPO­K²^ó²Z½m¢Õë¥—všvÙ­ÊWº²»¾‹{üºœ	ó­¢“ì²Ü­�ÔöpBòË,’�2]—Ç$îÓ$r+*DK02Ä²3h•Ü)Í4Üª;m%ÑsŒek4Üá+§ï¨ÊÍ§¤so•JpÖÑŠ¾ñæ•Ed¶´#%-=ÉYidÜ¯Å�¦¡cóùvÛ^72»Ê¡áÞÑ¥ß)†àw™8
ê�ÏROØÎ{8:‘VÒéSŒâÝ­¬\íukò.kûÜÛA/kt”iÉõÕÔœ]¯Ñ¨+­µm[KgÍs{{�e yLö_h”ýªKRæ5·\5ÌK$ë“)cå�ÎÁCº¦ýÝuWï«$½ØKD�¾)M+%k´¡d›P³mê¢sR¹¤Û÷¦–¶¾ÐMÞûs6�Õå£IjÚ¹stg´Óîíäžk‹XÌFBIPŽ%rL’ž
’ò2¿,C¡;ÔƒZÆq”––\¯V¤_.É¿uÛ^WËmoRÒ[JŒ]�õUéÂJï[|ImtÝÖÉiê>dZ¥‰Ye	+L­ìG…·vUqÜË–ÁnÞs0ø¤¿éÔ¥èÕJVídå®þóMÚÉ9è ÖŸ¼KÕ:už¿4´ÛÝN×»p-»Q^Î[‡
òÂòÈðdo.�›ÊYUÊ7îP2"9³"ï#´¿—•¤÷n|ÑÕ7wd”Ó·¹ÌùR¼Z…K¢ûIÇE¢QåÙó{­'ïj¥~]$ºL—Ìö’\Kf"e•ç–IVK�ëƒ˜Ä(E	<��Ê¨FÁ~ú>Wö÷¹�ÝåË+Ã—™»¥ÍuÞD¾%mÓ—5´KkFÛ];ÞÚÇXÊíû¶u»‰"žÖDBI�ÆÉ%ŒÈbe·‘ƒ çî¶BW#9¬dÚS¶–£9]hô©E5~ÍJþRQ•�¬ßò_­HÆÝ5…VŸªq_'%¥î¹½;WÔmt½:[‰cÙ=º<×�o4Ê™XÊ$¡n#0gg»‘Ä!“æDÜvI%UÃmRIiÎÜšj/U½Õùœœ´ÚÎ5JMn¥?ûu&õåÞJéèšå�“º÷‹sëº˜–CµòRýlUY%Þ|Å�l¥Ä›~Gš0Ÿ¼QÄ‘žkž7’‚z9û[wÙJ¶­}«Æ“V¼m'~k>TäÔyÚÚÏçí-/ÒÎ¥ù¬ôÓ’ëšS�vé-�d’î¡º{bâÞâe“bù›¢µŠS31V]Ëæ�˜v,À KÝFQûJnÚÉû•%Mê­h·ó4íÍÙ·q­âþËŠOHë(F¢ZÞí)5e«åoEt¢°×5]àŽßìöþe¡žF’œ‡˜Š¬~lªØ-‡!ÓXx?�­§Fi]7ûØT•¹–�—–:¥ïkµÓŠM.TîÛ�h¿³¥)Â7³»NJOG{];û¶”³wccg>§,sC<33JÕÕãO5šPù�',ß.J  s‘»EY6ý�9¤·“´o®ç.xZÛ¸Ô“Ý%|­ÊIÏéÃmsšOû±RJ)tç„ouyR}CT�ïç¼h"Ò¢¸6�…²]„›‚§æB³ƒÍMŠlÜÔâ£FV•ª¨]+'¥+´�ýÖ›´o»æmìT=ùÑp¼c'&ºIGš<·kNtš×dù’N÷W®uýF�à[_³ÚOin#e�;ý¦;nC«íŒFóƒþ©÷ Û„#{U›’Më:•!}íË{Iÿ 6ÚÇÝ¾üÊöXÇà‹JÖ¢ªµ²ÑÏš+·»uëgºkgÜx–îÁ%·œF÷QÞ%ªÉ½Ä‘áíÖëÌû,O,ìU7)D�î`º!%câQåÒüüÚ^Ü�­-oŠñZ´£vï+%-,ãÌÞ©F3Jöø§ììÛ¾ªI½¼¬’MéÑh:„Ú�¹’á9GL´3[‰ãl‹àJŠÀ�•‹aƒ ÌM5¤^×NêéÚÒqÝwIIhšRW3OY.‰«;5{Æ/¯fÜ[Ù¸·ämT” P@  P@  P@  P@o¿ãÞ_úæÿ ú	 Ð¬xfÛRÔmg0F<¹MÌóyk½Ú	M&7¹ƒíÉ\E‚:QrNKE».ó›Ò^|±S×u'á?z�Ú^�W”—•åÊŸtåæo_Ù=ÔÖ²!P-§2¾s’¦Þx°¸'tªyÀÚ	ÎpŽ�¿î¸üÛ‹ÿ ÛXïîÊ=ù	Æ_’3h­m a�hó3«âH®(>[*†Êð»Ž€%h¨´�¨F“]J’öëöo¥öÓ±ÖNö½iTMn“œä»{ÉK¾÷×©Z=þ;uå+CsðÛµÄÒÄ‰ÚÑ‹—‡Í²YWÉe�mû·ö¡)6Üe6ß[Nœ©Û¯3NN\Ò³•ù[Ñ2m¤¢´MBÉmxTS½´QMEFËEne»CÎ‰.¡Ôî­7-*Ÿ´OÌF9Qc¡VÝ=ê<ÒÎÎl¡8¥wW½¦Ÿ[ó^Ï_†ÊË•àO^g-SKDÔ4ÚÎ.KOŠíI¦öm.]œjÂ%pöæ‘ý—ÊZAûÅ¹7
r¡!áY•–AÎÜ³Œ\R]c*Ý«º
JZ­RnK•Ùµ»ZYÓ~ó}±7Ñ;*î6ÑèÚIÝ=/ev�Õ›oJ»$dXf[˜%�›Û«ÝñÂ =Ê++#a ÛÎKfµÙÁ­£*’jËyÑ•;ß«Ö7½¬–�ŒÚº’êÕ4�ÞÑ«�[¦ÎÖ¾¯[nvÔŠ)MÒçþ½ÇþÖ ´æ,³’ô^Y�pŸh–Ú@ÑÃrC¤h¹x-n„l²*žcbvã¸0Æ)î´q­)­ötiÅ?4¤ž—W¶ë®—Iß½(Ççíj9/+ÁÛþÞÙê�ëK¦½¸±]³»Û£ùÒ=­ÌXÂ°i¢Œ|ÏÑA-íÁ®—gRsŠ´\&’ÓíU¥$­é·c™'BV§ý:©¶íÝ¥Òíì%ï†'Ô¤»–[¹mþÔ5H‚(Áò·­Þ@áÙä>[¨RÃiÈÝYkû¿3¨¯ð©¦¹–vQ…;§ö¹­£×{¦õ^ï//›‹^ýïuvå%¢Ö*7»ZKý…suØ»xÖKëX!f�,DŽE‘°Ê™BÏ•— í­µÝ=-[ÚÅ=¬•X¿�6Ÿ“O}qVk™Ý{5Mµ£~õ[ÉvmM5½¥Ý$Üïe¨_=¬—Ko´¹‘’8dM ´1íbÒ)	‚Aýã
”¹ÿ »5nÜÜ¶×KìîìºhVÑ”;¨YíðÎ2zkm#¢»×ËQ‘èRµ�Œf!5ÔŒ¹9+<h€cn3•;¹ÆœÖ**Ü²ÛÙÕƒÿ ¸•ÕUòåM?ïmu¨;ß™hý¥9¯%
›ùó;¯/=Ñá[ƒdðI yÄ°˜˜I,¹µ AKÙcfPÌïJK#2ï£mòIë4å9êâ¥9ÁÓ“VÙrÙÚÖmY«6^ôV‘iF	%îÅOÚEYé¤Ÿ.�>E8É]tštèŸ|b)f}òbêâóq
¨Ír©&vª®Ý  3TÞŠ+e~‰Y·wëÞï«5­îü’Õ½ÞÝ5oEëéªÿ ëaÿ ®‡ÿ EIR0Oõ³×Aÿ ¢£ [Çz]Î³¢\ÙY'›<¢=‰¹W;e��ÌåT|ªO$zu¬¦›å·I&ý,ÍiµÛþY¯›‹KñgÍçá—ŠJÍ«l!~Óm´P<üïZ™l}MáÛIl4»KY×d°[C®AÚé«© à‚2	±­ªÉJr”vm´gâ¬û¿Å¶j§ü|/ýs“ÿ BŠ±4#—ýkýGþ‚(´ P�|Iÿ �¿ëáô\µìeßÅ—øþ•æ³¯÷xÿ ×Øÿ é=Ã¿ò³ÿ ¯X?ôRWŸ_øµ?Ç/ý)žÎýÞ�ýz§ÿ ¤#b¹ÎÂž¢¥ífU™¢� I% ÔžÂš‹¨D fãþ�çÿ ãtXEk»•¸THÖRÞt'˜fPÊŒI,€  $äŠ Ø¤0 €
 (±´ˆÎ.öþùc1ÉûŒÁŠã;ye8ÏÎ3BÒöû\·ÿ ·y¹~îyzß]•‡­Ÿòó[þÞå¿ßË»MØGiSIp‹‰f²yîÙÁ8ÜÝ ÎyÏ-*Û™ËæÔbßÝ®Úwnç[õ²�É94¾ùI÷×Ð©¨èÖÚ›$“ù¡á¡¸¸·`nàZ	c,Õá‰qÞ•¬î·µ¾W¿æ;éËÒéüÒi?ºM|È¥Ðm'Hâ—Ï’8Aæå•Á9"eiˆ¸ÿ žâLU^Òçê­m—.Í-”–üÉs^Í»¤Éµ—/Mz»ëº¾öékÙ-±³He¥Ú°œ4a…áÌá²ÂOÝ¬\‚HËE\(Œõ$•m9z&ÚèÓn÷OtïªièõV*í4ú¥Ëò»vóÖN÷Þöz	§évúXan2Yä’I¤l(i&w�…*–ÂŒ…&ªú[¥Ûù»]¾í¤•Þ¶I^Édµ]­è•ì—evÝ–—mõdæÒ#8»ÛûåŒÄ'î3+Œíå”ã<c8Í%¥íö¹oÿ nórýÜòõ¾»+7­Ÿòó[þÞå¿ßË»MÙivÏ¶…3É”Ê»Ÿæó‰2|Û·ÛŽ6‘´`.Ð d’Ú.ëÉósßÿ m»îÛ½îRmK�o¦¾‘Q_ù*Kä@Ú“ÜÃóAVÇ™ Œº F„?’ò  ,Œ†E
 0Ú1KÝm®·~ŽJÒkùy“iòÚ÷wÝÞ,¬£Ñ$—¢wI÷Iê“½ž»Ž·Ñ--g7H®eËó&šEŒ¿ßò£’GŽÝ”©‘ÇN)/uYv·�•�®õ¶‰ÚöÑi¢³z»¾÷ì¯®¶Z_W­¯«îÍZ (  €3µ&ßT.<ÏÜ¾ôh¦šV*ÈHx$�ùV`FìO­g~¶k~�¦×Þ“ù¥º]?»oÌ­'‡¬å‰!9„%™Ý\™—wÞhó¼ý¬8(d(@ ® ÀÕõ}šõMÝ©-¤¯m%}—d%¥ÒêÓôiY5ü®Í««nû»½´�’¡( *¥”áfh‚…#a��™6¸lÙUÃzïüÜ×Ùó$•ÓZ­ZX–òRZë¤þ+ß~kk{ßæÊïá‹�cÛ2ùrC¥ÍÊLddòË¼é2Í#ù2ò7Èô ª{Y8é¢´¤¤Õ•“¼’“º½õÜ?Í=uwI¥fõVM¤––eÛ}&ÞØ£(‘Ú’4ifšfÙ+#H¥¦wfcLn'hW�Gªqv³I5eªWµÿ ð'ë}Ai¢þe/F“I®Ú7¢Ó[î%¾�giPÃŽ;dxâU,¬˜Þ:ó»““žAÉ4¤”ïÍ­áìßø.Ÿù$ußMõcO—U¥§Î¿Åïkoû~Zm®Ú+C¦ø~ÏI`öË&åO-L³Ï9Høù#3É'–‡jåSh;W í·&ï}Û»}^û½Þíê÷m�’VKD¶]MËM/m´ØÙ©((  €+^ZEÚÎE2uÊJ°Á”«ŽêA�+mäÓVÒÍ4ÓÓ³I�;mæ¾õc6?YÇ�Ÿ>Xæ 2Íuu>6œ©O:ilxö° r×O4ï³MlÓZ¯“ÓUÙ«t³Vi­�Öš­®º²Ý®—me[Ä§d»Œ…ÞIË¤¼²3Hí´ÜÎHP   ’S�$¾5e¢³»{[vÛovÛ{Ž>ëç[Ý;ï¶Ûô]Ä7�ÌQ@èÊ¶À,F9e‰ÑB„Ú%�ÒM¥@�ø�ÅTŸ<œå¬�ïÙÝÝ¦¶i´�šµÒÐ˜®H¨GH«[ÊÊÉ§ºi6®�ìÞº²Ãi–Æ(­ü°±[´m.UPÄA�HáHph»rS½Ÿø¢àÿ òY5å}5H,¬ãÑÚþªJiß{ó$ß~·»%–Ò)åŽw\ÉnXÆrFÒêQ¸•$|Àã¨Áæ’Ñ¶·qqù75÷Â/¾�›»zÙ>�™z¥(ßî”—m}¸<9gk!š#p¤»¹O¶]˜·HYœù&s™›0	È â¦Ë—“§/-ž¾í¹mw®‹D÷[§qß^n·æÓMo~Ÿ–ÍhÕ´"·ðìzZcL’XdT	Ú'¼º�ÇÙÞíS…]¬¥{eM¶Þ·ß{«¾ûôwëêº‰%Öú_gml÷îµ½ºù;5nÛO™Ù%Ô^‰ fhZ¤�P:`Q®'ÞH$d� <.FiYk¦®./³‹q•­ëÛùi­×kìš’î¤”£{ß´š·Ï]-_þ›%-¶ÍäE¸,_i¹òÊ¶2��²H°0±8hÕrª¡I¦ÓOªµ›×gtÝïy&þ'yhµÑY÷évÛ¶š½íkY>ÊÊí»]»Ý:E§?'Þ�nOÌÿ ë—n×ûÝ¶/Ê>N9^M%§-¾Ï?/—??7­ý¤÷ÚúZÊÊËUüÜ·ÿ ·99}-É·¶·»¼ø~Êà’ÈêÆVŸtrÍùŒ¡‡ŽDp¬ª�0F•4—»k}•$»ZSö’MlÓŸ½gu{vV}üÚoÖ1PMvj*×Vv¿wyìô‹M=•­ãòÊFb\3#.dÛ‚Ä}òNqžÙÇÖ›v„~TÓP_%'æï­ôºös:�JoæâŸ—K~GH¬`E[/<\K¾Y]Ô£‡ÃUŽFp$DD,«ÞJ‘÷eÒ’÷:»¨Ê1»Ýr]4ß3vP²ZŽZ©®µ/ÍÚÍ§'n®Zßk7Ïvôz·z-¥ô�,ÈÅ¥…­äÄ’ x›vQÕU±½ö3É¹Š2’i%kùÙ¾×M4ÒèôZ«6•›kB“iÅ­àÛ�“v¿ªÑhî®¯kƒh¶l$SI¯ó?Í$_”ß{�¾L|Ûó–Í]¦ŸU'%å)^ïçw¦Ý‰Z.U·'³ÿ ·=í?òik¾»è„ŸD³¹‰æâD•Ù^Do24TGGVV‰•Q@hŠ3Ô’fÚ$´³m[K9_›]õM¦¶iµ³°ïßùTuI«&ä•¶ÒM´÷NÍl­vÒÕ,¢Æd*¹Á’Y&~Ny’WyÛs 
¦ïÿ oÈ›X±Ha@  P@  P@  P@ ÔfXdEêÈÀ}H PH¾aÁ‚|÷Äy�Í /ÛÏüð¸ÿ ¿ýz >Þç…Çýûÿ ëÐöóÿ <.?ïßÿ ^€·Ÿùáqÿ ~ÿ úô }¼ÿ Ï�û÷ÿ × íçþx\ß¿þ½ o?óÂãþýÿ õè ûyÿ ž÷ïÿ ¯@�d¹IÛcGæF#Pãi$ê;rø Åóç¾#Èüh~Þç…Çýûÿ ëÐöóÿ <.?ïßÿ ^€·Ÿùáqÿ ~ÿ úô }¼ÿ Ï�û÷ÿ × íçþx\ß¿þ½ o?óÂãþýÿ õè ûyÿ ž÷ïÿ ¯@ÛÏüð¸ÿ ¿ýz |2½ÌÉˆ¤�c%‰uÛü ^Z€	¥{Y¤ÌR:¹
.ïàU ôÇ+@ûyÿ ž÷ïÿ ¯@ÛÏüð¸ÿ ¿ýz >Þç…Çýûÿ ëÐöŽóÍæÞ5DeùÆÒK<@­ ,¿ë_ê?ô@ €<ëâOüxEÿ _ÿ ¢å¯c.þ,¿Àÿ ô¨Ÿ5�»Çþ¾Çÿ H™ßøzLivcòëþŠJóëÿ §øåÿ ¥3ÙÂ»Ñÿ ¯Tÿ ô„lyžÕÎv™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@™í@Ž¡œ@Gûkþ4 hÁÿ =#ÿ ¾×üh þÑƒþzGÿ }¯øÐý£üô�þû_ñ ûFùéýö¿ã@öŒóÒ?ûíÆ€í?ç¤÷Úÿ � Ú0ÏHÿ ïµÿ  ?´`ÿ ž‘ÿ ßkþ42\,ƒrÃÔGé@�B8.€�ö×üh þÑƒþzGÿ }¯øÐý£üô�þû_ñ ûFùéýö¿ã@öŒóÒ?ûíÆ€í?ç¤÷Úÿ � Ú0ÏHÿ ïµÿ  ?´`ÿ ž‘ÿ ßkþ4 hÁÿ =#ÿ ¾×ühHîã—ý[+cû¬ò K¸áûì©ž›˜ç@ÿ hÁÿ =#ÿ ¾×üh þÑƒþzGÿ }¯øÐý£üô�þû_ñ 	c¹IFc*Àu�þTJC™û�ýPP@uñ'þ<"ÿ ¯…ÿ Ñr×±—_àúTOšÎ¿Ýãÿ _cÿ ¤Lî¼?ÿ  ËOúõƒÿ E-yõÿ ‹Sürÿ Ò™ìá?Ýèÿ ×ªúB6+œì
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €+^ �ŽGÿ ÐM Hª`pA@�8  €
 (  €
 ÏŸäóöñû�xõýï?^å@•B è(.ï^Ó´ù7WVðH ’K0¡*Ìµ$Ö©tÑù;'o¹§ó­ù¯ËóM¬µmI<Û9c¸Œ¥¢uu:©*HdduäUY«>�o?O™7[.›ù)(  €
 (´£D{ï#ðòÜãó þ D?y)ï¼ÃËC�Ì“øÐ‚q×Š nõõ� :€ Æ.ã|ûá£Çå“ùÐ[ï·Ôè"€
 (Î¾$ÿ Ç„_õð¿ú.Zö2ïâËüÿ J‰óY×û¼ëìô‰�×‡ÿ äiÿ ^°è¥¯>¿ñjŽ_úS=œ'û½úõOÿ HFÅs�„3}ž'—¼´fÆq� œgœgph¸’ðÿ Ëÿ ïóñšb÷70m2ÄŠ¥Ñ	±#{„%³ŒŠ Ò¤0 €
 („z�´·-e†�»(àªrØÙ¸\®íÃ ‘ƒBÕ6¶VOçÌ—®°’Ógž¢z5»»KÓ•¿M%®é¦´MNÚúI"·q#A·~ÀÝ»lmnU�ÚN àñBÕs­¯kü£/»–QiìÓM\6|�R»]µ”8É5ºkP¿Ô¡ÓT4ÞaÜH(e™¸êvB’8QÝŠí#"•ÒÑé»òInÛÙ-wv*ÝW§Íô]ß¡NãÄV©�.RdóU£I%.?zæ$..Fd“jíÁªµ¤àôj×¾‰^é]ì¯gk½lí{	j®¼ì­«kt£ñ6º¤®›IÙ´mdƒÈ=±Iû·¾–ÞýµÕÖº½�âË$2«%¹Ä�ÈEùLî )]Œ­½I\´?us½»é¶úoýhUŸ7'ÚÓOV×ßtÕ·MY’Xê0ê*^&Õ8Ì�Í9äócMêGGMÊ}iÙ­^žOF­Ýn¾iuìÉºÙ}ëU¯f´'Ûºš¥´—fŽxÐ»*†8
@<�·p,¹Lï.OG%´m{yó%e»ÖZ_Xµ¾ƒÙ¨ìÝíÓn[ß¶“‹ÖÚ4ö*Úx‚Òöqk¸IYYÕf´º€B¡ˆi¡�x, óÕ€ïT•ïn–¿ÍÙ}ÿ £}›µ¯ÕÙzÙ¿ÉK®YÁr,ÝÈ”²§ÈcWq”G˜!‰$pADwWl®Õ;†R÷´^~W²»·v’m¥v’wÙ�ûªïÉú&ùS}“z&ì›Ðt:Å¬×&ÍYÄÃvE*+ì ?—#¢Ç.ÂFï-Ûo|PµW]û;=/g¯.Þõ­ª×Uqû¶O®žWjöºÒöMÛ}š3R€
 (  
w·Ñiè$›~	ÚqÉ+’A8XâG‘¸œ)Àœ M//Óñ}–Ú½.Òê;~"«ë–in—[ËG1Äa#’I†r«
#LYv¶õ	¹6¶ð6œ7£Kºº¶¾í“æººåÕ{ÛjµÕ	kwµ��ôÕimm®�Môzò(àûT‡Ëˆ&òdVŒª‘Ÿ™\+©õVPÀðFx¡ûº>öÓ[¶ì’µîÛÑZ÷{×o=ôÛvïk%»oKk±Dë¶Ë ¹"à!}�M¥Ð•›ù`0ùÌ¸çrÆW óÁ¡éo5D´w·Ã¯{n»«�ü¾[öïò¿^ÌT×l]íãYAká!·oŸÊ È3·
ËžUÊ¶r¸È ;jÒÝEKË•ìÓÙ§{«^ë]µNm—7/kK]Ý;Å­zé»H±6©mop¶r8ÉÊ©†'ËŒ€ÌH 	 d‚ÜíÌ—3þHóKÊ7µüõèµ*ÏÝ_Í.XùÊ×·Ýò+iºí¦ªvÛ4›Š	 – -èè'Ž3"r2É¹FFHÈÎŽ-^ú8»5Õ7{]n¯gk­lí³!5¥¶jéôkMžÏu·uÜØ©((  €#–U�IÔ@Y� $þ“vþ®õè’Õ·Ñ-Æ•Ý‘•¿e,RM½£[|y‹,SC"îûŸº–4”ï<G„>c|©¸ñMè“îùtÕóiîÙkÍªÒ×³NÖbZ¾^Ë›²å×Þ»ÒÊÎîöV}‡G®Ù<uæŽ6(áÒHäW �ˆ²‡ ‚¨Ss
‚%I¨¥'³M®»_›oåå—7k;ÚÌi]ò­Õ¼·µ·èÛI=›vZ’M¬ZÛÁÓ3ç
b	’I&åÞ6E4¬vüÄ%TÀ qRNtÚ÷•î–¶³³n×Ñ;+ív•õDÅ©EN?I§¶ú­í«í¿�K¬ZÁä‰\£\”£#‡%È¹
‡�æ!I‘T+­ƒÅ÷¹úìÓZ)K}¶„š×^WkØ²æz+Ûïj;o¼¢¼®›Ñ’>§mÊY3�>Lí@	<)˜€BeT‘¸®àÜâ’ÖétW'þkž7[®dö`ýÛ_K»/ºOÿ m–»hÖä1ëV’Ü}�YÄ¹`7E*#²}õŽVAŒ¸;–7fl�”à[9tK›]=Ý5ž®:¯yiª×T7îÙ>º|ÚºWZ&ÒnÏ]YkVº„†÷ªïÃÅ,[“8ß•J™ oŒºr9ù†]�¯Ú×[5{Úéê¯gk¥{>Ìºù^úúikÙìíu}tº4$�ÆTmfRNæp€rÙ`Ä6��ŽHÈ–Ú�ÛÑ$Ýý-¦šÞÍ¾ÖO[Ù3Éot­ë×ôïªÓ{2Öê;ØRâßÈ®�‚2¬S‚¨«iÅ¸½ÑµóNÏñ,T€PFÀWµºŠö%¸�·Ç Ê¶ÈõÁ þbŽ‰ôi5é$šûÓA³kªn/Ö-¦¾M4F×±‰$�3$ðÆ²´kÃrá0XªeÌn\ FX¨ Òèä•ìíó²vÖÝ1ÛTž—½Ÿ’i7¥Þ—]=.[S�	dt8Èö8$qìH÷ªzi¹+U}¼»}ÚHa@  P@  P@  P@  P@¯?ÔIÿ \ßÿ A45 x�‹#Õí¼Oo©[[G$`GghÓ0)æÈ¬ï'–Ž%!¤ÜNÐç<ª¢ôsëÕS‚‹“üµÕJÖwÑÕ·³‹Z¨{ÍmyÉ¸Æ:÷÷ŸË~Œõ-RY"žÁUŠïº*áIPÃì—M‚3ÊîU`FT ¸Û™öä“_ø-ó³zù°Ú¾éCÿ NA;vºmz;vZæ¥"[ÜH�H—žz$Q‡GF’¼dÊò2•�DU—Ë_-˜î¬“nÉ^N„j«h®Õ;ÆÞn¥Óºµ¹ZÚJM^ÑUeM·¿*”ãÍòåI­ow->�Æ§¨ÞCnb¹†)þÛr¡´ž&�r–ÉÝaÔ–ÈI”©L(ËidªS³æ‹ukKòÒ©-�Ü]•ùe¬dã'·,¡¿vwV’ön×ÕsU„]¥´“nÜËF”ã»¼ud×¦�SŽÕZ9`–S	T·¸Ìl"w%®²m‹†B¦ªàï%H*öžRiì½×¶¿‰Ý«ZZY¤ØäœUú®K­ïÍÊ¯§Á¬“W½ãmS’9};Q:LktÈÉ`B¨rÏ|È¼"³‘¹†B+1*“�XÓvŠK­,vnÜÐ¨¯e«µïm/k]^ã’÷Ûí<t·Káœ%k½ík½æÊx‡Pdª)‘®`…f–ÎîÖ6YƒîÄ3°�¼E2q!WFP“·mÜ²æ•H¾®Ð¥*ŠI+ZírÙÿ ,µÕ57åæm6”`Õ´ÖUU7ü“Néu^ëµŸuuEÎ ÜUJ©lrB–b ž€³8ÜzÓv¾š.—×ñ²ü�+õßîÿ 2�Ïü·ÿ ®ÿ kR¡@wâN"-Jâè‘™h„§zF¤cø†ÒK/!”AŠÎE¤Ý¯ˆ…2ý?]Ëi¹]t ŸþT¬—ÞÚIônå»-<éºŒA0x/~ÐJ„
Y\µÂî`Ø“c;yd eV Î©8ÊTeöiýÎœ©SNÝùei5ñY]>XòâÚ’…Hý©¯ºTêI¯KÅ4ºtÝÞŸ‰<G�øî;ìåŽY i•ÇœØtØX4†(:(2I`10iÊû®eNÝ¹—½&º(ÊTŸ6ö…XõwÒIòò­‹�í¿+÷bž‹ßµHÉt|’òz×šåÍ¼÷nžI´±·Žlmc$¦D”…¼$cr)ÞQþRFÞŒOT×½í}”VÞóTlå¾‰ÔiÙj»rûÓxÝYû¾ÍTovõ/eÕ¸ÃMUŸós{µ5eÔ•¬DÏlÓ5ðòÊG"¢fÒëpu2»K·¨*Ñy��ïŽË~JšÛKZ6|·ÑÞ÷\ÎÚ;½ŠOÜ›kKSÒú§íaö­f¶×•uÐSªÞÈñÂc¶{Ô{ØÕÌm³Ì†0cdBñ‰�"ïc‚T>9¬ù¾ÜSþI5}_³¯Nœ¢�¶•œ•Öü�ß—RÉ>Y=Zq½¶S£:œÖïòïªæÛ›G\ø­ü“ql�£Ûjª|¹da=ÉAŽ dqLŽÑ¢ïráC'$hÕ¥ÊžŽn1i7uJ¤§¦ñ’²‹M$Ô¹�¶•t“š´”o8Ý+75N1OdÔÔÔ·vååM»=�QŸPŠCrŒ­››yíD«µX:ÃqûÔ ±B0,„† €JÉ­½ÕÓµ›];«=´½µµÙ³kÉ;Ù­ï§ª·M,ÓÑÝ-i¾ü_õÐÿ è¹*Fýùë ÿ ÑqÐñ=¼=rî¡ü³%€'ÎEçiSüG¡Ö3Þ´¿8É~LÚš¿4z8Ëÿ %\ËñŠù*<¶kn²*Fg,CE¶pyÃ	>Ñ†'�—hÆzñ[=-nÚù>Þ~¦+­ôíçþGØÞ�bÑ,Dcj›X[$è�’N2Ç$ã¹­ë+NQþ_uzEr¯ÁSøíé~2lÝ?ëÓþ¹Éÿ ¡EX�o¾ßQÿ  Š (  :ø“ÿ ×Âÿ è¹kØË¿‹/ð?ý*'Íg_îñÿ ¯±ÿ Ò&w^ÿ �e§ýzÁÿ ¢–¼úÿ Å©þ9éLöpŸîôëÕ?ý!Îvµ/øô›þ¹Iÿ  hF¢tJC(jŸê—þ»Aÿ £’˜‹† P@ `´/ý²“mo,YÈ»ðv†3DBîé¸€HÎ=¨ŽžÓÏØÛÎÞÞöôº¿k®è™oOÉU¿•ý�¾û;w³ìGmm)Ô/›ç…eŠÙRP£¨Y�(]Y��pU€8Ü¤‚Kgídüíì¨+ëÑ´ÕüŸT=ª'k¯gÖ×U+6´·F¯­ì×tA¨ÝÏ¤E¶û«†˜¾ë¯²µÃF£˜ì­Âo;‚Åº5A†w/³c§i{Žér»µ{½vOT�›×¢[]Ü¤¹S–ú¤“¶š=l¬ÜtÕ'{Éj–Ø—vÂÒ(Î’nÏh-DOcq!tŒ¾ÍÎâ%µ—t�—ºù6ã 2N.|ô´´ÒÓhÆñåV–«•FÊQJRJ)E);J£.^ZŽ÷Œç+ÛVå(¹·gw(Þ-rÆíý�º½?LšÈBæVXaŽ#ùLÈ�KäÃçä‘»ýv3ÛVó’”ç5´¤Ú¿Ù»¾–·ã}ß•¹áB8Å'n¶VÖ÷ü-²ó¿;}§ÜÜG«$K"´ÓÂñà dD·µÞ#/ò1m�ÎW~U»ÖHÓnþínf•ïÊªÆM«k²º¶®Ö[�WemhJ
ûsKÛ$Ÿo‰_²w4¼<K9‹í_b"/(^yþo›óùÛE×ïÄxò°	¿—òÖ›G[_™Û¿%£kõø¹­ÍïwÓ”Ïªµö÷»^îÖé{|\¾ïÃmy‹mÿ l¤Û[Ër.ü¡ŒÑ»ºn s€Oj˜éí<ý�¼ííïoK«öºî…-éù*·ò¿±·ßgnö}ŠM ¸MBêöe�ÕàXUXHöñ)±®U‹M!•”©]êbÃ`)¤´ŒšSR~VŸ-;ÿ v)*–{9ÏMZ5WçI4¹RIô¼’”¥ø¨=ÿ †ºÝsÃ/ïôÑÆ[‹ØgŽO)Ì^Px»L–­�“Ëw‹µYXqÿ —i½iÎr“ÛOk:©/æSŒ”4½¹�ÒI³"¦Ò²�5®©º1¥ivåiÉßN]›—º^‰ä¹Õ’HþÕ"FeYâÜÅº•Àky|¨„¬îª¿~äìf*ÑŒî!ÖO¬›ÒWs‹ä¶šY6ß.ð�æôæ¹ô]¤�–«HÉs_¾º+ý¦¹:Ã± €
 ([Ô¤ÓbCHí+ìÞ�Mp"YŒ�
Ò0ùv€0²‚Ê2DîÔvVm»tVÑh×3¾—Ñ+ÊÒåå“Ù7½­e{oß­’»vßE¥î¹¬ Sk:�@Ù$wHæ(®á¹3Í,rù’$QÅr«#,„²"Ç¸¨oÝ‘U³k_‚
šOEÉÍ;»]§sû¯•ÊZò1n·ûnSºÞñÑ¯(ü+’òJ\«E"ÝÚÞÝi±[\%ÏŸÙ'�•F÷A>]��×¤{äXþmÅ|²Y–‡ñBRû.Óå½¹¥EÅ¸¥¯'´žëT“¶©I(uæä¿HÆ¤\T¹¾Ô©è”®¤î§§0�ê7l/ä¥ã[Íq¶Ýç‚òæXcò�‘Þ=¯vPÊbY¶¶æäˆ¶Ò×HËGï;¤¯ÈœyUÒqö�·fôPIÉJqp‘¢nQÕZ*Îés¾k½lùToË¼ôVRsQK¥Ï²­‚Ì¢k·ŽY¡–&"âÒTiVHâe2È®Ì6(‘›FÊ­`œ¢—¸©rE=ã8¸]Þ×ƒämÝ¥+½u)YÅÂOâ©y;jœ£Q¹¥ýÙIJ6ÑIEt%µµ¹º¸�S¸†H¥¹Žç1�I†0ˆ°DÄd?<„~G8¬*FÑœc­èUw³Ös�£n’PŠ�–î’Z±Åë+.Z´×¢Œ+sÊû4ç'iix:iêCá8¦Y`$ÝÊ#²J×vÆßÈaåm†Ám½X‡ÞvLO—i†7lÚr«$î¥$Ô¾Ô¬çkÇ¢JMü1³“ZÞÑæ‚å…4Õ¥n_³â¹µïÍ¥ïKK½5oÑ+` €
 «}rl­ä¸ó‘œG–w TK€ N{T·e§tºÛWk»&ÒW»i;+»2’»³Ñ^šöWÕèpÍþ›Þ*\Kt³ZK2µ¥ÌÉ·›xŠž2˜ÁwÂ–’G$€¡’5ÑZ-_•JnO«u)JŸ7*»åO•Ù_•-å'yfï4ÖÒq\ªú%Æn<Ú+Í'Ý”®®”S¶Å¢=Ð¿»HäHîT,K$o�åÁ°¹‰ÂÈ»˜ìPÈ¬B·Iç«¨ÔŠÖRö’Ik£„ –�[ƒ•—I+û×Kh5ía.‘P‹oEuRr{ôJi_ºvÒÌÅžÅ£�N–éo¬Œ2-¨¸¤¬¶åw‹l\*þíÕ¶áC|¦ºêµí«5wÌýÆ¶ÒS¾»j¥¹½ÇfÞª'5$ÕQÛ•.d÷ø,´ßÝwO—ß÷´Ó˜Ó–É4ûp®÷	shÒñ¹ÀY-&Ì®Uqæ0ùwdçT¦Ý´SækáæxzŠVí7hú¥Ô§ðM+Ûš<©ïÊ«ÁÆ÷Öê
îúèÛêjjP»ßØ:+ŽIË°…ÝÔ#…É ã$àsS''ÓÙI|ÝZÞ¶MÛ²o£¶�¿çä_ËÙÖWô»KÕ®æ\Z‚jê×1ÝFmd”[Çö; ›€xÌÏ9‡É;Óp„,�¾X»²ˆÔ]¢êkw¦ÖŽ’åIÙ¹¾U?r)ë)Ü–¼�–½Þ×vÑE7ø)¶´Q~‹zš�Ð»�.c¸ò™#ŽKK¨RÙ•�L²Â‘¼¬U7�û~@±®;Ú\©¤Óo•Éì½ÛÙE;;.g­¹¥ñ5hÆ[»Kd›å^¿j]²Ó¤nãvÝÝ�rÇí·VhÑùÐæàH
nM¯o"�&A]¬H_›‚N+¯Ïoùó4¿Åíh8ÛÏÝmuÑ¾…^ÜžUbßø}�dþZ¤új—SŠ‹NŠÛM°Ú¸¶‹kYË§ÌðÉ8ùŒÌ"Á1uÄw’íó©,:¹“ª¥…òÙü.æzÅ»r5yJPµåhíî·-$§§¿?5.ÊI|qååQkHêº8šè"ye¸{v36ªŸ>ÖÝöfXRPsöw]â@?tÜïÎ+$½”^ÏëéìýìD ¤žéËÙÊ)évš^öªMþñ­îymÓJ
n-}¤¹Ó’Õ$Õí‹3ko%�ÙZ}¾_)^Ò[˜"�ÊVR-aÃIHÎŒEÄ�ª)+ÉSRø¹jêõwU¤¡¶¹[§g¶­Ù;Iðº�mx+-4t å-æ÷Õ¤’»”›{Hv‹¡ý®Kq©Ûù«‰�lñqpÛWd†E#ÆÀYÙPðÄKßž_iÒÃjõn^Î¯´ÖÊò¼½÷dï-R½…wT´J¦!è¬’ö”Ý;.‘²¼Ú&¾Õ[+oì-:ÚæÎßÈ¹€Éi,~KC¾K�¨­Ê¨”}¡mÏœ»ÔÇ¼«B¼” ›^Ò”!ä”cÌç%ºäµk­srÙÜ·Ê�I5¤*Êv[ÊR\‘z/z‹ZïÅÙì^xv5¯£‚Ø¼²é(fH´’¢\¤ Ê¨q,€Ã�Ì_”.í¸uiF•{Hµ¢TïNÑ]Œ¢ß*Õ|M[R©é:3¨Ó|Òr—÷ÛMÉÿ *iÊÏD®â­°ûÍÎnî3ý²ÃÊ�+‰^]œs˜˜a•Jy©3! ª°s„âÕ¹£µ�Z¼Ýœ_6’ïÙû®÷¶¦+àIôÃéåR.¬£nÓRåk®Ýõ[ý*{hîm¬áY%üNaÏ4-nm#ó6[Dñ4Ñý¤†’8›‡Ê¾.�çÕ'QY¦í«pºì®ù[ME¸»%(êÒ\Ü»Êœ�—ÞU–½Ý4®®œ–›Ë^·Ã¦ÒËníÈÒ;"‹ilÖ5'ýZ[ÎÏ$h¤ �0~P£Ú)êÒÕ·vï&ÕýQIê”UÌVŽOdÚÑ+%îÅ;w»NM­.ÙÑT P@  P@  P@  P@¯?ÔIÿ \ßÿ A45 PšÁ'¹†éÎM°“bã€ÒRÿ ïƒÙÚ…î¶ú¸òú+©I|ÜaéËæÁê”zs)|ÒiéOçgÐžkXî7�e s$g$mr�x ’G9ç �iªì×É´ßâ�tk£µþMI~)2¢é©pªKrÆ=¯ (]]†%dpr¤åp@!%eÊ´J
šÿ 
å²¾ÿ b:ï¦ú»¾­÷“›ÿ nMÛmÛvÛ¥¬Wÿ „vËÉ6åd`Î²içi·¦60¸iLà®0¸�`d	¶i­9[jÚj×+o½ãî»Þñ÷^‰!wóI;ë¢|É+íi{ÊÖ´µZê94(çûR£y‚C0l¥F¬ës3‡måP,KdóI{º.—KÉ;Ý.Ë]–›i¢®ý¢ŸŸ//+}ÚåJï[+^ÍŠºŠ!ŒD
ŒK31r¸,ˆ“Ÿ¼;R’JËEjijÓJ’j�žéÆîÍk}[ºLw×›­æþusºÙ©4®ž–Ñ+6‡C¢Û@‹ïdÊ³/›qq1WQ…!¥•Ø 	ù3³¾ÜÕuO¬ogþ(¸¿_vMk{^ë]I¶�tvºéîÉIzZI=7µž†µ3îå¿ýpûZ€4(“Õ<;5ü²´sD‘ÌÑ¹WŠrêñ§–%‚òÙÔà�É�%N*mtõNN_ø!ž¶i¨ìÕµÕ=
¿U§º¢ýå4üšrüE›="æ`iå�¢³VX£†ÝâÀ)å€YîfùUz  çúë{ÊU²qqÿ À¥	7¶÷‚í»2åÒ1Z(ÉKîŒã¿ý¾Ûßcb+`^.žL’ÛÙ€RNâxÚ€>P   ¬ÚN>Íü6’·”›”¾÷&þ}¬h�¥Î´zkþ’û’_ží²½¾�ij�q�’D�º±gjQƒ³dby`~bjåï]K^i9?95ß­£š¾í²WºÔ££I%m,“”’Kd““·kÛd’ŠßA³µÙ±do&A,~dÓÊQ‚<ci’G!B;�ýØÜHPph»Zõ×^¯š×»Ý·e«»Ð}Z'ee¢´Z’²Z+4ž–í±at»d”\*bEy6æá¥P®qœ|Á@Æ01À5)ríÑJ?)ÍT’ùÍ_ºÙi =wî¥óŒ=š(;vêõÔ„hvK–‚ !šF•Ô3æ3Þ­»r0`
e1í]›v®YF+E”m§*Wz5¯WòvØ{9K¬¾/;«;­µK^ïW«¹nÎÍ,cò¢22äœË,³7?íÌò>=ìÂªûyy[þÕ“k|ÿ ¯—È|ß~/úèô\”†ýùë ÿ ÑqÐ~½¢Ãâ)të–tŠ}¡ŒeC�®®0YXuQœ©ã?Z—+y;ÿ _yq“ƒºì×Þš™æ¿ð¤´_ùï{ÿ  ÿ äz¢UÓ¬SLµ†ÎÆ;xÒ%,Ab¨¡Ab às€zW)9ÉÍîÝôó&+•Yyþ.ä§ýz×9?ô(ª
ß}¾£ÿ A P@uñ'þ<"ÿ ¯…ÿ Ñr×±—_àúTOšÎ¿Ýãÿ _cÿ ¤Lî¼?ÿ  ËOúõƒÿ E-yõÿ ‹Sürÿ Ò™ìá?Ýèÿ ×ªúB6+œì ¹‡í<9Ûæ#.qœnggé‘@ìy�ñÿ L_ÿ �Ó°ÜNd’=ªèä,L	Øáð	™€É\t4lúC
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 ¯uiôMÌi4O�ÑÈªèØ Œ«§28 V]F›[iÿ G÷�Øé–šZ˜ì †Ùîe†4ŒŒd„
	Ç<âªý:Ÿü2&Ê÷ëþ_ðïï/RP@ SžÆ‰cžPYà$ Þá�Æ0Â6p>ë²–L�¤dä^ëæ[ÚÞ›íÙ´ÚmY´ìÛZÕYí{þM_ºM&“ºM]k©r€
 (  €
 (  €
 (  €
 (  €
 (  H‚U(z0 ýÅ g;•à\p:f5?©4 ¿dºÿ Ÿ�ü„Ÿã@Ù.¿çãÿ !'øÐöK¯ùøÿ ÈIþ4 }’ëþ~?ò� dºÿ Ÿ�ü„Ÿã@Ù.¿çãÿ !'øÐöK¯ùøÿ ÈIþ4 }’ëþ~?ò� K™Uq+™Q´œã  ÈM B,îW�qÀé˜Ôþ¤Ðý’ëþ~?ò� dºÿ Ÿ�ü„Ÿã@Ù.¿çãÿ !'øÐöK¯ùøÿ ÈIþ4 }’ëþ~?ò� dºÿ Ÿ�ü„Ÿã@Ù.¿çãÿ !'øÐöK¯ùøÿ ÈIþ4 øm$WM)“fv�¡@$c'ž	 [I—†Sìdm222xà
 gÙ.¿çãÿ !'øÐöK¯ùøÿ ÈIþ4 }’ëþ~?ò� Mojñ9’Y­�£å
 $Àîp9 ¾û}Gþ‚(  €<ëâOüxEÿ _ÿ ¢å¯c.þ,¿Àÿ ô¨Ÿ5�»Çþ¾Çÿ H™è^û.Ï�ùuƒÿ E%yõÿ ‹Sürÿ Ò™ìá?Ýèÿ ×ªúB66�Jç;hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô hô HË—nŠ;“@üù�"$Y?Ž##õ4 yÓÏ8ÿ ïãñª <é¿çœ÷ñ¿øÕ tßóÎ?ûøßüj€:oùçýüoþ5@�7üó�þþ7ÿ  Î›þyÇÿ ÿ �PçMÿ <ãÿ ¿�ÿ Æ¨ ó¦ÿ žqÿ ßÆÿ ãT ô¹s"„1.æ îyäîž0:P<ù�"$Y?Ž##õ4 yÓÏ8ÿ ïãñª <é¿çœ÷ñ¿øÕ tßóÎ?ûøßüj€:oùçýüoþ5@�7üó�þþ7ÿ  Î›þyÇÿ ÿ �PçMÿ <ãÿ ¿�ÿ Æ¨ ó¦ÿ žqÿ ßÆÿ ãT èîxIW~B•mÃ ƒ•\p	ïÒ€	.9H‘[fm£$�…lðA=:Ð|é¿çœ÷ñ¿øÕ tßóÎ?ûøßüj€:oùçýüoþ5@C9wòä@�‚Ãp %T‚2;wë@åâVú�ýPh  :ø“ÿ ×Âÿ è¹kØË¿‹/ð?ý*'Íg_îñÿ ¯±ÿ Ò&z‡ägÿ ^°è¤¯>¿ñjŽ_úS=œ'û½úõOÿ HFÅs��@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P[ïø÷—þ¹¿þ‚h´Î\xšÞßV‹CÙ+ÜÏ›ròãA»™	pÃ;Vê=h�¾æ—ØI·ëmž±ûýB^â‹i´—]:úoÿ €³nk¨íÚ4�íiÜÇÁ;œ#ÉŽäG98c9 k¢ìßÉ4ŸâÐto¢µþm%ø´‹^âê+]žkmó]cN	Ë¶p8Áäàzš:¨õw·Ê.Oÿ %‹.á²o¢µþrQ_|¤—Ì±@Ú~¹¤ëJê^#0Ü¢CüÛ”œtÇ|ñJ/™]-)üªÆR�Í(¾o;Y°~ëåþõHüéJ1—É¹+y^ö6i€P)º\ÿ ×¸ÿ ÚÔv€9]G[½¶’à[[Ã,v�7.6fuªÛJ |Àng r[j‚jbù¯Ó÷œ‹×–¿—ÇæôîÒVisŸÑsN6óøùØ~‰â#¨¹·¹�mçÝ(EI<Ôq�áŠFÁ•—%(ÊÊXo	i&“[òÆMvRI¦»­R—XËF¬àå/Ýv{^ÉùÚöòv»[¦“×F–ÍÆ£oi46Ó8InK,Kƒó]ÍÈ v Bƒ¹€)jùVöoä¿^¶Ý¥&•£&›Ñs=®•üå·Þ^ 
7wñÙ<1¸bn¥òShåÉ&[$avÆÃ#'$qŒ�-_*ÞÍü£kþcèåÑ[ÿ &’Šüd¾E–rŒª˜6rÃn ¶X7'�µXäò É£ËÊÿ ŠVõÕ¾ÖO[Ù5·ßú=}4·{µ¥®Ô´ P/þ¶úèôT” 'úÙ¿ë ÿ ÑQÐ^¿­ÇáëF½š9fDe]�¨g;Ž ²ŒüÔ¹r´µÕÛÓFõòÒÞ¶)+ÝöWüRÓï8/ø[v?óã©ßˆÿ øõQ'£éZŠjÖ‘^Æ�Î¡ÂHºƒÙ€$øš©.Wo$ôóIþºù“Ì¯¶­käÚüm§‘q?ãáëœŸúU%Ëþµþ£ÿ A Ú (Î¾$ÿ Ç„_õð¿ú.Zö2ïâËüÿ J‰óY×û¼ëìô‰ž‡áßùÙÿ ×¬ú)+Ï¯üZŸã—þ”Ïg	þïGþ½Sÿ Ò±\çaOQb–³2’¬±HA„‚èGcM]tÅ 2oûÿ 7ÿ  D6e	"I6|èF²�CJŠAÈ ‚APt† P@ a¥ýÈÕ>Ã"Ä!kw™
î/•’4ù‰Ú£;ÏÈã ï9À#ª�÷‹§éiû_¿Jiô³mkdÚ—ºâ–ÒSõ¼}—ë6ºÞÉéª#³ÕfûMä7¾L1Z$RV8Tq)c$�´`NÄ’@ÜRk“žZ57ÛHR–Ÿ:�_ªIÙ7aëÏÉ{Æ2]ÝçR;y¨'mlÛWd—í{l.´››?%w�Á¸‹	Ô*h—Žw1“äÇÝlð¤Ü3ølßkôV}êözéaÆÒ|«Wt´é.ú«-7½ûá7ˆo®#F�mí],RöU¸CÞ<´!â1…òÉy\>Àñæ"Iª›ö|ókÝ§kÇN}S“Mê“VqZ59)$Ò�ÛŠæåŠjó”â¤µ� â”’Ý©s)/yZ=]ôè¬õË+ÃI4Bâx’e·2'�±Ð8>^wãiÉ;qŽzUÊ.2œ#«¦ÚvèÓK]í{­û®èÆ2æŒ&ôçI¤úÝ_Nö³Û³ìdMgü×Ë›	cf
L�Ã"«Hýy.Ýûmç`äVf-|RŸ"ÓK¹¨'ewmníwdìºµi[ìû7SÎÉÔ¿ev¡t®•Ýœ­©{@Ô¤ÔO:Xä’6Eµ¸µhÃ€Érí#†çd¡#G í^.ÖI®í_m­£Ž®-^í6Ýšõy_[m¢vßvÕÔ´RZY4–©ú'­ý×ö™±qÂÖï2¹Ÿ+$hµ@;ÎP)Æïp!kô”y-ÛßöÛìßðâúnÖ¶Rm¾YA}™)ß£÷=–ÝÆ×]“ÓTgE¨jv·R¥ÃÃy­¹–Uµ´–9·œ˜¢Œ5äÊîê®Åp¤~ïŸÞ)Y¦ÿ ½'ýçg+ùF2‹âM7ÊÑVwŒSJ÷ný#ªNý/+¥£øe¶ƒn5»Äy.býŠÚæ;i«™ßy‰^E�H<§—3–±Þ»†mîó=')A[£S•8ß¿5HÛKYI;¶¬KzK•4á7~¾âªÒ]¦Õ›½çîÙ/yÞûmõ¾¡´Æ	"¹óJ¤hë,)È‘Ý¥e‘XíFÄQmwPÑoº�5ÖÉóF*6×täâî®¡/w~RZY­œ¹m×á“rék4®¬íÌ½ëÛ›¢ a@ Jü]ñfñDùåæF‘UpI;H‹à¬@-“�¥=5m$µÕÕ»ß]­mnší­ú[¿õÐãäñ\ßf¶dw7"fÞ ¸¹Cüè­à>t‹6ä‘ð©i(Þÿ ËhBrOW5uôI'ÌœÝ¬ÒN7–‚Ñ;ëï¸FÚ^×»IÞöÑ8«¶ÝÓq\Æåö¸¶j_Žs(…cu±Èó2¢°Pep„¶í€É&Ñ´n|dŸ»%£m¥ö´Qr¹Ÿ,[ŠVævI¤î”vr{-þÏ^T�þy¥&þ\’I¢+ëÍBÑšÞâØÌ’‘ä³¹„D¡Cm{Yn`ø!·<±‚Œ)ÜKD¥¢�›né§f×O†Úó]¶šÛ]»�µÒËUdúíï_ed“ïtÓË)¹C`òG‚éfk†¸T–"š/›ˆ¤y’C¼16w¤šJò³M^4ìžñ�H¹(KEÕ{=“sqÑj„ô„¦µå¨ã¦ÎöœÒZôŒ9÷wI¥{¦iÜë³&©öU	­+�Û¼õT‘c\0±°i2	>dx#¹å.XÔ—òÓœ£æàé©_¼x’·ÚŒÓk—]9u§æœT¼£%S–ÞmÓ•û+iï"—…¼E6²ê¯5¥ÚµºLíh¥¼ŒGî%âãs�X‚e|³¹>e5×(¨¹¥ªŒ”TºNü×·øybÞ®üëkkÏ6 Ú³”[qërÚþ¼Ílµ‹ß[vÕ‘¨P@ G.ð�åmó0vîÈ]Øãv9Æzãœt¤ïÓüíòÒþ—WÚëq«_]Ž@ëwÖ†{i~Ï<ñÉmRÆ�^eËíÙ$m4­º¶W.]@Nj—¼¢££sœnõV…?i)%§E(Úöæ�¹–ª)û�¹l¢¥e£NRäŒ[Õ{Òq÷­¢m¸ÚÜÖ£Ô¯Ò+¨d=Õ‘xY#‰ãxüÅqi\0ù�Çæ�Åsæ.ì.S—-9UŠø9Ô“×XÁM[m$¥íËy|\«šãÍSiA®šJrƒO}SŒškuY]µNóÄÒEof¤w7¶âr|‰îB*¬eöÛÛŸ:OšU oP‹¹ÝþP­½D¡RtÓ´`ÝÛWÓ™¨ßeù]äôM%kÉ[ožœ*=æ•’vÕÇ™Ú÷½´÷V®÷Ù6^ºÕî!†Îx	á¹–Þ7”üæU-{ŽÀA,K!^«rÔ­ûÅ¬Ÿ=µ»÷iT©¾ŠÞäv^ò“~í•Æí%ºqNé«^¤!kouÌî�¬ÒÑÝ¥nòþæÛP¶¶ÙîLŠOÌdÊDòd}Õ@
�ÿ -7~æ9˜êåÒJÞS¥}}¤´édîîÒ©{ª-uš‹ùÂ¤´ÿ À¾m[DÜ{}m¨Eo)‚HnšP±ÆŽ²Ä‘¡a+ÈÒ²È¤…Fö¼¨?ñ×š?iCšû$ù¢”^ûó;;¦ù[åß•ËD¤¶æQ³ÝÝ6Úè­kÙôë{&¶W·É~lnÌ†€Í˜ÓÉùÕV9Ë'™æÅ³å?îý³Rï}“æRm[[8ò¦ýç¤•í§1-¶Òæ²ê”m­ö³½¶Zí}ylêº�Ø^Q+É'šR8„X�Ç¾Ç2•ÛÓ*UÓç 3Ýœå.U+or–»$§N7Ó[®u§òóhåÊ;|)éy¨ùÝÆr·k>Wç~]RæfF—â™.ílÞKY�Õì"o*3n>@#ß(2\…ò³"íRæ}§æŒqÑ(ÚnhÛ™¿³vÒæ¶÷åoÝRK®­'²nßjQŠë.^‹¢ihùœSiÚëRy¼W¼^EÓ,we2*FPÎUY#½|ÍÊªû<µc‰5Œ}äš_?*Û™ÂSRK¢²„¥y5U½ÓJŸ»{¿‡—›ÉMEÅ÷wsK•'+ý›4Ý¸µß>ÜÍµÌ’¤­Û¨„JŽ¹,´Ë ÃóŠ°eÚI`)ì“Z¦›ºòn/{;©'$Û³i5¨-äžŽ6Ñù¨ÉZ×Þ2OÉof¬W_Ç3G­½ÍÄ“Aç„E‰J s3M««ü¥wžWp…‹—UÂWèÕHÎPk®ªY5u{{Ö6µônS�º§NQŒïkèœ·WNÎÚ¸©G ø‘µ8-Úîµ–æ)$RÞ_–DE7m),„d>T>„r@ eÝF<Í­)Â£ßi/y¯$Ú}Òœ÷œ’5»I?âJšïtådüÚŒ“¶—Œ­£‹yëâç�î‰·¸†Òïp-üÀ®³¶à�3rËò•¢áÕüà¨P±f¢ù¯)ò[K¦Ô=×ºæNWfÛ7-Š¼éÆ’“’½ý×i$ši§Èû­_4ZV»/ÍâÈ-ãhn�-Þ¥™R2Šó¤m@�;2¢~î6Úçæ
…XÕ®ì–ò”b»Ê7¼UÞ›i)5òNöÉiÊ÷÷ßuäœ�•´ånJ7vÕ&Y_DbvhgIãœ[ý”ˆŒÆVA*ªí•¡!¢a&ÿ 8" bì»[ü¼ºósmÓ•¾kÞÉZÞŽéFîQN¶½ôI'~êO–-ZïY{»];ÞÉ6jiÚ‚j1^&FhÞ9‡�Ôá•¶³©=*Ì¬*ÄiôM;§{=z7½ž’M=7B¾®;5d×ªR[i¬Z=uÐ½Ha@  P@  P@  P@ Vûþ=åÿ ®oÿ  š m y?Šü±¬[Ü&inœyÉ¹DKin€º…
ï�Æ¿3�™ÛÀÂ¤”&Þé^¤¯ÖK–4ãÛÎÛ¸ÂV{Ž£r…–�Jq¶–ær”¥~ê*Iy´wš¤ÓØyjJÅtKm„_²]('*îe\œ°H«‹÷›É/½Êïvˆh¡(®Ð²ô©§¢WôG!c¡‹X,çKînc¹–4<Dñ\0B—Â¸ŒÂ¤¯°F2@8ÅZšƒºOíüê4VÝf½åÝ.hítUÛ›–�¬Dœo·+©SåÉ$Ó}´žº”ÿ ² ’Î?6Æ9 µ½‰‹®žñI4eBË#Z<m9`v¬¬‰Bï
avût§e¥QY?u'N|­[à‹¨Õ£'î¸©7k3?³8E·¥7wñ7‹™6íÌÕ5'Ì¾%7¯tï˜e›ZŽá-¼†ŽéÒG³	&UGkÂÂ&…ð„@¨â6)¸«ŠšzjôMNëmnÚ½þ'¥Ô–‹e+YIÎÖitTÜ_•áÍÊ´ä²r‹[´¤ÜumQM:üZ•‚9c—ì9Gþ?Ý Ý.Ñgj	#c‘‡\†ÁZ)=¹0*I¦ô„gíŽï–öœV¶|¶»IÓøÝ¿Ÿf�¬ç({7w¢»Ö2zi}�ûmÎ‰T=³ÞÛ·�O¹°Š0Šþc˜gw%dD¬1c’Í�­­4õJU]ÛºIÐœTmöcÍ²z9M¤µ±ž©MÇGËIhµmW‹r¿YrÞíj”S¾‰žŸI,q(D@U@
ª  `   ¦ÛnïVú±¤–‹DV›¥Ïý{�ý­HeÚ óo=êG¨4;Oh	$›FŽÄ¤)$ŒnÂòp °Ê-ÇT¯jòmwµ
V^WvWm.íi}çÄRùÕ«þI¹i®›=�Ï%å…Ñ… ¸™eipª3A–V`2H<“È­ì¡Vpƒ÷U:–ìíZ�ŸõÜæ»té¹|\ð¿þ
«}õ2µk=SR¸¹šÖŠÄ#ŽÙçšH]^™#Am tyv.LˆbÆB�Ç8·í-¯?5—Äáhr4ì“’ulúÆªì�ÚR|�9\nÖŠU|Éë~[SkOvp{½‰,eÔd½¿ŠŽêK8>ÊdR��ÁÖ6pr�û†
ä U´ ¤·^ßÞ¶ŽT”hs[Tí$¥k5y.ñVˆ¹JQ½“T£¾±Uë[›¤”_+ëî¶ã¤µké–7‚Ò;+9!€^+\#ÛKlZÜ‚Ò‡EóYRIä”°BïœS_½¹yjYl®ÔvŽœ©ôM-UÒº¸-#=ùíNî÷“µX¿‰|M+¶Ózkq#Ð÷L–>K¥˜—PŒ(B"š$À^6ªgãÙzb±JRJí©{±RêšÄÃÙë½Ô"œz¸Å=‘Wå•â••jRµ´kêÒRÓ³›j]9›OVW¸´Ôol¥¸™fColÊÑ<›à�Á¹q
¼O*LåÉDpf….íÁ[FÔœjY%RNr�›å\’Œ!$·ä¨Ü¯k%+´Ò³IrÞœ[ýÜ\`î“w’r’–Þý(Át´ÓIÁûË¥ð­§Ù-¤Ã.IK$kg5ŠD6¢”ŽÞvgU,äaK;moh§ºO[ÝÙÉ´Ÿk^É=ymÒÄ­ÛZlš³Z®½�ÓIÛM5÷®tOþ¶úèôT•­›þºý pÿ ÿ ä[¼úEÿ £â¬j}�ñ/É›ÒøŸø'ÿ ¤HùïÛ­¶È€F-¼F¢SœðÒ}â¼ðÒ¶zÙöVÿ ‡îüÌ—óþ´ì}­áùØ×�¿þŠJè¯üYÿ ‰þfTþœ¿ô¦o'ü|/ýs“ÿ BŠ¹ÍHåÿ Zÿ Qÿ  Š m ç_ãÂ/úø_ý-{wñeþÿ ¥Dù¬ëýÞ?õö?úDÏCðïü‚ìÿ ëÖý•ç×þ-OñËÿ Jg³„ÿ w£ÿ ^©ÿ éØ®s°£ªÇœÿ õÆOý©¡î�¥!”u/õiÿ ]àÿ ÑÑÓ¡Ha@  PqÓó~·û¾ìÌzD}Û³Ûf1·¾sÆ½Þï{?—'´üý§ÊÝo¢jî/ùyþ|þÏòäùß¥µ-ôÿ ³ÞOy»?iXWf1·Ê3»';·úc¾x»ósûáNÿ Êw¿�­¥Ø×½ÍýÅzJr¿þOkyyéOYÓ.u„ÛÍKhç�§ŽFù|¶*—ç1�YC]Ä>ÐÈŒº—7•—“¾ëÎÚ_t›îVœ®=Úù«4â×Tî›ôír¦§ Ï«¤)töŒÑ†ß'Ø·H½jÒ\H-˜70œäÀ5õ^í’jöoù—2×–]’M+ÚW´�›Š²µï}½ßîû½ZîÛMý›]>’RÝ(ÆÔ�B¨¨Àè*äÜ›”·m·êÈŒTRŠÙ$—¢ÐÃ›Ãë8½W��$rª‰£ŠÐŒ–CB$P9ÚA&6ŒRÞçOÏ�M]i¥Õžªêú£FîõZ{7M®éº—×¥ÔÚ]­"Æ›¦Ík,·wr¬÷3,q–Ž#b8‹”UC$­�Ò;3I  
­—*ë''êÔc§d”V÷w½ÛÑ(×K½²ù»¶û·¥íed¬“»s�?7ë»îÀÐlÇ÷¤GÝ»=¶c{ç<`¥îóÿ {Ùü¹=§çí>Vë}®âÿ —ŸçÏìÿ .O�ú[X"Ó$·ŠäC.Ë‹¹$�Måƒå³(HŽÆbÊE�pH·8]ØÒ1�ò¶ß�æç%å~g»JÚ¶‹Ó™Í«¯uZû(Å+'Ñ6œ½dú¶Ý	|=$’ºùàYÍ4wÃåeÌ±˜Û/˜Äí³¡‰˜’ÁdUl>í»AÊP]œœ¥¯~YÉÊ6åiòÝ´¬ã[=u”Tfÿ ™r¨;/²å ÷VÕ%/x~�¥_ØÜ<²\[K®Í'ú$‹;),cC7ÚÙq!Ty;B‚‚Å¨�»ÑtÒò²¼�ï«¶ºè­hÅ$å«rZk¥õ´o¤U­¢_{¼¥y97ÒP@ ‹­é³êq$VòÇWÝ"ÍMª‡–è³@Jî*äoÃ
ÊÊH¥´”»^ËûÚZ[ïmtìÚ’´£ŸGö×ËªùèŸ•ÓÑ²´ºMô†+‘q^Â²Fd¯ä´RbžI¹.Ð«‰ñ�r¥[m=¯fÒ’J[]¸¶âÓ¶�)Ij¤Ÿ3m=9WK;hï–º³Oº{»r½#®ŽñÂ8Ël¶‰pÂ8VƒthJ\C#Jgb6ï±PñŠX!RÙÜ®\–PÝ¥OÙr=ný×%Íu-o{ Þê_iÉÊÚ^Rš¨šÞÜ³WKTôRºVuçðåÜÈXÜÂfša-Ç™jÍo(H„qÇä-Ê0DÂ¾i78Ëep ^ë\»')k«ç|¶šµ’qŒyb¬í¤¾4¤[ß²Žš{‰É¸½ß½)7&šº÷~âôE’õ‘õ	#˜­½Í¼‹M:Ü4'!Zi™6¬[OÎÛ‹nq‚=¤•Ó’Ž©ëf¤�´w•×TÕîúT[ŠKM&¤´ÒÊ2�+]oÍ¯––êCeáÏ²$ ÌÒÉÏæHê7Í%À]Ò6@
26€ €µ�=Ò´S¥:vKDç(NR·œ¢ä×W&ï¦ª>ãVéR3×{B„bß”%Í»å»Wm‰¤h72C%ÜñÎm-Í´>U¹ƒä>^L…§œ»~éq´Æ£æ%I#nò—4§6½é»¾Û·¢õ{¶ì´V»¾q�$cM|0µ»éwµ¬õI+»>‰=fXP@ U¾†[‹y!·“È•Ñ•%Û¿Ëb·rçiç†}EKWV]Õ÷Úú­jêêé¦¯uª)>W{Ãôï×[uØç£Ðn�©´šku´r@Öö²EåË‚@ò	.çóC8ÆQŸ/—ÜÛ…·ª’ÒQ~îžê‹Œ ãÊ­£ŒœUšå[t´%dâõ‹Zÿ 3wMK›º’RÕ;´¯¥ÓÐ´Ò(îÄ«-ÅçúÉ?-#¢¤eä!UFpÒ9,Xî €3œT©Ê”tææ»ßÞ’Qo¦ÉF)+i{»·qn3U¼¼©%§»ånº·)6üôVI[Bšµk9Ò+‹(>ÍæI	‘$Œ¬a�ŒKÝ:‘/ÊrpMm99ÎsZ*Žò]tmÅ§Þ<ÒZ¦š“¼oke¨BÞ®	Yíöy]×ihÚM;¥ïZéÍý‚«imf’-&†]Ì —1>öÈB™$�0¹áqÅJ²”%eâ—÷}”©E_}“¿[yÝ6¯'¼ä¤ßŸµ�W§fÓK]/ÖÚÞ»ÓþÓsms»oÙFÛŒïó#hñœ�¸Ýž‡8Çi/u¹wƒ‡ß:s¿þSµ¼ï},ÛWIvš—Ý	Æßù=ïånºeÙi:…¥Ä“›igfbm$”%Œqùßl)¶ B¨…À'hgf©WPä½�ž«¬Ú·;N÷ÖÎ×øR‚´TR§nnn—Z>‘V÷VÖº¾¿ÌÜšm»Ã§Xê:LÒ<Wã™-í¼›™¤%A‘¥žüÄ[°`ƒh
…BªUÞÊÉh´I=#­Ûw»wÖîîNO™¶ïumot¯vï}tvJÛtQÒÉi¢ÕZX$Õæ‚êhf²6�'îæò¤DÑä4*�»?1É#@æ¥Å>k¿Šœ©Ûªæ•9svûKÎîÖW_Ê–œ³ŒïÑÚ5#nÿ n÷ùkwl·ð¬òX[é�<;U²›VóÑP‰á“í8†áÌÁc‘Œ©Ó™¹ª²ø•›¶—w»¶ö„¬”£­ÕîìÒMý¤¶”¤ìõV–¶vµÚm´ô¶š]]èŸgwï~ýú^ýÎ›<¿Ýýîþ_ßíŸ¸qÌGÝöÜö¿?kí¾î_mç~^—Òn¦¯ñ{/—³ö_7²ò·7[kN÷ÂÍr	c+%ÓÜ´sÀf…ƒÆ±ì’!4{ÊmÞŒ[hc“`RJÜ©ê¢ª/ü««Ì¯t¥ò&Ô´rÓ]/¬šÑÉÁÿ à4Õ;;onf®µQ×MnhÞ;ÆË uŠÜÛ…„34¡€Sµ@Ý·hP8ÈÀùAÝ=o
0÷
3�ÿ íî{ù[w{“m­¥¥ZV[~öQ•¿íÞ[yß¥ŒKÝX­-ô…w•ÄÇÊ–8+Rs	eÜñù†	$E;£2;#$CcE+ÓŒµP‚�KÚÓ„ce=Ô¥
|ÑNM|NÑÐ¶Üyå%)¹C«„Üù¹».^iY´“�á«zìj>kÇ¹1J°Ç{eö7Cb»DÂ7F |æÜ…[x
'$½_2“½æ§çÌ¹owÕ5¦�=nÖ…Aªn›ŠþzwŽŽÞM5¾ºin¢Iá½épžn>Óqi>v}ß²‹a·ïó¿ìÿ {�»ú6ßšù¬ã/åœçÿ �_O•÷ëØÍi_úré}ê~÷þO·–úé¥á(õ/=¤hÜÍsÒ,Ð,Ñ+Gn–ûd‰œ	‘”1ë)`T†@Ç4¬¢•¯7ª½Ô÷^MhÓOt¯î·£wÓTœ#Ÿ»7Q=º¶“VÕ_TÝÖÖ�¦®“n-Õ-ã9,ÂÖm'¸ˆ<˜8 ]‰Æxè-»Ùkd­«½ºéÙ]·o3$­}µwÑ[¢Z÷zoÚË¡©RPP@  P@  P@  P@ V½·”ùæÿ ú	 
Bö3æ Ï« "h>Óm»vø÷Œî\àà‘œç�Ç°£oÃð½¾ë»z¾à;í�ÏHÿ ïµÿ  >Ùüô�þû_ñ í�ÏHÿ ïµÿ  >Ùüô�þû_ñ í�ÏHÿ ïµÿ  >Ùüô�þû_ñ í�ÏHÿ ïµÿ  €È³-ÉŒ†H\ŽFq)À#¯QÒ€&°Ÿ1}Xù@·vEûù·QYÏ& ß"Bí�Ðn`NašVJöë¿ŸOÉXwüÒÇH°6Ö+H$ÁâHQ°z�ÊÁî3Uv´]I·á±§öÈ?ç¤÷Úÿ �!‡Û ÿ ž‘ÿ ßkþ4 }²ùéýö¿ã@Û ÿ ž‘ÿ ßkþ4 }²ùéýö¿ã@Û ÿ ž‘ÿ ßkþ4 Áq³D±²±Äí àyn9ÇNH  ÜGÒ«²¡Ü¤n dÐqŸphÿ lƒþzGÿ }¯øÐöÈ?ç¤÷Úÿ � lƒþzGÿ }¯øÐÉ5ÈòØ6Øß$�–�Ž; YÖ¿Ôè"€@ y×ÄŸøð‹þ¾ÿ EË^Æ]üY�ÿ éQ>k:ÿ w�ý}�þ‘3Ð|:àivõëþŠJóëÿ §øåÿ ¥3ÙÂ»Ñÿ ¯Tÿ ô„loÎvbŽ
¶XA õ¸ 
ÙÖ_óÂûôŸüM;ŠÃ–ÆÍe†%e ‚#PA‚^ìhæñHa¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼P¼PSily1Çÿ |/øPöK_ùåýð¿á@Ù-ç”÷Âÿ … dµÿ žQÿ ßþ }’×þyGÿ |/øPöK_ùåýð¿á@Ù-ç”÷Âÿ … dµÿ žQÿ ßþ }’×þyGÿ |/øPÑ¬p�±€ƒÑFä Bm-�&8ÿ ï…ÿ 
 >Ékÿ <£ÿ ¾ü( û%¯üò�þø_ð ì–¿óÊ?ûáÂ€²Zÿ Ï(ÿ ï…ÿ 
 >Ékÿ <£ÿ ¾ü( û%¯üò�þø_ð ì–¿óÊ?ûáÂ€²Zÿ Ï(ÿ ï…ÿ 
 ’8¡„æ5T'º¨ÈP$PÌs"«‘Ý”æ(?²Zÿ Ï(ÿ ï…ÿ 
 >Ékÿ <£ÿ ¾ü( û%¯üò�þø_ð 	bŽ(8�U3×j�ŸÈ
 ¥!Ì��Qÿ  Š m ç_ãÂ/úø_ý-{wñeþÿ ¥Dù¬ëýÞ?õö?úDÎëÃÿ ò´ÿ ¯X?ôR×Ÿ_øµ?Ç/ý)žÎýÞ�ýz§ÿ ¤#b¹ÎÀ €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (‡1Dî½U�¨Ð"Ù{´„úù’Ð0ð }•=dÿ ¿²ñt }•=dÿ ¿²ñt }•=dÿ ¿²ñt }•=dÿ ¿²ñt }•=dÿ ¿²ñt }•=dÿ ¿²ñt }•=dÿ ¿²ñt }•=dÿ ¿²ñt;[‰B’Dq‡]Ä±ïã'$�”u>´(¶^í!>¾dƒô ü eOY?ïìŸü] eOY?ïìŸü] eOY?ïìŸü] eOY?ïìŸü] eOY?ïìŸü] eOY?ïìŸü] eOY?ïìŸü] eOY?ïìŸü] 7g�é°¶Š�ÌÍüÙ‰ÁÊö gœï¸°Á@Veþlü¤då»Ð¾Êž²ßÙ?øº >Êž²ßÙ?øº >Êž²ßÙ?øº #T¡b¬ŒpÌ[JyÜr3Ž” �÷Ûê?ô@ ç_ãÂ/úø_ý-{wñeþÿ ¥Dù¬ëýÞ?õö?úDÎëÃÿ ò´ÿ ¯X?ôR×Ÿ_øµ?Ç/ý)žÎýÞ�ýz§ÿ ¤#b¹ÎÁ’H°£Hç
€±=p É<sÓÒ€)ÿ iCé/ýù›ÿ �Ó°€jPäœn!Fb•FX€J 2Hš,úC
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 ('š8ÙQÙU¤$"’bbX…ˆÀôy.×ù]+ú]¥~íwµó·Ï]=ts% €
 (  I"Â¦ID@Y™ˆ@$“À rIà
M¥«Ñ&Ý–­ì�å`À2�Ar=ÅSVÑîJi«­…¤0 €
 (  €
 (  €
 (  €
 (  
×Ÿê$ÿ ®oÿ  š š€<Ä^;“Gñ,v%å6pÂ¢H!Ž7y§—>ZeÀ+Ã!ÿ XƒŒw¥Gß”ÓWÕBeví½6¼“×t´µÇSÜ„Ú9Éÿ u6­mzÇî—¡é—×¯m-¤h.g1>îª¢ÞyxÁÀmÑ¨$î'Œà‹Jòqí=;©E}Þóü|.[5Ë§ø§»ü¤þf]¿Ší¦
ïÄ0È²²M"&Ç0†i‘¤Ü—1…uS±˜ñYs.Ohô^ÍU·^F¢ï¦šsÅ4ÚzÝ^:�•ór-_;§¦ÊIÉ[Ñò»5¢Ñ;KBÏÜC¼ðYNEÌéÖ¹hÝwL]íÇÜÜÃ;ÕFÜéf§rÒîj_Ýq„åm/³�Ý®¹T’|Î)ÅÓ„§¢ä³ÖÍJq�ûìíªOšQº²“Zï«ˆ®’ÖH'E•¼´œˆü¦�!“`Ä†Qò«aš! ¨rp
Zé³³i>©;;~vvmj“Cz+ôV¿÷y­k÷Õ¤ùn“vvÖÜÞ—âFÙod-³iX\´Ÿih—hE³¨ª8$Ž2sYÁÞ)½[§„iw�hO›²÷¤£½”|•Ç-%e¢SÅ_Ê4§yû±ró}nìk?‰£�{osÞlQ}œˆŒ»¦bl¤ÍÇÚÃw™ò�wíÚØÓ²Ž·rŽ�%:�;Ù|);«­V»Ùm{è’ŒµëO‘5m~+énm4NêýN]™Le€%nå$r§k2ät;Y—=	ÓjÎÉßÍÁ³ûÐ—Ýåÿ S¹ÿ –ÿ õÀíjC4(Ïõ˜RW¾ši¦‹Ékxã+uq
'˜¨8X¥DÜYøfVùˆ$03OWnõ¹~J•)Y}òzow×RžétT¹¾|õ®ßÊ+ä‰´a}£Þ-”þl–÷pQå›ÎÁVg‹Ëgv˜)„…t~(d —ßqw\�F©©yÞ.žÛ§)óE½V«Tâ¡œ´´£´¤£åg	Iz5ÈÓ¶Ž÷Ýk«ªërX]Ej­
lk¶9ÝLþL%p@“s9`@Ž7ã$£¬¬ôWQOûòRq_|TZÞõi»ÚéÔ½ØÝo¬¼¹!nvüÒ—4{òÉodì\kðÛ\Kné.ÛXÖYæ<¨Ñ•ØK‡b|²6ÆŽÙ#�¤°IÝ7®’åÛW+A¨Å+¶ß:·šiÚñævÕG«I¯G)E¶Þ‰.VÝÚÓU{JÙwúýÄfÕÒÞæ-ÐŒÆë	y‘­çu	¶G	—D'Ìh™1ûÍ‰“T—½gü³÷n®œTZw¿-µvjM=V®ÂVq”–ÉA©koz¤bôø¶oGêºí;x’©.Ë”eûNûp°—Ýl¤ÉüÌ7thÌRmsŒ¹SÌs(ëw’S¾¶J5!	7§5á&ÓVµ”Ý›QMµŸ<aÓyS”âº®W�÷¿*Ñs®5ûk|€OÝÅ"ù`æw)
.X|ò08ÎTvUæ­§águ.[i¬’r’ZÛÜŠæ•ì’j×ÖÓ¥Îö‹‹•û/u+­ýç+FÉóI4µÞÞ�¨® ¯„xd…ü¹"“føÛj¸Æò!Ê:°(ì¤0ç9 µ’kgÁ´Ö¶Ù§ù«¦˜lìÕºú§³^[¯TÓÕ2Ìß~/úèô\”†ýùë ÿ ÑqÐ-ãÍBçIÑ¦¼³”ÛI	ŒïTIÓ"©$ùNwwÆNk)·=9¬ü×,¿[?‘¤#Íu×•µåoyþ	¯VxøûÄÛ­Ù¿”BìQOÙ¬IÜ3œ }àpy*¿"µzY>ªëÓc5­íÓGóÔúCÃ7]év·2yÒÍr3•T-½CU~U8 8ÍkR<’pZZÉú¤“7vgÚ»ï/»™Ù|–†©ÿ ^ŸõÎOý
*ÈÐk}öú�ýP@ y×ÄŸøð‹þ¾ÿ EË^Æ]üY�ÿ éQ>k:ÿ w�ý}�þ‘3ºðÿ üƒ-?ëÖýµç×þ-OñËÿ Jg³„ÿ w£ÿ ^©ÿ éØ®s°¥©Ç¤ßõÊOý ÓB4ÕF¥!”50K�ÿ - ÿ ÑÉLEšC
 (  €9e·Huàêé,¤f%™¹óá ÄíQÙW
2H “’*©mz/æþ°ßùy$’Ñ$¦_7åWðö×›»z¶G¦ÁöMGP[eþ]³ îØg+9ùä"G œÛ\ªðª@Dn©´ºU’^žËë®í½Û»ní±»{E}/NÛÎ­m–‹Ñhº+"]EòâÕ- ¸ºrþU°>,Ž²–(‚ªÈbÌyÛ÷uW–¯¤>.W«Ó—T¯u¯òíï]´•“e§k¹i­µ¾�¥mô–�òév×NsUÒÆÝü_Ú0ÛØ¬K!’5û4é¸¼ù™Õ×x1…–/2á<¬%¹*7ï¸]MÛ’i´šJË^iJÒ´SS”¹]”b8%î¦—/4Ü¡öydâÒÖÉÆœT£yZÑwKWnÇN“P+ÜG–`ŒË!™ÄÞnÁ¼y>FÌoÈÏŸžû{Võç¨–‘æ—'/U•´½­}—}9éß’›{ò®kèÓ·ÎúÚ÷¶ï¶¼”Å´¸5�²e
OÎÙUkkQ$�),àª³;HIa‚Ü‘Xï
qÙJ·+è¹eV1kKn�´ië{�/Is-Õ%¥ýäë¸èôz¥ekl­m¯Bº|÷xŽÕbL–�˜UüÑ U2JÆUò÷i	uul.y½ãÛ–r�¶WQ„®’²Ž’IÇ[Yk­–;4÷æ�ï{ÊÉ´®Þ²O^Yu|úivñmZî@9–ÊRû‰lþú�˜œ(aFN'1­VoÜéÞÿ Y½ûö×¢Kd’rÒTä´v«ø{[·Ë­Þí³2ÛG±†âòöÆ;m0ZÄöÑ\G(Ê‡švUeŒ”@àåÍ8»Gšÿ ’·xÂ|­y9ÍM=ôTÚÔ«.xÆ×å³k¯4•Òï¤i­ý£OXéRîœÜ_0S¨C¨[ÅœK[„�c–7ftSµ„ŽÄ´BëÙ¸«9Nj^qU*FJ]ùh®džÜ±’WÔ‡ªš“º�4àöWöQ”e—•vãuñ?ÝÝ¥ÊmZéÖóê"úÆ%…"i„÷
 {§9C?zHã|±yÑV,®â¤=ÔÚÒ.Œ{ÞQ’©oDÔ[¼¦§)iœÜµi}¥+·ÚÑ”\õk™/v<ª?ju
 (  mi-%…b¼„]‡p#·*­æÉµˆ]ŽB63'È�w’6‚®ÒJï[_d´¼›×•/æß^XÞRQ“NÉ»Ùu·®‰wmôÛ«´SkŽ¸Ò®TÙécŠêb—óÛîYcháo‡ÎX#‘–0ìªª‚_,”P­»¶ÛOÙÓ§¬·–Ž3ž·åÖ1¼ß3�?+»›a²÷U”êKHéÊ¬ÜcçÍ«qVMÆé¨®WrïSûF�Úù6í)´G�jE³,[†Â¬°8VXÊìÜ‡
ÊFC’çœ½¤îÔµiºN¤a5¥åÍÊœ¹ßºô‘+ÜŒûÅÉ+i~ZŠ”wåJ-Ï›ÞäÒOšÚ�ÚÄºv¡`Ñ[Æ-™6q›xdcn²e¢Wl0ÑÞ@ØV=B¯=wzšºå�Dµº÷SÖ;+^O§»R2¶±LÚ’å­iï:r}õ•¬úßÝ½ô¼$“Vnõ5¤ß¦\À	šÎÆiÑGñ…ûÉ;™!isÑÊžÕÛQ¨U­Qé$¥þ	J§3êß-•D–­Á.§5(óaá»tùz{ÊœÜuè›\²ÊØõœjÚ”z¤mºÝá»†ÛÚcEC$ ÓIr ÷H��½\U„j©håB«~QŒé(.Ú§*‰«]TIü(Þ-IÒkhÖ§ÿ �J�W/ºÑƒOXÎ3]H¼j,&¶SfçOVUµ`Ë6Ï$´×Ê€‰~u	…�Òƒ)%EwÏIÖ†Ö’|«áŠN¢÷_›v~ìn£^Ï—–)ôµ®þ)9F2W^J{ËYt½ß¥×9¸P@ V¼hR	ÁFó	$ ˜;ŽFã<ƒŸNj]­ª¾ÚZ÷×Emow§-Ÿ6Öw±Q½×.ý?®ž§>š¶PI$QË‹(ÍºyÁe’DA¶3pG"Ž|¥_0‡,‹¢ZÂ�K;În×º_º|�ìÿ yÚ^ã”¹W5Û–mé*”úA+ê›N~üû®Zr“Œ�¤¬ÛÙ%vtMJÎ	g	R‘FJF’pÒ"ª¡3±Ú<,í•99æªß°œžñuTþUýê5D›¿+�•¹·‚µhÅhœi¹[ù½¤þæâ¡~ñµî¤ï�,êévìþCØX]FÒÂòF–áCB$ˆJU]Ø+>ÕæM¬QqÛ[øÕÛ·¸ÛWìç5&¿–Ö‚s³åæå·¿s–Ž”i%{•6¿Át¼ù½çË¥ùo},íÎb½°Óo5„ý¢ÍQ#'ÊEóT~íi÷m´7–@EBþ,%­ç·Íñ+áªË•öi»Kk´¯²³’´'=ÙÅi¢mb)ÅËÑÚêíÚîÏVÞ¶§n‹«XLÞÏ:’Yˆ [ÉÂ©%W=NÐ7ÎD4”ÒëJMúû\:û—E²m½Û½Oh>Õ"¿ò�wý=ö[$C�oq¨­í”i
Âó}¢ä áŠ²w}é#�Îæg;QãDˆ6ÅF-½ àÒ[_X¿hþQ|²~ô¹œ¯ÊÓ�KV£¼“Zÿ *Q~êówW[%¿¾½ÕÑtØìßØD¶Ö�	L¨
n™�X\8°P¤G$„É'˜ìp›Yí^)¦­~[FÖä·5ôÑEË™^)&”R—½îÅKÞ’}S•åÝ»hŸTšzí�òÝÊæ·<ë=µ´24+rnÙùmÝÔ¯˜ŽV �”ƒŒG„õUEFrùª”WÜã)'äî¬Òj¶äk­HÅú:u_ç¿—fÓå4ùo4íOœÏqö4µI.%‰mL±�‘•d‡k[¢ù�ö+\ýÓ¹þc]“þ3‹Û™(ö”œš÷íf¹¯%«•´‘mO—âç©~é&þ—ºm©^÷÷”·=ö¢ÒÉ,wEjIf±ùP•J±Ù)¼ÈŒåã;öq‰A\ðWöiý¿mwÕ{9Wk—¥íIEÝ5g{s&Øä—;ŽÑöVìÝEE;õåýã••¥{ûÖ²SiÜˆ^Í§¸{˜ï%�í~Ñ2G—‘2­ªWÜ¢‚åPÍÁ~e-�I4­kB«¥ÌùžÚFé;óKKE4R÷\ÓÙ8F7½ï:q©eËÿ oZúYkw¼ZUýþ´ðFn^ÝZÈÊæ(íË´‚vˆ6]'ŒeFX&å-�Œ©¿;ÿ §t$’½“«
²•¯ïZér§®Šÿ i5~^Uoùy];ïjS¦¢�¬¯fÓkM]µåq¯¢ÞÍ¡é–w3Í$öÏªêëVM¾dALq¡Æb’0s3Ê ’và»åŒb—3£OÙ«Úóå� µûQ–ïhÒN÷rníïM·d«TænÖPçœ\ÞÛK•»Y{ÒvQK–û~�6¡w-Ô†æ&JìƒË…¼?(òwmŽE,€±Éb$.»UkHFJ.ëÛ(ÝîÕ©{ÚY'%ukY-•õ*ÚN�2²““qìœ£î_wdÕÞ�´ž‰´í]êZ�k™â¹(¶×VP$F(™
Ü¥¨�¹*$8iÙÓk¦a‹¡
µËïF=%R¤="¯f¿¼­»æ]âõo%¬ê¨*¾²N£iùIA'k5ºk«®µ{û–É^[™þ+e™VÕgËl·	<‹_3q1!pªw/É#á^¼¡m/íµ®ù.Õ¯³jÎVOÝŒšJ÷�µËÍ+¯‚W½“•OfÖšÛKÆïv“m-z½
KÇ·?Ú	$r,Œªeò<Ç�‚� ¶w„9†Ø@$nÚ¹À§²z^Îé^Éó4·ïõi6Òz«ÞK[]Zö»\©½»K™-�’¿sf¤  €
 (  €
 (  €
 (  €
 ­yþ¢Oúæÿ ú	 	¨RÒ¿´.í]Àò-îãæ˜(ŽŽáCÈùìÊ”GÝ“Ÿh8ÇÖms?”bãçÏu°KXòw”[ÿ níó—+íî»ô.ÞXý®[ywmû,Æ\c;³ÑmÎFßõ»³ƒ÷qŽr÷[ÝqûÜ]ÿ ò_Äw÷\{òþŒ¿[çs2­àµ…%¬žGVhò¼s D€€¦\œ7Ì]ÙËÒ”ik·º©®kyû=¯×}5:É½�GSO9ÊV¿ý½kÛ¥íÐ£…å†±ÍS}¦;”òíÊ[# ÁÛÏ,<ÀXÈVu,ç µî¸oh9={J›Œ–)6âµ´›z§dž¼×ûJ+M5ŒÔÔž÷m¤›ÒñIhÕÅ_
Ÿ·®¡$‘;G;L¬mÇÚ0é"˜MÁ�Ÿ)wþíR4Úªo?5÷>é.×æ¾²îÕÖ»Yi¥‰{×Oª‡¢ppøWE.W}Ýäß5®›ƒãx¼²ïSl`ÿ V1Ÿ<Î®U™•€l¬ÉÁ"³QåIhí:WZ^‚’»]TùµWM-»º«ûÜÚ«ºíÙÙÚ»‹i>Ž)Y;jÝì­g-Ÿ…–Õ@³…£¸Žrm,Å²¸Œ0
ëçI“ó>ìà'z×¬¾ë›µô÷éÊž‹§Åvõ½’Ós;i%ÝA^Ú®Z‘ŸÎü¶ékß]Žº‘F}Ïü·ÿ ®ÿ kP… yÏ‰ôK�Sí6¿g–hnd‚@Èa1Ÿ.0¥$F½³—††Ç!I,7)ÅG{éj²š~N”!u®�5-Ó^O¦—³ºëN0~MUœþæšZkfõLÙ³ŽêY¬ÖK{ˆ’Í<³µ±.LB0qÄ­¹�'å sÍt·ÍRutW„•¼åRœ»l”_n‡:�,!M}™EßÊ4êG½÷’ïæÇÜøJÚýîe»’w{³ƒåÏqÂHÌqL±É´n$º�ÌÍ�í¬¬Ôybí+¹soï·îÉ'¢qŠ„W~DÞ¦×÷®Ö‰$–ÞêÝ6¬Ýääü”¬¶ÖXü<^;ˆî¦2›Ëx`‘•v6bGS Ë8Ë—Ü);�­ÝÇÝ~×ÚÆßeÚ�•º¤é§æ�º]ç¨ÚúÇÙªm>±½Fîû¸ÎÎÖÕ]ZöR&îv�ï.#•­g/—ˆ0ËÖi>cæî._—äš³æ¶¶’ò÷­¶í%n­·}ÊÚ2‡F£¾þìÔ®öNü¶Ñ+oä:=Ëº[£&vË<»vuóÑnwÌç6q�ŒœÔl’z®J�õö••[ü­Ën»é°=[{{ðŸþIÒ·Îü×é¶»™¿ð‡Äld±wYwÊ’!’%tU‡h‚'‰‰Y#D@Œ	Rùv�WÒ³”um«óÉÅÂR’ÓÞpi^÷M'ÐwÖO¤´²Ó•ssÙ>Ê£rI«Yò»ÄÚÑt¥Ò 0ªZÆY‹7Ù-…¬dà L~d¿69àb­½×O?Ë·õ©	Y·§Ým;>úß¶ûuwæûñ×Cÿ ¢ä©(!ûòÿ ×Aÿ ¢ã è³x‡I¸Ó­™YÂ26ÈŽrUXŽã
yÇÖ³”\¹mÒWüùšBJ·ü²_|Z_™àð¤µ¯ùïeÿ 'ÿ äzÐÌú;B±}3O¶²”©’Þ¢b¹*YT•$‚G ã¨­I)ÎS[6ßÞD*³îÿ Ùtÿ ¯Oúç'þ…dXÖûíõú €
 ó¯‰?ñáý|/þ‹–½Œ»ø²ÿ ÿ Ò¢|Öuþïúûý"guáÿ ùZ×¬ú)kÏ¯üZŸã—þ”Ïg	þïGþ½Sÿ Ò±\çaVö6šÞXÐež7P:d• xëëL-ì€öy¸÷ƒÿ �P"½ÔÒÝ*Æ°È˜’&%ŒXdV'å•�@zFÀhRP@ “™çm_0)Pø‚’	]Ýv’#8Èµ^Ým;^×ô»·k¾ì;y^ÞWµíëe~ö]�a�¤UPî f `¹Úõ;rqž™8ëFÚ-¯›I_ÖÉ+öItAçÖÖù]»z]·êßr¥þ“eªmÖð\ùyÙçD’mÎ3·z¶3�œc8éJÊ÷ê;´­Ó·§ü;#&ž¾V-mÇÙsäbÿ s““å|¿»ÉäìÇ<õª»¿7Ú²Wëd¬•û%¢]‰²·/K·n—z·níêßSR�ÈE¼J\„Pe9�…9Ú/ÇÌv€¼çå t•®¹^ÚéÓ]ôóëÜwÕ>«gÚÍµø¶ý["³±¶Ó£òm"ŽÞ<“²$X×'©Ú€žç5WÙvÛÈžï«Ü›É�Ìó¶¯˜¨|ÁI®î»I ‘œdÚ–×·[_Î×µý.íÚï»o+ÛÊö½½l¯ÞË°Ãi–ÐùiåI¿zm]¯æ_rã¼’_ î$“œš;.Ö·•µVígªÚw[÷ë¢²ü^ŠÄGNµiÖìÃ¸EÚ³ÓÌUþè|nÉàsBÒíi}üý{ì·&Ú%Ñlº/NÅX|?¦[Oö¨m-£¸·š�D²nlî;Â†Ëdäç''=h^ê´tVµ–švôò÷µ–ºß^ûßÖúšô P@ R¾Óm54ÞÃÊ)Ü«4i"†ÁÁ à‘‘Î	¬¯~½ýwü—Ü;ôèWþÃÓ¼�gö[³+oX|˜ü Ü�Â=»Cdž@Ï&ŸgÖ;yzvù	itºïçëße¿bãÙ@ûƒGyˆ#|¢�Ñ�ØFÈù�nl)Ê�ÍÇ&‡­ÓÙ»¿7ÝùèµòîÚÚ[n–¾öí²{X~ËQÅò‘cÃgpØ \œŒs“š%ï+KUkYë§mzy÷]ã£½ôÓ^þ¤‹oeE5(„(íÊ©ÇÊ§båFÚ¹
m·vúïç¾ý÷{VJ+D¶]••—’mz1«i
*€*€ŠÀ«ÇÊ 05-'ºéËÿ n»{¾š-6ÑvE]ïçÍÿ okïzêõßWÝ•¬4‹+wØmàµß�ÞLIìtÝ±W8ÉÆzU]ÚÝ;e¿SF�Â€
 ()àŽæ6†eY#pU‘Ô2²že ‚êÁ¤Òz?êÚ¯¹ê;Ûm?à™ÖÚ›d®–Ö–Ð¬Ë¶A uçåpª/'†ÈäúÓz®W¶štÓm<ºgÌ´kgÕ_}K–öVö�‹kx£Š¢* ¨ .NF9ÍÞV–ªÖ³×NÞž@½Ýc£½ôÓ^þ¤we¥ÜKmq2Ã6Fñ£"í]¨À¨Ú8�MêùÞ²½ïÖï­÷¸/ur­­e¢·kvò,<È]‚eA
ËÊ•pTò¤r;Rë~ºë×TÓûÓi÷M®¢¶œ½4Ó¦�5÷4šìÒb¼1»+²©hÉ(ÄT‘´•'•È$c àñFÚ®Öù6�½.“·tŸD?ó¿ÎÍ_ÖÍ¯Fû™‰áí2)¾Ô–v«9bÞh‚!&æÎæÞv[''999ëI$—*ZZÖéf¬Õ»[Kmmêî÷½ïæ�Óõ¾·ï©
xnÂÔ3iðÃ§ÎÃhžÚt•FA …×ŒÈÃ0@!ëÑµÞÝWgå{?�i»IÚö¿FÓW^zÿ �Ö…Ë=8ÛàÜM%äˆÅ’IÒÜ<y]¤!‚@g'ˆ$gSÛ¦¶i¾­6�Ÿ•â�»¥{ÙY[îÑ¥Ñ5uuçf×¦Û»Çýƒ¦åÙ-³3Æ|ˆþGb�>_•˜€Y†	 r)/vÜºYY[K-t]–¯Mµ}Æõ½õ»»¿W¢»îì–¾H»ö89ýÜ|È%?"ó Æ$<}ñ�‡ûÃžK[¥íåÍ~kvææ•ûó;îÃ{ß­¯çkZýíËv²¶È†ãJ³ºR“Áª_Í*ñ#&1æÊA| 7}ìqš–kN[òù]¶íÚí¶í»mî×}üì’Wïd’×¢K¡<V�@CE!´UR’ÅA |»‰ltÉ'­mÚ+åÔW¤Sj+¢nÛ‡üó“NOþÞi7Ý¥s*ãBŠR‘Ä"‚ØL.&‰!¦™Y]¸`£çPÏ˜Ùä!Fõ †#î¸¾�MA-[ROä”›Š\¶—½w°=S]eñ>­híóµ›w¼[I'©£>�krþdÐÅ#ìh÷<jÍå¿™ �Œ>òýÖî^Ým;;«ú=Wg¨îôþëºò{]vvÒèq²·!�Š<;#°Ø¿3&ÝŒÜrÉ±6Êí\´aß¯fÚòowêú¾¢ÛEµ¹íÝ}ßM^›jû‰-…´ë$rÅ¤äU‘XH@
€‚
ªìà( ©²µº't¼÷¿­õ¸îÖ«{[å®žš½<ßqö¶�XÆ µ� ‰sµ#UD98U ’IÀëÍSmîM­¶…ŠC
 (  €
 (  €
 (  €
 (  §ŒË êÊËù‚(€žìp`ÉÄŠ?J >Ñuÿ >ÿ ù?Â€´]Ï¿þEOð í_óïÿ ‘Sü( ûE×üûÿ äTÿ 
 >Ñuÿ >ÿ ù?Â€´]Ï¿þEOð í_óïÿ ‘Sü( ûE×üûÿ äTÿ 
 TŠiÖS*ˆÌ‰±W9À¹$qÕ¨÷cƒHî$QúPö‹¯ù÷ÿ È©þ }¢ëþ}ÿ ò*… hºÿ ŸüŠŸá@Ú.¿çßÿ "§øPö‹¯ù÷ÿ È©þ }¢ëþ}ÿ ò*… hºÿ ŸüŠŸá@Ú.¿çßÿ "§øP£ûDÒ!’1ÆK}ðÄ’¥F1Óï´ Iöˆ$sbUrï… …
sŸ÷{P~Ñuÿ >ÿ ù?Â€´]Ï¿þEOð í_óïÿ ‘Sü(Kq4’ù’ ˆ*•pbK$äq�–€ß}¾£ÿ A P@uñ'þ<"ÿ ¯…ÿ Ñr×±—_àúTOšÎ¿Ýãÿ _cÿ ¤LôF—gÿ ^°è¤¯>¿ñjŽ_úS=œ'û½úõOÿ HFÇ–+œì,PåŠ <±@–( òÅ X Ë yb€,PåŠ <±@–( òÅ X Ë yb€,PåŠ <±@–( òÅ X Ë yb€,PåŠ <±@–( òÅ X Ë yb€,PåŠ <±@–( òÅ X Ë yb€,PåŠ <±@–( òÅ X Ë yb€,PåŠ <±@–( òÅ X Ë yb€,PåŠ <±@–( òÅ X Ë yb€,PåŠ <±@–(
É8€*}ªÛÏ¸ŽB?ð íPÿ ÓOûõ/ÿ @Ú¡ÿ ¦Ÿ÷ê_þ"€µCÿ M?ïÔ¿üE j‡þšß©øŠ >Õý4ÿ ¿Rÿ ñ }ªúiÿ ~¥ÿ â( ûT?ôÓþýKÿ ÄPö¨é§ýú—ÿ ˆ 	£xå©8^¹Hú† �ÄP?j‡¶óî#��À„Áü( ûT?ôÓþýKÿ ÄPö¨é§ýú—ÿ ˆ íPÿ ÓOûõ/ÿ @Ú¡ÿ ¦Ÿ÷ê_þ"€µCÿ M?ïÔ¿üE j‡þšß©øŠ >Õý4ÿ ¿Rÿ ñ }ªúiÿ ~¥ÿ â(H¦ŠSµK×¬¹únQŸÂ€	&Šµ‹×
¬ØúíS�Æ€#ûT?ôÓþýKÿ ÄPö¨é§ýú—ÿ ˆ íPÿ ÓOûõ/ÿ @Å$sœŽ ‚§ë† ãß 
’²0÷ú  €<ëâOüxEÿ _ÿ ¢å¯c.þ,¿Àÿ ô¨Ÿ5�»Çþ¾Çÿ H™è~ÿ �]ŸýzÁÿ ¢’¼úÿ Å©þ9éLöpŸîôëÕ?ý!Îv  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@o¿ãÞ_úæÿ ú	 t 
rê6°N–’M\J	Ž&u8ÉT's ‡Ò…«in•Úì»ƒÑ]è¯düôÓ×U÷¢í  P@¢¼‚r)É]à+«¹Û¸`œ®àW=21Ö…®«´_ÊI¸¿I$Ü_T�ƒm<ÚùÅ¥%ëÒk£jåš (”ÜŸú÷ûZ€.t ;ßYéï$rùÄÀHc¶¸•Ü7<Q:—œnÈi'{¥Ò\¿öõ¢íæí(íÝÖ²î®½.Õþøµò,éšÍ®®¬ÖŽXÆÅ]]'R	^REGr²†Û´²°*ÀU¬”º=¾äþZ4ìú4öi¹¾¼½¯¿å×CR�Â€"’há*®Ê†FÚ�ˆ›¶®z¶ÕfÀÉÀ' 4y-÷ù-Øyô_«²ûÛKÕØd�••ZL„R@,@É
:œ IÆp9<Qä»_åt¯év•û´º Ûï·ÎÍÛÖÉ¿DûÐ@¿úØß?ú*J ‰fÿ |è¨è+Ëë}:#=Ü±ÛÄäuEœ Yˆ'�Ï4®•“ë¢óÒÿ ’lvíÐÇÿ „¿Dÿ  …—þÃÿ ÅÓ¹osÜk=»¬±8Êº0eaê¬	}6šÑéÿ U÷¡&žÞ†�ñœ\/ýs“ÿ BŠ�Èåÿ Zÿ Qÿ  Š m ç_ãÂ/úø_ý-{wñeþÿ ¥Dù¬ëýÞ?õö?úDÏCðïü‚ìÿ ëÖý•ç×þ-OñËÿ Jg³„ÿ w£ÿ ^©ÿ éØ®s°­y1·‚I—£�Øg¦UIÆ8ãžE UüŒïƒþý?ÿ ¦"9e¼·ÚÎÐ²™#BlÕšØ#vz ×¤0 €
 (2=Z9/NžU‘ci72mB•HRHfÁqó(yÃ’¡{ÊM}—÷÷œÒvõ§-í¥šºi‰¾V£ÝI®Þï%õÿ ·ãµú§f¬Z´wÓÍl‰*5¶ÂÆDØI¿iPNü|�÷•sÁ\©…¬yÖÜÎ6êšŒ'¯m'7Né¤Ð7iru²~Vr”tï¬«F¬Ów$¿½{%8&ºf'å‡ÊÔ“4° ƒ~æþ88–ùwÚÍ·Úß‹ôI½ô)/ò·¯õ»²ûÌ™<Sn#Imâžé^rÞJ.b…²È$xÎIW8ÃÊJ>#8ªv‹wiEZóû6’ºwZµËï6“´ZrµÕÄ›²KÞnQQêå”—ò¦›KV®Þ—ÖÝr¬È²FC#€ÊGBÈ#ê9§$àÚ–�]5é¹	©%(ìÒkÑìd[ëöó¥Ä„I
Y$2¡CÌI0!9~Q×åeWÝòìÏU´T»·–­´ùl­{¶ÚI-Þ›šZÒåòæ¾Ê×’nïd¹%wµµ½µ.X^Ix¥¤·š×åy9pyÜRÊT{I±ÇuíeçÛ{|Õ×ÜÞÞ—‹öÛ£Úÿ 'f¾ioëh£Õ£’ôéá%Y6“s&Ô!YT…$†l0R‡œ9 ŠKÞRkì¸ß¿¼æ“·­9om,ÕÓLåj=Ôšíîò__û~;_ªvjÅ[t^«ÎðMmjŠì.gke‰•‚ÃeÃÈ«€X4‘ Ú2Hàz1žÜÊ'»SIÇk®«KÞí%}mV÷œ»R”]»Å¸½ì÷NÚßkVú|öÖ²ni/\¤a  aKs‘µ8Û‘’Y€ òCZËÙõ³~JÉ»?6£.U×–]™/HûN—ŠVëÌÔn¼“’»Ù]ui6Yë{pðÇm8Š7’3pM¿’Z2C æ¼
ƒä�ž¸Ñysm½¯»´œtµ÷³jö¼uê“r÷_.û^Ý9¢¦¯{tii}_“kf€
 (  
w×mgxá–å‰Ú#‡ËÝÐœ“,‘F ÉgQœ– ÖÉ~Z}ÿ ’»ëk&Ó·ÊÆ`ñ2AÐE4òÎdU·@‚mÑ1Iƒo‘"O)ÁWf”&í¡Y‹ gÙGTâ§u¢å’M=m½×»ño¦’²Ú÷ÒÒåiÿ 6®Ú_t›Okk{XÑžý-m¾Õp¯Âæ2HÈ³«H]‚ ŒÁ˜€¬G4=–®öVëé{YumÙ%w+$Ú»è’mß¢Z·¥útZ½’¾…GÖ�yqmq—»÷DE$„*îÝû‰e�T€yy|Ûr33’§w²M»t²mße²¾�]÷�ŠŠr|«ºKÎí%e¾ï¶š·¢lŽ_ÛC5œ$RVh›jíTlHw|¥ŒŠ«€À¹Û‘‘�\Zœ©u�ý\×KÎÑ”µ·»üŒÔ“¦«mà¼×:|·ù«i}Zév¥¸×-í¯WN!Úf…çÊ�µQ0Ä‘†›` çcFqrQS—HEÍù¤Òiwkš-­,¥½Q¥¾üòä^NÍÝöZ?W{lí“âÕPÁ=«K¸ˆMäŸ2"TSÓ‚é•r�ó)ç8¸¹Eï”—fù­äïÉ-›Û]ÕòRME­¤›‹î—+~kI-ÒßÉ›õ…  PrÉä£>¶ÛTeŽp u' Í'¦ÚùzúÙ/VÒ[·a¥wmŒñ$H’ý¢í¦·ò³‚&•¼ö)Ï*Yco5ÁEýà!�ß°sO¢qÕ¹8ÙoÌ’“ZÙYE©9_•+ÝèìºÙè¹\®öåW»Ó[«ZÖæÕY{ÊòÅ¯ÆÐK3Ãq–Í²X
+J­´:ÿ ªy"ÚÈÁ„‚_,†u!€™IB<ûÇÞ½ºr¦ä�íf’¾»Þ<·æ�é&åÉ³÷ZóRvMZ÷Wº}U�ÒI�“[�`‚hb–w»A$PF#óJ•W$ï‘"@�—s<Š»Š¨bÌ é(¸NT÷qnöÙYÚ÷vë²Ýî•“¶pjpU‘vµûÉ6–—ÖÉ¾Ú=G]k)eä	¢™ZåãM»TˆÚF
Ž®bÈc‚#yVPÊ7RJòöi÷³Õ'hÎz^Ïá„ºi§5®®7Ëvº¥nºÊ0[l¯5¾êö»MÍ«GÜV,’ïŸpWÙˆÁTi.ÄdíS÷àà6ÜŠQ÷›KìÅËÕ'»|êG]·IÝ46ùm~­%êÔå¯ÊÓ}´³L€kJ·Ki,Â%gHfq—+¢³² YUùQÙL‘"¸RTœŒ‹TÞÍGšÝySJú_[É{­©k¶ŽÍû¾jé6¶M­ÛÒêêú^íe­-ÕÇÙd‚{Y
4±‰„cÍ�YU™|¹$+´ºe%È7“®Z7Ö6ºê¹¹­ªºÙ»[]ÕÇî´º;¤ú]n»ìî®µWµìËW×ñéû^gŠ(Îòí,¢2œ”øÆX@©—ÉÆ6£vúE½7ø£§fåkÿ 3Œmï];l—WnËi7¯{E»vRwV3í<Q¦]ÚC~.aŠœ2K�äb?9jç€’«‹RPZ·ðÛ^mmx÷WÓN¤ÝZO¤[MôVêû&µWµÓL¼úÍ„R˜æ•C–0à Üä©mÃbüÍÇÊ98�Õ›è•Ûè•Ünû.dãêšÜ«têÝ—«IÛÖÍ;viìÄmfÂ;az×0-«p'2Æ"'$q&í‡�G¨"›÷lž�í}/×O–¢^õùu¶öéêÍ…¢«Ïsoº‡RóF¡”ôe,À88#ƒÚ‡î·ºÝu[½VûF_øìÁkgSÚÝuKOœ¢½d—TC£ëö:äI5”©'˜¥‚Bà)·*³`©eÝé¹sŒŠvvNÛÆ2ôæNÉöwROûÑ’èÅt›�g(úò»6»§£O³O©Px§N’âk8'�§·„LCMÆAH.²„S°ùhèÄØ©^ô\áf¯e®Žü¶wW÷[’Iõ–…ÚÒŒíµd®ÓOUm=ííÝžÖ4N±e‚ÞK‹t�¸ò¼äÝ��È
Hc„`ÿ t„6 "©Ù^Û+·ÒÉ^íöµ�õÓ]HW²o­­mSæÑYé{»¥Ützµ”¶æõ. keÎé–T1È`ÁàäðzÒ~íœ´Oké{è­êôÕ´µktºY]ßå¯¡jÞâ+¸ÖkwIbq•t`ÊÃÕYI{ƒM§·à$ÓØš�Â€
 (  €
 (  €
 (  €
 (­÷ü{Ëÿ \ßÿ A4 Ú ñ�èúÂøŠßS²–¾ÐRÊß�2XÓcI<»3…_3’X�@Ç<}ÙÊ2zNò•ºS‡"µú95iñJ×îêëµ¼4IìêMÉ-÷]Ûí$z>®1q§s‹¶ç×ýïž0?*¨üRÿ ¯rÿ Ò©†Ôæ·Òúr?a}©´v·àL×¦â/)ã�bVT�ápcA.Aˆ,™vVJ¢+(ó8+k'‡…DÞžûT»iÊùÛjÏ[Y¥î�ÙIßHÆ´ Òë9Ç¯ÚVVzh¬îýâ•Ó\ÝÇo×WpÜÃÌl²†D%víÚ6�ø¢'s|ÄJ7 «¢·´§(k*±×{ª$Ô­¥ùZO—Ý´Ÿ+æJQ‡u	©Zö¤ô¿-�hÆñëndß½ï^
þëjZ�¬N58V&’Ú[—¶`Él¶á£ŠBÊ‡"ìÊ²Gó67(k¾Î3’oû¯GtÓ•óoºz¤Ü—*}ãìïÿ oòüWêÔ¹—%­¢iÚLç-/åÓ 0Ò&žvýÜ×¬»ŽæEÂÜw:.Ìê¹a�;òÆ*þõ<tµí(TN×Òúû·Òöº{/‰·Òxék{^3„’vÖÍ­m­¶ÔÚ7š¼h‘Hn-Ä·Vñ¤×bÓ�?œ»mŒ�|»TÆÅå°ÁÂ�ÛnáìÜª&–ü±£9Å»¦¹¹ÓÛKE]jÓ‹ÙJI](ÓµöR•hÅÚÚòòÉnïví%£]ôHcEFbå@›hf rÄ*ªäõ;UW= Sz»¥o%Óï»ûØ-4þ¿¦ésÿ ^ãÿ kRv€<çÄ:�öjj,Opí5¢$Q©gs²6m¡rr¨®àŽ›sÇZÊQw{{y6û%B‹mùi¯MM-yiÒ‚ù¹U­¾r’^…ûk-ï¬ï-$�Çv.+0*eûAÛò†Ás¿k3 z�[¤éÎTŸÙ¤×þ©J1ÿ ÀT¤“ÞÍë«¿;—<a5¥êGÿ &¥Q»ú¸«®évVÌñ¦¿ni‘n´‘Eå[ÜJ�+�÷ÏO·Ù¶Æ7ºíó˜œk85í%¢æämè•;5RWÙ¥)^ßÏ‡]Íd›JšÝ§++_ž÷¤´»[;é¬*éwf´nõ{•–öî	·[ÙÚE<QB’"™·Hû†?•ÈxûÛISVqæRv~ÛÙ]íj7“Õ_•ÎOWk^÷÷\eIIÇ•6�(Ô²ø¥ïU´cÙÉEGg¯-¬ïÍ§mpÁ>Øó¼—ªÂB�f0Ö—Y1ªF©µ†L~jËƒË +T•§Ëª´j«ý­££Ò×[»EhöZ1§zs–Žê›²ø‹V¼Ö~r{o¸%î¢Î¶p|ß2ú1Ž-Ìc�Zur‚"«c•ÁÅcÌÚRŠWöU%Ë­œ©â!My¥(Þêús;l¬ôŒ¬ïÊªÓ‹ïË:©%ÛIZÎÝï­áŸÄ—sÛ5Ý¨`£ì–åTE¹.&e3�fd�|jé	$‰IN­&×%Ü*Mò5kû8Ó”Ô•ÿ ž^ãººä÷UÝœ«ÅZVæ§Ï½¹ÜÔÑ](YÔÒÊQ’mÅ{Ë¥Ð$¾h¤[ô•
Iˆš³yÏÕ9�Z³B9uvåB’ “–ídô¾·JýÝž½ãkë½íe¢6o{Y=m¾·Zn´M6–öÖ×{þ¶úèôT•#ÿ [7ýtú*: áþ'a|;tøRSÊeÜ¡€>tc;Xx'¨5Œ÷‡ø¿I/ÈÚš»iíË/Â.KñIŸ)>¡ÙÔ"s¸ï&+o+o8Ú¢áºd–#¯³ém­¯¯—•ŒW[ü½<þgÙPº-ŽÐ6°¶  e£Vl€2I8 JÞ²µIEl�—¢Ñ/’FTþœ¿ô¦o§ü|/ýs“ÿ BŠ°5#—ýkýGþ‚(´ P�|Iÿ �¿ëáô\µìeßÅ—øþ•æ³¯÷xÿ ×Øÿ é=Ã¿ò³ÿ ¯X?ôRWŸ_øµ?Ç/ý)žÎýÞ�ýz§ÿ ¤#b¹ÎÂŽ©ÿ sÿ ×?ô¦„\Oº>”†QÔ¿Õ§ýwƒÿ GGLF…!…  P@­i)Õ’ì/îVÒH‹d}öš6ŒîåTœãc9ÅÓÚ_í{+Û¾Û›îç�­ôÙÚe«ƒ_eU¿ý½ì­÷òËî×tGŸ!¾½’PËÌVè¬®UŽÕ”>ÖF!]ã
�NPäd$½ÉEîêÊ]´tèÅ;¯8I[Ë]»ÚjKeN+£ÕT«&¬÷ÒQég{w)êPÜéñEiaÝÄ\Ìép’\*ðB	/®Q€�’7«³FªBfWAûÏ–KÝQéevÞÎÚÚ×¿W¢½“E/u9Eû×[ÝÙYÝ¤î®šŽ�M[ië|ÝCLšHâþÏ·»³‘íþÌU%³HÒ%$GÉ2LáWs2½˜yB³ àœiÍÎé4¹›^íÚi´•¥ÍìÒå„íäâ“‹Œ¹TegxÊM+ûÚµvÛm{î)ÝóIjí{§ÒÙh°Ù™ZbðB��ßÎ"! &ÜIän gw—œóœóZÊ\Óœ×Û“m=mvž—Ûn–ëÝßG–ƒû	%m/emm¾ýoÓ²¶î‡qw©]¿kš!ùö‰P[!-g‰£$€Ãï F3ŽÑ…Õù*ó¸÷J¢•µÒí-.Ò½¯cvîì�¯EÓ¿iKÚ«ÛËž-þ–¼;§5œ³Í·öm¼Â –¹‹‰Ìó&+¼Jd‹ò¹f†p	Åi´yoyµýØ¸Å(ùj¤ì¯{§vÒËªv³µ›þgvý]—Úv”¯f­ÞûZJue»û•´’"Ù}¥�‚ã;¹U'8ÇÎqP½ÕS»ö\¾|¾Þþ–çŽýô½�œµpkìª·òæöVûùe÷kº9Ë}1ÖYnmôÄ´Cm2MlZÙVög(È…¤ˆ¨Û"ùÓª¾%ÁM»…8¥ÒÒ7§Ëäånò¶ª<©«(·Ím~–õšÖÍI·S[ÚÍ[¤�Ý¤ïn[i~iX¾Ð5F¼Šî)­ÝMÜr°kwß)ª‰¿í�]9R$-$†\}àHû³�6©:�½¯Í	GmwMB=#¤š~÷4?zEr¾ZiGt­:rvµ–éÍßV—"jÐå·šÏª%Ô"ÀÇ$­qríHÈè«ˆ]¤“s”˜›„CL.I4CÝO¢q·/÷Ü£+Ù{ºZ^õùŸ5­g+9ë¦îêÒí¶×]U£Ëðý«Þ1¿g@  P.¹5ä1"ØÅ,Åßl† –8ö±,‚âH¢,X*Œ±Û¸¶ÖÛƒ=Rwå³nÝmkF÷M'vÛZÙ4¹\”¢öM«_K_ñ~v['Õ¦î“O—ºÑV²ÎÚl“ÁsÂÖS=³¸2<n³¶ë‡‚RZ6,Zf“.$ ¸"««Ñ{Ñ‚�´TýŸ2Kou8Ëâ…ÜRQJÒ•’Ûª´å'ýþuy?7ÍgË+'ï>‘¼óé³i±ióEç}”ZÍþ¸;G)i-²Û[ä�UVIYK Û@sCø£9{Ü®ÒÑ{÷¢éÊ¥žšÊNNëk7f	i(ÇÝærk§³J¤gN:m¢åæ�Ánev‘kOÒ¥†Æö8­þÇÈ³Úò³ B141™$å#vA�Å·3�•h¹Q•4ù¤ã;y)/vvÙÝÝè¹¹W»Í)µ±�¹b¹/æã&Ü¬¯ÑÆ=ÚŠo{ºÐf½±°òÄ6Ä_*LW¬Þ9%^pW+”äò3ÓRW�Z”íw(Ê½›Œ¦ìö|­4¤´¼d×sK–”)OûªioËì§	YízËÏU°Ë=&õ¤Žöí]L·-p”¬eãŽ8bRH,ªˆGË±Æêæ©%w³£Ukkº•'JV~Š.
[rÂ)½�bìàæõ�Z{mÉU‹’Òö”§ÏgªuÕD¯áM*æÆHY ¸µXí3ýªá.’/—³ÈÅÅÉŽ$Ä¤¨hSç\DHÊuÉ§*’_¤œSø·–²—]µ”µ»VÕËž1qŒ"þ(«6´�¹m%ÒòQzEi>‰wõ‰¨P@ U¾–h-ä’Ö?:uF1Ç¸.÷ í]ÌUFNIÜT»¥§t»ÚîÍÚêöZÚêöµÕÊV¾»Zlí}¯m78ÑgusÉö[”»I­îîÔ}£È�7“‘s2Æª�„jû3fgi$7ð8Ê+HÊZ}§í)Êœ¤Þ‰É&›øS²ŒTc¶væN2Ñ¸­mî§	ª‘�µ|®I«êÒm¶Ý“Õ´´¹™on¥ˆÁ%â…ŽhËª¤[ÌhÙãÞÎXádpn[9‘ýÌéÇYOžZh“”#mÒ	·¢¼šÕ$Þ°iUŒÞŠ*ÿ Àg9·¥ô÷ì–ú_KÙc]h,c°’æÏûAm¬Í´¶»¡8vX“lÎ�¸Fˆ©Ëänb+¦«R«VQWSwŒ¶åå”Ú}×2›÷¢¹£kZÒvÂ’q¥NG®»Þ)5ÙÙ¥dÚ‹»wºWÒ:MÚéö6ÍûÉ­§µy>|íHäß;í.#_”n|g8©¿ï!&ïÊ¤¥+[šN…Hs[ûóiÛ§6º&Æ×¹8ÅZò‹Œ{GÛÂj=½Ø+vÒË¡©¨ZK=õ”ñ®c·yŒ‡ m¢ðH',@ùAÇS�ÍLt”›ÙÒ”~n¥%÷BO¶�Ú»–ª)t¨¤ý:±¿ß(®úú™vÒ^M}ç^Y\æ7•`2Ïìñ'Ì¢@ÏœÒL€nfˆ²1ª¢ùŒé6¢ä—¾âîž�¥ìÕ®’ºJÿ jK™µXÂÚÕ/²¤­oüÍÞÏg+.‘Ñ'+·�{%»5þ³o-“ùx{‹‰l–Ú,1f;§`¥ÈùÝJÀo`hµ¤SIïk·£›W¶š¥kË–7Ñ^îRnR›95e{sY/³Û}]ÔW3ï²QÑY–huÛ›K�6Xn¡¶yÄÏ±È¨^ÝÕAÚÇ’Xp2@9#Ön-©ôR£8'Ó™ÎŒ­÷E·Ûæ®_àKxÔŒÚê£ÉV7ûÚ_ðÎØ‘iú…­�ŠÛÛÜE¨ÙÛý˜8{CFœ4ÅšÞV�\Sí*ªxF;[¡Ëš§:Ò3åsO²“ÓK¾x§'Ëy+¶®“iZIëiÍÅ­ýíSW²³ºMK_uÚÚIÛ—@šO0´*KêðÝrcæ$ƒ''°VOÏŽóÎP÷}�NGˆoÉÏë�ÕóSÛm/nWh•Ú©Þ^Å/5aÎ½=Úš=õµùµ&±Ô­<ß³Dû%¿–]Ðý”Ì±¼*H…Ëy+ºMâMÀÉ´±T%‰©ŠÒz%©í£•yJ*Z?qÁÝò¦î¢­£E½ç%ÕÓ·œUFVÕ{ÊqIs4­Ìÿ ”‡4K›	 ’æ0¦&ƒq1’®ö��G)µ‰TTè \mh¤¶½,4~táQMnßºåÛ¾é»6K½ÖúTÄK_ïÎM.Ò–Ûj�¯c9ío4Ý:Ð$fëiÍ74l$[�åù‰±Û÷a¼»‚­²M°6ä^´’RötÞœô•)ë¬T ¥).ŽQTåËº´ßVâjß/´�®£UÕŠÙIÊ¤”bú¥%UÅé¤ìõK[wúðË[8Yá¸Ò’Ò$+rªŽÕ¾q2m`¬¹½“‚nMÏšêÍÕU<¬ýšivqåo[+ZÍ½M¨J‹m¾FÔ›ßWs¾÷iÞ×•õk[ŒºðôóÇx¦v¸»Óä\˜Îø bBrz'—0ÚØ'� î­4¥üµªOÑJö~­[m{˜¥h(¿úövþÿ ïZ_|¢ïµìï¦†§¡ÞË%ÄÖâDÚÝ"ÂmüÉ-#…Œbà<ÖQ¼	ÕA1ä2’Ž2�º¡½âêík¥;Ù«é­ÚviÚrz¿vZÊÎé[ZpZÞÜÑªçgmoÈ’NÍ_•=·Káë&±¶!þÐi^W?fóC9ù²- €Fì&ybXî&­Ù(ÅZÑOkõ”¤ï95¦‰Y-Œ–ò“½Û[Û¤ckt´VúÞìÜ©((  €
 (  €
 (  €
 (  €*ßÇ¼¿õÍÿ ô@ 
Ïi“¥Ë^%tO@$(Xãûß  öŽæ…¥Úê’ù'{/&ìß~Xö‰tNÿ ;4ŸÉ6¾oÈ™âI
³ª±ŒîB@%[i]ÊOÝ;Y—#kÐš6ÛÓåÛð_pytÿ ƒÍ'ê@l-ŠŒQ˜ÓvÔØ»Wpel.07+2¶!˜	¥en^–å·N]=ßM›h»!ÞÎë{óÛ×½ýnÛ¾÷w+®‹`–æÉm­ÖÙŽã†19&=»	È$g ÕWÙÿ /ÃåéÛw°–—¶—ßÏ×¹"éVi1ºX!YØ‚e ��
‚_nâ@$O ‘ÐÒ^î‹M[ÓM]îý]ÝýX~‰/’i¥èšM.év$KxÆ(Ôl1à"��’Jp>é$’½	$ã&••¹l­d­ÒÑME[´Si-’m-Ç{;õM´ú§&œŸ«i6ú´›!¶Ò,l—Ë¶·‚$Q €øUxêz}¼¯o+¦�»]6ŸtÚØ›oçkùÙÝ_Ñê»=MR›¥Ïý{�ý­@(œÔ|5¤ò3Ë"¤û‘yv²ÄÍÂ±[‹i¹ „2rjTR¿ø¹ý%Ë]uZE~=Ç—»Ëê”¥+?œŸô‹Ú)‚hæ’æ{� 0�$[eEÜ»IxOÀŠ�N•w³rÝ´ãw{ÙÊ2{ŠÕþ¤[E¢‹M%µÔeòJOc^8#„0�U±fÚ ÜÍ÷˜àrÇ¹<žõ6Ó—¦ºtÕ¶ôóm·Ý¶ú•Öýt×Ñ$¾ä’^I.„pYÁj1qÄ6ª|ˆ«ò !€>U…)½nŸWwæÚI·æÒJý’]g~½þmþm¿VÞí•íô‹+0½¼€þhÄ‰‰6•óÕ>ÒWwÞÚHÎ	¡id´²iy'º]“²¸wo­¯çgu~öz¯=K"Òq �‚ÌjîÀ ã9` cÔ€éBÓnÍ|œ¹šôr÷šë-^¡þiüÒåOÕGÝO¢Óa¿a·òÞ*?*RÅÓbìrä—,¸Ã$–$Ä’sšVM(½–Ë¢³º²õ×Ôw³æ[÷ëµ¿$—¦‚YØÛéÑù6‘Go$ì‰5Éêv '¹Ç5Wz_¦ÞDÙ-ºîJÿ ëaÿ |ÿ è©)‰fÿ |è¨è®©¥Ûk6ÏezžlãzneÎÖ>d*Ã ðGOJ–“µú;¯R“qÕvkäÕŸàÎ;þg†¿çÏÿ &.¿øõQ'qii„1ÚÛ®È¡E�$íETe‰' ’I=ÍT¤äÜ¥»Õ‰%õ}ISþ>þ¹Éÿ ¡ER29Ö¿Ôè"€@ y×ÄŸøð‹þ¾ÿ EË^Æ]üY�ÿ éQ>k:ÿ w�ý}�þ‘3Ðü;ÿ  »?úõƒÿ E%yõÿ ‹Sürÿ Ò™ìá?Ýèÿ ×ªúB6+œì"žqÂÙ"²œuÃ3žyãƒ@…œƒ�q7ÐñšbÖû|É¥uVWÚD ŒglJq�3‚(B�Â€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (´†IRáãFš Ê’Rè‚±”6à=(Z]­.¬üÒwI÷Iënàõ²}×“ÚëÎÚÐ@  P@  P@  P@  P@  ×A"”nCö< ËþÈQÀ–u `§Ë@öHÿ ž×÷óÿ ± û$Ïk�ûùÿ ØÐý’?çµÇýüÿ ìh þÉóÚãþþö4 d�ùíqÿ ?û ?²Güö¸ÿ ¿Ÿý� Ù#þ{\ßÏþÆ€ì‘ÿ =®?ïçÿ c@ °ŽÝY2ÏæpÅÎI#ãŒùÐ_ì…	gP:& ú|´ d�ùíqÿ ?û ?²Güö¸ÿ ¿Ÿý� Ù#þ{\ßÏþÆ€ì‘ÿ =®?ïçÿ c@öHÿ ž×÷óÿ ± û$Ïk�ûùÿ ØÐý’?çµÇýüÿ ìh þÉóÚãþþö45¾œ–î$/$Œ¹ÆöÝŒðqÀíÅ é©3™ÉgcmÎ8àöâ€!þÉóÚãþþö4 d�ùíqÿ ?û ?²Güö¸ÿ ¿Ÿý� Yµ°KV.ÝˆÆ]·:àp8Í A/ú×ú�ýPh  ÀŠòa€a´õî¾´wìñqï‘þ }ž/î/ýò?Â€³ÅýÅÿ ¾GøPöx¿¸¿÷Èÿ 
 >Ï÷þùá@Ùâþâÿ ß#ü( û<_Ü_ûä… g‹û‹ÿ |�ð ìñqï‘þ }ž/î/ýò?Â€³ÅýÅÿ ¾GøPöx¿¸¿÷Èÿ 
 >Ï÷þùá@Ùâþâÿ ß#ü( û<_Ü_ûä… g‹û‹ÿ |�ð ìñqï‘þ }ž/î/ýò?Â€³ÅýÅÿ ¾GøPöx¿¸¿÷Èÿ 
 >Ï÷þùá@Ùâþâÿ ß#ü( û<_Ü_ûä… g‹û‹ÿ |�ð ìñqï‘þ }ž/î/ýò?Â€³ÅýÅÿ ¾GøPöx¿¸¿÷Èÿ 
 >Ï÷þùá@Ùâþâÿ ß#ü( û<_Ü_ûä… g‹û‹ÿ |�ð ìñqï‘þ }ž/î/ýò?Â€³ÅýÅÿ ¾GøPöx¿¸¿÷Èÿ 
 >Ï÷þùá@Ùâþâÿ ß#ü( û<_Ü_ûä… g‹û‹ÿ |�ð ìñqï‘þ }ž/î/ýò?Â€³ÅýÅÿ ¾GøPöx¿¸¿÷Èÿ 
 >Ï÷þùá@Ùâþâÿ ß#ü( û<_Ü_ûä… g‹û‹ÿ |�ð ìñqï‘þ }ž/î/ýò?Â€³ÅýÅÿ ¾GøPöx¿¸¿÷Èÿ 
 >Ï÷þùá@Ùâþâÿ ß#ü( û<_Ü_ûä… g‹û‹ÿ |�ð ìñqï‘þ }ž/î/ýò?Â€³ÅýÅÿ ¾GøPöx¿¸¿÷Èÿ 
 >Ï÷þùá@Ùâþâÿ ß#ü( û<_Ü_ûä… g‹û‹ÿ |�ð ìñqï‘þ }ž/î/ýò?Â€³ÅýÅÿ ¾GøPöx¿¸¿÷Èÿ 
 >Ï÷þùá@Ùâþâÿ ß#ü( û<_Ü_ûä… g‹û‹ÿ |�ð ìñqï‘þ }ž/î/ýò?Â€³ÅýÅÿ ¾GøPöx¿¸¿÷Èÿ 
 >Ï÷þùá@Ùâþâÿ ß#ü( û<_Ü_ûä… g‹û‹ÿ |�ð ìñqï‘þ }ž/î/ýò?Â€³ÅýÅÿ ¾GøPöx¿¸¿÷Èÿ 
 >Ï÷þùá@Ùâþâÿ ß#ü( û<_Ü_ûä… g‹û‹ÿ |�ð ìñqï‘þ }ž/î/ýò?Â€³ÅýÅÿ ¾GøPöx¿¸¿÷Èÿ 
 >Ï÷þùá@Ùâþâÿ ß#ü( û<_Ü_ûä… g‹û‹ÿ |�ð 
¡$`  àp>è  €%¶ÿ [ÿ ?ÍhF€
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  
Z•òiv³^Ê£¶ŠI˜ ŠÆ¥Ø(%AbÆXõ#­’Wm¤—›i-ì·eÂ.rPZ6Ò×mJz^²5'xd‚k9áTv†$¿—&ñ†‚Yâ*Æ7I¸!”qšå²æOK¸½ôi&Ö©t’wWZïtÒÉ;ÙÙ¤ÕÓè×[y««§f®�¬Ó{5%ì/“PˆÍ`¢IcÃ èex˜ðHÁd%yÉ\à=”_óF2^’Š’ùÙëæZìÚû‹”€(  
:† štaÊ¼®ì8£ É#�HDÈ¹Àf,ì¨ª¬ÎÊ �ºÙ+½{lµm·d’óz¶¢¯&“vÑ·¢V»×«Ih“z¶–‹­Þ—dSjbÒÅõˆ¥„EJñ7–Ò¨PX©òäx‹`¥Úª¶±Šwæ”b·µæÔVélÞºwµô¼­zZ×ÞÝ/Úû¥uøÙ•õÍhèvæëì×q f“È6àÆª3¹„÷dÂ=íÇ q”®å%¬šŠÚÜÒ’ŒW}[ZÚË«@ÚPu²Šr{ß•EÊOä–Û¾‰š6W]D%–-\ç1Lb.¸$r`–hù�²7g 6­³OÒÿ v©—˜/K}ß×Þ>¨®‹n0¿— Á_j¾Þ@ÏÊêr29ëœÒè¥ÑÞÞv” þéE¯�]]Ç¬lŸ•â¤¾øÉ?™¾Ctl°ÞbÄ&ÎÝ¬ì€g9Ý•<cÇ=©'w$¾Âƒöÿ =­ÿ ‚åUkëfýÞ_ïsÛþÜä½ÿ ðb·Ïm/JßXûUË[Åí3Ænuäy‰÷£Ç›çäWw“ån|ÌÐµ\Þ¶ï+IÅÛ¶©Û›–é]]4Øý×Ë×Kÿ wš*J÷µîšøokëk;jÃ#JŠì�0£í,¤ÿ gLŽ‡k2ú*ž�µ×f×­žëÉî¯gmÒzR7VÕ#Ñ­Úêe‘Ò0ÌDH\áT±'¢¨OÌì«œ.w2‚-e-äÔWeÍ%wêÖŠî×²vaÑ¾Êÿ …ÿ ®‹«E}GYdˆ$‚w…Ê¸AŠ##ˆÓÌ*ÌrÄdÅ�åW&…«åz]¨¦ör{Ey¶ÒM¤›i^âû<ë['&º¨Å]½l¬•Ý“oGeµÔk ^‹`ž&áÎ"òfd]Ì©²V•HPÌ<Ø£ŠÅ÷¯Ñ¤åg¿*’‹–—V¼££j^òvÞÄŸ-»6£u·3‹•º;Ú2Õ&´µïk—ºÈ°¸Ž`ŸÉ‘’?´¨ˆÂ²HÛQy¢|³]ËFÎ9ÃŠæ|»=mµË7k^ÖŠ®Õ•Ý“$ùW6û^Ý/.TßÍëk´µvZ‰s¯[ZÞÿ g0v˜[Ktv€Uc‰‘H,HùØÈ
®:X¯Ëº”aR¯Ù§noš”¬º](Ý««sG¹¢‹n[ÎJ+Ê÷³}“´’}\eo…Ú«ø¦Î=#ûw,8E
eÉ;|­»¶ù¡þB7í[hÝ[J.TÞíÅ&¶´µæïÊ£ï½.¢›µÕŒé¿h¯7ßºÒÞ²zFßjÛ ºñ,v—ek{†�L
÷
!0Æ×²%pfœ± ²@è»�f
ˆŠæmmi8+õ”a´­~’V½®ôZØWÑ5­àª4·PnJîöÛ’M¥we±ÒR(Ë—ýkýGþ‚(´ P¶ßëà'ù­ hÐ@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ �â;Ioô«Ë[qºiígŽ5Èw‰•FX…bX€;�([Ç[Zpw[¤¤›z§²WÙú3jRP©	Ke$ß¢~G)­xbF·XÙeÕšáã[™&�O’uŠ%�Ä"Žx¡²®KIµÜ¨w †ìÚŽÑ¼¤¤ºT|±R“|ÍG‘4ùÓQ´u�ùáxÁkªIrßEä¢•““’�ÄìÒÖ^ì†‡sn,µ,Ž¤ ·‚%­d6“Ç#–œ¬Ïd²±,¥_+âîÔ¥¥GmÏ]‚çŽò’j|Òr‹—?7½'ÉÓV�*øTêûº+ÆSýÞ‰(4 ¬“åä½¢½é(­¶‹©Y-Û4	u$âóìÞaˆ¬)%ÄŽ`1³„ap¬%œ»b’‰f£þ]Æùh)Ú×qŠ„g}9©®gû’z½~-j|ñv³›Žé)Ù¸Íµ­¤ùc+{ÐKÝOž\¹v>¸²€Ç5‹ÜØ¿;ìtô%Ù&L6Žpìb-‚Oœä:^Î<Ö|±šOWÊÜá(ÊïUhûHÞ*ñæ²‹W“†ž¼žíù–‹šÞÕJ>íï{Ò—¼ýåI«r,åðìú­œ"¸–ÍgÔH†ÔéÒ²3ßÊñL?´‘¢`#ÈIbt™8Ù¹\•]bÛwthrÉiÊÔ“æÒ¢rRƒN:¾[É]F×&®ùII§ü°§[krPœ\»ÚÅkÔ\hR%ìŽ–OzÕ¢’{¦µ"‹_,Cmr’ý¦•‚¬Êñ,šY‘•�ïïí]’Rm¥víÊ--7¦’m)ûêÑWåJ)Arû]áÊ¹šRäIÊòkOÞ{Ú¸s)FÑkVÖÏ‰4�ímXÛÈí%ó$³ÝïQ –Ÿ¾t†M†Em²º£99À)»Ts~òjQ¾š9JS³ó…»Ç›™kˆŠýÚŠ÷åi_²iÃ™knY?)4£/vL¥=Œºw†n ™|² ¼e‹po&7i^(2	É‰’/”•0„¨­»ÎŽ·jxtÞºÊ2¦¤îìÝÚz´›Ý¤ÛEFÞóŒySSj=½×ÛEÌï.UxÆü±m$ÎƒÄ6’ßi—Öë¾YatEÈb0X€>¤�S*S“Ú5©IùF5a)?’MÙjúje$Ý)Áo*U"½eNQKæÚ]»œ¾µ¡Íww;}“íÌPÙßï„}€E y’,ñí‘^\[G ›~ÙÂ§î¸¿…©©IÝûðRMÇMuŠtù þ&ï9ÛZžòµ®¹T{MóÚ]—ÅÎ›š¶‹Ü…óï|4ð›è`Ócxïo#–Y#‹Ofšÿ V—,#2År¥Ü\ M²;ÅæHÇ	%ÉN›ÑAÔÓMœå	u´U9*m¥Î¹TTy5c*“o™ÉG—}=Úqœ^ÚÉÆSJü�µ);Þ&×…4{Ý0Æ.Ô�©€h˜ü·S´kû «Ä-6" P«��Þò”žò§…Mêï8B¯µÕ¶Ý¥5vÛæ½îõfiYEtSÅ>ŠÑ�Jnž‹ExÅè¾Y¥¢,‹[•Õ<Û[imT»™¼Ø�µÌ~["•¤¼¬ÈÐDÛP£M"V‹{“ŽÉÆV‹þfîœzE6Û•ÚNí¸¹ZKYn­ñ{¶’ÓEk©ìß»u%f£f£tsv‚ÐM§Í É-�µªÄ{2Î±„%ä{”¸ò­†HXÒMìw >ZoÞNõ*Î›ärrQv²w�œ�®ÛjÐJI(¤ï~dàêûÍý¨¹ÎVëok)F+šÜ©ünÚ¶Òº÷ã(ô?
ÜX´²]ÁwqpÈ«1wÓb·º:6óD¶Éä�Ï23x7*ï�$¹-	¥¨«.zNÍë&æ­hK•ûÏE*–WŠm¤ª{Ò›èÕ[[¬e(ÒmûÑRMFËÝƒÕ;E3Ñ<Ak-î›um ß,°Jˆ¹,È@b É=IÔÒZJ¢©NOÒ3‹oä“�Ö—ôkïM¾"³¹¾–ííîHŠ<Wt[HØ:±7Í83Û”ÿ F˜© Ç$/ûÅ!¤ù¶JQ½õæ…ýå,¥(ÞÑz«ÊÄ4ý›ŠÝÂI[KM«EËUx'ÊÚ¼“\Ë•í&µ­Ôš°»†Úâ�K$×ÉÑùL¨–°ùò›wiO#ˆm²ƒ™I1|±œ’»piGí9óE¯{[BÊJÜÖ»‹pºN/yÂ=^òÑ%gw(Úò—½díuÒ|©Âqê^ê76ÒKˆ'ŒÁ!”ÜÆöq�ÊÓÆðyß¼˜)’8å[BrU’xÇ+¢J5$âô\Êí?yrÉ'¼[º¾°vº—<}Ùfï*iIZM'd×»;¦¹žŠQ‹IÛÞWÙF^òÌOë6÷ë<“Û]FÖ÷âWKW†F’sm±=ô£q*£ˆü¸â„ÆWçFLd¯B­%«tÔc­¯/Þ6õÑ^Sm­¼”ycQ’RŒ¯eí¡+5v¡5k«+E;h®Ûçw|ÜÐÞxbþK)ì‘�¬¤’(÷¨?n–Õ­Ì]BÁÝ6âÛLÒîÈÛšêr^ÕÏ¤jÞßbuUIKº”}ø®ôêrÛCŸû¿cÍ¦”½§]i$—uf”-Ë³£}yÙgSÑ®æÕxmî›ì†+�r‹iˆ’æ{cr<×Q÷Ù%`HÙ$dL©û®Ooß9;ëzn�(ÉG~YIFq¿ºõW—.†m>X®ªŠ‚KKTR¨âåª¼bå	ZòZ;E½ý¤ÔË—ýkýGþ‚(´ P¶ßëà'ù­ hÐ@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@  P@ GPÒìõhÄ7ðCu`Á'�%PÃ 0WV Œœg“JÚ§Õlú¡ì­Ñî\Ž5…Dq€ˆ U    8  
¦Ûw{’’Š²VK¢Ðu!… G,I:4Rª¼n
²°¬r#‚Á£k>Í5äÓºkÍ=W˜P@  P@  P@  P@ eËþµþ£ÿ A Ú (¤s�JŸc�å@ó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐó}ÿ ï£þ4 |ßßûèÿ � 7÷ßþú?ã@Íý÷ÿ ¾�øÐ ;’OsÉ  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  €
 (  ÿÙPK     r‰U]ËÏ±5  ±5  $  admin/images/sr-screenshot-thumb.jpgnu „[µü¤        ÿØÿà JFIF  H H  ÿÛ C 



#%$""!&+7/&)4)!"0A149;>>>%.DIC<H7=>;ÿÛ C
;("(;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ÿÀ <b" ÿÄ               ÿÄ H    !1QARÑ"a�‘’¡2q#U”3B“±Á$EST‚á45ðñ6bst¢²ÂÿÄ             ÿÄ ,  	       !1R"AQ�34aq±áðÿÚ   ? öD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DD^iwÛ‹¸ºTGK#!†9Æ7@' ã'+÷âÿ ÿ 6ßðÂõñúGÈËw—åðåÓÖy?ïÅÿ þm¿á„ýø¿ÿ Í·ü0¯îo‘ùÏûôOÛ8•zÂ.cbö‚®÷OPÊÀÃ$¸{F5ž£àºuæq¸9px—‡—˜éÃ9ž<ÐDE©˜ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆ<Fåÿ šUÿ õßÿ ìUÚ;Òáú’†Ycé­­äU»€ïRpCóõÜmMÎïhš†–Ñe ‰ºLqêvHÓòÇ/zûN/<90áÉ»ùøìñ±Ã·–^#�µØênwcmÔÚyÀ%ÂlŒcÃÖ%uEº­ôµQ˜åaæ�¼{—[·O’'Ú+qÃÜ]2îÎHÓ�‘%f_"üGcp½BÊjøÇðœ99ý�þ¸ðZ±ù™ý™ÙöåÛ_Œ»óýc;ÁŸv3ÌZý™ÿ ¼?èÿ UÞ.ögþðÿ £ýWx¼©ÿ 7—éþ#»ã
9:­º&áSIh±×]E‹'–ZáÔånlê=£µ¶¾�[Z\Xøäs:‚¹xlwËmu}nÇÝ­õ4µSºI©ªCdñ ·Ç§e¨»íU]fÇà£ü:®[ ¢¬e!$à“¤÷<†I\:—ÃvõåêH¼ÖÑk¸ZvžÝ=ªÍt ¤qs+›UP×²AŽNÀqæ5¬»u}ÒíCO~¸M{Ùs|¢8¢#ËÌ{#ôÊrœÏ]EåóA.Ò_¶Vš²²¡­ªµÎè¤-tœ‰ ŸŠÊmŽ–é¶²lÍD³¶Ój£ká¥lÎÂâ	.=OæS”Û¯Ú{ïîÝ’KŸÄè{»×£:œ\ëlÇkc]Œdey¾ÖY[cØK¥=ÒJ¨8¨�R;S©†±ìç=n¶(v^ñ³wª§UU×ÇSå™Îßõ'î®¦�×¢Ë+ …óHí,�¥Î=€æW+E·ðUTR:KUe=t¦*jÙ1¡îè23‘œ-ÆÓ^ ±lý]Â¦-ó#f�ßœž@q%yÅ%^ÊÔ[*v›xëS¦£Ž—ÅK)æþY>ãßâ¦3pµë‹”ªÛ—Gx­¶ÒX.ï¢pl¯§h dd-®Ë\ªï7Gq®�‘ÏPÂòÖ2q×Ý‚¸º:ëåÙíL–{l5 HÇJ$—Anq�ãâ’»-�Új-£‚gS²h'§~‰éçn™#>ð·Èã¯®‹b/›]C]v™‘9°dpÀ;Oêƒ÷dQÚ®VÚë]m–Év§”HÞ.JŠ–9•=I¿R­Äæz¢Óí>Ð~íÛ#­áx�s²ÍÕãœÅÙv~›i¶Ÿiâ¹UÔºzÓ»§Žg4K½¢é�ñZªªš�ÜúÛdÕ/©ŠÛ~m<¼ä–p3ÿ ®©1îmì(¼÷h£µÝöªª�Ô·«ÄôÑµ®§¥xdÄŽ¹Èö�_²ÑSÝ®5[m¶>¶¢(êï<æ2{l‹Ùöu|~ÉÊs=}#ËÑìµgâ6šé k`�ÉBùÛRCr1“È…Ã[èk¯v'Ý…¶ñSv™Î’+„U-kày ¹‚“›{:ÓìÅÿ ÷ŽÛ%gÃnê�æ¼éñÎÊ²ÉY-’ŽK‹4V[¿o/ÏŽ}=ëÎ6?d¨6†Åp¨®«©Ž²VD#˜µ°ƒ«3ÏÇÀ’½U“Zîu¬´ìÎÔUM#ÛK;èªžç®75Ç¾2y®«eËîû]|¾—8ÓÆñCL3È†~s�yæRã¢]°öòép±m%†åD­¡2§Œ;9>#Ç‘?%…ûTÚzÛUM¶ŠÝ<‘J?Úd,=Z» ®ƒö�k7MŠ¬k®Z}3Æ;žþ%Ë‹ÙX¤Û«­Ò²¥œ£µ6Š2ï–ã?0ãñYc­m.÷§CûAÚG·c¨�l–Hæ»9›’Ã‡iÀ'ŸÄŠÖíhºO¶VŸmâ¦�’Òµ²Kˆ.µ—cÄ�+G±òÍ´[G³öÚˆ_»²E!�<x8‘ÿ ð>q·”sÜ?i–jJjÉ(æ–œÏæg7ó
É«¤Þû©s¯ÙýòÔößª.TµÒè’ûdçÍÔv]MÂ¢ã}Úi¬”5¯ ¤ cY4@o$sÆZÆŸîòæJÂ·þÎCnÐ\¯wº»¼”Ç12s–ƒñ'õÇ%›c{i¶óhé$ I>â¢<õs4i?"±¶,\Ÿe«)#ßY/u°Õ4‡iª˜Ë¾çÓ=ÂÜ×]hmTÌšçW+]Ë2? žÃ=VT’Gn’WµŒ`Ëœã€rW-O5ÿ ´šî-­›‚¢ˆÒµã!š‰Ôæûù•�Ÿ,¼7öÛµ¾ï¦·VCUNèÝœÇ²³Q´VZJÎ¢ëI@81>f‡ú-ÝŒ·íÝÔ,lsÔÐT	šÁ€ðÐIÇ¿–UÍ‹³Û*¶2’ZŠH*d­ŒÉS$±‡:W8œê'™ì®§“kûq|–Êªú¬²*ÚŒË+ù5�çÄø²·í-’ëRi¨.tÕ�x$�wuç11ðì½®‚ž�³Á-þFd~–JÖ¹ÚZãØ�?\.–áoÚ”´NŽÃAC--C$eC*A,h>Ð 7¡°­‘%vˆˆ°d""" """ """ """ """ """ """ """ "".µEfË…eâv†SLç2ïN£óÇezÚÑÕºž8c„ò�ŽnKGê®Ýv
ë%Î¢ZC�É!{KŸ‚2s‚°ÿ p/¿ðàÿ /«™|.%çâg/iÚþ+\l{c4Å ¿±Û@.—¦:³:@Ç²|0:`+ëýUú³{1,‰¿ÙD&_zØþà_áÁþ(OÜïü8?Åtâü)œÎe7&§Ù…Ç�qåÕm¿fïú?Õw‹šØÝ�©±SÔ:­ÌÞÎG²Ã�Ð3ãñ]*ù¿¨q1â|œ²Âî§¥ÀÆãÃ’¹:�ƒŒWTTÚoWKjœ_4TÒ{qêqàVT[e�fÝc1=ð=û×HçÉçÏuÑ"ãÝmÔsvÍ‹†ŠáueÒ¾ç%3KiÅT¹lY8©Çu†ÿ ÙÅ	†¦’;¥Æ+|ú�É¿†×~<Ø"nš�&ÉRR\-u¬¨™Ï¶RšhÚq‡·Éå×š_6J–ñ_Ê*ª›}Âè4®ÒâÞÇ¸[äMÓQË�‚¶›M¨ÔT—UÌÙê*œàédx9É'’ÙÝö~žðûs¦šF~RÊ˜ôcÚszŸµDÝ5·;m-Þß5l{È&n—78ø�zæ[û<†Xc£¯½Üë­ñãM’á˜#™Ç‚ì%°Ôk¬VÀ­Œ·¶²z¨¢åœ‚Xß‚Aà¡m°ÓÛ.÷+”RÈù./k¤k±†éä¶ˆ›]9Ø6&Ù ºÁªWÑ]©i	ï3|AÏ?—ebƒa)éjé¥ªºÜ+á£9¦§¨—1Æ|9¸÷®¥u5{nØÚšëÖÐUKQpµI5k·SÓ¼°ËÉÇb3…¼;j;–'ÍL�µ”_#Ç‰'ºé‘^jj9ºýŠ¦«¼Or§¸×Pº¬U4º[8¹öåË’·ÀZ#ÙÙlotÒS¾ Ô1åØ|O8vÇŠêMÓQÎÚ¶:
›nu—
Ë¥\l,†J¹5n�ë�ïXný�ÑK5ÒãKo™úä †lDsÔw ®¹tÔ[¦§Š’š*hLcG€ .A¿³Z8iæ†–ñs¦mKœjR€%ÀŒc¸]š$¶q›WlmÆ·fíZšÆÏŽ-ÐËb ƒ©î=9œü
Þlµ”lþÎR[Ž‘³2‘âóÍßr¶è›í£]Ñ’6Ë£xË^\;‚´Û-²Ô›)C5%$�”M1”¹øÏ@ ý vŠmZ[>ÊÐYo+�1y–àðçtg2H©9T¯ÙjZý¨¡¿É4�š‰…�Œ~WuÁû•»EwSBÔÞ¶rŽôøªùi«)ó¹«§~™#Ï^~#ÜVÙW3ûœú·5—›åuÒ™§<4…±ÆìtÔ¯ŠÎ»läW
˜kij¦·W@Ã*)ñ’Ï+šy8{ŠÜ"»©¦šÕ³Œ ®’ãW[=Æ½ìÝñàig]-häV'î„”Î’+]ò¶ÝC#‹�IkšÜó:àKrryw]"&é¦¢]—µKbŠÍ¸,¦„‡DXòÇƒ�aÝud“Ÿz±E³upÔE%nÐÜkc…ÁÌ‰îk#¦¢Ð¾+|‰ºhDEDDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDD@DDUáâìï¬ú§g}gÕW‡‹³¾³êœ<]�õŸTE^.ÎúÏªpñvwÖ}PQxx»;ë>©ÃÅÙßYõADUáâìï¬ú§g}gÕW‡‹³¾³êœ<]�õŸTE^.ÎúÏªpñvwÖ}PQxx»;ë>©ÃÅÙßYõADUáâìï¬ú§g}gÕW‡‹³¾³êœ<]�õŸTE^.ÎúÏªpñvwÖ}PQxx»;ë>©ÃÅÙßYõADUáâìï¬ú§g}gÕW‡‹³¾³êœ<]�õŸTE^.ÎúÏªpñvwÖ}PQxx»;ë>©ÃÅÙßYõADUáâìï¬ú§g}gÕW‡‹³¾³êœ<]�õŸTE^.ÎúÏªpñvwÖ}PQxx»;ë>©ÃÅÙßYõADUáâìï¬ú§g}gÕW‡‹³¾³êœ<]�õŸTE^.ÎúÏªpñvwÖ}PQxx»;ë>©ÃÅÙßYõADUáâìï¬ú§g}gÕW‡‹³¾³êœ<]�õŸTE^.ÎúÏªpñvwÖ}PQxx»;ë>©ÃÅÙßYõADUáâìï¬ú§g}gÕW‡‹³¾³êœ<]�õŸTE^.ÎúÏªpñvwÖ}PQxx»;ë>©ÃÅÙßYõADUáâìï¬ú§g}gÕW‡‹³¾³êœ<]�õŸTE^.ÎúÏªpñvwÖ}PQxx»;ë>©ÃÅÙßYõADUáâìï¬ú§g}gÕW‡‹³¾³êœ<]�õŸTE^.ÎúÏª ºˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆƒ�­ÛjjÊªx-õÕ¢‹ÿ $‚Ø¹{ÈÉ[Š{•%MUÌ�­§™¡Í{ÎžGõ\%Þ¦ÛExºTÒ]ë,W¸—Å#5ÇR@äæ· ÿ ¯E‰vžã\û]í”ô´ï¥v®.Dº�Ìµ¤`–é#(=4ÍbÞ™#Æu—|ÔED!(š3èýCâ¼Èº*M™¥§—s[I5{Ì3Ô2hé Ë›œã<º¬‡lÝî�®�p.Zæ3ÚÎKC¹€pzáª§ln�ÏcN—8¼`Ä­}Þû­ÖìF'm}S)Ãšðu{Þ¹[ý¦Óg½Yáª¦ÝX†ðÊ¢Íîœ4¿ßÈë+¾žÏUo´Al† [¦¾5ºe$5àòv�?÷AéMÍ.ŠFHÁ-p<Öªï´”öš¶Òpµ5S˜];™G±êã’>KS³”pZöÖõCE†›s›¦ôçÌ-6Ù×mLõ¬·2’˜2ö�*K°\ÒáÌŽXÀAßÐVÃq ‚¶œ“ìfFu¦«Û
j[�e-——Ñ™ŸMsZræ§¹aìâk­-[g,‡rö601¸�HÆ9gÃ9ZzÈ¯NÚmªšÍX ’(âs£Ý™‡ÐÐõAÛÐ^(nVÈî0NÑNñù¤ötŸsÐ¬­ü:ýë4<á®Ô0O¹yeLp~³®§’1löÍCêšçÆÚƒ×xG�EjºE²Í©â¨ŸxŒ±´Ñ=�Kõõs>ìx õ
Ë”4¶ÚªØÜÉÅ4n{šÇ�œgÁF‚ëe¦’á)e;jbl�¯xå‘œgÅyþ-†çvvÎ0‹x³È*ƒ7žŸŽ?ÕB²zWÑXiªii‹c*+D¯aÈËÂwêƒÓŸ4QÇ½|¬k<Îpæ‚hŒ[Ñ#xÎ½C5å6÷Æë6Ï:ñ©öhç™²ä-v£§W»õY—†Q?fÞl1Ï§ñ jL­qˆ·»@9Ñœe¥E4S³\22Fù˜àBšâvÙv¸KI[O53ØÝQÒBöB×÷ÄŒã9Âí�	À'²Ã¡ºÁ_nutL‘±·VC€Ï³×ÇÜ²ßý›¿B¸ë-¶¦£gåž;¥LÕ/ð™�<‰÷x è)næ¹´3SS8ÓÕ=ïk]=Ùç’<xš'<°JÂæõhpÈ\]³¦Ìõü•—¯GtV­‚šžíIm‚¿\îš×Ç<Yê^:<rƒ²¢¹ÒÜ3iäÔayc�î;{•öM¤ˆåcôõÒàp¸ˆ Ž
+ý5$Z+šçicZun²3�r¹D-î»Û�‘¸ÓLþ,´§ûÞü ì¸˜1�ôxÆ0S/`pisAwAž«’°X¨ë¶@¸DMTr4Èyœ‡�?pönIn×FVLÇAJ)ùÿ ÄÏ´~H:ÄD@DDIv¢ž9ªc5²6•å’Ém-Õ•³†¾–¢’:¶LÍÌ£-sŽ3ó\l¬º´[êt5•.ÞD#¼xàørVêã§[K$…¶Îø/ªkžÍyö�ÒG´ƒ»2ÆI{@wåçÕbÜ.QÑ['®`¶œ5ÃŸ>ë‹š(c¡´6¦WÔRqRY›ìräæG_‚¹(¦4×÷ZÁã  %ùÆPvÑÕDêx¥‘í�zÐàà:…qòÇuI#XÞî8‡¼K•Ã,Ì{hY¦J€÷òèÀ3ïQ§tŽÉ%ã. áÞ_’Ðüž¿Ñ‘��x^ÐÎº‰åóUcÙ#C˜àæž…§!p÷&@mtF…²Gln/5-qg¸àè[}“�¬uk¡¨ŽXðZ!�Í�§ÇN®¿8/Tµ™íMl�žê%ÀipåÓŸ¼*2÷K%íÖ†	ìf§;HñÆsœóì¹ºÝt·Ë�Ú>Š¢2ð:º2À(iêYu†¥£µ´SN}Îqä>;VÍÞclŒsÛÕ¡À�±.—H­”3Ô�2º‡ƒÀ'˜ê¸»,-5ýÝLÕ²_mŒ†Mñçíœã
Õ`·‹]ÍµlwãKŽHv¬jûcAÝSÖÍ=fèÓ†Âal‚]à$“áŽ¿”É¢”‘Œ~:ép8\„òˆnuò8–f6’5^#šÆÙ÷Æ6š‹‡4¡’S¸8Rµá½3‚\y�ƒ»DDDA¦©ÚH ©ž¨êªE/öï‰€µŸ3Íl¢­§š’:¦ÊÖÃ#Cšç�=UÉÜ§¢¥¸WÏMp©µÖƒ—Æöêdçˆõbå%]T–ª‹›a†SœšˆÜbsê0HÂººéIoŠ9j$ÃexcKyäŸôGÝhÙpŽ…Ò�ô¬ÖÞØýWQGvf)žáQU€±â'422} 3ÏJØVEk�ií•(Å$°a�Òt—Éþˆ::JÉ&ˆ› dÆ6f@ícÀòéú,†K€˜äkÀäKNp¸Yãl¶ú¸ß�/½ààã–úêÒÜ/V˜Ìz¨˜á~>ÐÎ=øÊÉ³Âò&c²p0àrª&ˆÈc0¼un¡Ÿ’â)…°_,†ÝK,?˜K­Žn]§§>§ôVèøj[µ;c×¹Õ~WÇQ'©î¿’ù·ÓÃ+ƒ¤†7¹½š	
¯Ž9[¦F5íìá�¦ˆ b�ÑîÝK<¤rù&æ,»f_d)¢¾6HÝ21¯iðpÈTÝÇ†�ÃNZ1ÑMD5¡ÅÁ 8õ8æU$†)H2FÇã¦¦ƒ…4Aâæ± ž¤hqphÝN:©"f‹f&­Ò0°®–J[´4±L_)jPÁÚnpAåÍlQL��ê@ÊbvœÆÃ£òå£—è¦ˆ aˆÇ»1°°ÿ wHÇÉTFÀÍ�é§”‘#�‘7LlkÙ£MZÑ€Ð`QC1†´iéË¢Ø×†48õ sRDÒÐâàÑ¨õ8æ¨Øãft1­Ï\eMYží3àd�ƒPÀ|\œßxVm–Ê{U/O­À¸½ÏyËœãÔ’³CZ3†�ž¼ºª£-Ðcihð#’š Ã«¶AYSI<…íu#Ë£À#ù,‘Ý�> rSD1±ÄÆ’:dtT1Fæh,ihð#’š ‰cKt‚ÞØä�kXÝ-hh aIGCN}‘íuåÕWKr‘�0QlkËÃz�9”1FIqcI=ITÑt79Ò2F:x*68Û�,hÇL4@DDDAÃŽ|lq	h8Usöé{C‡b2¤ˆ#¡ºté{c’0€@è1ÑIGvÏ#zç§Š…E4u0ÉÁFé.iÃ±ú«¨ƒSG³ÔôµqT¾ª®©ð‚"â$ÈÇ.AmlÖÐãýìsRDD@DDD@DDD@DDD@DDD@Ekˆo•ÿ $âåÉÔ^m%—m+Ën!¥ÇíŽéóQüm¿˜ÕZïUÕÐÇÞ4õ/­zZ/4üm¿˜ÕZïTüm¿˜ÕZïTècï¥õ¯KEæŸ‚m·ó¯ë]êŸ‚m·ó¯ë]ê�}áÔ¾µéh¼ÓðM¶þcUýk½SðM¶þcUýk½S¡�¼:—Ö½-š~	¶ßÌj¿­wª~	¶ßÌj¿­wªt1÷‡Rú×¥¢óOÁ6Ûù�Wõ®õOÁ6Ûù�Wõ®õN†>ðê_Zô´^iø&Û1ªþµÞ©ø&Û1ªþµÞ©ÐÇÞKë^–‹Í?Ûoæ5_Ö»Õ?Ûoæ5_Ö»Õ:ûÃ©}kÒÑqÛ+C´49%»ÕO4ÖµÓ™ v¦ààžÀ®³ˆo•ÿ %£<f7Rí³¹½.¢µÄ7Êÿ ’qò¿ä°dºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äœC|¯ù ºŠ×ß+þIÄ7Êÿ ’¨­qò¿äˆ-¢"¨""" """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ """ ""^é·T´7Y­”–Úû�E8qI¡¸œõ[MŸÚ
-¤·Ú-ãC^c’9[‡ÆáÔ¹I¬×´×K–Çßi8‡ÈmíËC‡,gÇ=¿U¦¹me|»plT�Û«ÙpµO£ÃCòN{’1œ õf½¯Î—c®
khv’á«¶y¯4³Yï6�¥¶OGhžÙHì²°MsŽa8ÇæÓ«¨ëÈvÂÒ]ÝMž²ýl¤»O¦mL»ÔW�@a±ƒÌvåŸ’g.hêà<y•C#‹ÚèIê¼Ê¢‰ÛI¶ÖŠZÚª†Å=š9gHZd=pqÜá]£±Ò_öÚëh¸ÍPh­PÇ%0�ÍGµÈó>9÷ ìv‡h£°~®�ÓñÕM¦]�%Þ>õ¸kšìép8ë‚¼·i¨‚Éo‚øûƒ[xll©ðòäÜäójÙ[íÑì×í>žÝn–qIYBçÉ’¹à¸ÏŸ�/¹AØ_/t›?k}Â·Y�¤461—=Äà ;¬KÔÓÞ«j(]GWCYNÐ÷ÁTÀ×i=Á<º-Gí ÕÒÑlä1õWIq’;KaÐAÕžÿ ÷\Ý¶çqÙÍ¢êèÝQ´5µpÂú™‰{$¦<�f1Œa¦]n1Z-u7Ú÷ÅM‘Í`ÄÙ\»?iÖÍÔU«µ5,Äi©–œnùøä;§è¶Ûmÿ ÁWþÕÿ ä¼æªã|“c,¶JÚz:;]ÄG+K‹Èh ‚G�ô(=�³Dè›+di�à»<ˆ=‹€$ÝyUÚ–®·m?ü>¢ëGm¡�±R2°Sƒ†´o	$dóð÷,K£/–í�«¥¸ºHÁ‚›UK%{sì—4žžü ö æ’@p$uZ{Ð²ùSr�”î„ÛêL—gY>î‹ŠºÚâÙ[ÖÎ×Z®5RO]RÈª$åüC\F\\ÿ ’³M[KClÚ÷ÖTÕÓÆû¦�Td	I$òôÏù õ6½®Î—Ž¸*…í.Ç Ï5äÔ&®Á¶ÖÈim•V¦TÃ&ò	«ûü4�â:N@ÿ EglT{M³U[Au»ÏÉõ<^üŽ`c î0ƒÔÜæ°eÎÉU#!y]íÕ×­³ŽÔø&¾RÒÑ1ì†*±LÙ‰2ž}|
é¿gô÷Š*Jú;œoŽ§Í+$©dÎ�‡9i-'¦\uA×""" """ """ """ """ """ """ """ """ """ """ """ """ """ ""jë°VKµÆKƒøšj™µ}4Å›Ïc¢Ê¥Ù%Š[+(Ã¨æ%Ò5î%Ïw˜ž¹ä:-Ú çm;d³×G[*&žD.¨˜¼D/dtX¯ý™ìÓÄ¬ÜÔ¤:„B¡Ú{´w]b ÔÓìÝºšéMr�²
ŠjQK/å»9w÷¬[ÖÅYoµÂºª9£©Ó¡ÒÁ)a{{ë D#±¶^†…”îŽ
ÅDA�9Ö<IñY’Øè¦¿Cz{_ÅÃ‰„;ÙÒsáñ[A«¾ìå·héã†áœbv¨¤�å¯a÷µýœXÄÏ5²ÔµÍs*dªq‘¤tÁÿ ²êÑ-uº•²k}Q{áš=ÛÎpâ?^ë«emU›;†xœê8ZÐÁ«Únž‡=Öás÷-‰³Ý3çžš!*"˜¶BÑàHê´ûO±MfÈ6Ñ³Ô:ÜjY+Ã¤ŸÝÅÎ<×pˆ9«nÀØ-—(î0ÓÊf‹œM’RæÄùAWäØ»,Ô—
Y`‘ñÜfßÌ‡:úä¾DÝÁXí×
k„M©}M1%’K9y9ÁÏ€
ÕOìçg*«e©|´Lýä�2w67»9ÉjêQŠñ±Ö{Ô�K<RC5;4G-<†75¾\�™e°Ûö~�ÔÖøK÷k{œâç=ÝÉ+bˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ˆˆˆ€ŠÜsE+žØäkŒnÒðå=ŠE4SµÎŠF¼5Å¤´çu.""(cÃ[rÁ—óôT‚xª`dð»TrµØÆBˆŠÜÓGOæ™á‘°eÎ>ÄVéê#ª�“ÂI�ã-%¥¹øjâ" "´ê˜YTÊg?ÈÒæ·˜Ïù…uªŠˆ©atÓ¿DmêpOù+¨ˆ€Š%ì.ˆÈny�¤€ˆˆŠ/{ccž÷µ —ÐEf–®Øôî.�Ý	in~jò" """ """µOSSø_­­ya8#r#š¨¨Hh$� æIXô·
:×9´Õ”·¨iA’ˆˆŠÔõS1¯™úCœ	æyQ™j †e|ƒD#ø„s-ø‘Q¤9¡Ã¡
¨ˆ€ˆˆˆ€ˆˆŠÜ5O¼Ý;VíåŽäF:„Eò2&Èö±£©qÀR@EhÔÂÚ¦Ò—ÿ ì/kpy�ÔýÕÔD@DDD@DDDA©³+®­Ï´*²G¸´ak©Íc­ou	q¯�¼Fà×½™9ÒJÜUÙh+fßM·„aÎcÜÂáïÁæ®Ij¡–’:WS�G,%¥§¸#š·:‘K5<ÕRI%I�úšÖÍ:2yï[;+ëµÔÅVÉDl-1œÒüÌ'Ãu‘øEi8qºsµ¨ä»¾¬ç>ü«´tÔs)£Ó¨åÄ¸¸¸ûÉæPjã§"ÿ r~þSˆZí%ÜŽC¹~ƒÁaÛ¸š:<í¬•ÍžFÆøŽ4i ãÃ[ù-ô²V
·Gü`ÒÍAÄdv ¨-Ô¢xD^Å3ƒ¢�²GOì5·zŒVÄÚ—>4—Æ"Õ‚ÜœãÇªÛm${Ë$þÛÙ§Ù8Ï1È«ÆËn5\I§Âídj:K»éÎ3ðYUñU@è&n¸ßÔdŒü�jLU79(|ðÇM\HÕ!q<Éì1…‹MU[rèÍcâÞ	„¯Œ dv¿÷[šÛUÁí}LEÏhÀs^ZqÛ ŽJã(i£|.d!¦–Ç§�h=y|i*8×´Œ¸O¢h14‚C3Ï—<ádRºªšçBÙ+%�µ�½Ïkñ€àr1ÓªÙšg
�cåT17´}®Xørì¥ÁÀe‚]ß·NÒØÎO²3úô57HŸ>ÑPDÊ‡ÁªræcQ¹Ë{�u<SPÇ,³9µ��³·N½$jÆO,øeok-tuïcêaÖöàâsÛÜ¨ÛUhM§‡s-$äž¹Ï\ûÐhª^-µÐÔ²qtfwµÏ##Ù=[ÝU_Ur"¾JQFàÈÚÌ =œêw|­„vj©ä�°e’�^\÷;2IÊUÙ¨+¦ßTA©ä`�÷7P÷àóø Ó­k˜Ðds%¸SDiÇƒN—cæ
Í´ÕÔÖÕÆ)"šŸDíóK¨ƒŸ¤üÖÎJi¦‚WÂé‰1š20”ôtô¯™ðFéß®C“í;ºmU9vÓÒ¿+€÷ik¹r-åú„êšÆZEëŽ�Èeÿ ÃòÑ�Ztã¿½oª(iª¦†i£Õ$Õƒˆ ü:�r²,¶ñWÅ
q¼Õ¯ó:»éÎ3ðAkh'šžÚÆ™XÝcÀ°æ¨ª´Öº!U%[_JùtÉ‚ZæãŸ/ž‹eu¡7FÀp%cœÐ€rB­%ªŠ…Ïu<8tƒ.qqÇndà{�i­ÓÝwô’¸U>9šwÆgÇ äd€r[EFÊÔÕÔWÏ#ä¦‘Úr@ òû-µ5–ßI>ú}/Ó—¸†ç®8}´Tí¡4B?örÂÂÍGòž£=|PjÉä©¤¶¶¶x¢Æg88kyÈÏa•a•UÕ‚�V½®m{éÌí/cZOé•ºª¶QÖÇ'‹"/ÈZâÒßˆ9UŽÝI dp†¶�Ú£ žGgßÈž¨5rCU-Ê¦‘·ˆã‚™Ž’ãždüº9«X-UrÖË1­:ec€æÒF ±…¼°Š‰'þ$­{²y�ÓüÔo¥ltñˆ°ÚRCQöyc¿>]Ðb^gsOsNÙ%sˆŽ�£\€~Ñü¸Ê¦ÏÔÏQI;j÷:‡Æ7„ 1È‘È�³+-ôµí`©Œ¸°å®k‹KBT©(©¨#tt±Øçj yüDIê+i®ËWQQð#–=/ˆ7 ¹½AðÊÇ’²íS-UE;jµC1dmk˜"¾çŸzÞ:ËouQ©4ù�»YÝ¤»¹nqŸ‚Oe·ÔÔš‰iõHH.öÜâ:e¹Áø¨4÷zê�úÉig«&™£"0ÖÇ±œ;?™dÇ%Ueáùª–8¢¦Š]ÔgÎ9ûrYÕ6Ku\Ïšz}N�aø{€wêÁ>õ‘<£�KÜÆÆNIö[Ð}ÕŠ*¦’œ—GDédÉ‰øÝ�œhÇ\¬8[SOl­¯Š²VjÞ[Æ‚5óxåoe·¶¯Šãy«_æ:uwÓœgà®~IÂÉMºþ®.{udœžyî‚ÕÚ®:kDÒË‘®f� ã:¹c>V–ŠJ»UÂ(+Æöª@È)ËFcÏµ‚Qã•ÒÍSÀè%�¯�Ã®,ìý±¼÷qå¥Î•åÍÇcœ�‚
_åž*¸y�ßQ5·¨ákëZËƒ-ÐÉ[+"‡x]ØòIæK±È{–ú¢–¦5“3[XðöŒ‘‚9‚¬Ö[)+ËQs™ù\×–‘îÈ!š9®U3[©jjŸLù —An_¤òé�?ÕFY¦1MI4ÎœSWÄÖHî¤x[ìTÓTSÓMnhŒ' �óY1Ú¨¢¦m3 6¼H£’às’s“ñPhë®,–jªiêäds†j­ˆaÀàó?ªÊª¾¢á/âO£²îãZ S³×+:K¶YŸ+é²é©Ã[€Õ×8Î÷©TÙ­õuùéÃžq« ;2Áø ÔVU\jnU0Óº¥Í§�š3˜\[�GQæ9þœ–Ý•U1Øø©£CaÖæ.Ü«Wh¡­�I<pnœµîn[ØàŒ…–ÈÙm�ŒcF@ä£@É*él«7	*dŒd‘»HpÎZ<0±÷õ¢ÏQtüNS$<6>Zp�$xçÑné¬¶úJ�ü4ú^3§.$7=p	Àø,jMž£�­uLM’fÈ÷’í'.$dt$:…¾®®çU_Z)ÅSxpÑasZtƒ—j9=~K.#[[wŽ9jd�­¤ŽY"ŒŽo$çŸnK>ªÏA[>úx5?$=ÍÔ;?Š¾ÊH"œÎÈÃd1ˆò-#8éâUé¸TñõPÏW,2ÕoØœÒq€Þ¿r«%,7êˆêe×Ý§.å� çõ[vØ­­›z)°àðö�nÃ]œäà|É-TRÍ4¯‡Û�š%ÃÜ‡¼×ßÕ¿57•Tl´Ì¥Ž=;²¢æä¸÷XÔ•u·Yèú©`l”Ït›¼e¯ÓŸvz­Å]ž†¹Ítð’æ·NZ÷4‘Øàóª¼Ú*fOÌˆ5ñG»a€Û<bÙešJIY<¦WC;âÖî® òÊÕ:ª±öÊ‹Ç#$ŠgÁËF±¤Žç¿½t0SÅL!f�÷—»™9qêV3ì¶ù*ø§Sƒ&­GÚ:K»–çø ÕÌk*j.ïm|Ð¶”4ÄÆ€waÜû�rÛDé«lÌsd,šjpCÇ,8·¯Í]à©Á¨;¾u_ÚûGÚå�‡.ÊmˆAN"� 3K'’|]êæ†)£'U%+å©`þôœÚ~-qWúº#l¨5òÔñ’5’1øÒu4œ´xcak·6ÔI>íÓÕHd—@ö}ÀgÃÕJ–Ío£Ÿ>—Œ†åÎ!¹ë€NÁ¹õÕg!Ÿ~íóªC³Ì�î1òY6æÔT\k'’²S.��ŒãHëßªºë±ó:WS{N~¼o€ìç g åfCOCt™^^þdåØ?`ƒ]\éêoPÐ2¦Jx·WÎóœc>å­§šHh¦‡Œ™ÓI^ö‡@Á®l�<ú­õm¶’àÄÅ¨°å®k‹Hø‚
´l–ãMÃŠ`Ø÷›Àâ]Ür>9ú©ª*l7ê%œpõQ†‰Òà›ÉÄuÆVÊâù[PÊH*+etQj{!-ŸG9Ç%°ežß4ÔÍ§©ðdiq:�~g¯%,–ùDAðºn–�ã²GcÏ˜ýTJy'¹ÖÚžú§Ã$”�Öö`9Øpä;g
÷PÈ'¢}dï’:½Ìo‰ É(Ó«Nz;­£ìV×Ç7(Z[àZ	Ï#žêFÍo4m¤áÀ‰ŽÖÜ8‡wÕœçß•Fž›¤´U°Bù·°ÎÀÑ+Ù¼Ò@%ººe$¹TCo¨Žê·ûèãÑ3[¼„;ßÑÙð%mÛd·6žH0Ñ!pÔì’:ç9÷©Çi¡ŽšZa tsi­ÅÅÿ ©'*+CëÙ[,U-œSîÃšj^Ç<;<ÿ )è·+5Í :fn‰žç9Ã¶IÎdq¶(›ÀÑØD‘7Lí÷)ºg—îPM7LòýÊn™åû”EÓ<¿r›¦y~åÑCtÏ/Ü¦éž_¹A4PÝ3Ë÷)ºg—îPM7LòýÊn™åû”EÓ<¿r›¦y~åÑCtÏ/Ü¦éž_¹A4PÝ3Ë÷)ºg—îPM7LòýÊn™åû”EÓ<¿r›¦y~åÑCtÏ/Ü¦éž_¹A4PÝ3Ë÷)ºg—îPM7LòýÊn™åû”EÓ<¿r›¦y~åÑCtÏ/Ü¦éž_¹A4PÝ3Ë÷)ºg—îPM7LòýÊn™åû”EÓ<¿r›¦y~åÑCtÏ/Ü¦éž_¹A4PÝ3Ë÷)ºg—îPM7LòýÊn™åû”EÓ<¿r›¦y~åÑCtÏ/Ü¦éž_¹A4PÝ3Ë÷)ºg—îPM7LòýÊn™åû”EÓ<¿r›¦y~åÑCtÏ/Ü¦éž_¹A4PÝ3Ë÷)ºg—îPM7LòýÊn™åû”EÓ<¿r›¦y~åÑCtÏ/Ü¦éž_¹A4PÝ3Ë÷)ºg—îPM7LòýÊn™åû”EÓ<¿r›¦y~åÑCtÏ/Ü¦éž_¹A4PÝ3Ë÷)ºg—îPM7LòýÊ ÿÙPK     s‰U]�o7Ç   Ç   "  admin/images/icon-wp-mail-smtp.pngnu „[µü¤        ‰PNG

   IHDR         k¬XT  ýPLTE   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`9S`½ÏÈ€ž°†¡–ÿÿÿûªosŽžôøÿ¾ÐÉÜ<6P^�Ÿ²¿ÑÊ… •r��ÀÒË¼ÎÇ„Ÿ”4N\<Vc5O]~œ®ƒž“ü«pÁÓËo‹œ¸ËÅu� t� w’¢1KYz—¨µÈÀ3MZµÈÃŠ¤™Œ¦›~›�„¢µ»ÍÆˆ£˜��‘-HW°ÃÀ­Áº�©žÄÕÍ²ÆÂ}š¬{™ªÃÔÌ@ZföúÿÁÑËºÌÅ²Å¾š²¨m‰›Ü~99SaÂÓÍ¡·®x”¥Icn’«¡Æ×Ï¼ÑËþ­rý©mƒ¡³UmvJetF`l·ÊÃ^v|B\jˆ¡ª>Xd—¯¥øûÿ«À¸¦»³”­£{—�E^ióŸaÞ‚@¨½µž´«‚ž’RjsNgqòôôèíì¡¶¸¤º±öøø¬À¾¨¼»xŽ“c|€Ojy(DRè�OÚ|8ûüûÑÚØÀÊ¿¯Ã»†¤·ˆœžs‰Žm…‰jƒ„Wr�ù¦jÓÜÚÊØÕÇÕÑ¥¹µœ±µ�¨¯€™¥Œ¡¢s��Zrzö£fì”UÞ{4õúÿóøÿ ´±}–¤€•˜i†—f‚’]yˆÿ¨jâ†Dó÷üÞåå»ÕÒ•¬²‘¦¥f~„ëò÷çîòâèèÔßßÎÝÚÇØÐ¿ÍÄãìï×ãä¼ÓÎÅÇ¸…ž¨a}�èµ‰å‹JìïðÚáà¹ÉÃ¥¸º—ªªÈ³—{’”p‹†ïõúËÛÒÃÂ°‹¤¬‚›§âº•v‘‹Ì«ˆî±�Sn}ö«tü¤dÔ•cï™Z�°¯™­¬…šœÚ…FÐÃ¬ÂÊÎ¸ÐË×¿¢Ç¹¢Ï¢zÖŽUÙ‰N¹ÃÇ±¼ÁùÇ¤Ñœo÷Ë­�Ÿ¦êà×êÛÎòÖÂïÐ¸ÞÊ³Ü¢s°R   1tRNS úÖô3À†Yüøb›M8§k“-'Ñ±¬éÚŒ îsTã·EÄ½ßËyæ ?7?v  HIDATxÚìœ{H[wÇ¯�ªµ­�]ëÚÚu}ìÑ­íºß�›á%ÜË½I$„þ¢‰$±êÀP1Âuø´Ú¢«"¬Pu ÖÒ?†ŽúªècíJ¬ŒÚ²nÿ¬coØÕÜßïw�n‰±7©ŸlŠ½õ|=çüÎ9¿“P›l²É&›l²É&›l²É&›lÛ“¶%''|åØk[b¨çŽÄc© "îäK[¨çŠ¤]o_R_¢ž#vƒe8òü8Á®—ÁJ¤î¥žv +³õùPàØˆ7©èç�ÜÿµFc®1KiTô³_f¾v¬ûÎµî�H¤ì¤¢��±Äþž«gŠ­B±éê$@Np"ÚÓ@Ì> ¡ÖõexFÄÀÔÝ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 ÇØÀµî1v�¨›lAUPmeˆ`»ÛÒ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ö$
‚Êë
·à[ cd`Xà‰¼I)�m(´`xàÏÔ�R÷Êwï@CÀÇ,ÃSx	{�RIo£¨e¤ †C^%Ê'(e�# w ˜…á‚aïä¢jPa£!\jG¤�/ÞÀ³ëbµsñIÒ*á#4ˆM¦”Ä–8œ—"Àiw¾ªy>dóyë¥†Æ<Ë3K10fD[õ”’HxEÀ ÀB†ÍkóXÌ´Ùãv±!Ú;ŸdÉ¯kœ‹Ó±î\ ÄmÒÔXTõÍA¾ºÎ¢Ñp"z½¥�	É~“‡Ö/>J£·y5wÅ@Š‚î¶¤¥ û«ÄÍ×Æ|Ž£%4æ§ó5èQœÆì¶2…#x—ò°b²@bú\Ž�),³q4�³dÃàqû<Šk2¬=F|O”¦Œ÷ìÝ
0¹s�4GûP| 4Øh4ù¦ûÝF€Ø¡ˆ�ß]ˆk—íçäØ\Aß{hŒ÷¡­U+joÄ×~Ç1þíMÛ54ÆÍ;"ÁÄ�õ>TÓö¨<SI›3È~Ô	kh»Ùí*¾Õf±ãŸÝl²ðuÓ=½ôÐ|»Æ–_©ÊÙœAöc0ÛÝCªE.6å lylp�Ï!û-·ºT"7[é³æÊL ^‹>ÔXôçT^fÌzZ¢Í”ý.3‡ü¿@%á4sj¥(�ø�£®ÒkòºTˆ‚fäM¥0œ�(47’§ÓæàË)ê@æàÝ ]vN…ùºÎ.	�/À (mC‡}Y…ùèg÷Ÿá³ªˆ_Êõù3*ÖfTÕÖI'IŽè „®2ºG|ÙC=ŽÄJÍN•œ›6�t“è‘þy£’3ãÉq _¥6ž£‡�/-š¦'OŸN¨0çÝvéhäƒ@ì¤¸¨Âœûåé“6[M	@<£¥²IèyPÞâp8¾!áÚ€NÂ² `M’ ö:XÛk--=ÍµÀ�·6º JÄË€$@Ô™Ú'*Ä­PpæY8¯ mç°÷·g‰ÿ…Ôt Ò¶SIL2ð§V
ÌÜnüó2Í« �aYžç�,#¾,@NãGè�O{Q¸vll"<š¡-Çi`Øî5�s/+¬_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Ú×àí�ØžÚ~¬Jf9õœ¿ ;Oì_NÑ´SX&À%|öÁê¤Rág'XmÇÄj…Ð�¢ŒÕ(š%û R)œÓúàÚZ¤£ÂMRXcÍy?8['@pN#p�H3ä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ª$&<zi(Ê f|m]1¦ñ‡MÒÒHKÚu¹@{Ž<x!.Ðáß®wxÇ"½�»°Ãj¤nØƒ+á)’ìŠêë?½re\Dlë‹ˆã¬$@£MšŠßR!~AIàn³6`WÆ;ã“)�¨Ô—\¡„„œh*ìÆe€”DƒïMÏOüù÷o¿Šüö×óSWp{8>,ÍÄòÌœ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ž±MQ{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’Ôh0¾ç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¼§8N<nhÌWÐt¡¯|p³Ùå~fÇ§™¸§ôq«—ç/5¦£>W±gt‘šJOÕúI	p/mµ1‰“`|:ïó×gZ �çÍk·×K»ËÌ�27íõº_kÌe4O �cÄ}Q×éúª>a‰Ž"Ó\é) ­” %€«/Æ”øTh4~W™�¦m!¿†G „Úè2—ßñš¦Ë!ˆÂ™•˜ôUžF‘é ð$Ð­;EfØ)òñG�o@�Ô #×i¤€GÃÃƒZ¸�ßìÑîk Ã"³aœã„púŠL/…+¯u¢¤˜¡3Oü´kò�€ð'A�Fh0~7ú>ˆ¤q %¾ïÌLÐ‹4MšQól©I@ácÂ”+³ €…ãô¢B lEn•e^šváÀÅÙ¿9R¢\øb³2å°À±h9LFÙ]‘†¤¦€yUC]ž$¼ã"Î�„?Çk·X ·ËŒ\š*}ÂŸpÎ1ò»4Í°@®õiP¾Ö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ÎÁ¢zdz(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Ñ{äH 2µTuË’£6;¢jé–iûÏ¿8ö;n2 ˆÀ]²¼ËØLÁUÝ@G)'0…?ßC†‰_DÁþ‰ûðÑ?!î°U>*<âwÉL\7LÍ`˜àåN±û¾¿Ÿäµ�s&z©xëJÅ”1)/8fëh¤´Ü“‹àÇBE_±H �»	n@ù‹4õ¤Øã„ axÄàH€3€R˜¨ ,N˜Rco¼¯”8ÃB�(Åå•.‘þ7þW×ì Q˜’ŠLo%h,åJ�0ÐþÍ0óßÿ 7~›íY1Hë©5ÆªK	pÊ
§øSe(`6sÎ€ûßÏ­8ÛAÂ$œ¢ûÐ=8ÈQà³7äòû‘éûý� òÿ[ey1�!ÀæÙ~°—Š[‡â ”>úZäy‚AOYÈæ¥«(úV,³ª”„è¯¢ cN4 9?C¹a£aã\ ˜±{$Ü@#µw,ä Ã_l´�ÏÅòzH»'!@u5Ø"·†hi9-ÀöÅg²0ìÊøÈ8šdb%44ÊcîÛŒÿçØ~w®l¹i¯€\&ŸZBöƒ5Õ@7ôÔd ø�g•h@&ÖƒÈ~°¯z›}Ð
dã«äÍ€@6¨¬ÙöVO€1Ç'%ù”GMà«ÈÆ0úÂ(õ"Áöd'°…²�¾È<h+òaÒvg¨'@=²ØÍ2@>öO´íç"À�l õA ¥K‹ô&pÆ
�| ûÌ]TT„b@;ø®ÍPoC¤™Dpü	ÐþéÕ—/ßð.€,æÞJôƒŠ&Ìv$zA
‡2)-öùŠíà�˜üfå0ÕRåš�¯Jâ0@6v;øC¬«ÈI½JÝ“x,¶v³¨�aúB¢T4A ùªäôd >Œe/I€ÎŠ�ÕjGà‚“j X�Cß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Á*œ$Õ)özWÓÆ?ùGYl,ˆ	â
çÊÖ©1<o’•ÿX#Oÿµ ±¾1™¯töÖø~°™ÂWˆÖ',†ÓÞø�GR´+@¨@€™§' Ïî‰ï¯#Ðœ°ÆN€1d]¬MÉŠ%Àæ±2€±©M9R�Ì+ÇqfŒ:�0GëšñAç«�A¬iOÏÔjß‰ñøÙ‡²àPó{kAŠV›rú�Åšüó—Íuî‰?(^O¦ioB’äÑ;-ÙÙ–‚C�µ3µH€Å0ÆYÞáÄ-`ìã�1–Wçk‘)×p¿,ksÉq]\7¨|Ùñ†	‘ÐücG#N§Ì¬E1ñw_—!ÀõÅà·fËÈ‘Ç´ˆ™)§#žŒÜFÿÁÕÉž?¨;—Þ¦� Ž/´@y¤¥åQÊ£¼Ëûaö°ª<ÕáZª±­Ì!ØådU2'+E)_!H9æ’SSõX%9õÐS�ôÒO‚�R¯7�Bì¤¿[Ç’Ýù{=3»�îf:'Â’FµJB�Ä†Àû¯úAX¡Û‹1	Ó›
P­	ÝížN¢žsi¨s"¬˜¤eÌ0V£a<ûö»ûC$À\ÜµQÿ‹:qJÚ˜^ ñ1å)ôK¿jì€êªc³8õ_Ó6D�íõ¶ÈúöGð©G.,Mb8ªI÷	°ÕýD áMô”-�´q@5Ñ«í´?›Û¡„’Üœ 8¨~Í
†Å%tc{Ÿ$«& [o+ o)R®>G	péAÇ.Éz[ Ã
8P|ý2ä]®Ú¼ìE}fqQP2¸$d%÷îeÈëo;Í[Û8P`ý· õŽs¡ó#(	Nu`¹ö[ SŒ¡õ#5W677«k¤Ý‰µÒÍÎnÖªïfãÓ>ƒ´X«wX1÷‚«Š1¨žñK€Ú'9Ù2�gb¸S0=Ý0]7mÀ!ì—ÏMHÝÓŠü7�ýjjd;Ëð�z&�Ý€˜8lOo>Íc»oÒÝCcär§$€}Õvn¡„‡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$cj8#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 ªc4D÷l,À÷¸fÑÎ¢¼S”À «6cÌ¶ÕVv ‡ìÑNmÔFÛF�w ÚÍ;¨Xü §$X�9‹äÌCAÜÀBšö}MÏ Æã½®òwcUÞ$> x&n
Ê€2îU'Qœ˜ÕÁÝQ0“dï'&7Ê¸Kl#æ?ÆÀ¢Vâà.)Ççƒ™S(a&cC@©—q·ØzäMï}êû¬ëD·q·”ëŠÄñt%Íx,ºî¦d�Rbè^;³«^`¥t½mí
‹ÆòàJœ‘«ü\Ð8ˆ €Ï4M�E;¨-«X»Ç2–å47Õo(4Ÿw hÑÑÚ=`ç£…Àès”wpe  î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²ÒPq8»
ïÿÌê?‚£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ÛÚ-ÌÏAOAÊñ+âFBùK �Óí8 ËbõÝeå•,‰ŸDƒËÈ…«’y^þX(mQìÀ3¾ïcÚÈ¾�_ÈµÛÇÐ sdò|ç�6”P×óA¤BhôY­Q*|T:þ3TæâY4èÜ™ÊH�Q¥�¯4jS÷cjµF%ÿQQ–¤ÎdNž;ƒwÆž•þÂR€ô%ßä“²"ý…Ñ¡±�~<'NÍd¤Þ2<táP¼ýßLI=dtêÖ¡r?äîôãL¯Þþƒ[wÐ!däÖ½«Òÿ3seìPºrdbzJú?NNßG‡šŸíÖË
ƒ0Ð>‰I!ƒI_„Vm¥…üÿÏµt+*qeäžÕlgf®‘úæÚ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"ón    IEND®B`‚PK     s‰U]¸ëÛ~=  ~=    admin/images/syed.pngnu „[µü¤        ‰PNG

   IHDR   `   `   â˜w8   	pHYs  %  %IR$ð   sRGB ®Îé   gAMA  ±�üa  =IDATxÍ}Y“×•Þ¹¹Ô^]UÝÕ;–nl’ $q�‘ZC�ä‰±ÈG8<~?øÅ’~ÅÛOõf‡íô0ž‡gDyFžñH!€3ÚB"@Š$¸£I,�^«ºö%3¯¿sîÍZ 	� ¤Dº–¬¬Ìsî=ç;ß9÷¤¢ßÒ­réR‘Rt’Tp’"½äºÞ~M´„�Š¤ðÐx`SøÇ›v¨Š§U¥i/«ZGï9+Ž¢¹]PËËUú-Üý–l"p¿ÿ¸£ÜÏk¥O“RK
g§)"þ_‘KrºïsÆJÝø�–÷ÍZëøs‡{Þé\z~y…~¶ß¨DèÉàIŒâ/ãåéñOµ9;G›çâ¼íŒííÄ3AkÙGè•ésa¨¿ƒož+ý•ñQÀÆå7O{®~b:-¢H+þ‹q¯"+ãHÞ5¦ÆÙÇ¹ùÁµ–¯œá¥i™4Ð©¨TöÓòÂQÎsa}§´xè9ú5o¿6\ÂhÏúµ'å}•Ø–‹}Q"W[+#,¥Ìƒ7y�¿‘±%d†6›£Þ�…i^*SÙ¿4Q‚>‡�ÀN‘�dør$'±EÑ3¥=ÇÏÐ¯iûµ(`ýÒ/ tõŒë¢ùi¥±0Ê¼´#5’O��7FN<¸+ÇP”ÁŠÀ†"cë‡y®ãÑòÔ˜4£%×(Å~e¬„ýö3óÇ=CŸðö‰*àÍøÓÓ~&ÿm%è…îaÈh
Û(À±£[ËS›Z¾£¬]7ïÄ¦GF0“Mfe|…Ž´èMYóÂûLŽÝtÈ~dÝŸS¤Cû!ÿ‚K˜	†½•~»ñÌñ/ý»3ô	mŸˆþæÛ_[Êz…oú‰äãÊš±JÇ&ÚþzlÝÙij
��\e„æ° ñå`Ä³âÜõú!µZm
‚ˆjµP"éÂ’„ä¸ø†çS>—§t:E>f5
ûPP FC¨f Dx?Šõ�Ï‚¡¢x™]¬ÌPÞë5Zgz�ê3O|ã¹ºÃÛWÀÿ÷ŸûŠŸÊ>«\§È—âðÈ�Œ�ÕÊ\¿Œh'¶ËjÄþÇ›Læ!ŒBò`ûTm´imk›j�±jZÍÕz&åÓd>Eåé"õƒ€š�¦ÌšwÝE³³3t}u…t«&£^ñ(g“ƒÏ£x&ŸO`Ÿ›GH1 Ã>PHäð rV?ùÌ¿ùO{†îàvÇðío<^ôÛ�§ûýÞ×H„m³
ùä±ãx-ï‘�ü¿æ.H(%õ ðÀKS«ëÐ•kët}c›z��ã¹Ôév©ÛëS·Óáº”ô]¨©Oåb–æfË´aŠèRe{‡ç¦éàáe( I;•mêwš¢Vž‰‘ëˆ"œxb–©X	Ž+æŽ?sd"†z˜U³tï#�=»x×§žQªtG»;¢€óßýÆR«Þ<‹i¼’/NE¥8Žcìÿˆé(kÓ¡�í�6½zi•Þ¼r�Ö7ªÔÆHWŽÁCè�LO_ö`Â~‚ñÄŠ¥.¥=Eé¤OÓåI*—
TÂ¬(d}Jæ24_ž…rfI¹Æñw\7FKZŽ£µgÎÇWñù[}D<HYZ<z?e§–ØG¬(Ç}û¬ÐÇÜ>¶.�ý““DÝ³xZŒ"¶žÌ8Öæ› ðR[áß»ï^¥ïýßQ—ôÎ•«ÔÆhïa´÷ÂŠè‰Ïv`
˜™öÛUÆP¸žG>plÒ÷ÉSFˆùåýˆ&KyÚ»´—Ø�‘Ðþ¥eš,ÏCà>ŽåB	ž#Âw"Åä­"k® 9ò39šÚ{7‘Ÿ'œ|ø>¿@cûX
¸òâ¿¢ÃàÌ`´Ä^�HP†‘‡Ø]™ÚÆ±½ü�é½ré]zî{MÛõ­WbfXø•ZÇ¾}m„�}•µ×”‘‚Ð“ÉÙ´GIO‰¢ãPMÃÄ„âk
yúô©{h>¡P˜¤ÃwßKi8kÍ�ƒ€ýŠXy¥pu( 6I8*LPqz?ùé‚¹>_—ó$®í;ô·�¬€õøÕPÑ³cojcWÍèÁ%a¤2œÓÖ'„òk±/ ê�)¹témúûø)½þÆÛp²]\h§Fõf‹š�ž œ,®ßÇ÷aa(• J@Ø	(3äðº˜ƒ’$#ÚÅ÷³¹yÙ¬˜–(t³ZÇc‡ææéî»ŽÐâþ½tèØ=TœšÆyù83,{„ï�DÑÚœq„÷7C™(«T“Â‘ýxÈu[�¯JÏÒGØ>’Ö_<ûUˆïYƒ\†‡qôU€3¨gñt`ÞÆÆú8Ý·Þ~‡þßH[Uº¾VÁÅ¸õ@ÍãJ@ iŒüB" r6IH;á»¸xød(æ&ƒ}RPü@"‘"×OBHJÊ”Ê(™/Q7réÍwWéçç_¤ÚN•xàS´¸gÝ{
63Âu“r~<hØü°y2°LB²‘9+‹gŽïlU¦e0}}îà©ÛVÂm+`�ÍŽRgôM¾®ìˆ·Põ‡‡œfYàÊüm4ôgñtõúuŒø5›]ª×+¶[”I(š‚ÍCÊÈf&ïS1�ÀP”JzSa6ø	Ÿ|ìãÁ¹,ŒxÇK’—Ì’Ÿ+QºP"ob’’xLÀö·B‡~ô÷ÏÓ¯½JûçèàÁƒtìø§(›ŸÄ¹²¹bDÅrwG®J0›¶Ìª²„`´`+‚nž,ï?u[æè¶påüÙ“žžžÛÀ¾Ï!ÙvC	@/‚¨ˆx&0âðèç¿x�þü¹ïQ
êuA9Å„C§2´w2lŸÇé„=˜›&È¡;xYfÁÅIØ±Ha @�¹‰49i(bbš’<Êa:òS{¨´°‡._ß ïÿŸ¿¤Êê»t`ß2¿ï>šÁû©l�gÃÀ“XÃiuk�¸¦QŸ9ô}jÏ‘nÙ1ß²VÏÿÍœÕYüðÒ_( ×s5È@ÈAÐÆ4í³a¡N_Ñù¯ß¦×ÞZÁè…cÛtta’>}hLMB@6©ßCàÕë	QæÈ±‰+"±®(€¯‹‘OÒ:ìà4"çD2CNª@nv‚|×áY1¹@‹w� Z³Iÿë;ÿ�.¾ð*Nèþ¤£ð…Éi31ruJb”xô3LÕ£©Í¬ÖÖ\qR|jþØÃ+t›w+;]:ÿÝbÔÏ…,�í1ÿ28(C8a-ùÑÇ¾€Üù¯ÑêÆF@í�múƒÏ}Šº÷%B`ûNN�éø@NŽF5 (	?¤el"icÌ‚5Œ�G²‚ðIh÷ë·4ùP83y<©Ó¢3mŠËÏ.Òï=ö%ºøÒËôÒk+ôÞµMúýz“>}ÿIš(ÌÁ+óp"e„®,¸ˆ/ŸÈþ’y’­Óg/�?{jùÔ£¬Ý’Ü^ðt¨!ü(&Ò†�j” ŽOÞ1ÔCÈHapQ�ðƒ�¥Ë×Ö¨ÝØ¡?þg¿K�=xÏkÔiCèí:E�½†Œvãä0êGèå¹CòŽ…šx@ð»kF"Þ¤Ñ2»… ‹è—”ëõ{˜…šê×ð~¯M¹lŽNŸþ�9ó?áü»töÇ/P:“¢‡,˜qÄJÕqŒ_£¶|Ò(X5ÁÝÀ/jµ”vôÓxñuú�Íù°.ýäOžžùš†CÕaò—âG £Žßç°KÇÏûàçØ_¹À7p n"Aç_¾Ho¯¼ŸÐ¡?ü½‡éŸüÎýÔiT)€4F¨†`ÀB”ÁÖ—MÅ‘©k�P0wäáˆ)Šg„æ@M“Û—GŠRm»V¥þö:õ¶×¨±u�Ž\¤£‡—ð›}Z][£ÿøç´SÛÀq:8n\ƒ}¨øº`"‡ûÚ^+æ�üe™­¾ø½¯|˜|?p¬žÿÓ¥0TOï~?NûíÎÃŽ¾642Ip£­�ìŠ^úÕë€—Zž£?øüp²ð0;ªu;â/ú0?bp0s$ºuMÖÌPÐ®	ž dz™¿Œ`ÆêÚÌPöF{€™ ‘ö’	q¢!Ì¡Â¬¡tÝoJ¹tâØº¶¶N•V�¸B×¯mÓôÔœMJžêýrÎÃ,ÏH>!–…RÏ®^ü›çç�}i…>Š'õ`î¥Ñ_d–b§4B/k‹£¡ Å²¡.^Zåp…2ˆìAÊ%5k,pCw#Œ8&åd0³à8ž‰fÅhGÄ0Ðš=Q€ëhŽ˜Ñ�¥ø~AlV(í(2œ¿F„Þ†váƒ\Ä¥lŠöï] oŠéuè…_^ {ï;NŽïZÝµ7CqÄ9†Q$¤oðV„€¿‰¿OÐí*`ý•ï?‰}%>œ²‰‹Q˜©ñóŠÓ�cde’é†x‹èÕ·¯P·Ý¤OÞKó³ÂÁ„½.fA$ŽÖ¬Ãè&!vœ_ó¡XpÂY�–Õ3³Ð³¬«V‚Š„ßaß#y $8á(à³‡$Oˆ\ŽTZ3\R¿�X#Mm„�FD�ˆ÷U˜ž ­�0\º™±`ìõÆÊÐ»Œ:Nûñ�‹?8=}ì±st;
€}}zèÝµÂŽš*`xŽq�b’,dSˆxˆ7^{Ì¥OKËûÈM¦ðãÀúŒh  šG³dIÒ&à|\Sñ ‡rÌ,sM4Í3ÃƒÐC¶ïj8"…iÄ‰{vµ/þ#Â¾žkŽ¡1ãøûlÊ0« eÃL&<j (4›mJ!±#LmœT²T:�\« �È™ñ'±ÌdPrÔîÐ·ñtùfr¾©Þ¼øwOâÇ–lþÛÔqn´ùDC_›Ç>×Ã²Áöõú@KpÈ9ÄƒyðE,Ä�¶ °YËX½&yÎù€�	9v¸œ€sGFŽË- Ô±ça *TvØ�±¬"˜ ø÷8[Öï·áz4¢ÉÃìØÚÚ¢ÍíŠpBy{æ²)ÒöÙ¿â#„jÇ@Á>Žc£à!û(o©òöó_»e@kOkt�lédmƒ�ÁÃ¾ãc¨²³à½+×d¤riHY8Å<ã&r@-¨¤#£•ñ¼Œ&=› *�rÛÃ0âTc3(†½®kl3žð˜–HÈŒà‚o™QZ³©LúXf¦¥L˜ÞŽ€�8ºv9ëÅœ  ÓÝ•JÕB]Gˆ8&Þ˜aå±¿qÄÓ‹$�#Ã	* 4WGÈE<]¹t¶¸[Ö7˜ õ7Î>	›·d]hÌAë.0pßD1-Í™$á>ñòÍ×ß’„	sõ� Xg?E‘ŸÅÉybãÙ†3dda¸¸ÀFºŽü”ëuí¬’àÜä¨•g‚§+U®F˜¼®/y~Š˜H‹)
˜	ªBad™ÒNb†õ¡È|"	¿¤%`ãø!àck5ÀùÆŸÿæèØçª¡0ÔPX±¨\óÝ"¸²'ñòÙT .üiC?4íú\œ½Q�¾©
âhØ±I‡67·1Bðñ%6‰(Î
€„I½ë'$É"¾Fs•”(ÓõMâÄ%Xs'¾§Î‰uÇÄŽ/12ùn2r‚9uÉéGm“ãHvËÌèÈ�j"IÌªb>K•v*;CDÄW¯¾'¦HûôÇâOm•j&øŒ*ÐQDDCÔæ¸_ý@TÞ:û8¦Ú’[&5.`E£Îv¨„·hpx“îð@1·(—IR™%æìŒ6†”!(OyüM„€&ìhy�°KB	<;xTóQ|oük&#æN÷ |�ÑËèƒ“8�~$¶ùÔF29°Ç�¢.L˜¦,žÉ%�/ÀÔôaº2I-¹äæÊ5ê âfìT…àÈŸ#ï˜”fÒO”i¿QªuÆÚÖ°ÚÙ1Ø´1z©~ù'§ó{>wSh<éhßîoÌ�c�Ø~RüR�¨c÷æå(ó—G$ïÎ”±A—&'Å1òH­!Öùf_Îxùž€¦†Œ(�$;cöÚŒ&Ì$_ b ¨X¯6h§Þ€p,$s6kMQ2û�~ß|/áT‘¼Ÿ ÃGò”Ì¤%¯Ìšã™XH9Tžœ ­+›â76×·q>]ÐßyÉäTËvÄ4Ë,Šd†ÑpTŽ•bXd­ó4^œ»A«ç¿»ö{_þ…ážØiÀœÈxzc˜†
"+xÝŒ	‹Äqõú€ )ÊãÂ§&&ƒí5©Ó¬Ñ;ï]¥+«×¨Ù‹¨Ö©Ùê Ž°oŽ
i$bRår.•�FÜ3=�L†úRZè Ê÷iIFX;í¾D³×‘ÛASÁ§ô€õyFsÞx2—¢«•€Öëé¾»R©�3Æ3Ñ…ï™�.Ð«ï]—}Ãö²hÅ9‰aÆà·vh¬Þ4²O¢Ø©QAý'£0':]¹t¾XZ>US ”x:â)ë»ª%‡Ëß3³ ¶¿#éºë&˜?ÛÛÈ8¯8žv·MY/¢òô,1úcXùöÓao«Tm(ÚBJ²!�Ûß�&•’-Ú7™¥2@½Q��OÑD¶mý&#¤w¯®QI�jWÓj½Ku¤|IÔx^>Â!Vð»h]oîÐ»•‹tpi¨,CYø™…2²h0Eåüfc#XÓÕUš_:"£[Ù6‹ÍÅJ…�k.Þ€-Sh0œ ÚêÆÔBy|˜4=IÖ XõÖ`ÈÅKadbV “a�{+…°ž²i;ÇÌ�›U!SLC˜üo#©…?Ÿ)@HD¯þìEÚÜÚ¤ËW.îmÃ†DB5$àHgò˜ò0)¨Ê¹cä¾ÛÂ¨E~8“Ô7©TJãy’R©$FƒÞºV¥J(FŠÝT(f)íÑ€ÿIå“ôÀç¡µkWisåA>˜¹f«O?¾ð&u�%Cä@K³yú·ÿê_Py.¢‹×^éò;+ô™G>$äÚ8hJ[&x …†–ÁØ'5�HÌ$˜œNÒ�¾<¦ FK^¤O³bzWÂÑ04%|Rî¡VJ•¬Å¼l¦csc”¡h„¤Óæ¬8ÁÎ)ÉÉò"}ûÏþJJMÒ8ÖÒÞšÉº”$iqØìP0v’µ6ÕØOMÒÒ¡Ãô«_¾J;Û[`,»Ô¿Ú‘Šy`žEÀ1PHˆ,šG‹óTÙ\£<FvÔé"a~ró2)¼·€Ž¯	êAªŒT&§B¯¯Ué|ÈµnHùûè(„ÿÆKèÚµ÷„áB6Ë‘¹P€Aª3r­±Ã�}¦{Í8ubÕáœ®T.K¥åª( —rÚ3ÉP€±ë®©Ñ”ðE¦€50–�¿¹-rPd ™²ÓÑ-ãy˜¡�úÝwÏqÚ³°�zÑy˜˜ýë?úçp‚uzçÿHœ¡:S.Ó•µ-ÊOÁ�F]–Ezë—¿ 4°ya2C+Û-j!½€ÚPTûdá·æ9ðýuZ|dbÏó²@;‹T­®�½Åt òÍ5()‰x$‹ÀŠˆÈÀõèõ>'tÅá7»šYœ�i9N•­5\/ p"&MAp4JÉh[W= 'õÈz‡Xà4c�ÂÀ?=Ž?g<k~NËèå/‹ #9¨0ò‘©¿&l¢Åêì¼8¸	9Êä¯(ÁRÃy\3Q¯ÓÑC¨ŽQí 1Â¾à�W^ nc‹¼.²`°÷�v@;—®"u˜£- "�/R¯Õ¤W^y
B^æÇí(*øªÁI·7¯R°5ág�t/R
v ¬�FG`h‹ ÎcååK@?MÚ¿o‘öÏOQÑnk­E3%iÏDÄyƒ�³izñïþŠ&�ìGp˜¤å¥Tš�"�Öƒz$¦‘Á�BË%3.èx‹Láo¼ ÄòZÈ�|~  ÏwO˜L7ð�Ô­Â+Á¸l‚ÄüDÎ  X)\ûã°¹2È)r­ ‰¼^˜[ +ß¢Wõ"PMB�IÉvºÛñ¨ÒDÄÿÀhiåM¤«’ÌÒmzš�ïA(¸š.åuúÜÁ<í+¦éç—¶h¼~'íÌàûOdòtÏÃŸ¦þò5ÊL–08€¼f©Pž ‹çEœvï!Ò�ÍÀÙ»iÌ„ˆ–æ
´<S ¿”¡ïÿýô‹Ÿ¿Lÿá?ÿGÀäêUë˜M“D	ø'aaw‡§zlÄëÁ[€Aö3ä�Y’å?¡œ“:æ,„[÷l‚ÃP<²}Çµ¨„R}º¾5=<U$Ø…­—‚ôf¶�ÁûtøÀúþßýˆîßC§î»[FèT1�ßIÐF¨¤Ñ‡ŸèÓ±ã')™-P;BàL?'ûð=÷R
é¡õanZ8^ÖíÒ‘ùí-'è÷>3×æyI8ê¨�‰ÆUe�¥û5*C‘eçSY¥é¢OÙb‚hjðP>þz ä–çhï¾yZœ�¦ã'�ã8Doýä‡tþÿzïFWúÐx[x#G¼žy(Ë™Åá˜H£vŠ95WlJÄ3H¨��ðlÅOFÊL›hàCïX›fb€ÈµÞ„äz2µ\Qn(&’)å(Ê‘‚z[ª’KÓstìØA:tä0Í 
þãO~J!`)µº”T)Z˜�	A¤ºùÎ‹´�êSÁ5¨l°Mï½µ*%‰Ùu1xäÞ6u¯s¹M$stòà~zs‚æ ðQåT¯¼IIÌÂÏ,•åü’Èº%3Šfˆµ0R3Tý�ƒù)MÀ/`†q)ú�Ù2Ñâ4õ®¼CSP¦[­Puã=Úó©/¦×XUDŒpFß…ã1MnrçÃÊpþŒåIXcÿä(Ë<`6,ºŠm[¼‹3ŠqeŸh€~8dTæDÆg¬¼ôKê­¾C?« oÀ¹O�Âq&±—Í
�KH†R05Œµ�zf3žD¦bñ˜žæê8äØäµ¹¦¨³C÷Þ{7M’”Ìä ì¾å$½üöe*@�ÖF4'ï:>˜!õµu”]�©œå!‡)øþîu˜—ÙR—Ð—äÎB6‰x !%�E�‡õÚ�u˜Èû²?péFZžÃu„(ÁÛc _
@¨¾{oùbŒem®qP&„Ò®ŸVÖâ‰Sr$F�ý¸Žv®àöiûúÛ´wú˜%”rh¸8SJxv2�ìÔ&íÀ©F@S})CÁ1z¾TDðy'1Gs¸@E\z·FwÍÍÀL”Å8²ÒH'H)ºk1O;ð-GöÍQ[¿²fÒpI�”2&Ag'Y9 ¤L&(M;onÓad)˜(˜ï8x”Ò@dÌŽ6‚¿¯Äñ=‰ªG¼zD¾Z«ñÏH�N	Š×G¤-y€“KFˆæ(®ŽÆ?®T¼`tÄCÇÇU¦‚�G¾P™$L®T¢&PG#=ïaêÂÌDÀüwÚG/]x‰Ží;F…$ÆÌQæ¨ÞÔœEsØ1�2iÎ$i¥Úaç=ôÅG(S*’‡ÀÎÇ¬
à=˜»‡aâþòùT�ùØ77ðß9‡È6L…§Ò9Êd'`ÿA9Ã¡®lÖ©¶³E‡9%uLˆßƒOp0S}ˆ‚Ym �â+‡¿cX�V.‹|œŒÓ–>�wŠ�˜Õ�Þ’‡¨¶ G„>4_ŽU\4&ï›r?:ž-ö¥2A•ƒ)	ÒÂž%ø‚–ÀWN„Ý;MkïèÜù·éÈÂÍ§¨�éS®Ð£œ2£!�)Ïuü;ˆXW.W1úWè‘wÓÜô$%„‚%¬çõ]œ;X(¥è>{‚~ðó_Ñ@AûS¤à`“päÌT÷Ü$»uvÚÞ*´Z}…¸„äË§OP1Í|gÜ`bxýL_¦¬Ýð�”IQ�Ø¤LÇ¤42²G%íâ�­\Æ^1]ãî÷p-K/cÛ%ÞzøkÌ¾,ã›ZfñÛp¦™#t�ñ#ØÚd*f³+ÅRŒ¦Òp²_xà¸�p/ÿêUz£ŸS�Y9)ßÅ…2µÜe"$ÙùðÑ}tï�=É ’W0üeRŒ‰VFfÀ­t`Ò§?þÂÃtáõKôÖ•Kà x2\¿�MÀqÏ�õüÂ).S_€àºRFÏ%�}ñh!Ìâ€K=×*uµ\’®vUÏ�
¶C£úˆm\ºoÆ¬ø�"^Ù2D²ÃÐÚ
{W
ÌDãzLfÑE4’²	ð,~.GWß½$¦HÃ<tAC$0+R>ìö^ÐÅOÃô4vvšêAõ"“HñØ‰Â&§Ù°ãæxs³\Ó¢¹<šd¸’È/sI{³Ýôuß¾"�Ñ”p<›H‚ÒãÄ¸! ð3åáô‚@8/†é}æ¤pö	;… ¬uu›T·#39]œ¡„›}ñ¡µl´[AJÅë“iÄ½Ê>E£®¨õh4göµ37òÉ AÏ‡zC.3ìÍï'&ç€p&©'“™”<¯‚‘OCrØebb’\±Ð.ÌaŸ‹x£¾¬	ë´Aðb@ÚB“Jh7�À¼Aù˜]’MKÂmVñ=®ÂfútD¦#™� ‘qs}C zœ0gv
íA¸2ø8™sÇ%‘!—¯€šHóLELÑ®¬ã;!¥
‡(òL®ÄÙ%ä÷£äi ¥!CªõPÆ˜ÆEoPóïjI%7¶éƒ4 ]Ç>úcj÷O�¿‘›š£ëN‚ÝIVF†Ê\0oÅ©F®ü‘R“@çÙ¡˜‚çë´Bj#©Ât3‡¥Ùš=0Uš¡Œþd–‹¯÷rB§3—£Éi$i$^_½J½æÕ:uðhÊf‹pEP2E�c²"È®æ¢ .>Wg �ãœ"Ð±\¯ZÇÌœšœ"'�óÈ«êG.#þõ}¶ÝÀE�)ÌÆGë�ðLFÇÚ*Ç®Jü’¶«`ˆbêb4^P#XêwR))o7Z4Ñ�ÃNr‚¦×gJR¦gál_¾ÉÑt«QM]�©I?3=ƒd~Ÿ!Sµz]"×ˆ3†—¾o.È�0³¼¦€«á˜‹=Oâˆ¢ñn·GýlžrQ3&%¼Æ“|2§;1ktdúE0¢0T6×ñAáüò2ä¦óB::j| ikÆb©´¡Æ‡©U?<ÃlW|(]ßðÕad¿rÌ*ÓAÅÜ0hã)pÔŒL o×*;ä•’ò~¿‹q¯UçÊsAj óÔj¶imcKLD6ÚCb¥²^¥ÚV‹*0C	ØïCKÁ
��fÒåËW€Zé"±ÎË—8hâU2]ö%¤%/¼ƒ$K �f`’8ÉIYGÀ&Eb˜<Ä.¯?ãAƒS/LOSÒæz�&§¸’/45ª#²¸Ù¸ié.�ÄÉViÕ±Ý§dì:Þà©q¬Ñ®oÛ™2€cj$°‰i»;›˜&ÆìÒ~¤	«”àd9h¹ß>ÌD…l5›©6Ñ][Û€"4M—ÁDJyz_r»; j}Ä ¶9	2J€ë6fÊfµ*e)$Žr ¸&ŽÍ˜æÊ;�«ëê Ítk;Ô†¹*À?p�‘†ÿàÒE%ëØ  †‚æÀ¾âs¦©‡¥°wò{pŽˆ(aÚSˆœô€\s´7Ývya3€«lZ•��Ñ«;¼(žñ²R–Ù&£‡¨ÆŽ>AÞ-Ä(cÛ­¶Wå(œgåõb¾€M Ç\*Ëù0‚×7·é’á3ÈûV‘hiÆb² ë…ŒØv“¶áŒg&á°S £‘KæóÛAyþb§S¡Lª)kÈ²@:óÖ\N i3ØáJk…ô¨¯LB…£b�Ë]|3úU}¾Ž€©yø§#ô„‹$Q¯ÕÆ{afc­¨hW*ò&#~÷û 5U®©š•‹ƒÎ=ÑÈ3#Úˆv}¸[¶®‡l_ˆ@¢KŽFû°Ã>œ,ÿe"Nêöù.º�±�œîkW*ðÜeºTc¿NGÑ;×7¨8Ëå"œà_mlÐV­N¦óàù$Ù[ô.‚«³<¢YÎ´%€Ž®`ûbš‚®,WÔÂ\?Ä1
£§HPMÒ,.‘„Ø?)Ì¦Œ+*©…Í5×—ªl™œ$·ÉI|ãnÁªÂõ.9Ž*tf ½‹ÏNÆx_ÝPŠ­Ðs·£½aÄÌŸ�[GýHðì5�|)Cá4'ì=¯pä(cñ×V6iµ›¤u¤Y‰^€2bˆÊóàŒ}Î1@0å¼OevJœxDEi[�6•Çä�êà�ê- ˜ÒŒ[užIÊÀa/O(*Oä¨8a*¯sVÒ«	“Lâ"}€œQþ ;{ ±IÏt\áµixnZz|Ø6
?G„4m¸ÃdÜŠ&Eã!³¾Ñ¾˜ÃÑH(gêèŽ:^¤gjh4¨æly/5w*H¬l Ï»…‘wã$¨Â„x¾ð*5$Y.®7h­ãàýÔ¶Ù"2X3´ÄL% lQñN}‹î;¼‡ÊaÙn³‰�9˜ËšËOP>¡94@�•�v‚fWHWAU¿¶ºM+[u*BQ�€GwNü]ô“ö8
V’ëfƒRZXFZtZÊÜþ”,ï‰I7!�ÍÎ@Z¦„ñýâ¨˜Eè¬ÀEI›Ç±ÐØ‹‘P,xk[hÜD�›«˜þéC‡¨½u�Â­ÊN—$°t—šKæ2˜ÆHÑSM{Âû[˜¤C³”…yilW(‰}² òÊp®�.‰›ŽËX>ë'"Ú3'&É“šþ6FþÆÆm#rnÖ¦A[ï-€êðìîÊJwÆý2Wù4cÉ¹Ú.�,ÌÒÌ}
FÑ¤ ™W�ÂdÍÚƒ‘øéö7q”+^¨ÔÑ¥Ö£énÔØþÖnÙÏlõÛP©¦tÅ<1'Æ©7àçýŸ}”ö?ø 8¶Ÿþí_	¾ú\»É°! "8)ÂC39Ú�Ýy­NM8½NÜG=ü» ’“°Û€š	^züßÑõÀÕt“SÂvjÛjs}Iý>½ñfÈ½™i�rBSäà
yŽŽ=SåìÚ"42\–Fôëg²’~$YW°+•(<¾ãunIÜŒœ"=QÁ®^ð¯s!¥Éê€ÆaÒ(Õ@c‰góûÒ’P#˜”«À„žv\Ð •Y 	¤û €%EÇ”FzŒåQäcÝ¦¬ã€'•Ê#ŠÍRy
Q¨I#£•áØ€‰1® 
|š˜:Å´d}ïÆÚšÙÖ1Åæ àéí-B€óÓ€°mšH»tpq†2P–Ä‘²ØÃ‘z~ÃúbÄsò´µ£x­0”-¹�Q³AÆ¹‘Y¯v* ¥FF01˜k\ðJ¥SÕæÖk+\”+Ç–}†ÔÃMŽ3|:Êâ0Ü<»ÄSN×Öó'g©yýŠØ_®µáŽbÜjfa*AÛ-8Z –9$Ès‰.5@EOÍ”(Ê#+6=çš’½“OÉÅ(8h5Q¤ÞŽO=m;p´)'Cï"–ðà|g
)ŒþœÄAÛas_	0Ú6ë“Åä¡ž‹ëVy@¤Ø‡Hp�•˜([ªÃÈÍU#,Ám(Á$¶DÒT\„wŸÇ»Kde?°òïYÜyÝt7ÛEžsB'?3GÎ›0 &¸A'éÀ–ÏLee5K­Ëd]†æàX+°ãë—ÞBn¹B•¹iê@ø=@ÐüTNÖl^_§éü$][¹¨ÈíÊê´tpIÖDHEÚ�$‚–Žàk@à¥9=‘4yl[Ë$#“/Z^Àäpˆ3i¤?@¸·c|F¾5Æ"hig 
À{çðÙWìó‘àV�WZ+=à}nõT"ë—íšg*!¥˜@±�ìÿz¿Iõt¶=•d! kûœ„­žY(S³Ú¡Qó6¢X^O–çc»&õK{¹ò¨Qüœ >ÜÂÞr‘BT€•9Û‡b{¢W?åµÆ&<ÓQIG:Îóyq}“6ëòÈ˜›K½ß¦‡þï7#ü‘‘«Ãç‰¬Íè»©çÆo­�)¢aVM��˜•íûŸ¦ÿËAY27�èxAjHí¯I.¸Çõ¨HÆ3Í9˜�e¾¦ˆü¯Sà"F%†°Îò0Î	G!qÀE) QWˆö+ÅIÐi%ë�ytsW\sÜÙµÆ†ÿ¤eU™˜ 
.LÎã(¶]Íûž·�{†)K³!MqŽÿŠ¸F¿n÷O¡F]Çí�Ê0¦0  |›Y¾Â+!Ì÷…·aÖ&BlÐƒ¶[ šÛàm¤ê.êHr¾Za¦\ûÝ› ª´ÓoPµ[GÊ²Fµf•º.LZÁ£ì¾£ ØNG¦çZÈ®5Ú†Ö–uhÊ"VŽ,#ã JÍ‚îæ&NÑ ò�›"uÃ¨»ueÄæÊ>—NÏ¯ðóAu4�Ý÷0 NŽ9°Y"Y.ûy¬áï4ÝVBìñwJû(�à¦ÅmÜ¾Dž\Ì+)7+šÈ&dq„‡(´Ëi¿&S±Ñè¯¡ïô¹ì¤cz»á{iÓi
©IqÉÏ2¡5 «µJ�6vZT*dÍz!ÎX9Ž,ŸeÓ1UQž#³,@ð›\QlÃÕp‰ÊÀ:ìÚq7Cj°ÔN}'~ €¾Ÿ<“ˆºß¤›lñp¬°GgF|šêC”`¨	.Ø�$ðYºûnzií2æbOJx¡vÐ1%>(óý¼z~˜ÿ•·¯"�r5ÊòŠpûÕZCâ0 %|Ú?7(ªd&/WÚ„Ò6ë=ªcf5Ú}š-¤Í‚2]€d­1Ç-HÚfÄ½ß&¾Ã^¤Y·á§éEfšÆò±ðÅ¸7Y!Ãf¨µýÚ9ìwz·2ó,¤ôi²ïï^1?º�õÖQj°�mfß•÷,ÑæÛuiMÓÁí°*m&›]&õ8YS£r1OYŒJ˜xdÃ�_Æhîô@3lGJq»Þ§Rš}‹/Š,"õ™§_C Æ>ÚHÌ7°s1çƒCÇ¬[“ªû„é7„ÐÊ��¤·ÚÔŽÞuýFê‚Œl·¨ÄŸ}¡2F¯^íæ|MÈÍ†C/�]\¡Ý
àhä‡+¥?`ÓêöÞÛgðÌÔÚ¼÷$UÖ®JWDB>€Pd¬"IÏÃ¤ HØîp‹¦¾úì{)	~:ŸáÑÜE$mš9ñá	0œs 0x!_y�”XM]oô@Iôá@êA‘üSŽü¾+=¢¥Ð
~�)÷#õ?ä:LexWÊ/£È0´¤GR”4nŒtü/2«†@3ž=Þ˜òÓÇÎµ¶__ÁÓ¥‘#| "þH›2¹å,xÿ¥û ·ñSòYÈØ:¨åVA|h?ÊPÐT#ÆÝryeÛì4·%Ku©<?K×·PHJVÊo7Y×PÏUš=º^d¥ä¾Ÿ…yj!æà&¯¼X�×ËrVn‰æ’´FS²¦m´Þc×ió²-¶ýŽäŽ¥ @¦R8fr•#¦ Ô–pJ[…•ÉC§Ÿ{_�ëoáß¤Op3-ƒI¦Íþ»ŽÓêÊ[¸ÀÄ’ñ‘G×‘h1åìÈvµ%£%k1Ú{¡Y¦:	r®ÄBmûâÜ»!—­ô�¶lÒ¸¡ÍJ›6[2J€ JnRÚðúbž}Ü�K‡�@ÓÐ˜34‘ÄÏµ�eÆHÉÑóBÞxRÈ��„‚ãÈ®P–A�ÆßÚš`vÀÐSf·,nP@×IžIêÞÓD6M#‚;9bRŠí#†ßät™Z×‘ÓE¦	P³‹¨´%èò8|)–E0jÑtaBê�6yF@yU®®F¬Ð¾F”†YCî7™/\Ð´äÙÑ—eI)NÀHß"¸à&WŸàv6À0 ïå—_¦ð•K”›Ÿ§ý'î7¥ŠÒU7¶ãÊ´kàÎ»ÜÜ�ëÁ´á…Dè±Ó�»´s'Î "ùR8òOÏìÅ.Ÿ�1¾ü}ÂŸSdYÅÒd	Âq©„øèÞ½”ó¹uÔÒ†™Ø®î°í¤z04”ž»+¯n×©†)ÑãƒJ'dÅêÖm0³Æ	ÎCÏA¨lë¹ä�MWkó#¡LOº ³ag{›®^¹
Šc£{Ø!qlS¶üŽ¥Ímõ5ÿÅÃtlÄ_pJüp¸˜WŠÇä½›Êô¦íj2SGŸmo¿þU=â>îèààÏa:iqµÛ.˜«ÚÈ×NÂ¬L Ú­nT} Ä õ”„s®aÊs%Cö½ÂÉbÎÕ‚Žf\SžH@)uêÃÄìÔZ>S¾TiOÂGLO$eÁHAZR:Z¨ŽºÙ tQ�v~hß=÷š½k›}Ðè:aeÛ©#NB™XÓîKÃÔ¬É�ë•ÌÂƒgèV [=ou–îà6Æ…kSI½ºòm][Žwe4NÁ�™+!A¿E œ†öda`²§Mÿ8î)p+%­�™C›HûÔìA0€¡M£ÁqL„‹¿	8Ëƒûf)Ô��¸ñFh„Â‚â†LŽ2Ëª`–*½Â4-9B¯9.Ì8ÙxØÊ´µ\�ñMC­)Nš¨éÆ/£÷µ(ï«€4#¢ÊëÏáX�Ó'°ñÉsÒ¤†L¯–/–Àçàâ¸sÉÑÅ"ò!úÉËïÐf­'+f·¹4'Óêödu¹·\Hìt¡ŒfEÊWBi+x‰ÏŠPê=Ggèà4R£Ü¹<‘ŸHŠâ¥Í1·D#SVÏÕrÛ€Ä'Oý%Ò%Ì,2mÐbÊ°0O‰Ä¡ë]-,-òH1èÎ¤K‡Î¼Ÿ>°Ò£„Û.~ìÜ4wÄæ§Èjz3�¹®/#:*ùàt†;uéÉ¢^-ñÀN³-9^Žp¹d±4ÔÊÙül à×¸ß(xÕiÓ˜²ûï*ÒÁ2(p$U\/¹TÚá(czFj$Ùw5qÞÇO|Æ4Z"³h=²ír7’½*5þ�îí¶g�}oçýé6íK—Ž­´7/~žÿÛôq6‹¤F[Ü°+¸OœVÏ,ÎÇsÓžL:Ï ÚÍƒ_8}â mÀ¦¿½r�êŽ‚{ŽsÆP›Œ¯÷bª:Éý �.‚-˜º1®Lþ–g\)iðdV¿Û·tus‡Nžþ2ù…)SªL’&ä^t0ƒ‘G2Zp©ñ’.V@¤ŸI@†´ÿ‡6nM—��il¾ÆëÈ¾JuÓ4¨«�ïÃ¦•WTr•[v=ÐfY/cJh ^�Ó ÝÒ –JÂ’rsiÔ¤Mû{†´ž¬ðt¤»J*É÷ 5‘Àqä™S	i­íËz±„tÉR–¡5­õ‘ÈiCä…y:xâ!ŠØD)S'WB0c*�¯¤eŒ5¯6gh|0»¾•,<ó!’¹µÎ¹}7ù�dÔýò(*º�-¦¤Íè`K%0&€oòÓƒ Ùp—È@�ò¾®Ï*�‰u*i9cVa*¦Ä$³ÐùJ"A-üH&}¹Ÿ Wep)·®t$åèY­¥ƒ"/ÐîbF]®ô…ùy™YÛ‘ËÞ"K6ÌTm	;&ÎµéU¤ÔèÕ	UICY¯@�ß¸ÙÜ’86hW.>
>ƒ;§é#lçdKV‚È4Îã÷y-1WH0u=Sþ­x>ó4Í)N”s…FuˆÑØ‡ûÜVÒ—
h^kË…ºÒ[Ž×
H¢Ç ›DÂsP¡8¸J8’oàß¼ºÑ #ý!Ï{¶hv×¹“ù÷£ãêk-·Å2˜²ýÈÞ+�Ó£œï½±ÜšxcÐXãQåFçé#l†?7ëÍØæ†6ñ/½ã $ÎŠ°Yá…w‘4îŽ„³a;/£˜WJòbq±lRf·´áR©ÿ´¨ÄUf5.×�&q\6=r;-×,8—n*’Š¼-ÐÔÞÌA:öÈïÁ1dM[Ý¼sPr·Ä$™/›5…ÃÃ{“™d{¹OäJ·~sÐ[Yo3Ør3G.à"Ÿú°ýâž
7\†8=vhÎ€¼
ìmNš�šáWHÛÕ–¡<¸É›Š´˜WêA3ˆ,s øV&ü>Ó	¼ÇK�¸/h‚WÞ°cvŒY�¢+é~iªùúˆŒ[`ûZð5÷é�À’Nä/³Š £29 ®²î >sK?ö5‘ƒbS–ï‰ž‚ðoë¦>·<â-ÇNyë5¾'ä„Ý°¥W¼¶˜hX�j"_¾1›$ÀAˆk€P¯¯¯!GÚ¦¹rÞt
&CÖ	÷šî„Ò‚•ÛP24Äó$wJ—RÓÒØ§Ïäšôµ`ß!03ûÌå&®cf·¨Ê´÷É/<A¹¹¦#{LšÉÉŽmí?waa_"uµÐÑ¼¨ÜƒHw¿žH•ÎÐmn·5â-ªBß¤5»c[wi»®ÀÔÍ³ãK`Ô¹²˜W¢½(	tx^e§A;Õ
í¦LcÇ3?"»X�Mˆuà¢]î]aÉÁäsL_aÛ¹ÐÊÖ y¾/Â—›ò0i…´Ú-ª‚GÚ{ò³4uì!ÛWZG7‰XL>è÷ÍDeE}Ä^™ßi³ð?ÒM|>’x%ì2G†QRA¬¥t;EÛ»ÝPl¨búppgìHÒ�”JeY%¹ƒ¨˜í¿òMÉ +‚m»+-ŠM{É¸?ußvÙeM°©‘{0¬”µ¼JLRBV½sÒ„\*SÜÐ£°x˜Oý.ù™¼Yßi–<¸)Ì7í{xmi¡6Y@.(èõ»Oe
SIøDC¼±9Ò¡s
"_q¤ÚÀ0•\¸Úï+¹1;-f¾—#7÷�dµÙ—¬£Ü³g5ºÈZ�’hÁDâ`ÍmK¤�·ti1�Tš·r+cö¾'‹í”½ó¯¨çåPÉdÚX~¾E>g›Ïæ°…�Ptø3_ ¨˜ÿb8O{Si­èæÕ>¦G€Ô“’²ÝsU“ùTy~ù}Œíc)€7vÌª×yT«ÄŠr3"ü6ÓÈiZ›ÑÈCDîD2h^¤�éð‘Pß³o/R…ø^è§ÃkÇÂbzB3†-™6ÀSÅ´$}iÂÎ–ÀAó<¬äPZÂÎç%5ÿ0 -":úÈ?¥ìžÃ2ó¸à4rÔ ¥¦÷S€y/²-Ý˜b -~jfæöîÍ¶�­ ÞÒó§VºÎÔ©vW«Õì‘i&W<îÚÐŸl3³ Å•U(“å2òÁ“˜1=±«ÜH»Ï½‡x7ÙÍífùxÌù^JòÀIß¬Š”¸Ù¦Ùü:^ö*\N¦äÒjF,Ë4ì~r2%Šo¯B7Ck»6eëG;ðAÐûV³«NÍß¡ûÐßðV*•ªSsË_‹˜Æ†I´e!’”Ÿ�,ë|"Û‚ÂÊ&RÈýN–Áxv¤¨×ooþ¦ã°� V¯^‰¤Ó"¢_Ï³A’6yî”ÛCâ¥ÓÅŒêÂQ‚–X¾ÿ1¹¤çØFƒ· |s\?Uû½öS{�œøÚòòòÇ&(ãíŽ) Þæ—á"ý(ŒÍwÄ‚ë˜?·7ØÑqènà"�T?‘¦ò,ü ’,-˜!\À·4‘ÎæZ��c9æç9úegò�øFq˜1|2Nèp›zsó¸@JQÂ HLéÂÑS”˜Z„�Hšâ(V©3EâS„~°hç&¹àçR©Ä©åãœ¡;¼Ýqð%¬Ìï?ö$¨Ü§×[‰ì lÒ¦>´ô„¹÷×ÂÞ}RÃ#wRê‡²ú�• ÷…qŒ¿�Q.Œ¦c"jmUŽF{ÒvÞ($�G$öšiÊLÒÒÉß‘RôÍÍ�cÁk;d³wÓn8÷ðÑ‰òÜé’)%¼ÓÛ'¢€xÛ³|äLy~ÿ2œ—5K–º²‰1R8Á„Ì,î‘¼j¯cØN#Xmo_â˜¨Vœ±äZ¥&G{ÇeŠF;“0]Ñ£4í?õYÒPBµ²M×.¯ÐÚ{—©²¾Ja³)Y4^'Ì¿I4ˆªxëë…òÂrizï9ú·OTñVžßwfrvß2®ï)ø�•AŸMÇŒbÝÜÜivÿ’TI÷…&6í�ÃÈ´}dnØµ÷0q„ca­©lv“º’¤ˆkV%p½ÿì¡S´xüaj×[²JÒO�!Þ¾z•^ýåOè­‹ç‘Š\—âX8Úd(¾Õ{Ë¥™…�Œíogûµ( ÞÊ3ûÎÌ,Xî´›OÔ«ÛÏq–ÊÜvÐ‘á‰Ï<@}Ï^ÊÓùK\zŒM¶¹7†cûx’Ôõð#n°m¢dC7Ïˆ–ú"U=)ƒ—VäPf»S÷´ö GÕÕëtéå‹çÕíGK$SSÏ–î “ý°í À'·]ºø“%ùtè¯ô{�ÓÝíúÙ_ÿ9%Ú×hf2'6ŸG:—2‰Gy\$kŒ˜1!¢o�ÇmhðY~é^*ûjô¸ISv›ê�º¬?`Ÿá¹^³ö½nÕ9óèSOýÚ¾{û�*`t»xþìµ:§;kWO¿ù³¿=‘ˆj'ó™¤Fù|+î<á˜N¼œÇ�“àÏZ:ŠéƒË!ÐZúÌi›ïÓ†ÏúÍ*§2W@mœSaø|†œç–}â7&ôÑí·F»·ï~ít1W,žÕp´ÄfÁ~Ì†"Ï¼BÑ‰T‘…ÎÈ‡*h…jO%ªÙå{ªË<¶Òè9ïFÝöJ«V¿�
:~[¾{ûÿ.Ð“Ö—    IEND®B`‚PK     s‰U]Ãå°è       admin/images/icon-duplicator.pngnu „[µü¤        ‰PNG

   IHDR         k¬XT  APLTE   *þGþG*þG*******þG*þGþGþG**þGþG*þGþGþGþGþGþG**þGþGþG**þG*þG***þGþGþG*þGþG***þG*þG****þG*þGþGþGþGþG***þG*þGþGþGþG*þG*þG***þGþGþG*þGþG*þGþGþG*þGþG*þG*þG****þG*þGþG*Ê);   itRNS Í£­dñûì³",LÚøD(öü4Á õd_ð¹"ëÕ“IßÔÇB‘x[10˜mR
[äÑ~iÎÇ½�–Œº…NH*äÞÊžQ;96óççÂ²m&ª§ƒgs>WÙr‹xW¤›ˆ@«„vî{  IDATxÚìÛKkâP Åñƒ%K‰BÄø€*ºnÄ×B´R\Ô22J‹Ì¦Ìùþ_`˜ÎC¬&÷Þ4ñ^›üö-üO£¦ID&“Éd2™L&“Éd2™+©twíòÝd²iµ6“É]nö¶÷‘"‹gœ™�´Èñ¢UZØ3@©0°d�4h2ÐiP#ÓýHý *#:i Í@S¤Á]Ú1Ð=R _` /'ÃE†Øâë2D_ßŠ!¾ãËóÆúúo;†zÅ­rçõ¹1�¡Æ¸M•r�d5'œ`O�nQé‰x„²-
¬pƒæüÏ
_`Êw_ì“°Ny.‚=RÌq!§woÈ´=O,ƒz%Œ eáÑ2â£ÃžÖ¸¬dQÊ3$”ª$�"´ò\—t)kåCdíð�ö¼d\ÄGn™ò¬ºD¿Ô`òhG�¡E%ùB”þ×ƒFs{˜¾öÞG”öÏ�Ü°þ�ª>´)Qà©5·<ª»ƒ¨ÿhÙ‡&®Åø‰û‹Ž)'�-]¯¿iÌý”!�´ö“Mh`{LÆ�úÅ4èñ�	ý¬öq}Eþ¡ýøÿÍ‡„›8Dý¶G^·ÿÕ°iCcúùìüUû»‚ŸÓ â™Ñ?�.Û‚	ýy¨1õ£0j¿ãB£Îuúë6‡Vãkô£¹�¹×è7únêNk?kÐÍ¶tö/¡ß�ýüý¶û} •`‡$Í;>5K®Çp{˜ Æ@»R×úLÿm<MQ}ú½½È¿Œºr®~„N>Ûoæ¿AR ðëçFè…€vÄ×¿XF(
Xªý§«ÿluMtž¶O¨ŸlÀ3éâ�ü§úÍ½pÌPTìŸQRèQ8 î“éç0•ÀÿLÿì±ÍßŒ¹-|ªâH€vôþ€¶Y·„Nä(3€mÉöçÎú/¾ÌyHx‘|ì·&Ùÿýâ¯X{Ihà1DGùOôãÑØ/ÙŒ¦‰£—(ýsüÀÌ¯ÜÛcJ€{õþ&$àº¸+*àGûû‹à÷>´hzT {Ë™"ÄÏ³~É¸ìâúeRm T|„¸îÇ#6Ý®j=s¨2€Ø„'œµâ7Mž¦¯>ÖèÖß}›¶(¥S?æ”Òzž¿Õëk$bûLÁ *ÇÿN¼RI«Žø­T¶Ž©{*zCÜÜÕ•¢õ[k¨�ü]ã`0þÐ¿ÀG5ª*//±ì‘°5j?œ¤°W<Q] –rˆW5Ò êýÖñ0¹�>ö/ˆi€‘	¬!0	¾v}€Ø"\E²*óÀñýyžxrc|0½`Â ¥þ¥ë©ÆPyà‰–‹TpÖßGª8ë UTògý†P`�øçÇ¿éxTWpqYÃã‰ñ ávúXR�7�ëß@¤­ÿ< OuV_²?‰,Äku ññ�DX"^›ˆˆûídÈ#^åHˆûŸ�dX!^Åx(Ygý	Ð´¿Î("õã•m³ÊC„bêÇŒª:ˆ]%GE6Nôªûñ�Š†HB£{8tÞÞÚ÷yJÉ‡÷—!Ma{‡Õ|î	{i[ŠœÿSÄ;€ó‹»³iQÂp!ä(IÀ!‰
qA<¬âErü:ˆë°ìÁE¼ÔÿÿËÀÌÓÕm:vež ¼ÕÝÕ±ÞJ‡ýñx=éÅð’ç€€êÛbVàzð`z©I B4ÐßYŒÐˆÁï\ îÔå¾l5„ú�™ ê¿°ó=È´àÊY“�ÀÆ\?º—ÚÛ ÷îˆø`®?ÿœ”b!ŽŠÊ‡’Ù�ó?ÿL�
\ÿÌ%‰$¬Ìô!P wåxaÞ$NÌ!µ8Ûo® ÉEŒ`Jc/>tL.)�"s€TêŸÅ?Øªö�¦‰þ¨ð>©ÐÈû¥›ŽÁu!•\=Ü­L?½jÌ%×Í=¡.Sý8çê2Fàž¸e]?ÑgðÜão-è�Ô¯ûSÉ�™ü�ýñ'Îò�yUé'£œ™ä LPƒ¿÷è§­°)ÙE%¬J?åÁ®03ÑkÎ%õGÈ°ÛÉ,ü"­jü	ÁwAêŸXÌªœ~éfbd­è—{œ¢š£5ýr|åMnG³ü'à+°!³êõ‹vÔcü-Î™êØ?@?þr¸ŒèG$àˆUxëjõMGx*¡?B›4�¬‚ÄS®L{ã/ÕWO9ˆÛI9ýî‹¥Y’– ýØzü"%éwa¬wbôÛÏÂ<¶�Å99¶>þ›õf³+è¯ç�è Iÿ0�£×à€80=—GHÔ<ì„³ÌÂø¨ Ìzé¿øÖõoæé~—¦Sµ+•ê÷ÝÞçOÆáa Òa|©[þ”ìÑ�ösW¬^oÏ‘\² ÷YŸ98š±�õà¶1¸e¡÷�Æ74ƒ:Ã-Âvn™¸·�H¿’p‚Û¼ms®CîY�~%}ûúÄC$þHÐpÑt-–+yÊWmb�Á)-æ6L Æ­ïý/�š££k<ýr«ï¨Á�ŸqÑëü÷jH K;ƒÌY–ð“	ëÑ>«
¨Ï€ôŠU²ÃBê›Ûÿ³wÿ:ÁPÀ›4ßø±,‹™	ƒAÂ*±yÿ'`ƒ?nÝ[ç÷ªÃéM›cVX.¢A�Ìž‡9ßÿ¦Ý¥ qéÎ�‹hÐ#”0¿öFg?1pZ¢·¯d\%NO9?X€R¹®º^€Y¹îf6*ò”oæ/ G–Tv•ßŸò[Ð�î�„Á[püQ·Í/8þû¾]B      à´´žòbðÔW­ä—M‹â@†Kù0!oñ`I�DD<Å�Ë êAð ˆ¸Ê@ýÿ°nºcUÖ¬ãFgwaŸ[f¤­<ýZ]½ÔðþOì5
zð/bEF;„×1ŠŠÔ›XÒnìpqa_‚‚*µÖV1žÞóÈL\½µÂ\H°$‡†¼ã…¾„ÞÐ=Eðs¨…Ê%–Œ ^X9ð%(XGüTÞ¼Ò¤ÈRïÐ�/ôÿ¨ |AsZU–0p‚†8ê_€Zø‚¡»M? ).þøöÏªG fÿˆ WFˆ/ÐM³,ÝjHŒ œ<(ÈÃâ`Ï�pp,ÁÀnb÷hNêÆÁ,uÝlL£�mãx· ËÄ
ŒÌ�¡Š«áG�/Abå³,N“o¤x"r ÐÞÅ�ÇpÃVF\€o(IàÂ%@OômHä¨7ÝÔ
ˆP²¢é+óPÒÞìL.¢·Á@‰G¬âA�©kåWôäšD8‹ŠO@ß¦?´	Q2#	Ø£6¬oD5Ú(€äÛ«AƒÅKÔ D—Ê‰}±à9ƒ"YTêt±} -ÐªJehjÓKzd¨‹l�³¶>�1m¯K¤œ-aªø›ÊÄí&"Z�X²{@@+tÃO$HˆB;XÁŸþ2–œ°ï
�“¦Â.5óŽ€zôÏt°Êû½µT)]ªŠo S¬!’8í¦`@µ=,€X|"`ŽÄ
ÓÛÒI€>JrÃh�X&<Ý§Õ7ð†’ócÎù2ñèé® zBO1ÂÎð0%þ¸³t¹ .Ì)»k 66@°¦Š¸€A¼Q”Æ	°ú'€L®Ö¼»¨NúÉñ†1	àW)q·^ $†bmG&` Ñ@ u™ìÓ&HÇ�Q–¢†wè(ù:4YAüKT®jAÁ[È¯ËXðœ€˜öör8£B£»Z”h['Dwd×I°CA�èÐT m¥ÄxD@Û‡Pƒ9€€"Ÿ‚À¸# ½N;‚äV@ÜTÀDt€7v$ãÊg#&À�GvÊÿ­FB ¿_úL¢@VN»:¬PØ<¢`
‚¬BËœ›
€ÎŒ³
«åHßN¨l–Ž•-j<Ñ{

m†t
ÕUäUí.	xo(@õ}¿BbÍ›®ç 8W9!€Û°Òº{ì2€Ch¨Ûžaåz#öÈ££c½€Ó&ÖèZPáÃ¥„šO
 x¶míª#M×”e. ûÛØ§§„ÕŒÞ\{g³ÛÜ;ÚÔbü4u{ê˜ßüxÛÇª �M>žNc�v4•ëC×z­ ŠhŠ5$$€`gYŒŒyáƒ:ýùfŽwºX�~S�K¬#ƒ×
 ÃÄYáÞäŽ€¡¸—-ØñeéuiŽ˜Ý«!¯,Fv9{xµ jQÞ°&`Jé§<­lšÕåO�ß¾å	9þš€=š�«Î«¾·_«Â €ÿ@1ÚŠÞôà(�a–0•�¬·"âAðP‚ƒ½ÿ,ZjbÆcŒQÌwRL¢ùI2`¶Sæ ý€@ÃBùhwÛÜ	ÁâMª¶˜AI€0º –ëœÕ¯Ýâ$_»ïm ³ÌÅ€1ˆ FˆæËl®¸1DÄúÉ…) ÷¤þP¸Ì¡bA™<QQØ7y@Ze÷ÐáGŽ!r¯+6TqéQ>�š5 À€ä@ƒz‰ƒ™ûœñ‚ýyHÁUï¿¥¤�0©J^…ÏÝÆL|L¢6x…C0’“Ñ[�+¿ù³‡æt+ŒÝcHÇ¹¿ï^m\U9™„-þ‚ÃâÚê!±'àz‹?T°jkc–º•ë@â¸Uì§�øqmãv\³²~¬�¡°N: ÀÊ�aFf–/X©Î¼-hš¦iš¦i÷á\OvCÞ¡NÔ    IEND®B`‚PK     s‰U]äŽž�¼  ¼    admin/images/spinner.svgnu „[µü¤        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 80 80">
    <path d="M40 0C17.9 0 0 17.9 0 40s17.9 40 40 40 40-17.9 40-40S62.1 0 40 0zm0 72C22.3 72 8 57.7 8 40S22.3 8 40 8s32 14.3 32 32-14.3 32-32 32z"
          opacity=".15"/>
    <path fill="#3568B7"
          d="M75.8 47.4h-.4c-2.2-.2-3.8-2.2-3.6-4.4.1-1 .1-2 .1-3C72 22.4 57.6 8 40 8c-2.2 0-4-1.8-4-4s1.8-4 4-4c22.1 0 40 17.9 40 40 0 1.3-.1 2.5-.2 3.8-.2 2.1-1.9 3.6-4 3.6z"/>
</svg>
PK     s‰U]€ŒP±)%  )%    admin/images/wpcode-logo.pngnu „[µü¤        ‰PNG

   IHDR     „   Áhõ   	pHYs  ,K  ,K¥=–©   sRGB ®Îé   gAMA  ±�üa  $¾IDATxí�Ml\×y†¿séÆ’RÀC¹Ë-j›Ê"ãe
˜"YÆ5½©—¢Š¸h»!…dÓ ¨H h6)D.Zu
Ž–éÆœei YŠZÄ”Ý…®‘.ki¼¨$7æ=ý¾sg(Šâœ{Î™û7wÞ (i.‡÷oîyÏ÷óEY¬ê½@«Ñiêðÿ´	Lš¤(æ¿ð×ý�v©§   LˆûÊªn³pØà-®h© Øe!±ÉB"&    �³Ä{z�-M$¦„®Ñ¨]   x^@ü•¾Áâa�@óQ,ÿ]m   àÉ³âaö€ˆ   ÀSñ#}Ý&`öÐ´L¿P}   I„LþÝ'0«Äôz   \‰ÌŸ/ ò0ã´éH]  pG!ú †è}5O   €‹‡.@Ô¢é.   D¤i… "ˆI   nDœÄx… R«r    )¢Ä F@L  p"" žër   N@@    À    x    o      à    ¼�€    €7    ð    Þ@@    À    xóÍ ­D+¢Î·Óüž¨ÿQü?   € / Ö¾O´ñV*"N³ñ!Ñæ‡    O�Â¸ÎÂaëÝ³Åƒ ÂâÆ»    O�è¾š
„,Ö9B±÷)Ñî05´^ï¶Í_žÐ`÷  %ÓXqýÏÝ·]ûD•ð`Ø�"}E“^!M-R4 ­´Nnî}Ü£
hµ»­èB²¦µZ%ÒíôÕ�"ÝKG7«´Í>�O6´¢+¤“téõóDóKr®¶CÏ•¼/�?ZU-ñ?;Tƒá_^}7!“ž;`tÐ$‚nNQçˆŽÚ©6)õ’ÖÔ¾Ü>±i<ü>àóðùè<îõûƒÜJé”~žb~Žl6ñ+z�oó†Ñ~™èþÏ¼~„æ×ùýˆf�˜ÞW—¨DZ¯/^WŠ6Æo¡võcuµÌA¦u¹ÛQZðT8<?¢e~ ÄTÖ>¥¤Û–}"9�>Ùß$¿÷íª(ùÀ·Ê`±HÉMHwË<§“`"@êhÅˆ.¥»ùœ?Õ×ZïQí>écJ3¥˜Ïj”Ü9}OðH»:¸·“D#„¤.®;¤/Nré§èÊ ’D¶x¡ú÷–©\ê!±~½Q†°ñØ'~fékƒÃ�·È�T(ñƒ®F(¥zIbfk1ÕŒQ©.Ÿé.‹T½IOXT!E5UpDðö˜ûcððpžD#‹(¯|�¼Aô¡\ÒAÑE<ºÛzýÍU*�H%.5ÓæÁd�JÀcŸxF ®›”„Ë¶&ÊR/xÐ\U*¹ñòÒÎq�GÅÈ~\\Xì©óÉCžnm” þ|¨þ�w.^^¼^—sœh�ùÿVÓ®cã„O¶ÿÄëGŒ/D¹¤ƒ¢;JEW¨8çü{x0Y£Ð¤–<6oÑ¹ì:†ÖÂ›+®¢¤
†BâvYÂñ,Dˆ±p¸!‚Æç¾È™¶ˆ–ªÏ gÑ8±úgäÍöGJ†Èßõú‰B8Î¬C‘z ò£ðEºO¾ýQ;{	Ã×3—8•LkaqM]0Â¡”(“æ\Ì/,ÞG4Ô…F	)ž¼  Ä•”�òçŽV¨HTâÿþªà}¢¤KEPiÑ¤2/KD˜¨§OÑÖÄçHº‰HÅò¥M¡¨:0ÿV4IM‰äG�ê"lÀÓ¨6ÎîkäMï7(ž¬ˆ˜Æç
Ç`Ú{T<hø¤
†?½M2ØÏ:—L¼Æ‡h®qüCA¾]&>ŒŠU9}Ò&OXô#Òw9Õvp”P?ËŸÃDÓ$Õ¤Ž8Ý½­üê*ZŠÔ>/y> È¢QâúÉ››¿!PÒ®¦u}~†î2Û¿J�†…“ Ý‘Á ˆJùV‡™¯¼#qS[ ED´^_Œ‹h…óét9ÞsJÝ<zDÞ�ÃíûÃ¯­¡ Xá}¸îºFT}g±õàwû×€
hL
#¤x2þé‹êˆúäOKZ©º†SÑb_uÉ­UŸ‹Î­¼ka|ÅŸãžñ9Ü[þâ“~/ñ(ï1¸×ï=<Ü»Äï}5M}8ìKBë,"n ÐR<‰èCuW¶�\°öT]ˆTx­AR;áò¾¤ÞW5Ê¨æZÑ�Û€é%´º›ˆí]-ÒUÐWHQA¡) �HaÈbY!Å“½ßºo+Ë�¿ÝI£Òòyë ­Ÿ ápö¦"¿VÈ¢jÒVÉ0O5þYÏŽç÷õÝ§A‘›t$Ì©èK
àHµXu>WœïŸ(b#-ž<ðßÌãXy_v]Äß§Ûîí•Z¸(B‚�³¯"ºÁm“’Îxy¡{÷‹Ãþ.P�+�#I]¸Ov¾MôÁß<Ÿ‘ß)n—ïüÑÁAG»¤O/…ükZ*i‘¤MÁ¤-¦Uïð{T$:ºÅTL"³~ñ™Ä[aõéÓˆ*)m%Ó‰¾ö°¢5Y†Žœïð¾npúÆeH(Ùáo 4‘ÂXû>yã’¾�¶ÐÛ?_[a^ÿ	‹Œoá¤1ò¯9x!‡´HÞ-¦!û¤õT2(>8Ü_•t€k®ÿ4">&©…0k€d9¡Šx IYT#N2¸·¿ÁQ†¬Ž‹Æ9‚z3õB"òåƒOº¤D<HzÄ†¼Æà oVÝ$Oò®9¦E&$ònµ¶Os}š"$¡•z'Ð¡5‰hSJïdm£¿Ž®Ö©£ÅQD PS/ Ö¢ýO³·Yé¸wu@D„£)¹Ežðì3‡ÿ™wìÒ„[LsÄwŸTZV²<‰ÐúHŠa¢Í¤.2ê8:±9ø¬~õFDm�y9žÆ{ L/S/ –^%o6•½�¯)DD /ÎõÈŸv^¡Ú ûê±oUå>…±º0øTVõo?UÊ_ø¥]jÕ¶�´i>ødƒjÊàpýŒó§)! Êcª„´núz?¸O¶Î“7þ˜4FÀà‘›…tžé�*÷IMWúâ4�¨í_‘\Éˆ>Ä|2kŸ&�åí5EïHJ#RÑU³´<¢ d¦Z@\)ÐûAVè"Âq¥$oòY*Ä¾zü{E¹¤VöiúÝ'Ã"QDüìÐ³£zsZâÁaWRy™YàËÔ
é€èz¦/Ä¿a×ñ1* ˆ_ü])óø‡)‡;:ÒSš€�}j‚ûä0“/É‘ó¹âs»š}¨CÇ ÓÂÔ
ˆ�·È""\�TÇ$6×îºR¶r¨_èR¾äÑbÚ%oã>“/Ê}ÅL¥´ÕwB¢ pfjDHñ¤¯uõÕ�ÉVê„ˆpG\)É“IÛ9'±¯¶¼çDû¤ü¾P÷É2áüsòE»-ŸFv¬E—ˆ> àÉT:Qú´XŽY8K~fùŸífRYŒDÄòÏáXi%À•rRéIì«-ï9™­µâÔŒÇ.î>Ùº¶›¾Y‘œì>B!g}®ð*»ýÌG{±`Î¡nf*DÈÂY›R%!®”ÿÇ7¶vIOb!=¹}uû$)�øÕPL‰û¤J‘ß±{ Ñ&mß`›ÀXäžž;O|å<ªWHêt”n¥Ÿ×äx»ù…ÅáßL=K¬HßM´>“3ˆ‹b‘çG%K,†»|m:cŸ%òA8Ï×êò¢1òK¯Q´Éœ:!Å“o®}
DDñHÝüÂÒ�·�RêFØ#_ŒU´¢BÝ'
I©Lwûæ³¨—¼#BJ;	µŒhÓôw±Dk¡»ÂÌšÜ›Oe‚~æÛÙ˜bÕ6oÒUJ>g	Éç[ëd»bB¢&s"�tžD'�Ú,dÅI’ìÕM‰°‹.$k²Ð�m®‰vû™cÕÝô%k,þb¾Vý$QÎ�HSWákð$ˆmõ$µÂHD &¢8Â¼ ÂÜ=[.c¿"ÏÀ}RÊóç¦Ó}r,*`•N�}]†õí±o�ôÅs´×x†úPQòAN­)ºÃ÷øV÷/^^Ú){ÝleÙs2÷e�ìh³°¸ÈòýqVôs4Èj½:ÚwþùÛ9Ð1:u!¹/+±úEnÇÒN�ÓýúL�€¸þCòÆ·xràn!íþP4ŒÇš!ûÔêt[¾êivŸ<�I)=çâÌMTV«g‚:’!­ËÝŽ�3ØÊiP:“á@Åñ›«T02^\Xì©óÉC3Ø:,ßnGËŒýöPH´©dÌBpçõ�…Ãs_ŸË]ëggª„ø>”Q<™õ~ÅèJéÝÎé={Pê–ç`íokýUÀê›Sî>ù¡+¢F‘!­ì"šCú‚Ò¨GnçqÈDlÅw.~gñ„9¦(¹3ÉÒñã1Bâ¾D¨$Ìñ(s�ÚT<m¥“;­×Çž»©«:Oú Q!®”QäY;àÛ*©é€ôœ_±¢§­uDÊ7jÑ¨¼=§”¼:p†\Îç¯­õécEGÆ¡ZçÙü�IMØN’†ø—vÊ8&‰˜ý/8q|�J†??½q"ij„O†XW÷~K… Qþ®”œbðªðs±LëL­�G„¯­uZäç±}ƒòö.«cž�kZIŠ3Ç½D20)	í;ÀŸ¾Wûšôµt-Žè’~Í?<ÜWòeþ­#³NÎnº»‹ê‡åoSN¨sº/ax*©ïà�Ž"è$!×ˆÏÿ¶Y'E®ÇÉ¯á*Ú#Ú+"é¬HÄÔta„Oº.œ
º3òGZ‰Òö¢bÚ9ÓYBâ\¬w2""fWÊ]9ýdÇyŸ‚ZJ›á>™†ÍŒ§ðH+µÇ¾‡&óªÑzµ»Âß†Ã¦1‹†mz4g]wcXÔÿi¢v¦½P%«ÙiÝ‘tÆƒßí_£	¸¸°xƒ÷ÕÝ�e8àR¢ïÎEQ|”œpD•ÖbÍÏ¥–Tvj§Í"èÊ™¼¯Ñ�ôÚ¤^üþÚe‰û-¾–{'·§F@TY<i""üê!ç�Q�Kš¡K^œŒˆhþ»rÝ¯‘­u?sKÿ–ÒF¸O¦zZ§PœÓJãŒQˆ}vCH—6×™õ2“MG¡ÆCÃ{µÏ¿¯Ÿ5PI:ãå…îÞ‡}¿”á¤®÷”Zm3?K#!Ô&Óòh;†|ëGœ®‘ „¶ea5òdxM{òÕzíÍu)Ûïjñ¾ìð÷ãeã§"…Z<Ù+A@Œ~Ò9"®”žDŽ
žöÕÏÔ/ú-ºÚZû§;¦×}Rf<â-0ÿúÒÁDâ�S.-¬iwËxMAƒbˆÌ¬Ö>ëäÜÕ‡ûëy¸òõêqêm9+­‘P²’
H[§hV,¡üÁáÞ²�¦2{÷.éD_£�Åß<q¸Fuàc	§|úñ–VÑöT-G{OtÎLE"¤x²ÿ)•J^‘ˆ;ÿÀÇÛ+'zR[\)y0’Ax={;wûêÓõÐìªï:Ëp·µöœµTå>©’·_¾Üý’<9J’vÄ¡`s>T’¶kNèáÅp7çÈ'Y¿KÇ4ƒÈ`Ë) ¬ÅÅ®æ½>ˆÂü»—y ·uˆ9’|–7ÈluÆ3ÃD«w&D2ØòqìfÇDHê'ã…P~^0RPÜºÌ×‡’;ã¶QÊD)zò÷ÚG dPqžÜü•N‘¡·š®÷1«˜vNß…!í¬*è´ÖÀãÃ~Æ@í×%’ÖfØ¶3¤©¦}S*ÀÅ|Ç÷‹²×‡†=Ýœ*â}¾jxŽ(#§Î×l³¨ÅÅDD˜H„e¦ËB`Í'
‘
"{�‹‡]uÈ!š"˜ãxQ½á^ÌëGš*�É‰ˆ�"KË&Ç­óµ2�Šˆðáà÷ÅOÚÈKDì¬Îv:#È$)«uÒÛkà¬�Ú³Kä\Æ>y¯¾Ù0÷É øÁy•rÃÁˆªa8¶ñƒO&‰Û0ƒ/çí-›Œ¢NDÙE†1Gr¼oRd²Ã"b9ïtFÖê±©À+ð9p.Ú²“6÷OíDHëæöGT)yÕDìü%Í.!®”µ^µcrì&gš£­µ_Ki °jRÐ×”åË«#Yµ½ÊQ6Ûì3?d�²F!Ü[›³Ú Íl=§ÈÃiŒˆÐùŠˆAT¼À“c¢d¬À¹íÖZ@ˆ÷ƒPú²[H@É�<D„D Bê?š@˜+eÚ:iy½KŽ(=¾P‘gNÎƒ¸ÍÖz˜rñKV5É}Ò­îJA�‰àÙ«MHÇE¥.Nc)kB
ö²Í™Òpºu­“^ÑQ»aZ&·‡M•&ðd7^à™4F­ÄÆ[ä�t^Q-ÈCD\™Q!¸RŽZ'ŸÁ³Ö ±v‚x¥1l¶Ö]òc–W�ŒõÕ%0Y¢µ´Ái„	•[pqtÍLªRŽI"cœšxYøATªÀ³Ö¢©£N­ÄR@ô¡nÝ“Š‰ÀøÖ€4WÊ±­“žµÖ0ù9'¿‰¿ûì‡ òÜ§Y]5Ò8>ŽÞ(*=Sd.,Vn„+;Ò˜-•¥Û‰ô[¥ÖéAä‚å•ý°¥L%%\[!¡ûªÎÊ‹IEDû"Í$þõÇíœÏák_m{Õ7½2¶öBùÕ?4Å}ÒSó�cåüóµi¦°ÈŽÞyc‹4òõÏn…¶-_rËszþ&«…PÖk¤Ê­�úÚ&(u}#!¡ûÍ©¶ˆˆxç_)ˆÙ�@¤®”äGût„o­�K¡¢g;gçŒ}òmil„û¤¦Ç=‡š‡˜À1¶Ùº­î§X¬‘Æ¶­®){ø©¬zeì+�œmóä›ÖÏO«–"´x²ŽÑ‡"z¹7Í ®”tþhõÔÿtÉ§BE¿:ˆçk3üV�f÷IOb10zx¸©Á¤Ê_}²bÚã^Hª2Õ:—± Ù‹—ÇœåúUQ™„¡sê¸ÉÎ ì4ž‰¶Z¢Àµ!�·ªó~ÈBÄCÿÇ‹û61ÓëcÈÃÅ3�Á¢ã™Y–§}µS¡¢ozåtm†R~«oVæ>Y|%U!‡T8äX$v.ãi5cÂb¤¦ç*)Ð¦ã±$–ºk½À.”ö¿±¤*Š¦i5ö3TK+ë+ß#oÊZ÷Â—IÅƒ¤>êÒURCûè¯Ì´uò8Þãe_íQ¤$íœJe­0x¼Ç¢f¸"h—¼˜ööÍ§„æ™a¤õçfÆËÑž";KÒûgÑ²…z…f„á}gÛ$¦ÊÐã…ž-J$pŒUùT.”6g=ÖÚ×N@ˆódHñd¼N3©xÊ^Ó£ŽHM‚"¯>Ó£,Qï¥²½Š”$�‘8	ˆg–7³&EîÔÃ}’#—¦ÓSÄË˜™·Òó4;´m/V|m%Zpv4Á%j�{!™ÎuNÚã_Ò]Ãn3¡\ÿ+k—ÂY¢ŽƒlâA¨bM�ÚàJEÃ¾¯}µO‘’o;çÐÖ:"µâóc³î>™ñ¸œªüAáhËª¨Qh�Ê¯´ZµR<Ô}Q³A67ñða}ë:Ê$Ä•rdƒë·T6Ïô=Š”Òý"�ØWjk�e»ûünÍ°ûdhN—X^n‡,Ý@bª)‰V/�{M©¦¥ <¢¥5 V¢ûy#�udó²žÇF�ÛRËÆß•r´¦{íD€ó¥Ww„Ôfx¯:Ûî“ù tx•?˜bfo¡´2“®Z	ˆë?$oêä<™—x�cZÿ%�“ù·sFôÏŸè“/~m¦­èûBFÏ½ýŒºOæLl}Uû®Ò
 àgr¯6E”âûR<Y—î‹<ÅÃj�À)ÿÕ?˜_XŠ}fïQX%w‚Œšägæ//\M¡Xµ¯‘³ç>™;/r
è+[÷�)ÐÝ"0…è/Ç¿ÖD—Ñ|—A+êS¢n>ë÷k# B¼êR<	ñPšô-å= »¾÷FM©ƒŸG­…3³æ>YÃVàxœøô]R½¡Ô¶$RãE‚_*Ÿ†¦ÚÅ–VÛøááÞ%ªµHa„Onÿš*â¡DB\)�ß;Ü¨‰…MŸ
`†Ü''£¾¥å»Zë”[^«T@ØŠ!tSŒ¨�È«…€)ž<ø}õ�"|îü}>Ý„¸R:3A§ƒž+FØ4Ù}²tìõ-‘çÊ¨MÄ²ì|µ(«É”åy Ú4m¨#Ûóâ,Ö¾OÞH—B•ˆx¸ýcÿº�Óˆx@·…éúôÌÊ'ôÌÏc¾³Aûfndxvp´çJÓÛ93ïñ¨ÂÊ¶¢¦µ›Âf5…-žvâuy•ˆÎ·Ó/_ª\8â¡:tiŒ<V!”úÊ•z¸O6/‘Vt!Y§Æ¸æD�˜¤lEÈ¶†žûšŠt%ÇÃ”ñÇò$#‚šµv‹¢jŽi•ˆõ€èƒt^Tåý ñP1¾î�$yˆ’œ…Ü'óG“Ú¶¾®i­ù¦Rúî¸W"¥ªœždŠO,fmG–×tEþ1”eT—¹°XÍ:K*KËvWåý ñP=!®”Yo™K§CÞõpŸÌŸ©Ÿq�…Ð–BJ­ªêF±.,[ÝoÚCËù§Fqcq|>Œy~ÎºÅS©€�ÖÍï‡*Òõ!Ä1r<ê€r ­ÏÈç½î“… ×H'”…¨k1á	Z—»�ù…¥Ûó—ò÷;­×ß\uúA[¤LS§ŠŒmi{<wm?›i'¯ÒõgJã[„Àíù`ïê9ìÖƒJÄ´´nB<ÔŒ WÊqh�äfÔ”WÚî“r.ÚÊŠB(¥? #GQrÛØ´›p¹îð ¼ÓZx3;zr.cí–óG«T"©X³ÙÍg·HÛÚ�ËŸ±�_5˜ÅiL.dRÖ)JV™€�A¹�¾Ø½K¥ñP?Ä•2·®‡h.¿™~níœpŸ,
—(„È¿³èiƒ^F<(}û¬<»"u=kvš•,{À�Tb7†sùLYë�Ê�±ó5°œ¿Ä)rjRª‘[§Z�ÊÄÆ[äÍ­ƒr‹'!êKN]¹¦
rjç„ûdÑH"ã:±ÈX¿xyñ:Õ4‰7ÈX;÷G2{¤ŒÜ’LµDiûÒö±S'RFýQY3öô¼Y¬ö=&+,l“ˆÚÔêT& BŠ'wKÎ
ïþ-ÄCmÉ¡ë¡ˆTÁ¤Â†÷)·ô8…ÐêjÖvüß¨‹ˆ0‘‡sÎWú»ÖŸ8ê½8×³¸á()ú’\±¸ZëMr Ë¦¬ºi[4Åo²’ñ|3Çt¹[M×Ì	*¡Å“e.œ%û˜‡Ã$ÄCAäÑõ Tþ­’›$ÇQ0‰òpî|;k;óKTYX)…I[dˆÅÇ“Õ&(¤Ê6Ã->…“¦bhÃ¾•{'’ÖUÿëøüíP�ðñ¬òNŒ�¦¸Š¡iÒî[¢tRÊ})‘/Òò9�ï'g%b%@7•½pÖÊ„Úâ¡Xrq¥|L}Ê›I…Í“‚l±Ás÷×ÝZ‚õŠRÉmçN‡‘6w({Úø�9Gì®Iá´^_¼Bp\ÇaûýZõ|ŒÔ²\Ý-*š4<žŒ÷öoËæs�%:Úé}Yœˆ�´Œ:¯ïˆ�–Ï�|7¿sXƒQº€�º‚·çÍ_Q©¼t�‚�x(‡É\)Uße¶æËdíœÅì�~Q½ãX·Ò–N‡ùË‹wÊ¨�ßÁ3¾ûéƒ;“˜?Ëä�ÎüÞÖŠ#=§ÎžŠ« Šù·{ÍØ…¬·ˆ””ËñðyÜq•M‹)3Sš©ˆÈ9�a¢‹7ä½Ï8¶ö¨[§t}ø¬|çÉ/Q%2�+e‘N�¡ï÷ÉòÖC,;¿jêÈCu~añ¾D$òœýÉC[lñuóà>#‚lÏŠI©’ÎÈ£ê¿µ°¸¦¢ìhŠ&½<àfD”ò­W»+Ç'�ìÑúR«“yo¶%Je®Ó„÷ã(]¡.$÷9Å7^<êÈ¤ÓJ!gUá<)«}úñP.¹Réôøuà{k¤/ª ��{ˆˆ‘à�þ¾:ñlmëå…îŠÏLÐÞ~(n«óÉC°¥Áñ-ÂÅÅ“’ŒIgð¾Ý	LÃhÊmE´e]ó‚†©‹Ã�Ã\)ŽÍH!¦u-© ¤ Ž�g.ù ûx¢«“D�¯‘CZÔ\'ž//íøF$žõÒYÝ<i­–¢÷xó’ß‡Û?ñúp$àÒOÓïe"©–û?sß¾!â!¦÷Õ%š"8OË99ò�QÄ÷=NqÌþ>Cáût>o=>o^9n~^jò_²¨SôU²%+sÒÄ˜4–<ôêÔÃ_§k4´#g£Õ]i�Ìãz´^{s]EÊ£hRõÅvNEGéBWñÉWçuŽè¨©è»MXñøÄúqôÆ¤i¼9E‰«XÌB°¯´ºu¤Îî”Š¦v%K,Pºvã«§HêâÁ'û”¦�VÌÃ<Ÿ)ròµº;EñQòô:ÍEÔ>ÒG­ˆ”´Ò.yˆVsï=¼·g¶�Jd5ÀyRZ7Ë‚t}ˆ(¸îàW�ÈC…ˆ+å‰—€(ÃéQªÜyÆµæº=o‹ôEÅm‘Wy@=PsêºçÃúOÈyOÑ¤Û"y¢6òª—|úñÊ–»×]Þ¶›P"ƒäs$f•t�i4%‡cöwù^sEmÞÏU:«Šw—#Ãÿæh”¬ªiî�ÄüOz8nÇ”§xDØ°ˆX6©-÷û²-"•÷e%ÑÏ^«D¯‘ù—ûuâ·¸É÷Þqj£´†ÌèC¬««Z8KQ°i"l®ýâ¡JÂ\)Kh•ô,ðLr^Í3¥½=geyqPu½!KªÚÌü£eé¶È»ØvpoC'úZ®Â9bŽK"9Þ_ærú€‚áèP €d1r-Oñ0BD„Ü—¹¹ðzbDÑáþêÉ{¯4Ñ}�¼©já¬“ˆ8¸ôw©�‘ºÙ'ù¾ýÑÿÈI½�TÏ <ô%¬tiÖpþ Ç¥»Oj_ïÙZŸC3yXÊ€­«?vž�ë«ƒÃ½å"ï“‘p*s€’Ns\EtDÝë÷$íVâñÄZ±š †#‹Q½NÉâÖD‡ÎE¥Õ@l½ë_@yµW®y˜¾Ar×ê+íÒ+Ÿ{hÑ†é¡6Õô¶¢�<´«˜Ý··\Ó,f »÷q�fÉAG:Y×ŠÞž,µáŽ.ZmVamžÖ©+ÕiX0Ç¦Ôµ²V�5Çñ½^Äµ3ŸaÚ¦'ÑV™mØ¦6#Ò7”ÅÀjÒû/¹iûÜ×Z@HñdÙí›3ÎT
Áµ»,ñ0"-èkà3öK
á"µZåÒÝ."¢ŠóVgäšF”¬‹ÏÚ”#éC[–«�zU§Œ†ÅƒÝÔ$)‡ã”�VQ´]�(âãQGüyŒÖr;ž
„Ãiä¸"•läs?ª8�èºÝ¥	ˆu7Þuß^"� ¥2µBxúA:]E/•ÈÉvU3èÑƒ˜gKòïHë/¥æ¡.‹f¥Uøg<TÍ_o’�vL»œ¦6ŠnBJzãÅ6Ù1ÎkE|?|®¤£áíÖÕH,5ÏJº¬&—øø:î3ysŒý9R{u:>9~V¬È5s>žT D¤ïÖéó{s?&ÔácëXïG©uÑjðÌý—PßW´–& ZˆîÿSúÝ…åŸW_ÿ0ƒLµ€8Éqô#Šáîè†<T¥½Kþ~DtPed¤	œðLH¿GüÐNÒ"Åi/H5ÆRçÈ|ÆF÷Ìˆa»`,{MËgoÔªÉ#bkN=;ØŽŽgVŠˆ}(Õbý…ø‹ìí}¨ŒÆ   ÅRªåÖ¯ím‘‚D®ý'    Æ”j$%H[¤´BŠ'Dç[OS"¤U]   @ý)5…jR   œ(}1-    L?    ð    Þ@@    À    x    o      à    ¼�€    €7    ðœË^  pB0÷   'D@Ä@Ê]   ˆ(¡= å€    "R´K sÔ'   Àeþ|O?ä?[f™[ô¾Z!   À�´CÓ&�Ygƒ    GRñµÅö	Ì*=Ž> þ  €3O} æè*¡�oöPÓ7é   <ÿ¦bþs™ "f_ó-…k  À‹g�(Ó0ö²X@³Qt×ˆ‡T8   ^<oe-"BM7	4‘�)š½@]ˆ   ¡(ë«­Ûô5mðVoÚ<§ÛôÇ´…”  €IQÎ[þHwùÏAHL	§£æè ]   òäÿ§„âw‰e    IEND®B`‚PK     t‰U]Ê“„@   @     languages/index.phpnu „[µü¤        <?php
//Nothing to see here

header( 'HTTP/1.0 403 Forbidden' );PK     t‰U]òòo’›´ ›´ (  languages/insert-headers-and-footers.potnu „[µü¤        # Copyright (C) 2025 WPCode
# This file is distributed under the GPLv2 or later.
msgid ""
msgstr ""
"Project-Id-Version: WPCode Lite 2.3.0\n"
"Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/insert-headers-and-footers\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"POT-Creation-Date: 2025-08-07T11:57:34+00:00\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"X-Generator: WP-CLI 2.5.0\n"
"X-Domain: insert-headers-and-footers\n"

#. Plugin Name of the plugin
msgid "WPCode Lite"
msgstr ""

#. Plugin URI of the plugin
#. Author URI of the plugin
msgid "https://www.wpcode.com/"
msgstr ""

#. Description of the plugin
msgid "Easily add code snippets in WordPress. Insert scripts to the header and footer, add PHP code snippets with conditional logic, insert ads pixel, custom content, and more."
msgstr ""

#. Author of the plugin
msgid "WPCode"
msgstr ""

#: ihaf.php:125
msgid "Heads up!"
msgstr ""

#: ihaf.php:126
msgid "Your site already has WPCode Pro activated. If you want to switch to WPCode Lite, please first go to Plugins â†’ Installed Plugins and deactivate WPCode. Then, you can activate WPCode Lite."
msgstr ""

#: includes/admin/admin-ajax-handlers.php:42
#: includes/class-wpcode-snippet.php:484
msgid "You are not allowed to change snippet status, please contact your webmaster."
msgstr ""

#. Translators: %2$s is the action that they were trying to perform, either activated or deactivated. %1$s is the error message why the action failed.
#: includes/admin/admin-ajax-handlers.php:56
msgid "Snippet not %2$s, the following error was encountered: %1$s"
msgstr ""

#: includes/admin/admin-ajax-handlers.php:58
msgctxt "Snippet status change"
msgid "activated"
msgstr ""

#: includes/admin/admin-ajax-handlers.php:58
msgctxt "Snippet status change"
msgid "deactivated"
msgstr ""

#: includes/admin/admin-ajax-handlers.php:115
#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:215
#: includes/admin/pages/class-wpcode-admin-page.php:947
msgid "Search Snippets"
msgstr ""

#. Translators: this an auto-generated title for when a snippet is saved from the generator.
#: includes/admin/admin-ajax-handlers.php:227
msgid "Generated Snippet %s"
msgstr ""

#: includes/admin/admin-ajax-handlers.php:282
msgid "Success! Your server can make SSL connections."
msgstr ""

#: includes/admin/admin-ajax-handlers.php:289
msgid "There was an error and the connection failed. Please contact your web host with the technical details below."
msgstr ""

#: includes/admin/admin-ajax-handlers.php:433
msgid "This shortcode is not used in any content yet."
msgstr ""

#: includes/admin/admin-ajax-handlers.php:442
#: includes/lite/conditional-logic/class-wpcode-conditional-snippet.php:48
msgid "WPCode Snippet"
msgstr ""

#. Translators: %d is the post id.
#: includes/admin/admin-ajax-handlers.php:453
msgid "Untitled (#%d)"
msgstr ""

#: includes/admin/admin-ajax-handlers.php:480
msgid "Security check failed."
msgstr ""

#: includes/admin/admin-ajax-handlers.php:485
msgid "You do not have permission to edit snippets."
msgstr ""

#: includes/admin/admin-ajax-handlers.php:492
#: includes/admin/importers/class-wpcode-importer-header-footer-code-manager.php:79
#: includes/admin/importers/class-wpcode-importer-post-snippets.php:86
msgid "Invalid snippet ID."
msgstr ""

#: includes/admin/admin-ajax-handlers.php:498
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2500
msgid "Failed to update snippet from library."
msgstr ""

#: includes/admin/admin-ajax-handlers.php:505
msgid "Snippet successfully updated."
msgstr ""

#: includes/admin/admin-scripts.php:48
msgid "Please wait."
msgstr ""

#: includes/admin/admin-scripts.php:49
#: includes/admin/admin-scripts.php:85
#: includes/admin/pages/class-wpcode-admin-page-settings.php:430
msgid "OK"
msgstr ""

#: includes/admin/admin-scripts.php:50
msgid "Already Purchased?"
msgstr ""

#: includes/admin/admin-scripts.php:52
msgid "Bonus"
msgstr ""

#: includes/admin/admin-scripts.php:53
msgid "$50 off"
msgstr ""

#: includes/admin/admin-scripts.php:54
msgid "regular price, automatically applied at checkout."
msgstr ""

#: includes/admin/admin-scripts.php:55
msgid "WPCode Lite users get"
msgstr ""

#: includes/admin/admin-scripts.php:56
#: includes/admin/admin-scripts.php:62
#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:505
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1831
#: includes/lite/class-wpcode-smart-tags-lite.php:36
msgid "Upgrade to PRO"
msgstr ""

#: includes/admin/admin-scripts.php:57
#: includes/lite/class-wpcode-smart-tags-lite.php:34
msgid "Smart Tags are a Premium feature"
msgstr ""

#: includes/admin/admin-scripts.php:58
#: includes/lite/class-wpcode-smart-tags-lite.php:35
msgid "Upgrade to PRO today and simplify the way you write advanced snippets using smart tags without having to write any PHP code."
msgstr ""

#: includes/admin/admin-scripts.php:60
msgid "Testing Mode is a Premium Feature"
msgstr ""

#: includes/admin/admin-scripts.php:61
msgid "Upgrade to PRO today and make changes to your snippets, Header & Footer scripts or Page Scripts without affecting your live site. You choose when and what to publish to your visitors."
msgstr ""

#: includes/admin/admin-scripts.php:64
msgid "Learn more about Testing Mode"
msgstr ""

#: includes/admin/admin-scripts.php:67
msgid "Connect with WPCode Library to Sync Snippets"
msgstr ""

#: includes/admin/admin-scripts.php:68
msgid "Before syncing your snippets, you must connect to WPCode Library, so we can securely access and update them."
msgstr ""

#: includes/admin/admin-scripts.php:69
msgid "Connect with WPCode Library"
msgstr ""

#: includes/admin/admin-scripts.php:70
msgid "Confirm Update"
msgstr ""

#: includes/admin/admin-scripts.php:71
msgid "Updating this snippet will overwrite your current local changes with the latest version from the library."
msgstr ""

#: includes/admin/admin-scripts.php:72
msgid "Yes, Update Now"
msgstr ""

#: includes/admin/admin-scripts.php:73
msgid "Cancel"
msgstr ""

#: includes/admin/admin-scripts.php:74
msgid "The Private Snippet Library is a Premium Feature"
msgstr ""

#: includes/admin/admin-scripts.php:75
msgid "Upgrade today and get access to a private snippet library that you can use to manage snippets on multiple sites."
msgstr ""

#: includes/admin/admin-scripts.php:76
msgid "Learn more about WPCode Pro"
msgstr ""

#: includes/admin/admin-scripts.php:81
msgid "Your version:"
msgstr ""

#: includes/admin/admin-scripts.php:82
msgid "Library version:"
msgstr ""

#: includes/admin/admin-scripts.php:83
msgid "Old version:"
msgstr ""

#: includes/admin/admin-scripts.php:84
msgid "New version:"
msgstr ""

#: includes/admin/class-wpcode-admin-page-loader.php:140
#: includes/admin/class-wpcode-admin-page-loader.php:141
#: includes/admin/class-wpcode-admin-page-loader.php:198
#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:32
#: includes/class-wpcode-admin-bar-info.php:226
msgid "Code Snippets"
msgstr ""

#: includes/admin/class-wpcode-admin-page-loader.php:206
#: includes/admin/pages/class-wpcode-admin-page-settings.php:53
#: includes/class-wpcode-admin-bar-info.php:408
msgid "Settings"
msgstr ""

#: includes/admin/class-wpcode-admin-page-loader.php:221
msgid "Upgrade to WPCode Pro"
msgstr ""

#: includes/admin/class-wpcode-admin-page-loader.php:222
msgid "Get WPCode Pro"
msgstr ""

#: includes/admin/class-wpcode-code-editor.php:67
msgid "The PHP constant DISALLOW_UNFILTERED_HTML is currently defined, which is preventing WPCode from saving code accurately. Please contact your webmaster for assistance in disabling this restriction."
msgstr ""

#. Translators: Placeholder for the category name.
#: includes/admin/class-wpcode-docs.php:164
msgid "View All %s Docs"
msgstr ""

#. translators: %1$s and %2$s are strong HTML tags, %3$s and %4$s are links.
#: includes/admin/class-wpcode-features-notices.php:53
msgid "%1$sPro Tip:%2$s Did you know all WPCode premium plans include access to a private snippet library? Moving snippets from one site to another has never been easier. %3$sUpgrade today with a special discount%4$s."
msgstr ""

#: includes/admin/class-wpcode-metabox-snippets.php:54
msgid "WPCode Page Scripts"
msgstr ""

#: includes/admin/class-wpcode-metabox-snippets.php:56
#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:170
#: includes/generator/class-wpcode-generator-script.php:193
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:23
msgid "Header"
msgstr ""

#: includes/admin/class-wpcode-metabox-snippets.php:57
#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:174
#: includes/generator/class-wpcode-generator-script.php:192
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:36
msgid "Footer"
msgstr ""

#: includes/admin/class-wpcode-metabox-snippets.php:63
#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:172
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:49
msgid "Body"
msgstr ""

#: includes/admin/class-wpcode-metabox-snippets.php:66
msgid "Custom Code Snippet"
msgstr ""

#: includes/admin/class-wpcode-metabox-snippets.php:67
#: includes/generator/class-wpcode-generator-post-type.php:384
msgid "Revisions"
msgstr ""

#. Translators: Human-Readable time to display.
#: includes/admin/class-wpcode-notifications.php:287
msgid "%1$s ago"
msgstr ""

#: includes/admin/class-wpcode-review.php:128
msgid "Are you enjoying WPCode?"
msgstr ""

#: includes/admin/class-wpcode-review.php:130
#: includes/generator/class-wpcode-generator-post-status.php:170
#: includes/generator/class-wpcode-generator-post-status.php:195
#: includes/generator/class-wpcode-generator-post-type.php:399
#: includes/generator/class-wpcode-generator-post-type.php:551
#: includes/generator/class-wpcode-generator-post-type.php:757
#: includes/generator/class-wpcode-generator-query.php:136
#: includes/generator/class-wpcode-generator-query.php:379
#: includes/generator/class-wpcode-generator-query.php:436
#: includes/generator/class-wpcode-generator-script.php:211
#: includes/generator/class-wpcode-generator-script.php:228
#: includes/generator/class-wpcode-generator-style.php:212
#: includes/generator/class-wpcode-generator-style.php:229
#: includes/generator/class-wpcode-generator-taxonomy.php:428
#: includes/generator/class-wpcode-generator-taxonomy.php:505
msgid "Yes"
msgstr ""

#: includes/admin/class-wpcode-review.php:130
msgid "Not Really"
msgstr ""

#: includes/admin/class-wpcode-review.php:134
msgid "We're sorry to hear you aren't enjoying WPCode. We would love a chance to improve. Could you take a minute and let us know what we can do better?"
msgstr ""

#: includes/admin/class-wpcode-review.php:136
#: includes/admin/class-wpcode-review.php:142
msgid "Give Feedback"
msgstr ""

#: includes/admin/class-wpcode-review.php:136
#: includes/admin/class-wpcode-review.php:142
msgid "No thanks"
msgstr ""

#: includes/admin/class-wpcode-review.php:140
msgid "That's awesome! Could you please do us a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?"
msgstr ""

#. translators: $1$s - WPCode plugin name; $2$s - WP.org review link; $3$s - WP.org review link.
#: includes/admin/class-wpcode-review.php:193
msgid "Please rate %1$s <a href=\"%2$s\" target=\"_blank\" rel=\"noopener noreferrer\">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href=\"%3$s\" target=\"_blank\" rel=\"noopener\">WordPress.org</a> to help us spread the word. Thank you from the WPCode team!"
msgstr ""

#. Translators: Support link tag starts with url and Support link tag ends.
#: includes/admin/class-wpcode-skin-legacy.php:92
#: includes/admin/class-wpcode-skin.php:92
msgid "There was an error installing the addon. Please try again. If you are still having issues, please %1$scontact our support%2$s team."
msgstr ""

#. Translators: The name of the addon that can't be installed, Support link tag starts with url and Support link tag ends.
#: includes/admin/class-wpcode-skin-legacy.php:105
#: includes/admin/class-wpcode-skin.php:106
msgid "There was an error installing the addon, %1$s. Please try again. If you are still having issues, please %2$scontact our support%3$s team. "
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:42
msgid "Custom cookie banner with automatic script blocking, advanced scanner and more."
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:52
msgid "Easy, Fast and Secure WordPress and Website Migration."
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:62
msgid "Replace text across your database or media uploads in a single plugin."
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:72
msgid "Making Email Deliverability Easy for WordPress"
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:82
msgid "Powerful SEO Plugin to Boost SEO Rankings & Increase Traffic."
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:92
msgid "The Best Drag & Drop WordPress Form Builder."
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:102
msgid "Connect your WordPress plugins together and create automated workflows."
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:112
msgid "The easiest way to sell digital products with WordPress."
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:122
msgid "Raise more money for your cause with the most powerful WordPress donation and fundraising plugin."
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:132
msgid "Start accepting one-time and recurring payments on your WordPress site without setting up a shopping cart."
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:239
msgid "Plugin already installed and activated."
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:249
#: includes/admin/class-wpcode-suggested-plugins.php:258
msgid "Plugin activated."
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:287
msgid "Plugin installed and activated."
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:370
msgid "Enjoying WPCode? Check out some of our other top-rated FREE plugins:"
msgstr ""

#: includes/admin/class-wpcode-suggested-plugins.php:380
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:467
msgid "Install Plugin"
msgstr ""

#: includes/admin/importers/class-wpcode-importer-code-snippets.php:94
#: includes/admin/importers/class-wpcode-importer-simple-custom-css-and-js.php:85
#: includes/admin/importers/class-wpcode-importer-simple-custom-css-and-js.php:97
#: includes/admin/importers/class-wpcode-importer-woody.php:91
msgid "Unknown Snippet"
msgstr ""

#: includes/admin/importers/class-wpcode-importer-code-snippets.php:95
#: includes/admin/importers/class-wpcode-importer-simple-custom-css-and-js.php:86
#: includes/admin/importers/class-wpcode-importer-simple-custom-css-and-js.php:98
#: includes/admin/importers/class-wpcode-importer-woody.php:92
msgid "The snippet you are trying to import does not exist."
msgstr ""

#: includes/admin/importers/class-wpcode-importer-header-footer-code-manager.php:51
#: includes/admin/importers/class-wpcode-importer-post-snippets.php:59
msgid "(no title)"
msgstr ""

#: includes/admin/importers/class-wpcode-importer-header-footer-code-manager.php:92
#: includes/admin/importers/class-wpcode-importer-post-snippets.php:99
msgid "Snippet not found."
msgstr ""

#: includes/admin/importers/class-wpcode-importer-header-footer-code-manager.php:124
#: includes/admin/importers/class-wpcode-importer-post-snippets.php:131
msgid "Failed to import snippet."
msgstr ""

#: includes/admin/importers/class-wpcode-importer-post-snippets.php:166
msgid "ungrouped"
msgstr ""

#: includes/admin/importers/class-wpcode-importer-simple-custom-css-and-js.php:133
msgid "Failed to import the snippet."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:45
msgid "1-Click"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:97
msgid "Connect your site to the WPCode Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:98
msgid "You're almost there! To finish installing the snippet, you need to connect your site to your account on the WPCode Library. This will allow you to install snippets directly to your site in the future."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:99
msgid "You'll also get access to tens of free expert-curated snippets that can be installed with 1-click from inside the plugin."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:102
#: includes/admin/pages/class-wpcode-admin-page-click.php:142
#: includes/admin/pages/class-wpcode-admin-page.php:1306
msgid "Connect to Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:109
msgid "Your site is already connected to the  WPCode Library using another account"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:111
msgid "In order to continue installing the snippet from the WPCode library you have to either login to the Library with the same account used to connect this site to the WPCode library initially or disconnect this site from the WPCode library and connect using your own account."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:115
msgid "Disconnect Site From Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:118
msgid "Login with another user on the WPCode Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:127
msgid "Congratulations, your site is now connected!"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:128
msgid "Your site is now connected to the WPCode Library and you can install snippets directly from the library. Please click the button below to resume installing the snippet you were viewing."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:131
msgid "Resume Snippet Installation"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:138
msgid "Your site is not connected to the WPCode library."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:139
msgid "Connect now to enable installing public snippets from the WPCode library with 1-click and also get access to tens of expert-curated snippets that you can install from inside the plugin."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:150
msgid "No snippet provided."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:157
msgid "Missing authentication token, please click the link in the WPCode Library again."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:170
msgid "We encountered an error loading your snippet, please try again in a few minutes"
msgstr ""

#. translators: %s: The error message from the API.
#: includes/admin/pages/class-wpcode-admin-page-click.php:175
msgid "We encountered the following error loading your snippet: %s"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:186
msgid "Go back to the library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:194
msgid "Library Snippet Preview"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:195
msgid "Please review the snippet below and confirm that you would like to install it."
msgstr ""

#. Translators: %s: The snippet name.
#: includes/admin/pages/class-wpcode-admin-page-click.php:199
msgid "Snippet title: %s"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:205
msgid "Code preview"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:209
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:551
#: includes/admin/pages/class-wpcode-code-snippets-table.php:753
msgid "Code Type"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:230
msgid "Confirm & Install Snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-click.php:255
msgid "Confirm Snippet Installation"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:252
#: includes/admin/pages/class-wpcode-admin-page.php:947
msgid "All Snippets"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:340
#: includes/generator/class-wpcode-generator-post-type.php:231
msgid "Add New"
msgstr ""

#. Translators: %d - Trashed snippets count.
#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:358
msgid "%d snippet was successfully moved to Trash."
msgid_plural "%d snippets were successfully moved to Trash."
msgstr[0] ""
msgstr[1] ""

#. translators: %d - Restored from trash snippets count.
#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:366
msgid "%d snippet was successfully restored."
msgid_plural "%d snippet were successfully restored."
msgstr[0] ""
msgstr[1] ""

#. translators: %d - Deleted snippets count.
#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:374
msgid "%d snippet was successfully permanently deleted."
msgid_plural "%d snippets were successfully permanently deleted."
msgstr[0] ""
msgstr[1] ""

#. translators: %d - Activated snippets count.
#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:384
msgid "%d snippet was successfully activated."
msgid_plural "%d snippets were successfully activated."
msgstr[0] ""
msgstr[1] ""

#. translators: %d - Failed to activate snippets count.
#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:393
msgid "%d snippet was not activated due to an error."
msgid_plural "%d snippets were not activated due to errors."
msgstr[0] ""
msgstr[1] ""

#. translators: %d - Deactivated snippets count.
#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:402
msgid "%d snippet was successfully deactivated."
msgid_plural "%d snippets were successfully deactivated."
msgstr[0] ""
msgstr[1] ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:427
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2382
msgid "Enable Error Logging"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:439
msgid "This view lists your snippets that threw errors. Some of the snippets may have also been automatically disabled due to potentially preventing you from accessing the admin."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:441
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2473
msgid "Learn More"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:448
msgid "In order to get more info about the errors please consider enabling error logging."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:469
msgid "Number of snippets per page:"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:502
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1788
msgid "Blocks snippets is a Pro Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:503
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1789
msgid "Upgrade to PRO today and unlock building snippets using the Gutenberg Block Editor. Create templates using blocks and use the full power of WPCode to insert them in your site."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:506
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1792
msgid "SCSS snippets is a Pro Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:507
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1793
msgid "Upgrade to PRO today and unlock editing snippets using SCSS code with optimized compiling directly in the WordPress admin."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:532
msgid "Order Snippets By"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:534
msgid "Order snippets by"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:538
#: includes/admin/pages/class-wpcode-code-snippets-table.php:746
#: includes/generator/class-wpcode-generator-post-status.php:128
#: includes/generator/class-wpcode-generator-post-type.php:136
#: includes/generator/class-wpcode-generator-schema-person.php:73
#: includes/generator/class-wpcode-generator-sidebar.php:130
msgid "Name"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:539
#: includes/admin/pages/class-wpcode-code-snippets-table.php:749
msgid "Created"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:540
#: includes/admin/pages/class-wpcode-code-snippets-table.php:750
msgid "Last Updated"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:541
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1069
#: includes/admin/pages/class-wpcode-code-snippets-table.php:754
#: includes/generator/class-wpcode-generator-hooks.php:1360
msgid "Priority"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:547
msgid "Ascending"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-code-snippets.php:548
msgid "Descending"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-duplicator.php:88
msgid "Easy, Fast and Secure WordPress Backups and Website Migration. Join 1,500,000+ professionals who trust Duplicator. No Code Required."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-duplicator.php:93
msgid "Duplicator Screenshot"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-duplicator.php:99
msgid "Secure Backups."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-duplicator.php:100
msgid "Website Cloning."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-duplicator.php:101
msgid "Cloud Storage."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-duplicator.php:102
msgid "1-Click Restore."
msgstr ""

#. translators: %s is the plugin name.
#: includes/admin/pages/class-wpcode-admin-page-duplicator.php:115
#: includes/admin/pages/class-wpcode-admin-page-search-replace.php:114
msgid "Install and Activate %s"
msgstr ""

#. translators: %s is the plugin name.
#: includes/admin/pages/class-wpcode-admin-page-duplicator.php:124
#: includes/admin/pages/class-wpcode-admin-page-search-replace.php:123
msgid "Install %s from the WordPress.org plugin repository."
msgstr ""

#. translators: %s is the plugin name.
#: includes/admin/pages/class-wpcode-admin-page-duplicator.php:137
#: includes/admin/pages/class-wpcode-admin-page-search-replace.php:136
msgid "Install %s"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-duplicator.php:146
msgid "Please ask your website administrator to install Duplicator."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:38
msgid "File Editor"
msgstr ""

#. Translators: %s is the name of the file.
#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:81
msgid "%s Editor"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:91
msgid "Enable file output"
msgstr ""

#. Translators: %s is the name of the file.
#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:107
msgid "Use this area to edit your %s file."
msgstr ""

#. Translators: %1$s is the opening link tag, %2$s is the closing link tag.
#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:116
msgid "The file contents above will be used to generated a dynamic file. There is no physical file created on your server. %1$sLearn more%2$s."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:134
#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:236
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:179
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:256
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:320
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:370
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:430
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:813
#: includes/admin/pages/class-wpcode-admin-page-settings.php:168
#: includes/admin/pages/class-wpcode-admin-page-settings.php:463
#: includes/admin/pages/class-wpcode-admin-page-settings.php:652
msgid "Save Changes"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:137
msgid "View File"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:202
msgid "Content added here will be appended to the robots.txt content generated by WordPress and other plugins."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:240
msgid "Simplify your website management with the WPCode File Editor! Say goodbye to the hassle of manually editing files on your server."
msgstr ""

#. translators: %1$s and %2$s are <u> tags.
#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:244
msgid "With this powerful tool, you can easily customize crucial files like %1$sads.txt%2$s, %1$sapp-ads.txt%2$s, %1$srobots.txt%2$s, and %1$sservice-worker.js%2$s right from your WordPress admin."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:251
msgid "File Editor is a PRO Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:254
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:77
#: includes/admin/pages/class-wpcode-admin-page-settings.php:496
#: includes/admin/pages/class-wpcode-admin-page-settings.php:674
msgid "Upgrade to WPCode PRO"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:258
msgid "Learn More about the File Editor"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:262
msgid "No manual coding, no FTP"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:263
msgid "Effortless integrations setup"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:264
msgid "Reduce the number of plugins"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-file-editor.php:265
msgid "Prevent advertising fraud"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-generator.php:73
msgid "Generator"
msgstr ""

#. Translators: gets replaced with the snippet title.
#: includes/admin/pages/class-wpcode-admin-page-generator.php:104
msgid "You are now editing the generated snippet: \"%s\". Updating the snippet will override any edits you made to the code."
msgstr ""

#. Translators: gets replaced with the generator name.
#: includes/admin/pages/class-wpcode-admin-page-generator.php:117
msgid "%s Generator"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-generator.php:143
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:420
msgid "All Generators"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-generator.php:143
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:420
msgid "Search Generators"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-generator.php:158
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:436
msgid "Generate"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-generator.php:210
msgid "Update code"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-generator.php:220
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:514
#: includes/admin/pages/class-wpcode-admin-page.php:1126
msgid "Code Preview"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-generator.php:224
msgid "Update Snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-generator.php:226
#: includes/admin/pages/class-wpcode-admin-page.php:1131
msgid "Use Snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-generator.php:229
msgctxt "Copy to clipboard"
msgid "Copy Code"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-generator.php:261
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1722
#: includes/generator/class-wpcode-generator-type.php:213
msgid "Remove Row"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:58
msgid "Header & Footer"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:110
msgid "Headers & Footers mode activated. Use the toggle next to the Save Changes button to disable it at any time."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:111
msgid "Headers & Footers mode deactivated, if you wish to switch back please use the option on the settings page."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:129
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:186
msgid "Sorry, you only have read-only access to this page. Ask your administrator for assistance editing."
msgstr ""

#. translators: %s: The `<head>` tag
#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:157
msgid "These scripts will be printed in the %s section."
msgstr ""

#. translators: %s: The `<head>` tag
#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:162
msgid "These scripts will be printed just below the opening %s tag."
msgstr ""

#. translators: %s: The `</body>` tag
#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:167
msgid "These scripts will be printed above the closing %s tag."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:231
msgid "Global Header and Footer"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:254
msgid "Simple mode"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:313
msgid "Settings Saved. Please don't forget to clear the site cache if you are using a cache plugin, so that the changes will be reflected for all users."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:338
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2328
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:313
msgid "Code Revisions is a Pro Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:341
msgid "Upgrade to WPCode Pro today and start tracking revisions and see exactly who, when and which changes were made to global Headers & Footers scripts."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:344
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2334
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:319
msgid "Upgrade to Pro and Unlock Revisions"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:348
#: includes/admin/pages/class-wpcode-admin-page-library.php:219
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2338
#: includes/admin/pages/trait-wpcode-my-library-markup.php:237
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:150
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:293
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:323
msgid "Learn more about all the features"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:354
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2243
msgid "Code Revisions"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-headers-footers.php:356
msgid "Easily switch back to a previous version of your global scripts."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:52
msgid "Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:63
msgid "Snippets"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:64
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:388
msgid "My Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:65
msgid "My Favorites"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:181
msgid "We encountered an error while trying to load the snippet data. Please try again."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:212
msgid "My Favorites is a PRO Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:213
msgid "Upgrade to WPCode PRO today and see the snippets you starred in the WPCode Library directly in the plugin."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:215
msgid "Upgrade to PRO and Unlock \"My Favorites\""
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:223
msgid "Load favorite snippets in the plugin"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:224
msgid "Import snippets from the WPCode Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:225
msgid "Save your snippets to the WPCode Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:226
#: includes/admin/pages/trait-wpcode-my-library-markup.php:245
msgid "Set up new websites faster"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:227
msgid "Easily implement features on multiple sites"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-library.php:228
#: includes/admin/pages/trait-wpcode-my-library-markup.php:246
msgid "Edit snippets in the WPCode Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:40
msgid "Conversion Pixels"
msgstr ""

#. translators: %1$s and %2$s are <u> tags.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:68
msgid "While you can always add pixels manually using code snippets, our Conversion Pixels addon helps you %1$ssave time%2$s while %1$sreducing errors%2$s. It lets you properly implement Facebook, Google, Pinterest, TikTok and Snapchat ads tracking with deep integrations for eCommerce events, interaction measurement, and more. This addon is available on WPCode Plus plan or higher."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:74
msgid "Conversion Pixels Addon is a PRO Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:82
msgid "Seamless integration with WooCommerce, Easy Digital Downloads and MemberPress"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:83
msgid "Works with Facebook, Google Ads, Pinterest, TikTok and Snapchat"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:84
msgid "No coding required"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:85
msgid "1-click setup for conversion tracking"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:97
msgid "Facebook"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:98
msgid "Google"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:99
msgid "Pinterest"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:100
msgid "TikTok"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:101
msgid "Snapchat"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:102
msgid "Click Tracking"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:133
msgid "Facebook Pixel"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:136
msgid "Facebook Pixel ID"
msgstr ""

#. translators: %1$s and %2$s are the opening and closing anchor tags.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:142
msgid "You can find your Facebook Pixel ID in the Facebook Ads Manager. %1$sRead our step by step directions%2$s. "
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:150
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:400
msgid "Conversions API Token"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:154
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:404
msgid "The Conversions API token allows you to send API events that are more reliable and can improve audience targeting."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:160
msgid "Facebook Pixel Events"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:164
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:240
msgid "PageView Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:166
msgid "Enable the PageView event to track and record page visits on all the pages of your website using the Facebook Pixel."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:173
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:250
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:314
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:364
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:424
msgid "eCommerce Events Tracking"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:191
msgid "Google Analytics & Ads Tracking"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:194
msgid "Google Analytics ID"
msgstr ""

#. translators: %1$s and %2$s are the opening and closing anchor tags.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:200
msgid "You can find your Google Analytics ID in the Google Analytics Admin panel. %1$sRead our step by step directions%2$s. "
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:208
msgid "Google Ads Tag ID"
msgstr ""

#. translators: %1$s and %2$s are the opening and closing anchor tags.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:214
msgid "You can find your Google Ads Tag ID in the Google Ads Settings under Google Tag. %1$sRead our step by step directions%2$s. "
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:222
msgid "Ads Conversion Label"
msgstr ""

#. translators: %1$s and %2$s are the opening and closing anchor tags.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:228
msgid "Add your Google Ads Conversion Label for tracking conversion events. %1$sLearn More%2$s."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:236
msgid "Google Events"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:242
msgid "Enable PageView event on all pages."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:268
msgid "Pinterest Tag"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:271
msgid "Tag ID"
msgstr ""

#. translators: %1$s and %2$s are the opening and closing anchor tags.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:277
msgid "You can find your Tag id in your Pinterest Business account. %1$sRead our step by step directions%2$s. "
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:285
msgid "Ad Account ID"
msgstr ""

#. translators: %1$s and %2$s are the opening and closing anchor tags.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:291
msgid "You can find your Ad Account ID in your Pinterest Business account. %1$sRead more%2$s. "
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:299
msgid "Conversion Access Token"
msgstr ""

#. translators: %1$s and %2$s are the opening and closing anchor tags.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:305
msgid "You can find your Conversion Access Token under Ads > Conversions > Conversion access token. %1$sRead more%2$s. "
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:332
msgid "TikTok Pixel"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:335
msgid "Pixel ID"
msgstr ""

#. translators: %1$s and %2$s are the opening and closing anchor tags.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:341
msgid "You can find your Pixel id in your TikTok Business Account. %1$sRead our step by step directions%2$s."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:349
msgid "Events API Access Token"
msgstr ""

#. translators: %1$s and %2$s are the opening and closing anchor tags.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:355
msgid "You can generate an access token in the Pixel Settings under Access Token Generation. %1$sRead more%2$s"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:382
msgid "Snapchat Pixel"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:385
msgid "Snap Pixel ID"
msgstr ""

#. translators: %1$s and %2$s are the opening and closing anchor tags.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:391
msgid "You can find your Snapchat Pixel ID in the Snapchat Ads Manager. %1$sRead our step by step directions%2$s. "
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:410
msgid "Snapchat Pixel Events"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:414
msgid "Pave View Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:416
msgid "Enable the PAGE_VIEW event to track and record page visits on all the pages of your website using the Snapchat Pixel."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:443
msgid "ViewContent Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:445
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:566
msgid "Turn on the \"ViewContent\" event to track views of product pages on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:450
msgid "AddtoCart Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:452
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:573
msgid "Turn on the \"AddToCart\" event to track when items are added to a shopping cart on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:457
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:578
msgid "InitiateCheckout Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:459
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:580
msgid "Turn on the \"InitiateCheckout\" event to track when a user reaches the checkout page on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:464
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:502
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:711
msgid "Purchase Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:466
msgid "Turn on the \"Purchase\" event to track successful purchases on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:481
msgid "View Item Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:483
msgid "Send the View Item event to track views of product pages on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:488
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:533
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:571
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:697
msgid "Add to Cart Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:490
msgid "Send the Add to Cart event when a product is added to the cart."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:495
msgid "Begin Checkout Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:497
msgid "Send the Begin Checkout event when the user sees the checkout page."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:504
msgid "Send the Purchase event when the user completes a purchase."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:509
msgid "Conversion Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:511
msgid "Send the conversion event with the Google Ads label set above on a successful purchase."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:526
msgid "PageVisit Product Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:528
msgid "Turn on the \"PageVisit\" event to track views of product pages on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:535
msgid "Turn on the Add to Cart event to track when items are added to a shopping cart on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:540
msgid "Checkout PageVisit Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:542
msgid "Enable the Checkout PageVisit event to track when a user reaches the checkout page on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:547
msgid "Checkout Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:549
msgid "Turn on the \"Checkout\" event to track successful purchases on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:564
msgid "ViewContent Product Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:585
msgid "PlaceAnOrder Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:587
msgid "Turn on the \"PlaceAnOrder\" event to track successful purchases on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:663
msgid "Disabled, no eCommerce Platform Detected"
msgstr ""

#. translators: %s is the name of the eCommerce provider.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:667
msgid "%s Tracking Enabled"
msgstr ""

#. translators: %s a html break.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:673
msgid "Advanced eCommerce tracking is available for WooCommerce, Easy Digital Downloads and MemberPress. %s These plugins are detected automatically and when available you can toggle individual events using the options below."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:690
msgid "View Content Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:692
msgid "Turn on the \"VIEW_CONTENT\" event to track views of product pages on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:699
msgid "Turn on the \"ADD_CART\" event to track when items are added to a shopping cart on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:704
msgid "Start Checkout Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:706
msgid "Turn on the \"START_CHECKOUT\" event to track when a user reaches the checkout page on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:713
msgid "Turn on the \"PURCHASE\" event to track successful purchases on your website."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:727
msgid "Custom Click Tracking"
msgstr ""

#. Translators: %1$s is the opening link tag, %2$s is the closing link tag
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:732
msgid "Use this section to add custom click events to your site. You can add as many as you like. Each event can have multiple pixels and each pixel can have a custom event name and value. Read more about how to configure these settings in %1$sthis article%2$s"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:742
msgid "CSS Selector"
msgstr ""

#. Translators: %1$s is an opening anchor tag, %2$s is a closing anchor tag.
#: includes/admin/pages/class-wpcode-admin-page-pixel.php:748
msgid "Define the HTML element that triggers the event upon clicking (button, link, etc). Input the appropriate CSS selector here. %1$sLearn more%2$s"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:756
#: includes/generator/class-wpcode-generator-schema-event.php:80
msgid "Event Name"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:760
msgid "Assign a unique identifier to your event for easy recognition and categorization. "
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:764
msgid "Event Value"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:768
msgid "Input a numerical value for your event. This helps in quantifying user interactions for your tracking needs. "
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-pixel.php:807
msgid "Add New Click Event"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-search-replace.php:87
msgid "Confidently replace any text in your database and update images without duplicating uploads, all with a single plugin."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-search-replace.php:92
msgid "Search & Replace Everything Screenshot"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-search-replace.php:98
msgid "Replace Text Across Your Whole Database."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-search-replace.php:99
msgid "Preview Changes Every Time."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-search-replace.php:100
msgid "Replace Image Sources to Clear Up Space."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-search-replace.php:101
msgid "Support for Serialized Data."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-search-replace.php:145
msgid "Please ask your website administrator to install Search & Replace Everything."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:52
msgid "WPCode Settings"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:64
msgid "General Settings"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:65
msgid "Error Handling"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:66
#: includes/admin/pages/class-wpcode-admin-page-settings.php:624
msgid "Access Control"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:88
msgid "Settings Saved."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:125
msgid "This allows you to disable all Code Snippets functionality and have a single \"Headers & Footers\" item under the settings menu."
msgstr ""

#. Translators: Placeholders make the text bold.
#: includes/admin/pages/class-wpcode-admin-page-settings.php:130
msgid "%1$sNOTE:%2$s Please use this setting with caution. It will disable all custom snippets that you add using the new snippet management interface."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:136
msgid "License Key"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:141
msgid "Headers & Footers mode"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:153
msgid "Allow Usage Tracking"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:157
msgid "By allowing us to track usage data, we can better help you, as we will know which WordPress configurations, themes, and plugins we should test."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:179
msgid "Remove ALL WPCode data upon plugin deletion."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:184
msgid "All WPCode snippets & scripts will be unrecoverable."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:188
msgid "Delete All Data on Uninstall"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:206
msgid "WPCode Library Connection"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:211
msgid "Editor Height"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:217
msgid "Dark Mode"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:221
msgid "Enable Dark Mode across WPCode."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:228
msgid "Admin Bar Info"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:232
msgid "Enable the admin bar menu that shows info about which snippets & scripts are loaded on the current page."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:248
msgid "Connect to the WPCode Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:251
msgid "Disconnect from the WPCode Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:376
msgid "Auto height"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:379
msgid "Set the editor height in pixels or enable auto-grow so the code editor automatically grows in height with the code."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:394
msgid "You're using WPCode Lite - no license needed. Enjoy!"
msgstr ""

#. Translators: %1$s - Opening anchor tag, do not translate. %2$s - Closing anchor tag, do not translate.
#: includes/admin/pages/class-wpcode-admin-page-settings.php:401
msgid "To unlock more features consider %1$supgrading to PRO%2$s."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:408
msgid "Already purchased? Simply enter your license key below to enable WPCode PRO!"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:410
msgid "Paste license key here"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:412
msgid "Verify Key"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:429
msgid "Oops!"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:431
msgid "Almost Done"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:432
#: includes/admin/pages/class-wpcode-code-snippets-table.php:503
msgid "Activate"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:433
msgid "Unfortunately there was a server connection error."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:478
msgid "Email Notifications"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:481
msgid "Receive email notifications when snippets throw errors or are automatically deactivated."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:493
msgid "Email Notifications is a Pro Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:494
msgid "Do you want to get email notifications the moment your snippets throw an error or are automatically deactivated? Upgrade today and improve your workflow with WPCode Error Email Notifications."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:512
msgid "Error Notifications"
msgstr ""

#. Translators: %1$s: opening anchor tag, %2$s: closing anchor tag. Link to docs about error notifications.
#: includes/admin/pages/class-wpcode-admin-page-settings.php:518
msgid "Send email notifications when snippets throw errors? %1$sLearn more%2$s"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:528
#: includes/admin/pages/class-wpcode-admin-page-settings.php:569
msgid "Send To"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:532
msgid "Enter a comma separated list of email addresses to receive error notifications. Defaults to the admin email address."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:548
#: includes/admin/pages/class-wpcode-admin-page-settings.php:589
msgid "Preview Email"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:553
msgid "Deactivation Notifications"
msgstr ""

#. Translators: %1$s: opening anchor tag, %2$s: closing anchor tag. Link to docs about error notifications.
#: includes/admin/pages/class-wpcode-admin-page-settings.php:559
msgid "Send an email when a snippet gets automatically deactivated? %1$sLearn more%2$s"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:573
msgid "Enter a comma separated list of email addresses to receive deactivation notifications. Defaults to the admin email address."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:601
msgid "Error Logging"
msgstr ""

#. Translators: %1$s: opening anchor tag, %2$s: closing anchor tag.
#: includes/admin/pages/class-wpcode-admin-page-settings.php:607
msgid "Log errors thrown by snippets? %1$sView Logs%2$s"
msgstr ""

#. Translators: %1$s - Opening anchor tag. %2$s - Closing anchor tag.
#: includes/admin/pages/class-wpcode-admin-page-settings.php:629
msgid "Select the user roles that are allowed to manage different types of snippets or parts of WPCode. By default, all permissions are provided only to administrator users. Please see our %1$sAccess Control documentation%2$s for more details."
msgstr ""

#. translators: %1$s and %2$s are <u> tags.
#: includes/admin/pages/class-wpcode-admin-page-settings.php:665
msgid "Improve the way you and your team manage your snippets with the WPCode Access Control settings. Enable other users on your site to manage different types of snippets or configure Conversion Pixels settings and update configuration files. This feature is available on the %1$sWPCode Pro%2$s plan or higher."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:671
msgid "Access Control is a PRO Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:679
msgid "Save time and improve website management with your team"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:680
msgid "Delegate snippet management to other users with full control"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:681
msgid "Enable other users to set up ads & 3rd party services"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:682
msgid "Choose if PHP snippets should be enabled on the site"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:694
msgid "PHP Snippets"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:697
msgid "Disable PHP snippets"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:701
msgid "This option will completely disable PHP snippets execution and the option to edit or add new PHP snippets."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-settings.php:768
msgid "Make Sure Important Emails Reach Your Inbox"
msgstr ""

#. Translators: %1$s: opening anchor tag, %2$s: closing anchor tag.
#: includes/admin/pages/class-wpcode-admin-page-settings.php:773
msgid "Solve common email deliverability issues for good. %1$sGet WP Mail SMTP%2$s!"
msgstr ""

#. Translators: This adds the name of the plugin "WPCode".
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:85
msgid "Add %s Snippet"
msgstr ""

#. Translators: This adds the name of the plugin "WPCode".
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:86
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:143
msgid "Add Snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:136
msgid "Save Snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:137
msgid "Create Custom Snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:139
msgid "Edit Snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:140
msgid "Update"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:172
msgid "You cannot edit this snippet because it is in the Trash. Please restore it and try again."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:198
msgid "Snippet updated."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:199
msgid "Snippet created & Saved."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:200
msgid "We encountered an error activating your snippet, please check the syntax and try again."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:201
msgid "Sorry, you are not allowed to change the status of the snippet."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:202
msgid "Snippet updated & executed."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:203
msgid "Your changes are saved but your snippet was deactivated due to an error, please check the syntax and try again."
msgstr ""

#. translators: %s: Error message.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:215
msgid "Error message: %s"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:248
msgid "Don't forget to activate your snippet using the toggle next to the \"Update\" button when you are ready to start using it."
msgstr ""

#. Translators: this changes the edit page title to show the snippet title.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:282
msgid "Edit snippet \"%s\""
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:329
msgid "Add Your Custom Code (New Snippet)"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:330
msgid "Choose this blank snippet to start from scratch and paste any custom code or simply write your own."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:342
msgid "Add Custom Snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:346
msgid "Generate snippet using AI"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:347
msgid "Generate a new snippet specific to your needs leveraging the power of WPCode's AI integration."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:355
msgid "Generate Snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:379
msgid "Snippet Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:382
msgid "Snippet Generators"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:385
msgid "Plugin Snippets"
msgstr ""

#. Translators: The placeholders add links to create a new custom snippet or the suggest-a-snippet form.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:404
msgid "To speed up the process you can select from one of our pre-made library, or you can start with a %1$sblank snippet%2$s and %1$screate your own%2$s. Have a suggestion for new snippet? %3$sWeâ€™d love to hear it!%4$s"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:417
msgid "Create custom snippets for your website easily by filling out a form. You can also use this form to update your snippets later, without having to write or edit any code."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:447
msgid "Easily add code snippets that extend other plugins on your site from a library maintained by the plugin authors."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:457
msgid "You don't have any plugins installed that extend the WPCode library, install any of the plugins below to start expanding the WPCode snippet library:"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:497
msgid "Add title for snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:566
msgid "Select the code type for your snippet:"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:603
msgid "Insertion"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:609
msgid "Choose \"Auto Insert\" if you want the snippet to be automatically executed in one of the locations available. In \"Shortcode\" mode, the snippet will only be executed where the shortcode is inserted."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:612
msgid "Insert Method"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:614
#: includes/admin/pages/class-wpcode-code-snippets-table.php:748
#: includes/generator/class-wpcode-generator-schema-event.php:156
#: includes/generator/class-wpcode-generator-schema-job-posting.php:200
#: includes/lite/conditional-logic/class-wpcode-conditional-location.php:70
msgid "Location"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:618
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:678
#: includes/admin/pages/class-wpcode-code-snippets-table.php:752
#: includes/class-wpcode-admin-bar-info.php:283
msgid "Shortcode"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:637
msgid "Your snippet can be either automatically executed or only used as a shortcode. When using the \"Auto Insert\" option you can choose the location where your snippet will be placed automatically."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:648
msgid "before paragraph number"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:649
msgid "after paragraph number"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:650
msgid "before post number"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:651
msgid "after post number"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:652
msgid "minimum number of words"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:653
msgid "number of words"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:674
msgid "Auto&nbsp;Insert"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:722
msgid "Who (visitor)"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:726
msgid "Where (page)"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:730
#: includes/class-wpcode-auto-insert.php:55
msgid "eCommerce"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:734
msgid "Advanced"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:744
msgid "Search Options"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:760
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:824
msgid "Selected"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:816
msgid "Search locations"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:976
msgid "Please save the snippet first"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1068
msgid "Tag"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1070
#: includes/admin/pages/class-wpcode-code-snippets-table.php:755
msgid "Note"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1073
msgid "Basic info"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1075
msgid "Tags: Use tags to make it easier to group similar snippets together. <br />Priority: A lower priority will result in the snippet being executed before others with a higher priority. <br />Note: Add a private note related to this snippet."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1087
msgid "Using conditional logic you can limit the pages where you want the snippet to be auto-inserted."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1091
msgid "Enable Logic"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1092
msgid "Conditions"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1097
msgid "Smart Conditional Logic"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1099
msgid "Enable logic to add rules and limit where your snippets are inserted automatically. Use multiple groups for different sets of rules."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1141
msgid "Update Generated Snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1212
msgid "Snippet Status:"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1215
#: includes/admin/pages/class-wpcode-admin-page-tools.php:374
#: includes/admin/pages/class-wpcode-code-snippets-table.php:1138
msgid "Active"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1218
#: includes/admin/pages/class-wpcode-admin-page-tools.php:375
#: includes/admin/pages/class-wpcode-code-snippets-table.php:1141
msgid "Inactive"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1231
msgid "Execute Snippet Now"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1254
#: includes/admin/pages/class-wpcode-code-snippets-table.php:311
msgid "Update Available"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1287
msgid "Save to Library"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1310
msgid "Restricted Code Detected"
msgstr ""

#. Translators: %1$s is the opening link tag, %2$s is the closing link tag.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1315
msgid "For your protection, we blocked the addition of certain types of code that could compromise your website's security. If you believe this is in error or need assistance, please %1$scontact our support team%2$s."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1503
msgid "+ Add new group"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1520
msgid "Show"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1521
msgid "Hide"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1537
msgid "This code snippet if"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1651
msgctxt "Conditional logic add another \"and\" rules row."
msgid "AND"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1652
msgid "Add another \"AND\" rules row."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1755
msgctxt "Conditional logic \"or\" another rule"
msgid "OR"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1776
msgid "Save to Library is a Pro Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1777
msgid "Upgrade to PRO today and save your private snippets to the WPCode library for easy access. You can also share your snippets with other users or load them on other sites."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1779
msgid "Custom Shortcode is a Pro Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1780
msgid "Upgrade today to use a custom shortcode and nerver worry about changing snippet ids again, even when importing your snippets to another site. You'll also get access to a private library that makes setting up new sites a lot easier."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1782
msgid "Device Type is a Pro Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1783
msgid "Upgrade to PRO today and unlock one-click device targeting for your snippets."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1785
msgid "Scheduling snippets is a Pro Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1786
msgid "Upgrade to PRO today and unlock powerful scheduling options to limit when your snippet is active on the site."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1796
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1962
msgid "Shortcode Attributes"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1797
msgid "Load as file is a Pro Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1798
msgid "Upgrade to PRO today and unlock loading your CSS and JS snippets as files for better performance and improved compatibility with caching plugins."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1800
msgid "Compress Output is a Pro Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1801
msgid "Upgrade to PRO today and unlock the ability to compress your code by removing comments and unnecessary spaces, ensuring enhanced performance."
msgstr ""

#. Translators: %1$s Opening anchor tag. %2$s Closing anchor tag.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1805
msgid "For better results using conditional logic with PHP snippets we automatically switched the auto-insert location to \"Frontend Conditional Logic\" that runs later. If you want to run the snippet earlier please switch back to \"Run Everywhere\" but note not all conditional logic options will be available. %1$sRead more%2$s"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1821
msgid "The snippet has been recently deactivated due to an error on this line"
msgstr ""

#. Translators: The name of the user that is currently editing the snippet is appended at the end.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1825
msgid "This snippet is currently being edited by "
msgstr ""

#. Translators: The name of the user that is currently editing the snippet is appended at the end.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1826
msgid "AI Snippet Generation is a Pro Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1827
msgid "Improving Snippets with AI is a Pro Feature"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1828
msgid "Upgrade today to access the WPCode AI code generator, which allows you to create code snippets simply by describing their functionality using the power of AI."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1914
#: includes/class-wpcode-admin-bar-info.php:289
msgid "Custom Shortcode"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1917
msgid "Shortcode name"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1922
msgid "Use this field to define a custom shortcode name instead of the id-based one."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1936
msgid "Add&nbsp;Attribute"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1940
msgid "Attribute name"
msgstr ""

#. Translators: %1$s is the opening <code> tag, %2$s is the closing </code> tag.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:1947
msgid "Use this field to define the attribute name for your shortcode and click Add Attribute. Attributes added here will be available to use as smart tags and as variables inside snippets. E.g. an attribute named \"keyword\" will be available in a PHP snippet as %1$s$keyword%2$s. %3$sLearn more%4$s."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2017
msgid "Schedule snippet"
msgstr ""

#. Translators: Link to the documentation article for files as snippets. %1$s is the opening anchor tag, %2$s is the closing anchor tag.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2040
msgid "If enabled, this snippet will be loaded as a physical file instead of being inserted in the source of the page. %1$sLearn more%2$s."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2052
msgid "Compress code output by removing spaces and comments."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2062
msgid "Load as file"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2084
msgid "Compress Output"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2113
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2114
msgid "Start Date"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2115
msgid "Clear start date"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2122
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2123
msgid "End Date"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2124
msgid "Clear end date"
msgstr ""

#. Translators: %1$s and %2$s are HTML tags for a link to the documentation article.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2133
msgid "Looking for more scheduling options? %1$sClick here%2$s to read more about all the available options."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2208
msgid "Find Where This Shortcode Is Used"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2212
msgid "Click to search for any posts or pages where this shortcode is being used."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2222
msgid "Locations Used"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2238
msgid "As you make changes to your snippet and save, you will get a list of previous versions with all the changes made in each revision. You can compare revisions to the current version or see changes as they have been saved by going through each revision. Any of the revisions can then be restored as needed."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2245
msgid "Easily switch back to a previous version of your snippet."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2257
msgid "Limit where you want this snippet to be loaded by device type. By default, snippets are loaded on all devices."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2263
#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:48
msgid "Device Type"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2277
msgid "Any device type"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2278
msgid "Desktop only"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2279
msgid "Mobile only"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2331
msgid "Upgrade to WPCode Pro today and start tracking revisions and see exactly who, when and which changes were made to your snippet."
msgstr ""

#. Translators: The placeholder gets replaced with the display name of the user currently editing the snippet.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2359
msgid "Notice: %1$s is also editing this snippet. Please be aware that your changes could be overwritten."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2373
msgid "View Error Logs"
msgstr ""

#. Translators: The placeholder gets replaced with the time passed since the snippet was deactivated.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2398
msgid "This snippet was automatically deactivated due to an error at %1$s on %2$s (%3$s ago)."
msgstr ""

#. Translators: The placeholder gets replaced with the time passed since the snippet was deactivated.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2410
msgid "This snippet first threw an error at %1$s on %2$s (%3$s ago)."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2421
#: includes/class-wpcode-snippet-execute.php:615
msgid "Error message:"
msgstr ""

#. Translators: The placeholders make the text bold and add the line number.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2430
msgid "The error occurred on %1$sline %3$d%2$s of this snippet's code (highlighted below)."
msgstr ""

#. Translators: The placeholder is replaced with the URL where the error happened.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2444
msgid "The error was triggered at the following URL: %1$s"
msgstr ""

#. Translators: The placeholders are for the link to the error logs.
#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2455
msgid "You can %1$sview the error log%2$s to get more details about the error that caused this. The error will also be in a snippet-specific log whose name starts with snippet-%3$d (the id of this snippet)."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2461
msgid "You can enable error logging to get more details about the error that caused this."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2466
msgid "This message will disappear when the snippet is updated."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2507
msgid "Snippet successfully updated from library."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-snippet-manager.php:2566
msgid "Use AI to improve your snippet by describing the changes you want"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:59
msgid "Tools"
msgstr ""

#. Translators: Adds a link to the snippets list in the admin.
#: includes/admin/pages/class-wpcode-admin-page-tools.php:94
msgid "Import was successfully finished. You can go and check %1$syour snippets%2$s."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:99
msgid "Import failed. Please make sure you are uploading a valid WPCode export file."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:145
msgid "WPCode Snippet Import"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:146
msgid "Select a WPCode export file"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:152
msgid "No file chosen"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:156
msgid "Choose a file&hellip;"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:165
#: includes/admin/pages/class-wpcode-admin-page-tools.php:198
#: includes/admin/pages/class-wpcode-admin-page-tools.php:320
#: includes/admin/pages/class-wpcode-admin-page-tools.php:496
msgid "Import"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:171
msgid "Import from Other Code Plugins"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:172
msgid "WPCode makes it easy for you to switch by allowing you import your third-party snippet plugins with a single click."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:175
msgid "Select previous Code plugin"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:181
msgid "Not Installed"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:183
msgid "Not Active"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:213
msgid "Export Code Snippets"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:217
#: includes/admin/pages/class-wpcode-code-snippets-table.php:758
#: includes/generator/class-wpcode-generator-post-status.php:111
msgid "Status"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:222
msgid "Code type"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:227
#: includes/admin/pages/class-wpcode-code-snippets-table.php:751
msgid "Tags"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:234
msgid "Export Snippets"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:248
msgid "System Information"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:253
msgid "Test SSL Connections"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:254
msgid "Click the button below to verify your web server can perform SSL connections successfully."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:256
msgid "Test Connection"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:279
msgid "Snippets import"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:283
msgid "Select the Snippets you would like to import."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:287
#: includes/admin/pages/class-wpcode-admin-page.php:1030
msgid "Available Snippets"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:292
#: includes/admin/pages/class-wpcode-code-snippets-table.php:546
msgid "No snippets found."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:306
msgid "Select All"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:311
msgid "Snippets to Import"
msgstr ""

#. Translators: These add markup to display which snippet out of the total from the provider name.
#: includes/admin/pages/class-wpcode-admin-page-tools.php:332
msgid "Importing %1$s of %2$s snippets from %3$s."
msgstr ""

#. Translators: this adds the total snippets count that have been completed.
#: includes/admin/pages/class-wpcode-admin-page-tools.php:350
msgid "Congrats, the import process has finished! We have successfully imported %s snippets. You can review the results below."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:373
#: includes/admin/pages/class-wpcode-code-snippets-table.php:1135
msgid "All"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:407
msgid "No snippets available to export."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:432
msgid "No tags available."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:497
msgid "Export"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:498
msgid "System Info"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:499
msgid "Importer"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:500
#: includes/class-wpcode-admin-bar-info.php:422
msgid "Logs"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:611
msgid "Please upload a valid .json snippets export file."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:612
#: includes/admin/pages/class-wpcode-admin-page-tools.php:625
msgid "Error"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:624
msgid "Snippets data cannot be imported."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:693
#: includes/admin/pages/class-wpcode-code-snippets-table.php:441
msgid "Edit"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:709
msgid "Testing"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:981
msgid "You do not have sufficient permissions to view logs."
msgstr ""

#. translators: %1$s: opening anchor tag, %2$s: closing anchor tag.
#: includes/admin/pages/class-wpcode-admin-page-tools.php:992
msgid "No logs found. You can enable logging from the %1$ssettings panel%2$s."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:1030
msgid "Delete log"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:1040
msgid "View"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:1048
msgid "Log is empty."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:1068
msgid "Link expired. Please refresh the page and retry."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:1072
msgid "You do not have sufficient permissions to delete logs."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page-tools.php:1091
msgid "Are you sure you want to delete this log?"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:121
msgid "You do not have permission to access this page."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:259
msgid "Search docs"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:263
#: includes/admin/pages/class-wpcode-code-snippets-table.php:1068
msgid "Clear"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:270
msgid "No docs found"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:285
msgid "View Documentation"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:286
msgid "Browse documentation, reference material, and tutorials for WPCode."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:287
msgid "View All Documentation"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:291
msgid "Get Support"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:292
msgid "Submit a ticket and our world class support team will be in touch soon."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:293
msgid "Submit a Support Ticket"
msgstr ""

#. Translators: Placeholder for the number of active notifications.
#: includes/admin/pages/class-wpcode-admin-page.php:305
msgid "New Notifications (%s)"
msgstr ""

#. Translators: Placeholder for the number of dismissed notifications.
#: includes/admin/pages/class-wpcode-admin-page.php:316
msgid "Notifications (%s)"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:323
msgid "Dismissed Notifications"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:326
msgid "Active Notifications"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:349
msgid "Dismiss all"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:391
msgid "Dismiss"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:444
msgid "Testing Mode"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:457
msgid "Help"
msgstr ""

#. translators: %s is the title of the metabox.
#: includes/admin/pages/class-wpcode-admin-page.php:613
msgid "Collapse Metabox %s"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:732
msgid "Use snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:745
msgid "Edit snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:746
msgid "Used"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:759
msgid "Preview"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:769
msgid "Connect to library to unlock (Free)"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:953
msgid "We encountered a problem loading the Snippet Library items, please try again later."
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:1122
msgid "Preview Snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:1132
msgid "Edit in Library"
msgstr ""

#. translators: %d - snippets count.
#: includes/admin/pages/class-wpcode-admin-page.php:1297
msgid "Get Access to Our Library of %d FREE Snippets"
msgstr ""

#: includes/admin/pages/class-wpcode-admin-page.php:1302
msgid "Connect your website with WPCode Library and get instant access to FREE code snippets written by our experts. Snippets can be installed with just 1-click from inside the plugin and come automatically-configured to save you time."
msgstr ""

#. Translators: This is the format for displaying the date in the admin list, [date] at [time].
#: includes/admin/pages/class-wpcode-code-snippets-table.php:145
#: includes/admin/pages/class-wpcode-code-snippets-table.php:154
msgid "%1$s at %2$s"
msgstr ""

#. Translators: The tag by which to filter the list of snippets in the admin.
#: includes/admin/pages/class-wpcode-code-snippets-table.php:187
msgid "Filter snippets by tag: %s"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:254
msgid "Toggle Snippet Status"
msgstr ""

#. Translators: %1$s is the time since the snippet was deactivated, %2$s is the date and time of deactivation.
#: includes/admin/pages/class-wpcode-code-snippets-table.php:266
msgid "This snippet was automatically deactivated because of a fatal error at %2$s on %3$s (%1$s ago)"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:274
msgid "This snippet threw an error, you can see more details when editing the snippet."
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:359
#: includes/admin/pages/class-wpcode-code-snippets-table.php:440
msgid "Edit This Snippet"
msgstr ""

#. translators: %s: User display name
#: includes/admin/pages/class-wpcode-code-snippets-table.php:371
msgid "%s is currently editing"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:413
msgid "Restore this snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:414
#: includes/admin/pages/class-wpcode-code-snippets-table.php:497
msgid "Restore"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:430
msgid "Delete this snippet permanently"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:431
#: includes/admin/pages/class-wpcode-code-snippets-table.php:498
msgid "Delete Permanently"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:460
msgid "Move this snippet to trash"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:461
#: includes/admin/pages/class-wpcode-code-snippets-table.php:502
#: includes/admin/pages/class-wpcode-code-snippets-table.php:1147
msgid "Trash"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:480
msgid "Duplicate this snippet"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:481
msgid "Duplicate"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:504
msgid "Deactivate"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:745
#: includes/generator/class-wpcode-generator-query.php:298
msgid "ID"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:747
#: includes/conditional-logic/class-wpcode-conditional-page.php:152
#: includes/generator/class-wpcode-generator-post-type.php:378
#: includes/generator/class-wpcode-generator-query.php:225
#: includes/generator/class-wpcode-generator-query.php:299
#: includes/generator/class-wpcode-generator-schema-article.php:152
#: includes/generator/class-wpcode-generator-schema-book.php:159
msgid "Author"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:1015
msgid "of"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:1017
msgid "Current Page"
msgstr ""

#. Translators: %s: the number of items.
#: includes/admin/pages/class-wpcode-code-snippets-table.php:1046
msgid "%s item"
msgid_plural "%s items"
msgstr[0] ""
msgstr[1] ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:1064
#: includes/generator/class-wpcode-generator-hooks.php:1337
msgid "Filter"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:1111
msgid "Filter by location"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:1113
msgid "All locations"
msgstr ""

#: includes/admin/pages/class-wpcode-code-snippets-table.php:1144
msgid "Outdated"
msgstr ""

#: includes/admin/pages/trait-wpcode-library-refresh-button.php:20
msgid "Check for updates to your private library snippets."
msgstr ""

#: includes/admin/pages/trait-wpcode-my-library-markup.php:230
msgid "My Library is a PRO Feature"
msgstr ""

#: includes/admin/pages/trait-wpcode-my-library-markup.php:231
msgid "Upgrade to WPCode PRO today and save your snippets in your private library directly from the plugin and import them with 1-click on other sites."
msgstr ""

#: includes/admin/pages/trait-wpcode-my-library-markup.php:233
msgid "Upgrade to PRO and Unlock \"My Library\""
msgstr ""

#: includes/admin/pages/trait-wpcode-my-library-markup.php:241
msgid "Save your snippets to your library"
msgstr ""

#: includes/admin/pages/trait-wpcode-my-library-markup.php:242
msgid "1-click import snippets from you library"
msgstr ""

#: includes/admin/pages/trait-wpcode-my-library-markup.php:243
msgid "Deploy new snippets from your account"
msgstr ""

#: includes/admin/pages/trait-wpcode-my-library-markup.php:244
msgid "Update snippets across all your sites"
msgstr ""

#: includes/admin/pages/trait-wpcode-revisions-display.php:96
#: includes/generator/class-wpcode-generator-query.php:514
msgid "Compare"
msgstr ""

#. Translators: time since the revision has been updated.
#: includes/admin/pages/trait-wpcode-revisions-display.php:106
msgid "Updated %s ago"
msgstr ""

#. Translators: The placeholder gets replaced with the extra number of revisions available.
#: includes/admin/pages/trait-wpcode-revisions-display.php:129
msgid "%d Other Revisions"
msgstr ""

#: includes/admin/pages/trait-wpcode-wpconsent-notice.php:32
msgid "Using tracking scripts? Make Sure Youâ€™re Covered with a Cookie Banner!"
msgstr ""

#: includes/admin/pages/trait-wpcode-wpconsent-notice.php:34
msgid "Easily customize your own cookie banner and let our tools block cookies until users give consent. Scan and set up automatically!"
msgstr ""

#: includes/admin/pages/trait-wpcode-wpconsent-notice.php:38
msgid "Install WPConsent for Free"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-admin.php:42
msgid "Admin Area"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-admin.php:53
msgid "Admin header"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-admin.php:54
msgid "Insert snippet in the wp-admin header area."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-admin.php:57
msgid "Admin footer"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-admin.php:58
msgid "Insert snippet in the wp-admin footer."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-archive.php:50
msgid "Categories, Archives, Tags, Taxonomies"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-archive.php:61
msgid "Insert Before Excerpt"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-archive.php:62
msgid "Insert snippet above post summary."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-archive.php:65
msgid "Insert After Excerpt"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-archive.php:66
msgid "Insert snippet below post summary."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-archive.php:69
msgid "Between Posts"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-archive.php:70
msgid "Insert snippet between multiple posts."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-archive.php:73
msgid "Before Post"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-archive.php:74
#: includes/auto-insert/class-wpcode-auto-insert-single.php:72
msgid "Insert snippet at the beginning of a post."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-archive.php:77
msgid "After Post"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-archive.php:78
#: includes/auto-insert/class-wpcode-auto-insert-single.php:76
msgid "Insert snippet at the end of a post."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-everywhere.php:59
msgid "PHP Snippets Only"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-everywhere.php:70
msgid "Run Everywhere"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-everywhere.php:71
msgid "Snippet gets executed everywhere on your website."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-everywhere.php:74
msgid "Frontend Only"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-everywhere.php:75
msgid "Snippet gets executed only in the frontend of the website."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-everywhere.php:78
msgid "Admin Only"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-everywhere.php:79
msgid "The snippet only gets executed in the wp-admin area."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-everywhere.php:82
msgid "Frontend Conditional Logic"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-everywhere.php:83
msgid "Ideal for running the snippet later with conditional logic rules in the frontend."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-everywhere.php:86
msgid "On Demand"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-everywhere.php:87
msgid "Execute this snippet on demand or programmatically just when you need it."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-single.php:60
msgid "Page, Post, Custom Post Type"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-single.php:71
msgid "Insert Before Post"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-single.php:75
msgid "Insert After Post"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-single.php:79
msgid "Insert Before Content"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-single.php:80
msgid "Insert snippet at the beginning of the post content."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-single.php:83
msgid "Insert After Content"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-single.php:84
msgid "Insert snippet at the end of the post content."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-single.php:87
msgid "Insert Before Paragraph"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-single.php:88
msgid "Insert snippet before paragraph # of the post content."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-single.php:91
msgid "Insert After Paragraph"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-single.php:92
msgid "Insert snippet after paragraph # of the post content."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-site-wide.php:49
msgid "Site Wide (Frontend)"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-site-wide.php:60
msgid "Site Wide Header"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-site-wide.php:61
msgid "Insert snippet between the head tags of your website on all pages."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-site-wide.php:64
msgid "Site Wide Body"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-site-wide.php:65
msgid "Insert the snippet just after the opening body tag."
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-site-wide.php:68
msgid "Site Wide Footer"
msgstr ""

#: includes/auto-insert/class-wpcode-auto-insert-site-wide.php:69
msgid "Insert the snippet in the footer just before the closing body tag."
msgstr ""

#: includes/capabilities.php:51
msgid "Edit Text/Blocks Snippets"
msgstr ""

#: includes/capabilities.php:52
msgid "This enables users to edit just text & blocks snippets, no HTML code is allowed."
msgstr ""

#: includes/capabilities.php:55
msgid "Edit HTML, JavaScript & CSS Snippets"
msgstr ""

#: includes/capabilities.php:56
msgid "This enables users to add and manage HTML, JavaScript & CSS snippets but also Text & Blocks snippets."
msgstr ""

#: includes/capabilities.php:59
msgid "Edit PHP Snippets"
msgstr ""

#: includes/capabilities.php:60
msgid "This enables users to add and manage PHP snippets and all the other types of snippets."
msgstr ""

#: includes/capabilities.php:63
msgid "Manage Conversion Pixels Settings"
msgstr ""

#: includes/capabilities.php:64
msgid "This enables users to manage the conversion pixels settings."
msgstr ""

#: includes/capabilities.php:67
msgid "Use the File Editor"
msgstr ""

#: includes/capabilities.php:68
msgid "This enables users to use the file editor."
msgstr ""

#: includes/class-wpcode-admin-bar-info.php:156
msgid "Snippets With Errors"
msgstr ""

#: includes/class-wpcode-admin-bar-info.php:175
msgid "Loaded on this page"
msgstr ""

#. translators: %d is the total number of global scripts.
#: includes/class-wpcode-admin-bar-info.php:196
msgid "Global Scripts (%d)"
msgstr ""

#: includes/class-wpcode-admin-bar-info.php:286
msgid "Gutenberg Block"
msgstr ""

#: includes/class-wpcode-admin-bar-info.php:348
msgid "Global Header"
msgstr ""

#: includes/class-wpcode-admin-bar-info.php:353
msgid "Global Body"
msgstr ""

#: includes/class-wpcode-admin-bar-info.php:357
msgid "Global Footer"
msgstr ""

#: includes/class-wpcode-admin-bar-info.php:360
msgid "Disabled via Page Scripts"
msgstr ""

#: includes/class-wpcode-admin-bar-info.php:396
msgid "+ Add Snippet"
msgstr ""

#: includes/class-wpcode-admin-bar-info.php:442
msgid "Help Docs"
msgstr ""

#: includes/class-wpcode-auto-insert.php:53
msgid "Global"
msgstr ""

#: includes/class-wpcode-auto-insert.php:54
msgid "Page-Specific"
msgstr ""

#: includes/class-wpcode-generator.php:138
msgid "Admin"
msgstr ""

#: includes/class-wpcode-generator.php:139
#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:59
msgid "Content"
msgstr ""

#: includes/class-wpcode-generator.php:140
msgid "Core"
msgstr ""

#: includes/class-wpcode-generator.php:141
msgid "Design"
msgstr ""

#: includes/class-wpcode-generator.php:142
#: includes/generator/class-wpcode-generator-post-type.php:539
msgid "Query"
msgstr ""

#: includes/class-wpcode-generator.php:143
msgid "Schema"
msgstr ""

#: includes/class-wpcode-install.php:146
msgid "Snippet was deactivated due to an error."
msgstr ""

#: includes/class-wpcode-install.php:213
msgid "Display a message after the 1st paragraph of posts"
msgstr ""

#: includes/class-wpcode-install.php:225
msgid "Completely Disable Comments"
msgstr ""

#: includes/class-wpcode-library-auth.php:61
msgid "Your WordPress Site"
msgstr ""

#: includes/class-wpcode-library-auth.php:101
#: includes/class-wpcode-library-auth.php:171
msgid "You do not have permissions to connect WPCode to the library."
msgstr ""

#: includes/class-wpcode-library-auth.php:131
msgid "Authentication successfully completed"
msgstr ""

#: includes/class-wpcode-library-auth.php:132
msgid "Reloading page, please wait."
msgstr ""

#: includes/class-wpcode-smart-tags.php:43
msgid "Content ID"
msgstr ""

#: includes/class-wpcode-smart-tags.php:47
msgid "Permalink"
msgstr ""

#: includes/class-wpcode-smart-tags.php:51
msgid "Content title"
msgstr ""

#: includes/class-wpcode-smart-tags.php:55
msgid "Post excerpt"
msgstr ""

#: includes/class-wpcode-smart-tags.php:59
msgid "Post content"
msgstr ""

#: includes/class-wpcode-smart-tags.php:63
msgid "URL of the featured image"
msgstr ""

#: includes/class-wpcode-smart-tags.php:67
msgid "Categories"
msgstr ""

#: includes/class-wpcode-smart-tags.php:71
msgid "Tags, comma-separated"
msgstr ""

#: includes/class-wpcode-smart-tags.php:75
msgid "Post publish date"
msgstr ""

#: includes/class-wpcode-smart-tags.php:79
msgid "Post modification date"
msgstr ""

#: includes/class-wpcode-smart-tags.php:83
msgid "User's email"
msgstr ""

#: includes/class-wpcode-smart-tags.php:87
msgid "User's first name"
msgstr ""

#: includes/class-wpcode-smart-tags.php:91
msgid "User's last name"
msgstr ""

#: includes/class-wpcode-smart-tags.php:95
msgid "Custom Field (meta)"
msgstr ""

#: includes/class-wpcode-smart-tags.php:100
msgid "Author ID"
msgstr ""

#: includes/class-wpcode-smart-tags.php:104
#: includes/generator/class-wpcode-generator-schema-article.php:158
#: includes/generator/class-wpcode-generator-schema-book.php:165
#: includes/generator/class-wpcode-generator-schema-fact-check.php:120
#: includes/generator/class-wpcode-generator-schema-recipe.php:102
msgid "Author Name"
msgstr ""

#: includes/class-wpcode-smart-tags.php:108
#: includes/generator/class-wpcode-generator-schema-article.php:168
#: includes/generator/class-wpcode-generator-schema-book.php:175
#: includes/generator/class-wpcode-generator-schema-fact-check.php:130
msgid "Author URL"
msgstr ""

#: includes/class-wpcode-smart-tags.php:112
msgid "Author's bio/description"
msgstr ""

#: includes/class-wpcode-smart-tags.php:116
msgid "The website's name"
msgstr ""

#: includes/class-wpcode-smart-tags.php:120
msgid "The website's home URL"
msgstr ""

#: includes/class-wpcode-smart-tags.php:124
#: includes/conditional-logic/class-wpcode-conditional-page.php:84
#: includes/generator/class-wpcode-generator-query.php:204
msgid "Post type"
msgstr ""

#: includes/class-wpcode-smart-tags.php:128
msgid "Login URL"
msgstr ""

#: includes/class-wpcode-smart-tags.php:132
msgid "Logout URL"
msgstr ""

#: includes/class-wpcode-smart-tags.php:139
msgid "WooCommerce Order number"
msgstr ""

#: includes/class-wpcode-smart-tags.php:143
msgid "WooCommerce Order subtotal"
msgstr ""

#: includes/class-wpcode-smart-tags.php:147
msgid "WooCommerce Order total"
msgstr ""

#: includes/class-wpcode-smart-tags.php:151
msgid "WooCommerce Product ID"
msgstr ""

#: includes/class-wpcode-smart-tags.php:155
msgid "WooCommerce Permalink"
msgstr ""

#: includes/class-wpcode-smart-tags.php:159
msgid "WooCommerce Product title"
msgstr ""

#: includes/class-wpcode-smart-tags.php:163
msgid "WooCommerce SKU"
msgstr ""

#: includes/class-wpcode-smart-tags.php:167
msgid "WooCommerce Regular price"
msgstr ""

#: includes/class-wpcode-smart-tags.php:171
msgid "WooCommerce Sale price"
msgstr ""

#: includes/class-wpcode-smart-tags.php:175
msgid "WooCommerce Price (with currency)"
msgstr ""

#: includes/class-wpcode-smart-tags.php:179
msgid "WooCommerce In stock?"
msgstr ""

#: includes/class-wpcode-smart-tags.php:183
msgid "WooCommerce Inventory count"
msgstr ""

#: includes/class-wpcode-smart-tags.php:187
msgid "WooCommerce Product Description"
msgstr ""

#: includes/class-wpcode-smart-tags.php:191
msgid "WooCommerce Product Short Description"
msgstr ""

#: includes/class-wpcode-smart-tags.php:195
msgid "WooCommerce Featured image URL"
msgstr ""

#: includes/class-wpcode-smart-tags.php:199
msgid "WooCommerce Product categories"
msgstr ""

#: includes/class-wpcode-smart-tags.php:203
msgid "WooCommerce Product tags"
msgstr ""

#: includes/class-wpcode-smart-tags.php:207
msgid "WooCommerce Average rating"
msgstr ""

#: includes/class-wpcode-smart-tags.php:211
msgid "WooCommerce Number of reviews"
msgstr ""

#: includes/class-wpcode-smart-tags.php:215
msgid "WooCommerce Gallery image URLs"
msgstr ""

#: includes/class-wpcode-smart-tags.php:229
msgid "WooCommerce"
msgstr ""

#: includes/class-wpcode-smart-tags.php:237
msgid "EDD File Name"
msgstr ""

#: includes/class-wpcode-smart-tags.php:242
msgid "EDD File URL"
msgstr ""

#: includes/class-wpcode-smart-tags.php:247
msgid "EDD File Price"
msgstr ""

#: includes/class-wpcode-smart-tags.php:251
msgid "EDD File Notes"
msgstr ""

#: includes/class-wpcode-smart-tags.php:257
msgid "Easy Digital Downloads"
msgstr ""

#: includes/class-wpcode-smart-tags.php:265
msgid "Yoast SEO Title"
msgstr ""

#: includes/class-wpcode-smart-tags.php:269
msgid "Yoast SEO Description"
msgstr ""

#: includes/class-wpcode-smart-tags.php:275
msgid "Yoast SEO"
msgstr ""

#: includes/class-wpcode-smart-tags.php:283
msgid "AIOSEO Title"
msgstr ""

#: includes/class-wpcode-smart-tags.php:287
msgid "AIOSEO Description"
msgstr ""

#: includes/class-wpcode-smart-tags.php:293
msgid "All in One SEO"
msgstr ""

#: includes/class-wpcode-smart-tags.php:301
#: includes/generator/class-wpcode-generator-schema-course.php:73
msgid "Course Name"
msgstr ""

#: includes/class-wpcode-smart-tags.php:305
#: includes/generator/class-wpcode-generator-schema-course.php:83
msgid "Course Description"
msgstr ""

#: includes/class-wpcode-smart-tags.php:309
msgid "Course Permalink"
msgstr ""

#: includes/class-wpcode-smart-tags.php:313
msgid "Course Price"
msgstr ""

#: includes/class-wpcode-smart-tags.php:317
msgid "Course Availability"
msgstr ""

#: includes/class-wpcode-smart-tags.php:321
msgid "Course Instructor"
msgstr ""

#: includes/class-wpcode-smart-tags.php:327
msgid "MemberPress Courses"
msgstr ""

#: includes/class-wpcode-smart-tags.php:335
msgid "Membership Name"
msgstr ""

#: includes/class-wpcode-smart-tags.php:339
msgid "Membership Price"
msgstr ""

#: includes/class-wpcode-smart-tags.php:343
msgid "Membership Description"
msgstr ""

#: includes/class-wpcode-smart-tags.php:347
msgid "Membership URL"
msgstr ""

#: includes/class-wpcode-smart-tags.php:351
msgid "Membership Billing Type"
msgstr ""

#: includes/class-wpcode-smart-tags.php:355
msgid "Membership Period Type"
msgstr ""

#: includes/class-wpcode-smart-tags.php:359
msgid "Membership Period"
msgstr ""

#: includes/class-wpcode-smart-tags.php:365
msgid "MemberPress"
msgstr ""

#: includes/class-wpcode-smart-tags.php:498
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:202
msgid "Show Smart Tags"
msgstr ""

#: includes/class-wpcode-smart-tags.php:501
msgid "Hide Smart Tags"
msgstr ""

#: includes/class-wpcode-smart-tags.php:506
msgid "Smart Tags"
msgstr ""

#: includes/class-wpcode-smart-tags.php:508
msgid "Search smart tags"
msgstr ""

#: includes/class-wpcode-smart-tags.php:537
msgid "No smart tags found"
msgstr ""

#: includes/class-wpcode-smart-tags.php:543
msgid "Learn more about Smart Tags"
msgstr ""

#: includes/class-wpcode-snippet-execute.php:131
msgid "HTML Snippet"
msgstr ""

#: includes/class-wpcode-snippet-execute.php:132
msgid "Easily insert scripts from other sites or build custom elements using HTML."
msgstr ""

#: includes/class-wpcode-snippet-execute.php:138
msgid "Text Snippet"
msgstr ""

#: includes/class-wpcode-snippet-execute.php:139
msgid "Create reusable text snippets that you can visually format in a familiar editor."
msgstr ""

#: includes/class-wpcode-snippet-execute.php:144
msgid "Blocks Snippet (PRO)"
msgstr ""

#: includes/class-wpcode-snippet-execute.php:146
msgid "Use the Block Editor to create components that you can insert anywhere in your site."
msgstr ""

#: includes/class-wpcode-snippet-execute.php:151
msgid "CSS Snippet"
msgstr ""

#: includes/class-wpcode-snippet-execute.php:152
msgid "Write CSS styles directly in WPCode and easily customize how your website looks."
msgstr ""

#: includes/class-wpcode-snippet-execute.php:157
msgid "SCSS Snippet (PRO)"
msgstr ""

#: includes/class-wpcode-snippet-execute.php:159
msgid "Write SCSS styles directly in WPCode and easily customize how your website looks."
msgstr ""

#: includes/class-wpcode-snippet-execute.php:164
msgid "JavaScript Snippet"
msgstr ""

#: includes/class-wpcode-snippet-execute.php:165
msgid "Add custom JavaScript code to your site to add interactivity or integrate with other services."
msgstr ""

#: includes/class-wpcode-snippet-execute.php:170
msgid "PHP Snippet"
msgstr ""

#: includes/class-wpcode-snippet-execute.php:171
msgid "Extend or add functionality using PHP code with full control on where it's executed"
msgstr ""

#: includes/class-wpcode-snippet-execute.php:176
msgid "Universal Snippet"
msgstr ""

#: includes/class-wpcode-snippet-execute.php:177
msgid "Start writing HTML and add PHP code like you would in a .php file with Universal snippets."
msgstr ""

#: includes/class-wpcode-snippet-execute.php:565
msgid "Snippet has not been activated due to an error."
msgstr ""

#: includes/class-wpcode-snippet-execute.php:569
msgid "Please click the back button in the browser to update the snippet."
msgstr ""

#: includes/class-wpcode-snippet-execute.php:572
msgid "WPCode has detected an error in one of the snippets which has now been automatically deactivated."
msgstr ""

#: includes/class-wpcode-snippet-execute.php:586
msgid "View Snippets With Errors"
msgstr ""

#: includes/class-wpcode-snippet-execute.php:600
msgid "View error logs"
msgstr ""

#: includes/class-wpcode-snippet-execute.php:609
msgid "Enable error logging"
msgstr ""

#: includes/class-wpcode-snippet.php:707
msgid "Untitled Snippet"
msgstr ""

#. translators: %s: Snippet title and ID used in the error log for clarity.
#: includes/class-wpcode-snippet.php:756
msgid "Snippet %s was automatically deactivated due to a fatal error."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:37
msgid "Page"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:48
msgid "Type of page"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:49
msgid "Choose a WordPress-specific type of page for your rule."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:53
msgid "Homepage"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:57
msgid "Archive"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:61
msgid "Single post/page"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:65
msgid "Search page"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:69
msgid "404 page"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:73
msgid "Author page"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:77
msgid "Blog home"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:85
msgid "Target by post type: posts, pages or custom post types."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:91
msgid "Referrer"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:92
msgid "Use the page referrer/last visited page url as a condition."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:97
msgid "Taxonomy page"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:98
msgid "Load only on pages for a specific category/taxonomy."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:104
msgid "Taxonomy term"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:105
msgid "Choose category/taxonomy terms to target for single or archive pages."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:113
msgid "Page URL"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:114
msgid "Use the page URL to limit where this snippet is loaded."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:119
msgid "Post meta"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:120
msgid "Target specific posts based on custom post meta values."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:124
msgid "Post Meta rules are a Pro feature"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:125
#: includes/conditional-logic/class-wpcode-conditional-page.php:136
msgid "Upgrade today to create conditional logic rules for specific pages or posts."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:130
msgid "Post/Page"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:131
msgid "Pick specific posts or pages to load the snippet on."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:135
msgid "Post specific rules are a Pro feature"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:141
msgid "Page Template"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:142
msgid "Load the snippet only on pages with a specific template."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:146
msgid "Page Template rules are a Pro feature"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:147
msgid "Upgrade today to create conditional logic rules for specific page templates."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:153
msgid "Load the snippet only on pages with a specific author."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:157
msgid "Post Author rules are a Pro feature"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-page.php:158
msgid "Upgrade today to create conditional logic rules based on the page/post author."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-user.php:37
msgid "User"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-user.php:48
msgid "Logged-in"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-user.php:49
msgid "Check if your site visitor is logged in."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-user.php:53
#: includes/generator/class-wpcode-generator-schema-fact-check.php:110
msgid "True"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-user.php:57
#: includes/generator/class-wpcode-generator-schema-fact-check.php:111
msgid "False"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-user.php:64
msgid "User Role"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-user.php:65
msgid "Target a specific user role."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-user.php:71
msgid "User Meta"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-user.php:72
msgid "Target users based on user meta values."
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-user.php:76
msgid "User Meta is a Pro Feature"
msgstr ""

#: includes/conditional-logic/class-wpcode-conditional-user.php:77
msgid "Get access to User Meta conditional logic rules by upgrading to PRO today."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:35
msgid "Admin Bar Menu"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:36
msgid "Add a custom admin bar menu with links or content."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:47
#: includes/generator/class-wpcode-generator-contact-methods.php:47
#: includes/generator/class-wpcode-generator-cronjob.php:47
#: includes/generator/class-wpcode-generator-hooks.php:1279
#: includes/generator/class-wpcode-generator-menu.php:47
#: includes/generator/class-wpcode-generator-post-status.php:47
#: includes/generator/class-wpcode-generator-post-type.php:47
#: includes/generator/class-wpcode-generator-query.php:72
#: includes/generator/class-wpcode-generator-schema-article.php:54
#: includes/generator/class-wpcode-generator-schema-book.php:54
#: includes/generator/class-wpcode-generator-schema-car.php:54
#: includes/generator/class-wpcode-generator-schema-course.php:54
#: includes/generator/class-wpcode-generator-schema-dataset.php:54
#: includes/generator/class-wpcode-generator-schema-event.php:61
#: includes/generator/class-wpcode-generator-schema-fact-check.php:54
#: includes/generator/class-wpcode-generator-schema-faq.php:54
#: includes/generator/class-wpcode-generator-schema-how-to.php:54
#: includes/generator/class-wpcode-generator-schema-job-posting.php:54
#: includes/generator/class-wpcode-generator-schema-movie.php:54
#: includes/generator/class-wpcode-generator-schema-music.php:54
#: includes/generator/class-wpcode-generator-schema-person.php:54
#: includes/generator/class-wpcode-generator-schema-product-review.php:54
#: includes/generator/class-wpcode-generator-schema-product.php:54
#: includes/generator/class-wpcode-generator-schema-recipe.php:54
#: includes/generator/class-wpcode-generator-schema-service.php:54
#: includes/generator/class-wpcode-generator-schema-software.php:54
#: includes/generator/class-wpcode-generator-schema-video.php:54
#: includes/generator/class-wpcode-generator-script.php:47
#: includes/generator/class-wpcode-generator-sidebar.php:47
#: includes/generator/class-wpcode-generator-style.php:47
#: includes/generator/class-wpcode-generator-taxonomy.php:47
#: includes/generator/class-wpcode-generator-widget.php:47
msgid "Info"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:54
#: includes/generator/class-wpcode-generator-contact-methods.php:54
#: includes/generator/class-wpcode-generator-cronjob.php:54
#: includes/generator/class-wpcode-generator-hooks.php:1286
#: includes/generator/class-wpcode-generator-menu.php:54
#: includes/generator/class-wpcode-generator-post-status.php:54
#: includes/generator/class-wpcode-generator-post-type.php:54
#: includes/generator/class-wpcode-generator-query.php:79
#: includes/generator/class-wpcode-generator-schema-article.php:60
#: includes/generator/class-wpcode-generator-schema-book.php:60
#: includes/generator/class-wpcode-generator-schema-car.php:60
#: includes/generator/class-wpcode-generator-schema-course.php:60
#: includes/generator/class-wpcode-generator-schema-dataset.php:60
#: includes/generator/class-wpcode-generator-schema-event.php:67
#: includes/generator/class-wpcode-generator-schema-fact-check.php:60
#: includes/generator/class-wpcode-generator-schema-faq.php:60
#: includes/generator/class-wpcode-generator-schema-how-to.php:60
#: includes/generator/class-wpcode-generator-schema-job-posting.php:60
#: includes/generator/class-wpcode-generator-schema-movie.php:60
#: includes/generator/class-wpcode-generator-schema-music.php:60
#: includes/generator/class-wpcode-generator-schema-person.php:60
#: includes/generator/class-wpcode-generator-schema-product-review.php:60
#: includes/generator/class-wpcode-generator-schema-product.php:60
#: includes/generator/class-wpcode-generator-schema-recipe.php:60
#: includes/generator/class-wpcode-generator-schema-service.php:60
#: includes/generator/class-wpcode-generator-schema-software.php:60
#: includes/generator/class-wpcode-generator-schema-video.php:60
#: includes/generator/class-wpcode-generator-script.php:54
#: includes/generator/class-wpcode-generator-sidebar.php:54
#: includes/generator/class-wpcode-generator-style.php:54
#: includes/generator/class-wpcode-generator-taxonomy.php:54
#: includes/generator/class-wpcode-generator-widget.php:54
msgid "Overview"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:55
msgid "Generate a snippet to add a custom menu to the admin bar by filling in a simple form."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:63
#: includes/generator/class-wpcode-generator-contact-methods.php:63
#: includes/generator/class-wpcode-generator-cronjob.php:68
#: includes/generator/class-wpcode-generator-hooks.php:1304
#: includes/generator/class-wpcode-generator-menu.php:68
#: includes/generator/class-wpcode-generator-post-status.php:63
#: includes/generator/class-wpcode-generator-post-type.php:63
#: includes/generator/class-wpcode-generator-query.php:93
#: includes/generator/class-wpcode-generator-script.php:63
#: includes/generator/class-wpcode-generator-sidebar.php:68
#: includes/generator/class-wpcode-generator-style.php:63
#: includes/generator/class-wpcode-generator-taxonomy.php:63
#: includes/generator/class-wpcode-generator-widget.php:63
msgid "Usage"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:65
#: includes/generator/class-wpcode-generator-contact-methods.php:65
msgid "Fill in the forms sections using the menu on the left."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:66
#: includes/generator/class-wpcode-generator-contact-methods.php:66
#: includes/generator/class-wpcode-generator-cronjob.php:71
#: includes/generator/class-wpcode-generator-hooks.php:1307
#: includes/generator/class-wpcode-generator-menu.php:71
#: includes/generator/class-wpcode-generator-post-status.php:66
#: includes/generator/class-wpcode-generator-post-type.php:66
#: includes/generator/class-wpcode-generator-query.php:96
#: includes/generator/class-wpcode-generator-script.php:66
#: includes/generator/class-wpcode-generator-sidebar.php:71
#: includes/generator/class-wpcode-generator-style.php:66
#: includes/generator/class-wpcode-generator-taxonomy.php:66
#: includes/generator/class-wpcode-generator-widget.php:66
msgid "Click the \"Update Code\" button."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:67
#: includes/generator/class-wpcode-generator-contact-methods.php:67
#: includes/generator/class-wpcode-generator-cronjob.php:72
#: includes/generator/class-wpcode-generator-hooks.php:1308
#: includes/generator/class-wpcode-generator-menu.php:72
#: includes/generator/class-wpcode-generator-post-status.php:67
#: includes/generator/class-wpcode-generator-post-type.php:67
#: includes/generator/class-wpcode-generator-query.php:97
#: includes/generator/class-wpcode-generator-script.php:67
#: includes/generator/class-wpcode-generator-sidebar.php:72
#: includes/generator/class-wpcode-generator-style.php:67
#: includes/generator/class-wpcode-generator-taxonomy.php:67
#: includes/generator/class-wpcode-generator-widget.php:67
msgid "Click on \"Use Snippet\" to create a new snippet with the generated code."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:68
#: includes/generator/class-wpcode-generator-contact-methods.php:68
#: includes/generator/class-wpcode-generator-cronjob.php:73
#: includes/generator/class-wpcode-generator-hooks.php:1309
#: includes/generator/class-wpcode-generator-menu.php:73
#: includes/generator/class-wpcode-generator-post-status.php:68
#: includes/generator/class-wpcode-generator-post-type.php:68
#: includes/generator/class-wpcode-generator-query.php:98
#: includes/generator/class-wpcode-generator-script.php:68
#: includes/generator/class-wpcode-generator-sidebar.php:73
#: includes/generator/class-wpcode-generator-style.php:68
#: includes/generator/class-wpcode-generator-taxonomy.php:68
#: includes/generator/class-wpcode-generator-widget.php:68
msgid "Activate and save the snippet and you're ready to go"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:77
#: includes/generator/class-wpcode-generator-contact-methods.php:77
#: includes/generator/class-wpcode-generator-cronjob.php:82
#: includes/generator/class-wpcode-generator-hooks.php:1318
#: includes/generator/class-wpcode-generator-menu.php:82
#: includes/generator/class-wpcode-generator-post-status.php:77
#: includes/generator/class-wpcode-generator-post-type.php:77
#: includes/generator/class-wpcode-generator-query.php:107
#: includes/generator/class-wpcode-generator-script.php:77
#: includes/generator/class-wpcode-generator-sidebar.php:82
#: includes/generator/class-wpcode-generator-style.php:77
#: includes/generator/class-wpcode-generator-taxonomy.php:77
#: includes/generator/class-wpcode-generator-widget.php:77
msgid "Examples"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:78
msgid "You could add a new admin bar menu for links you use often, a list of posts, a site you often visit when in the admin, etc."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:84
#: includes/generator/class-wpcode-generator-contact-methods.php:84
#: includes/generator/class-wpcode-generator-cronjob.php:89
#: includes/generator/class-wpcode-generator-menu.php:89
#: includes/generator/class-wpcode-generator-post-status.php:84
#: includes/generator/class-wpcode-generator-post-type.php:84
#: includes/generator/class-wpcode-generator-query.php:114
#: includes/generator/class-wpcode-generator-schema-how-to.php:67
#: includes/generator/class-wpcode-generator-schema-recipe.php:67
#: includes/generator/class-wpcode-generator-script.php:89
#: includes/generator/class-wpcode-generator-sidebar.php:89
#: includes/generator/class-wpcode-generator-style.php:89
#: includes/generator/class-wpcode-generator-taxonomy.php:84
#: includes/generator/class-wpcode-generator-widget.php:84
msgid "General"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:90
#: includes/generator/class-wpcode-generator-contact-methods.php:90
#: includes/generator/class-wpcode-generator-cronjob.php:95
#: includes/generator/class-wpcode-generator-menu.php:95
#: includes/generator/class-wpcode-generator-post-status.php:90
#: includes/generator/class-wpcode-generator-post-type.php:90
#: includes/generator/class-wpcode-generator-script.php:95
#: includes/generator/class-wpcode-generator-sidebar.php:95
#: includes/generator/class-wpcode-generator-style.php:95
#: includes/generator/class-wpcode-generator-taxonomy.php:90
msgid "Function name"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:91
#: includes/generator/class-wpcode-generator-cronjob.php:96
#: includes/generator/class-wpcode-generator-menu.php:96
#: includes/generator/class-wpcode-generator-post-status.php:91
#: includes/generator/class-wpcode-generator-post-type.php:91
#: includes/generator/class-wpcode-generator-script.php:96
#: includes/generator/class-wpcode-generator-sidebar.php:96
#: includes/generator/class-wpcode-generator-style.php:96
#: includes/generator/class-wpcode-generator-taxonomy.php:91
msgid "Make this unique to avoid conflicts with other snippets"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:101
msgid "Position"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:102
msgid "Select where you want the menu item to be displayed on the admin bar."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:106
msgid "Last item on the left"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:107
msgid "Before Site Name"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:108
msgid "After Site Name"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:109
msgid "Before \"New\" Button"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:110
msgid "After \"New\" Button"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:117
msgid "Menu Structure"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:123
msgid "Menu ID"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:124
msgid "Unique menu id for the admin bar menu."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:131
msgid "Menu Title"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:132
msgid "Text or HTML that will show up in the admin bar top-level item. Use HTML if you want to display an image."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:139
msgid "Menu item link"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:140
msgid "If left empty, the top level menu item will not be a link, just text."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:147
msgid "Menu item target"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:148
msgid "The menu item is a link use this field to set the target attribute. Use \"_blank\" to open the link in a new tab."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:158
msgid "Submenu Item Title"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:159
msgid "Text or HTML for the submenu item."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:167
msgid "Submenu item link"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:168
msgid "If left empty, this menu item will not be a link, just text."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:176
msgid "Submenu item target attribute"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:177
msgid "If the menu item is a link use this for the target attribute. Use \"_blank\" to open in a new tab."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:188
msgid "Add more submenu items"
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:189
msgid "Use the \"Add submenu item\" button below to add multiple submenu items."
msgstr ""

#: includes/generator/class-wpcode-generator-admin-bar.php:193
msgid "Add submenu item"
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:35
#: includes/generator/class-wpcode-generator-contact-methods.php:111
msgid "Contact Methods"
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:36
msgid "Add additional contact methods to WordPress user profiles."
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:55
msgid "Use this generator to create a snippet which adds more contact methods to your WordPress users profiles."
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:78
msgid "You can add extra fields for user profiles like their extended address, city, country, phone number, social media profiles (Facebook, Twitter, etc)."
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:91
msgid "Make this unique to avoid conflicts with other snippets."
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:101
#: includes/generator/class-wpcode-generator-cronjob.php:106
#: includes/generator/class-wpcode-generator-menu.php:106
#: includes/generator/class-wpcode-generator-post-status.php:101
#: includes/generator/class-wpcode-generator-post-type.php:101
#: includes/generator/class-wpcode-generator-sidebar.php:106
#: includes/generator/class-wpcode-generator-taxonomy.php:102
#: includes/generator/class-wpcode-generator-widget.php:113
msgid "Text Domain"
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:102
#: includes/generator/class-wpcode-generator-cronjob.php:107
#: includes/generator/class-wpcode-generator-menu.php:107
#: includes/generator/class-wpcode-generator-post-status.php:102
#: includes/generator/class-wpcode-generator-post-type.php:102
#: includes/generator/class-wpcode-generator-sidebar.php:107
#: includes/generator/class-wpcode-generator-taxonomy.php:103
msgid "Optional text domain for translations."
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:117
msgid "Contact Method Slug"
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:118
msgid "A lowercase with no spaces slug for usage in the code. For example: \"facebook\" or \"telephone\"."
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:126
msgid "Contact Method Label"
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:127
msgid "This will show up as a label next to the contact method field. For example: \"Facebook URL\" or \"Phone number\"."
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:138
msgid "Add more contact methods"
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:139
msgid "Use the \"Add contact method\" button below to add as many contact methods as you wish."
msgstr ""

#: includes/generator/class-wpcode-generator-contact-methods.php:143
msgid "Add contact method"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:35
msgid "Schedule a Cron Job"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:36
msgid "Generate a snippet to schedule a recurring event using the WordPress cron."
msgstr ""

#. Translators: Placeholders add links to the wordpress.org references.
#: includes/generator/class-wpcode-generator-cronjob.php:57
msgid "This generator makes it easy to generate a snippet that will schedule a recurring event using %1$swp_schedule_event%2$s."
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:70
#: includes/generator/class-wpcode-generator-hooks.php:1306
#: includes/generator/class-wpcode-generator-menu.php:70
#: includes/generator/class-wpcode-generator-post-status.php:65
#: includes/generator/class-wpcode-generator-post-type.php:65
#: includes/generator/class-wpcode-generator-query.php:95
#: includes/generator/class-wpcode-generator-script.php:65
#: includes/generator/class-wpcode-generator-sidebar.php:70
#: includes/generator/class-wpcode-generator-style.php:65
#: includes/generator/class-wpcode-generator-taxonomy.php:65
#: includes/generator/class-wpcode-generator-widget.php:65
msgid "Fill in the forms using the menu on the left."
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:83
msgid "You may want to run some code once every hour, day or week, for example you could use this to send an email with the number of published posts every week."
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:116
#: includes/lite/conditional-logic/class-wpcode-conditional-schedule.php:37
msgid "Schedule"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:122
msgid "Recurrence"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:123
msgid "Choose how often you want this event to run."
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:127
msgid "Hourly"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:128
msgid "Twice Daily"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:129
msgid "Daily"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:130
msgid "Custom"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:138
msgid "Custom Recurrence Name"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:139
msgid "This is the recurrence name slug, lowercase and no space."
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:145
msgid "Custom Recurrence Label"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:148
msgid "This label will be used in a list of cron events, for example."
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:152
msgid "Custom Recurrence Interval"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:155
msgid "The number of seconds of this interval."
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:161
#: includes/generator/class-wpcode-generator-hooks.php:1379
msgid "Code"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:167
#: includes/generator/class-wpcode-generator-hooks.php:1342
msgid "Hook name"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:168
msgid "Unique name of your hook used to run when scheduled."
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:177
#: includes/generator/class-wpcode-generator-hooks.php:1385
msgid "PHP Code"
msgstr ""

#: includes/generator/class-wpcode-generator-cronjob.php:178
msgid "Custom PHP code that will run when the event is triggered."
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:35
msgid "Hooks"
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:36
msgid "Generate a snippet for an action or a filter using any available hook."
msgstr ""

#. Translators: Placeholders add links to the wordpress.org references.
#: includes/generator/class-wpcode-generator-hooks.php:1289
msgid "Using this generator you can safely add custom %1$shooks%2$s using either %3$sadd_action%4$s or %5$sadd_filter%6$s."
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:1319
msgid "You can use this to quickly get started with adding an action or filter."
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:1325
msgid "Hook Details"
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:1331
msgid "Hook type"
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:1332
msgid "Can be either an action or a filter"
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:1336
msgid "Action"
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:1343
msgid "Input hook name or pick one from the suggested list as you type."
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:1353
msgid "Callback function"
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:1354
msgid "Name of the function you want to add to this hook."
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:1361
msgid "Priority of this hook, by default 10."
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:1370
msgid "Arguments list"
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:1371
msgid "Add comma-separated custom arguments that will be passed to the callback function depending on the action/filter."
msgstr ""

#: includes/generator/class-wpcode-generator-hooks.php:1386
msgid "Custom PHP code you want to run in the function, you can also edit this after you create the snippet."
msgstr ""

#: includes/generator/class-wpcode-generator-menu.php:35
msgid "Navigation Menu"
msgstr ""

#: includes/generator/class-wpcode-generator-menu.php:36
msgid "Generate a snippet to register new navigation menus for your website."
msgstr ""

#. Translators: Placeholders add links to the wordpress.org references.
#: includes/generator/class-wpcode-generator-menu.php:57
msgid "This generator makes it easy to add new navigation menus to your website using the \"register_nav_menus\" function."
msgstr ""

#: includes/generator/class-wpcode-generator-menu.php:83
msgid "You can add a new navigation menu for your website to display in a flyout menu that is not part of the theme, for example."
msgstr ""

#: includes/generator/class-wpcode-generator-menu.php:116
msgid "Menus"
msgstr ""

#: includes/generator/class-wpcode-generator-menu.php:122
msgid "Menu name"
msgstr ""

#: includes/generator/class-wpcode-generator-menu.php:123
msgid "This is the menu name slug, lowercase and no space."
msgstr ""

#: includes/generator/class-wpcode-generator-menu.php:130
msgid "Menu label"
msgstr ""

#: includes/generator/class-wpcode-generator-menu.php:131
msgid "Add a descriptive label for this menu in the admin."
msgstr ""

#: includes/generator/class-wpcode-generator-menu.php:141
msgid "Add another menu"
msgstr ""

#: includes/generator/class-wpcode-generator-menu.php:142
msgid "Use the \"Add menu\" button below to add as many menu locations as you need."
msgstr ""

#: includes/generator/class-wpcode-generator-menu.php:146
msgid "Add Menu"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:35
#: includes/generator/class-wpcode-generator-post-status.php:117
msgid "Post Status"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:36
msgid "Use this tool to generate a custom post status for your posts."
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:55
msgid "Generate custom post statuses for your posts to improve the way you manage content."
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:78
msgid "You could add a new status called \"Pending Review\" that your authors can use before the content will be published"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:118
msgid "Name of status used in the code, lowercase maximum 32 characters."
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:129
msgid "The singular name that will be displayed in the admin. "
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:136
#: includes/generator/class-wpcode-generator-post-type.php:144
#: includes/generator/class-wpcode-generator-taxonomy.php:137
msgid "Name (Plural)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:137
msgid "The post status plural name. For example: Drafts."
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:146
#: includes/generator/class-wpcode-generator-post-type.php:441
#: includes/generator/class-wpcode-generator-taxonomy.php:309
msgid "Visibility"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:152
#: includes/generator/class-wpcode-generator-post-type.php:447
#: includes/generator/class-wpcode-generator-taxonomy.php:315
msgid "Public"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:153
#: includes/generator/class-wpcode-generator-post-status.php:167
msgid "Should the posts with this status be visible in the frontend?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:156
#: includes/generator/class-wpcode-generator-post-status.php:184
msgid "Yes - Default"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:157
#: includes/generator/class-wpcode-generator-post-status.php:185
#: includes/generator/class-wpcode-generator-post-type.php:411
#: includes/generator/class-wpcode-generator-post-type.php:426
#: includes/generator/class-wpcode-generator-post-type.php:454
#: includes/generator/class-wpcode-generator-post-type.php:465
#: includes/generator/class-wpcode-generator-post-type.php:479
#: includes/generator/class-wpcode-generator-post-type.php:521
#: includes/generator/class-wpcode-generator-post-type.php:532
#: includes/generator/class-wpcode-generator-post-type.php:552
#: includes/generator/class-wpcode-generator-post-type.php:622
#: includes/generator/class-wpcode-generator-post-type.php:636
#: includes/generator/class-wpcode-generator-post-type.php:647
#: includes/generator/class-wpcode-generator-query.php:137
#: includes/generator/class-wpcode-generator-query.php:342
#: includes/generator/class-wpcode-generator-query.php:437
#: includes/generator/class-wpcode-generator-script.php:210
#: includes/generator/class-wpcode-generator-script.php:229
#: includes/generator/class-wpcode-generator-style.php:211
#: includes/generator/class-wpcode-generator-style.php:230
#: includes/generator/class-wpcode-generator-taxonomy.php:322
#: includes/generator/class-wpcode-generator-taxonomy.php:336
#: includes/generator/class-wpcode-generator-taxonomy.php:347
#: includes/generator/class-wpcode-generator-taxonomy.php:361
#: includes/generator/class-wpcode-generator-taxonomy.php:372
#: includes/generator/class-wpcode-generator-taxonomy.php:417
msgid "No"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:166
msgid "Exclude from search results"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:171
#: includes/generator/class-wpcode-generator-post-status.php:196
msgid "No - Default"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:180
msgid "Show in admin all list"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:181
msgid "Show statuses in the edit listing of the post."
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:191
msgid "Show in admin status list"
msgstr ""

#: includes/generator/class-wpcode-generator-post-status.php:192
msgid "Show statuses list at the top of the edit listings. e.g. Published (12) Custom Status (2)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:35
#: includes/generator/class-wpcode-generator-post-type.php:111
msgid "Post Type"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:36
msgid "Use this tool to generate a custom post type for your website."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:55
msgid "Generate custom post types for your website using a snippet."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:78
msgid "You can add custom post types for specific items that are not blog posts, for example, if your site is about music you can have post types for artists, albums or songs."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:117
msgid "Post Type Key"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:118
msgid "Name of post type used in the code, lowercase maximum 20 characters."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:125
#: includes/generator/class-wpcode-generator-schema-how-to.php:82
#: includes/generator/class-wpcode-generator-schema-movie.php:83
#: includes/generator/class-wpcode-generator-schema-music.php:83
#: includes/generator/class-wpcode-generator-schema-person.php:83
#: includes/generator/class-wpcode-generator-schema-recipe.php:83
#: includes/generator/class-wpcode-generator-sidebar.php:138
#: includes/generator/class-wpcode-generator-widget.php:150
#: includes/generator/class-wpcode-generator-widget.php:223
msgid "Description"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:126
msgid "A short description of the post type."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:137
msgid "The singular post type name (e.g. Artist, Album, Song)."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:145
msgid "The post type plural name (e.g. Artists, Albums, Songs)."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:155
msgid "Link To Taxonomies"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:156
msgid "Comma-separated list of Taxonomies (e.g. post_tag, category)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:163
#: includes/generator/class-wpcode-generator-taxonomy.php:156
msgid "Hierarchical"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:164
msgid "Hierarchical post types can have parents/children."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:168
msgid "Yes, like pages"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:169
msgid "No, like posts"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:176
#: includes/generator/class-wpcode-generator-taxonomy.php:169
msgid "Labels"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:182
#: includes/generator/class-wpcode-generator-taxonomy.php:175
msgid "Menu Name"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:189
msgid "Admin Bar Name"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:196
msgid "Archives"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:203
msgid "Attributes"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:210
#: includes/generator/class-wpcode-generator-taxonomy.php:189
msgid "Parent Item"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:217
#: includes/generator/class-wpcode-generator-taxonomy.php:182
msgid "All Items"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:224
#: includes/generator/class-wpcode-generator-taxonomy.php:210
msgid "Add New Item"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:238
msgid "New Item"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:248
#: includes/generator/class-wpcode-generator-taxonomy.php:220
msgid "Edit Item"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:255
#: includes/generator/class-wpcode-generator-taxonomy.php:227
msgid "Update Item"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:262
#: includes/generator/class-wpcode-generator-taxonomy.php:234
msgid "View Item"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:269
msgid "View Items"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:276
msgid "Search Item"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:283
#: includes/generator/class-wpcode-generator-taxonomy.php:279
msgid "Not Found"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:290
msgid "Not Found in Trash"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:297
#: includes/generator/class-wpcode-generator-schema-article.php:140
msgid "Featured Image"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:304
msgid "Set featured image"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:314
msgid "Remove featured image"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:321
msgid "Use as featured image"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:328
msgid "Insert into item"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:335
msgid "Uploaded to this item"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:342
#: includes/generator/class-wpcode-generator-taxonomy.php:293
msgid "Items list"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:349
#: includes/generator/class-wpcode-generator-taxonomy.php:300
msgid "Items list navigation"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:356
msgid "Filter items list"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:365
#: includes/generator/class-wpcode-generator-widget.php:239
msgid "Options"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:371
msgid "Supports"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:372
msgid "Select which features this post type should support"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:376
#: includes/generator/class-wpcode-generator-query.php:300
#: includes/generator/class-wpcode-generator-schema-how-to.php:73
msgid "Title"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:377
msgid "Content Editor"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:379
msgid "Featured image"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:380
msgid "Excerpt"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:381
msgid "Trackbacks"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:382
#: includes/generator/class-wpcode-generator-query.php:487
msgid "Custom Fields"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:383
msgid "Comments"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:385
msgid "Page Attributes"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:386
msgid "Post Formats"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:394
msgid "Exclude From Search"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:395
msgid "Exclude the posts of this post type from search results?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:400
#: includes/generator/class-wpcode-generator-post-type.php:758
#: includes/generator/class-wpcode-generator-taxonomy.php:427
#: includes/generator/class-wpcode-generator-taxonomy.php:506
msgid "No - default"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:405
msgid "Enable Export"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:406
msgid "Allow exporting posts of this post type in Tools > Export."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:410
#: includes/generator/class-wpcode-generator-post-type.php:424
#: includes/generator/class-wpcode-generator-post-type.php:453
#: includes/generator/class-wpcode-generator-post-type.php:464
#: includes/generator/class-wpcode-generator-post-type.php:478
#: includes/generator/class-wpcode-generator-post-type.php:520
#: includes/generator/class-wpcode-generator-post-type.php:531
#: includes/generator/class-wpcode-generator-post-type.php:621
#: includes/generator/class-wpcode-generator-post-type.php:635
#: includes/generator/class-wpcode-generator-post-type.php:646
#: includes/generator/class-wpcode-generator-taxonomy.php:321
#: includes/generator/class-wpcode-generator-taxonomy.php:335
#: includes/generator/class-wpcode-generator-taxonomy.php:346
#: includes/generator/class-wpcode-generator-taxonomy.php:360
#: includes/generator/class-wpcode-generator-taxonomy.php:371
#: includes/generator/class-wpcode-generator-taxonomy.php:416
msgid "Yes - default"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:419
msgid "Enable Archives"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:420
msgid "Enables archives for this post type, the post type key is used as default."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:425
msgid "Yes - using custom slug"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:431
msgid "Custom Archive Slug"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:432
msgid "Custom archive slug (if selected above)."
msgstr ""

#. Translators: Placeholders add a link to the wp.org documentation page.
#: includes/generator/class-wpcode-generator-post-type.php:449
msgid "Should this post type be %1$svisible to authors%2$s?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:459
#: includes/generator/class-wpcode-generator-taxonomy.php:330
msgid "Show UI"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:460
msgid "Should this post type be visible in the Admin?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:473
msgid "Show in Menu?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:474
msgid "Should this post type be visible in the admin menu?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:484
msgid "Menu position"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:485
msgid "Choose the admin menu position."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:489
msgid "Below Posts (5)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:490
msgid "Below Media (10)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:491
msgid "Below Pages (20)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:492
msgid "Below Comments (30)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:493
msgid "Below First Separator (60)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:494
msgid "Below Plugins (65)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:495
msgid "Below Users (70)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:496
msgid "Below Tools (75)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:497
msgid "Below Settings (80)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:498
msgid "Below Second Separator (100)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:503
msgid "Menu Icon"
msgstr ""

#. Translators: Placeholder adds a link to the dashicons page.
#: includes/generator/class-wpcode-generator-post-type.php:505
msgid "Icon used next to the post type label in the admin menu. Use either a %1$sdashicon%2$s name or a full URL to an image file."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:515
msgid "Show in Admin Bar?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:516
msgid "Should this post type be visible in the admin bar?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:526
msgid "Show in Navigation Menus?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:527
msgid "Should this post type be available for use in menus (Appearance > Menus)?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:545
msgid "Publicly Queryable"
msgstr ""

#. Translators: Placeholders add link to wp.org docs.
#: includes/generator/class-wpcode-generator-post-type.php:547
msgid "Enable frontend requests using the query variable. %1$sSee Documentation.%2$s"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:560
msgid "Query variable"
msgstr ""

#. Translators: Placeholders add link to wp.org docs.
#: includes/generator/class-wpcode-generator-post-type.php:562
msgid "Key used for querying posts in the frontend. %1$sSee Documentation.%2$s"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:566
#: includes/generator/class-wpcode-generator-post-type.php:598
msgid "Default (post type key)"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:567
msgid "Custom variable"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:575
msgid "Custom Query Variable"
msgstr ""

#. Translators: Placeholder adds a link to the dashicons page.
#: includes/generator/class-wpcode-generator-post-type.php:577
msgid "The custom query variable to use for this post type. %1$sSee documentation%2$s."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:586
#: includes/generator/class-wpcode-generator-taxonomy.php:379
msgid "Permalinks"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:592
msgid "Rewrite Permalinks"
msgstr ""

#. Translators: Placeholders add link to wp.org docs.
#: includes/generator/class-wpcode-generator-post-type.php:594
msgid "Use the default permalink structure, disable permalinks for this post type or use custom options. %1$sSee Documentation.%2$s"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:599
#: includes/generator/class-wpcode-generator-taxonomy.php:391
msgid "Disable permalink rewrites"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:600
#: includes/generator/class-wpcode-generator-taxonomy.php:392
msgid "Custom permalink structure"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:608
#: includes/generator/class-wpcode-generator-taxonomy.php:400
msgid "URL Slug"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:609
msgid "The slug used for this post types base. (for example: artist in www.example.com/artist/ )"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:616
msgid "Use URL Slug?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:617
msgid "Use the post type name as URL slug base?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:630
msgid "Use pagination?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:631
msgid "Allow the post type to have pagination?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:641
msgid "Use feeds?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:642
msgid "Allow the post type to have feeds?"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:654
#: includes/generator/class-wpcode-generator-post-type.php:660
#: includes/generator/class-wpcode-generator-taxonomy.php:435
#: includes/generator/class-wpcode-generator-taxonomy.php:441
msgid "Capabilities"
msgstr ""

#. Translators: Placeholders add link to wp.org docs.
#: includes/generator/class-wpcode-generator-post-type.php:662
msgid "User capabilities in relation to this post type. %1$sSee Documentation.%2$s"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:666
#: includes/generator/class-wpcode-generator-taxonomy.php:447
msgid "Base capabilities - default"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:667
#: includes/generator/class-wpcode-generator-post-type.php:686
#: includes/generator/class-wpcode-generator-taxonomy.php:448
#: includes/generator/class-wpcode-generator-taxonomy.php:453
msgid "Custom Capabilities"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:672
msgid "Base Capablities Type"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:673
msgid "Use base capabilities from a core post type."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:677
msgid "Posts"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:678
msgid "Pages"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:687
msgid "Use the fields below to use custom capabilities for this post type."
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:691
msgid "Read Post"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:698
msgid "Read Private Posts"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:705
msgid "Publish Posts"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:715
msgid "Delete Posts"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:722
msgid "Edit Post"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:729
msgid "Edit Posts"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:736
msgid "Edit Others Posts"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:745
#: includes/generator/class-wpcode-generator-taxonomy.php:494
msgid "Rest API"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:751
#: includes/generator/class-wpcode-generator-taxonomy.php:500
msgid "Show in Rest API?"
msgstr ""

#. Translators: Placeholders add link to wp.org docs.
#: includes/generator/class-wpcode-generator-post-type.php:753
msgid "Add the post type to the WordPress wp-json API. %1$sSee Documentation.%2$s"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:766
#: includes/generator/class-wpcode-generator-taxonomy.php:514
msgid "Rest Base"
msgstr ""

#. Translators: Placeholders add link to wp.org docs.
#: includes/generator/class-wpcode-generator-post-type.php:768
msgid "The base slug that this post type will use in the REST API. %1$sSee Documentation.%2$s"
msgstr ""

#: includes/generator/class-wpcode-generator-post-type.php:777
#: includes/generator/class-wpcode-generator-taxonomy.php:524
msgid "Rest Controller Class"
msgstr ""

#. Translators: Placeholders add link to wp.org docs.
#: includes/generator/class-wpcode-generator-post-type.php:779
msgid "The name of a custom Rest Controller class instead of WP_REST_Posts_Controller. %1$sSee Documentation.%2$s"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:42
msgid "WP_Query"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:43
msgid "Generate a snippet using WP_Query to load posts from your website."
msgstr ""

#. Translators: Placeholders add links to the wordpress.org references.
#: includes/generator/class-wpcode-generator-query.php:82
msgid "This generator makes it easy for you to create custom queries using %1$sWP_Query%2$s which you can then extend to display posts or similar."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:108
msgid "You can use this generator to get quickly started with a query for all the posts of an author and display them using the shortcode functionality of WPCode or automatically displaying the posts using the auto-insert option."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:120
msgid "Query variable name"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:121
msgid "If you want to use something more specific. The leading $ will be automatically added."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:131
msgid "Include loop"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:132
msgid "Select yes if you want to include an empty loop of the results that you can fill in for output."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:144
msgid "IDs & Parents"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:150
msgid "Post ID(s)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:151
msgid "Query a specific post ID or comma-separated list of ids. Cannot be combined with \"Post ID not in\" below."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:158
msgid "Post ID not in"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:159
msgid "Post ids to exclude from this query. Cannot be combined with \"Post ID(s)\" above."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:169
msgid "Post parent ID(s)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:170
msgid "Comma-separated list of post parent ids if the post type is hierarchical (like pages)."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:177
msgid "Post parent not in"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:178
msgid "Comma-separated list of post parent ids to exclude."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:188
msgid "Post slugs"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:189
msgid "Comma-separated list of post slugs to query by."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:198
msgid "Type & Status"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:205
msgid "Post type to query by, start typing to get suggestions."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:215
msgid "Post status"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:216
msgid "Post status to query by."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:231
msgid "Author ID(s)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:232
msgid "Author ID or comma-separated list of ids."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:238
msgid "Author not in"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:239
msgid "Comma-separated list of author ids to exclude from the query."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:250
msgid "Author name"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:251
msgid "Use the \"user_nicename\" parameter to query by author."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:259
msgid "Search"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:265
msgid "Search term"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:266
msgid "Search for posts by this search term."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:274
msgid "Order"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:280
msgid "Results Order"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:284
msgid "Descending order (3, 2, 1; c, b, a)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:285
msgid "Ascending order (1, 2, 3; a, b, c)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:293
msgid "Order by"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:297
msgid "No order (none)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:301
msgid "Slug (name)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:302
msgid "Post type (type)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:303
msgid "Date (default)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:304
msgid "Modified date"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:305
msgid "Parent id"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:306
msgid "Random"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:307
msgid "Comment count"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:308
msgid "Relevance (for search)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:309
msgid "Page Order (menu_order)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:311
msgid "Meta value"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:312
msgid "Numerical meta value (meta_value_num)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:313
msgid "Order of ids in post__in"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:314
msgid "Order of names in post_name__in"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:315
msgid "Order of ids in post_parent__in"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:320
#: includes/generator/class-wpcode-generator-query.php:493
msgid "Meta Key"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:321
msgid "Meta key to use if you choose to order by meta value."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:331
msgid "Pagination"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:337
msgid "Use Pagination"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:340
msgid "Choose no to display all posts (not recommended)."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:343
msgid "Yes (default)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:348
msgid "Page number"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:349
msgid "Which page to show."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:358
msgid "Posts per page"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:359
msgid "How many posts should be displayed per page."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:365
msgid "Offset"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:366
msgid "Number of posts to skip."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:375
msgid "Ignore sticky posts"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:380
msgid "No (default)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:387
#: includes/generator/class-wpcode-generator-query.php:393
#: includes/generator/class-wpcode-generator-taxonomy.php:35
#: includes/generator/class-wpcode-generator-taxonomy.php:112
msgid "Taxonomy"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:394
msgid "Taxonomy slug that you want to query by."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:402
msgid "Field"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:403
msgid "Select taxonomy term by."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:409
msgid "Term ID (default)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:410
msgid "Term Name"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:411
msgid "Term Slug"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:412
msgid "Term Taxonomy ID"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:417
msgid "Terms"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:418
msgid "Comma-separated list of terms to query by."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:430
msgid "Include Children"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:434
msgid "Whether or not to include children for hierarchical taxonomies."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:443
msgid "Operator"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:447
msgid "Operator to test relation by."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:465
msgid "Add another taxonomy"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:466
msgid "Use the \"Add Taxonomy\" button below to query multiple taxonomies."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:470
msgid "Add Taxonomy"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:475
msgid "Tax Relation"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:479
#: includes/generator/class-wpcode-generator-query.php:579
msgid "AND (default)"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:480
#: includes/generator/class-wpcode-generator-query.php:580
msgid "OR"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:494
msgid "The key of the custom field."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:502
msgid "Meta Value"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:503
msgid "Value to query the meta by."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:515
msgid "How to compare the value for querying by meta."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:542
msgid "Type"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:543
msgid "Type of custom field."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:565
msgid "Add another meta query"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:566
msgid "Use the \"Add Meta\" button below to use multiple meta queries."
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:570
msgid "Add Meta"
msgstr ""

#: includes/generator/class-wpcode-generator-query.php:575
msgid "Relation"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:42
msgid "Article Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:43
msgid "Generate schema markup for articles, blog posts, and news articles."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:61
msgid "This generator creates Article schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:67
msgid "Article Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:73
msgid "Article Title"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:74
msgid "The title of the article."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:77
msgid "My Article Title"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:83
msgid "Article Description"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:84
msgid "A brief description or summary of the article."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:87
msgid "Description of the article..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:96
msgid "Article Type"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:97
msgid "The type of article."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:101
msgid "Article"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:102
msgid "Blog Post"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:103
msgid "News Article"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:104
msgid "Tech Article"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:105
msgid "Scholarly Article"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:106
msgid "Social Media Post"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:111
msgid "Article URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:112
msgid "The URL of the article."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:124
msgid "Published Date"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:125
msgid "The date when the article was published."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:132
msgid "Modified Date"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:133
msgid "The date when the article was last modified."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:141
msgid "URL of the article's featured image."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:159
msgid "The name of the article author."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:162
#: includes/generator/class-wpcode-generator-schema-book.php:169
#: includes/generator/class-wpcode-generator-schema-course.php:158
msgid "John Doe"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:169
#: includes/generator/class-wpcode-generator-schema-book.php:176
msgid "The URL of the author's profile or website."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:180
#: includes/generator/class-wpcode-generator-schema-book.php:187
msgid "Publisher"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:186
#: includes/generator/class-wpcode-generator-schema-article.php:190
#: includes/generator/class-wpcode-generator-schema-book.php:193
#: includes/generator/class-wpcode-generator-schema-book.php:197
#: includes/generator/class-wpcode-generator-schema-dataset.php:105
#: includes/generator/class-wpcode-generator-schema-software.php:156
msgid "Publisher Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:187
#: includes/generator/class-wpcode-generator-schema-book.php:194
msgid "The name of the publisher."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:196
#: includes/generator/class-wpcode-generator-schema-book.php:203
#: includes/generator/class-wpcode-generator-schema-software.php:176
msgid "Publisher Logo"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-article.php:197
#: includes/generator/class-wpcode-generator-schema-book.php:204
msgid "URL of the publisher's logo."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:42
msgid "Book Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:43
msgid "Generate schema markup for books, including novels, textbooks, and publications."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:61
msgid "This generator creates Book schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:67
msgid "Book Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:73
msgid "Book Title"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:74
msgid "The title of the book."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:77
msgid "My Book Title"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:83
msgid "Book Description"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:84
msgid "A brief description or summary of the book."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:87
msgid "Description of the book..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:93
#: includes/generator/class-wpcode-generator-schema-fact-check.php:142
msgid "Date Published"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:94
msgid "The date when the book was published."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:103
msgid "ISBN"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:104
msgid "The ISBN of the book."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:111
msgid "Book URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:112
msgid "The URL where the book can be purchased or viewed."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:121
msgid "Book Edition"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:122
msgid "The edition of the book."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:132
msgid "Number of Pages"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:133
msgid "The number of pages in the book."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:140
msgid "Book Format"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:141
msgid "The format of the book (e.g., Hardcover, Paperback, EBook)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:148
msgid "Book Cover Image"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:149
msgid "URL of the book's cover image."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-book.php:166
msgid "The name of the book author."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:42
msgid "Car Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:43
msgid "Generate schema markup for cars and vehicles to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:61
msgid "This generator creates Car schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:67
msgid "Vehicle Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:73
msgid "Vehicle Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:74
msgid "The name or model of the vehicle."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:77
msgid "Toyota Camry"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:83
msgid "Vehicle Description"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:84
msgid "A brief description of the vehicle."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:87
msgid "Description of the vehicle..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:93
msgid "Vehicle URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:94
msgid "The URL where the vehicle can be viewed or purchased."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:105
msgid "Brand"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:106
msgid "The brand or manufacturer of the vehicle."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:113
msgid "Vehicle Identification Number (VIN)"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:114
msgid "The VIN of the vehicle."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:121
msgid "Model Year"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:122
msgid "The model year of the vehicle."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:132
msgid "Fuel Type"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:133
msgid "The type of fuel used by the vehicle."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:140
msgid "Vehicle Image"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:141
msgid "URL of the vehicle's image."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:152
msgid "Seller"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:158
msgid "Seller Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:159
msgid "The name of the seller or dealership."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:162
msgid "ABC Motors"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:168
msgid "Seller URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:169
msgid "The URL of the seller's website."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:180
msgid "Offer"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:186
#: includes/generator/class-wpcode-generator-schema-course.php:193
#: includes/generator/class-wpcode-generator-schema-event.php:263
#: includes/generator/class-wpcode-generator-schema-product.php:158
#: includes/generator/class-wpcode-generator-schema-software.php:193
msgid "Price"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:187
msgid "The price of the vehicle."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:194
msgid "Price Currency"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:195
#: includes/generator/class-wpcode-generator-schema-product.php:169
#: includes/generator/class-wpcode-generator-schema-software.php:202
msgid "The currency of the price (e.g., USD, EUR)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:202
#: includes/generator/class-wpcode-generator-schema-course.php:228
#: includes/generator/class-wpcode-generator-schema-event.php:310
#: includes/generator/class-wpcode-generator-schema-product.php:178
#: includes/generator/class-wpcode-generator-schema-software.php:209
msgid "Availability"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:203
msgid "The availability status of the vehicle."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:207
#: includes/generator/class-wpcode-generator-schema-course.php:233
#: includes/generator/class-wpcode-generator-schema-event.php:317
#: includes/generator/class-wpcode-generator-schema-product.php:185
msgid "In Stock"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:208
#: includes/generator/class-wpcode-generator-schema-course.php:234
#: includes/generator/class-wpcode-generator-schema-event.php:320
#: includes/generator/class-wpcode-generator-schema-product.php:186
msgid "Out of Stock"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:209
#: includes/generator/class-wpcode-generator-schema-event.php:319
msgid "Pre-Order"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-car.php:210
#: includes/generator/class-wpcode-generator-schema-course.php:236
#: includes/generator/class-wpcode-generator-schema-event.php:321
#: includes/generator/class-wpcode-generator-schema-product.php:188
msgid "Discontinued"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:42
msgid "Course Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:43
msgid "Generate schema markup for courses to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:61
msgid "This generator creates Course schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:67
msgid "Course Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:74
msgid "The name of the course."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:77
msgid "Introduction to Web Development"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:84
msgid "A brief description of the course."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:87
msgid "Description of the course..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:93
msgid "Course URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:94
msgid "The URL where the course can be accessed."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:105
#: includes/generator/class-wpcode-generator-schema-service.php:140
msgid "Provider Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:106
msgid "The name of the course provider or institution."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:115
#: includes/generator/class-wpcode-generator-schema-service.php:150
msgid "Provider URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:116
msgid "The URL of the course provider's website."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:128
msgid "Course Code"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:129
msgid "The course code or identifier."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:136
msgid "Course Image"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:137
msgid "URL of the course image."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:148
msgid "Instructor"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:154
msgid "Instructor Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:155
msgid "The name of the course instructor."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:164
msgid "Instructor URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:165
msgid "The URL of the instructor's profile or website."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:176
msgid "Pricing & Availability"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:182
msgid "Course Type"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:183
msgid "Whether this is a free or paid course."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:187
msgid "Paid Course"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:188
msgid "Free Course"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:194
msgid "The price of the course (leave empty for free courses)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:201
#: includes/generator/class-wpcode-generator-schema-event.php:274
#: includes/generator/class-wpcode-generator-schema-job-posting.php:259
#: includes/generator/class-wpcode-generator-schema-product.php:168
#: includes/generator/class-wpcode-generator-schema-software.php:201
msgid "Currency"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:202
msgid "The currency code (e.g., USD, EUR)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:212
#: includes/generator/class-wpcode-generator-schema-event.php:288
msgid "Valid From"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:213
msgid "The date when the course becomes available (YYYY-MM-DD)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:220
msgid "Valid Until"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:221
msgid "The date when the course offer expires (YYYY-MM-DD)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:229
msgid "The availability status of the course."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-course.php:235
#: includes/generator/class-wpcode-generator-schema-product.php:187
msgid "Pre-order"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:42
msgid "Dataset Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:43
msgid "Generate schema markup for datasets to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:61
msgid "This generator creates Dataset schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:67
msgid "Dataset Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:73
msgid "Dataset Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:74
msgid "The name of the dataset."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:77
msgid "Global Climate Data 2023"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:83
msgid "Dataset Description"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:84
msgid "A brief description of the dataset."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:87
msgid "Description of the dataset..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:93
msgid "Dataset URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:94
msgid "The URL where the dataset can be accessed."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:106
msgid "The name of the dataset publisher."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:115
#: includes/generator/class-wpcode-generator-schema-software.php:166
msgid "Publisher URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:116
msgid "The URL of the publisher's website."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:128
#: includes/generator/class-wpcode-generator-schema-software.php:132
msgid "Version"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:129
msgid "The version of the dataset."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:136
msgid "License"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:137
msgid "The license under which the dataset is distributed."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:146
msgid "Distribution"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:152
msgid "Distribution URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:153
msgid "The URL where the dataset can be downloaded."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:162
msgid "File Format"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:163
msgid "The format of the dataset file (e.g., CSV, JSON, XML)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:170
msgid "File Size"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-dataset.php:171
msgid "The size of the dataset file."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:49
msgid "Event Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:50
msgid "Generate schema markup for conferences, concerts, exhibitions, and other events."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:68
msgid "This generator creates Event schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:74
msgid "Event Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:81
msgid "The name of the event."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:84
msgid "My Awesome Event"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:90
msgid "Event Description"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:91
msgid "A description of the event."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:94
msgid "Description of the event..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:100
msgid "Event Image URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:101
msgid "URL of an image representing the event."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:113
msgid "Start Date & Time"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:114
msgid "The start date and time (ISO 8601 format)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:121
msgid "End Date & Time"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:122
msgid "The end date and time (ISO 8601 format)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:129
msgid "Event Status"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:130
msgid "The current status of the event."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:134
msgid "Scheduled"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:135
msgid "Cancelled"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:136
msgid "Postponed"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:137
msgid "Rescheduled"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:142
msgid "Attendance Mode"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:143
msgid "Whether the event is online, offline, or mixed."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:147
msgid "Offline"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:148
msgid "Online"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:149
msgid "Mixed (Online & Offline)"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:162
msgid "Venue Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:163
msgid "The name of the venue where the event takes place."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:166
msgid "Event Center"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:175
#: includes/generator/class-wpcode-generator-schema-job-posting.php:206
msgid "Street Address"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:176
msgid "The street address of the venue."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:179
#: includes/generator/class-wpcode-generator-schema-job-posting.php:210
msgid "123 Main St"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:184
#: includes/generator/class-wpcode-generator-schema-job-posting.php:215
msgid "City"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:185
msgid "The city of the venue."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:188
#: includes/generator/class-wpcode-generator-schema-job-posting.php:219
msgid "New York"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:193
#: includes/generator/class-wpcode-generator-schema-job-posting.php:224
msgid "Postal Code"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:194
msgid "The postal code of the venue."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:197
#: includes/generator/class-wpcode-generator-schema-job-posting.php:228
msgid "10001"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:202
#: includes/generator/class-wpcode-generator-schema-job-posting.php:233
msgid "Country Code"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:203
msgid "The country code of the venue (e.g., US, UK, CA)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:206
#: includes/generator/class-wpcode-generator-schema-job-posting.php:237
msgid "US"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:213
msgid "Performer"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:219
msgid "Performer Type"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:220
msgid "The type of performer at the event."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:224
msgid "No Performer"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:225
msgid "Person"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:226
msgid "Performing Group"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:227
msgid "Music Group"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:228
msgid "Dance Group"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:229
msgid "Theater Group"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:234
msgid "Performer Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:235
msgid "The name of the performer or group."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:238
msgid "The Performers"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:246
#: includes/generator/class-wpcode-generator-schema-software.php:187
msgid "Offers"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:252
#: includes/generator/class-wpcode-generator-schema-product.php:148
msgid "Offer Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:253
msgid "The name of the offer (e.g., General Admission)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:258
msgid "General Admission"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:264
msgid "The price of the ticket."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:269
msgid "25.00"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:275
#: includes/generator/class-wpcode-generator-schema-job-posting.php:260
msgid "The currency code (e.g., USD, EUR, GBP)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:280
#: includes/generator/class-wpcode-generator-schema-job-posting.php:263
msgid "USD"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:289
msgid "The date when the ticket goes on sale (YYYY-MM-DD)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:294
msgid "2025-01-01"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:299
msgid "Ticket URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:300
msgid "URL where tickets can be purchased."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:311
msgid "The availability status of tickets."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:318
#: includes/generator/class-wpcode-generator-schema-product.php:192
msgid "Sold Out"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-event.php:330
#: includes/generator/class-wpcode-generator-schema-product.php:211
msgid "Add Another Offer"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:42
msgid "Fact Check Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:43
msgid "Generate schema markup for fact-checking content to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:61
msgid "This generator creates Fact Check schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:67
msgid "Fact Check Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:73
msgid "Claim Title"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:74
msgid "The title of the claim being fact-checked."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:77
msgid "Enter the claim title..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:83
msgid "Claim Description"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:84
msgid "A detailed description of the claim being fact-checked."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:87
msgid "Describe the claim in detail..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:93
msgid "Fact Check URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:94
msgid "The URL of the fact check page."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:105
msgid "Fact Check Rating"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:106
msgid "The rating of the fact check."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:112
msgid "Partially True"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:113
msgid "Partially False"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:114
msgid "Mostly True"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:115
msgid "Mostly False"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:121
msgid "The name of the fact checker."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:124
msgid "Enter the fact checker name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:131
msgid "The URL of the fact checker."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:143
msgid "The date when the fact check was published."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:149
msgid "Date Modified"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-fact-check.php:150
msgid "The date when the fact check was last modified."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-faq.php:42
msgid "FAQ Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-faq.php:43
msgid "Generate schema markup for Frequently Asked Questions to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-faq.php:61
msgid "This generator creates FAQ schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-faq.php:67
msgid "FAQ Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-faq.php:73
msgid "Question"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-faq.php:74
msgid "The question text."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-faq.php:79
msgid "What is your question?"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-faq.php:83
msgid "Answer"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-faq.php:84
msgid "The answer to the question."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-faq.php:89
msgid "Enter your answer here..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-faq.php:97
msgid "Add Another FAQ Item"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:42
msgid "How-To Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:43
msgid "Generate schema markup for step-by-step instructions and tutorials."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:61
msgid "This generator creates How-To schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:74
msgid "The title of the how-to guide."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:83
msgid "A detailed description of the how-to guide."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:91
#: includes/generator/class-wpcode-generator-schema-recipe.php:164
msgid "Total Time"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:92
msgid "The total time required to complete the task (e.g., \"PT30M\" for 30 minutes)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:100
msgid "Steps"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:106
#: includes/generator/class-wpcode-generator-schema-recipe.php:188
msgid "Step Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:107
#: includes/generator/class-wpcode-generator-schema-recipe.php:189
msgid "The name/title of this step."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:117
#: includes/generator/class-wpcode-generator-schema-recipe.php:198
msgid "Step Text"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:118
#: includes/generator/class-wpcode-generator-schema-recipe.php:199
msgid "The detailed instructions for this step."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:128
msgid "Step URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:129
msgid "Optional URL for this step (e.g., to a detailed tutorial)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:139
#: includes/generator/class-wpcode-generator-schema-recipe.php:209
msgid "Step Image"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:140
#: includes/generator/class-wpcode-generator-schema-recipe.php:210
msgid "URL of an image for this step."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-how-to.php:153
#: includes/generator/class-wpcode-generator-schema-recipe.php:224
msgid "Add Another Step"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:42
msgid "Job Posting Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:43
msgid "Generate schema markup for job listings and employment opportunities."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:61
msgid "This generator creates Job Posting schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:67
msgid "Job Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:73
#: includes/generator/class-wpcode-generator-schema-person.php:114
msgid "Job Title"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:74
msgid "The title of the job posting."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:77
msgid "Software Engineer"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:83
msgid "Job Description"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:84
msgid "A detailed description of the job."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:87
msgid "Description of the job..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:95
msgid "Industry"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:96
msgid "The industry of the job (e.g., IT, Healthcare, Education)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:99
msgid "Information Technology"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:104
msgid "Employment Type"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:105
msgid "The type of employment."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:109
msgid "Full Time"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:110
msgid "Part Time"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:111
msgid "Contract"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:112
msgid "Temporary"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:113
msgid "Intern"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:114
msgid "Volunteer"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:115
msgid "Per Diem"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:116
msgid "Other"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:121
msgid "Job Location Type"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:122
msgid "The type of work location."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:126
msgid "Remote"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:127
msgid "On-site"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:128
msgid "Hybrid"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:136
msgid "Work Hours"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:137
msgid "The number of hours per week."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:145
msgid "Date Posted"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:146
msgid "The date when the job was posted."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:153
msgid "Valid Through"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:154
msgid "The date when the job posting expires."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:163
msgid "Organization"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:169
msgid "Organization Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:170
msgid "The name of the hiring organization."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:173
msgid "Company Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:179
msgid "Organization Website"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:180
msgid "The website URL of the organization."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:188
msgid "Organization Logo"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:189
msgid "URL of the organization logo."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:207
msgid "The street address of the job location."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:216
msgid "The city of the job location."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:225
msgid "The postal code of the job location."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:234
msgid "The country code of the job location (e.g., US, UK, CA)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:244
msgid "Salary"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:250
msgid "Base Salary"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:251
msgid "The base salary amount."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:268
msgid "Salary Unit"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:269
msgid "The unit of time for the salary."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:273
msgid "Per Hour"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:274
msgid "Per Day"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:275
msgid "Per Week"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:276
msgid "Per Month"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-job-posting.php:277
msgid "Per Year"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:42
msgid "Movie Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:43
msgid "Generate schema markup for movies to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:61
msgid "This generator creates Movie schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:67
msgid "Movie Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:73
msgid "Movie Title"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:74
msgid "The title of the movie."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:77
msgid "Enter the movie title..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:84
msgid "A detailed description of the movie."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:87
msgid "Describe the movie..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:93
msgid "Movie URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:94
msgid "The URL of the movie page."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:105
msgid "Thumbnail URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:106
msgid "The URL of the movie poster or image."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:114
#: includes/generator/class-wpcode-generator-schema-music.php:114
#: includes/generator/class-wpcode-generator-schema-software.php:140
msgid "Release Date"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:115
msgid "The date when the movie was released."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:122
#: includes/generator/class-wpcode-generator-schema-music.php:122
msgid "Duration"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:123
msgid "The duration of the movie in minutes."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:132
msgid "Director"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:133
msgid "The name of the movie director."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:136
msgid "Enter director name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:140
#: includes/generator/class-wpcode-generator-schema-music.php:140
msgid "Genre"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:141
msgid "The genre of the movie (e.g., Action, Comedy, Drama)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:148
msgid "Rating"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:149
msgid "The rating of the movie (e.g., PG-13, R)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:156
msgid "Production Company"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:157
msgid "The name of the production company."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-movie.php:160
msgid "Enter production company name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:42
msgid "Music Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:43
msgid "Generate schema markup for music content to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:61
msgid "This generator creates Music schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:67
msgid "Music Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:73
msgid "Music Title"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:74
msgid "The title of the music track or album."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:77
msgid "Enter the music title..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:84
msgid "A detailed description of the music."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:87
msgid "Describe the music..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:93
msgid "Music URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:94
msgid "The URL of the music page."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:105
msgid "Image Cover URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:106
msgid "The URL of the music cover art or image."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:115
msgid "The date when the music was released."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:123
msgid "The duration of the music in seconds."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:130
msgid "Artist"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:131
msgid "The name of the music artist."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:134
msgid "Enter artist name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:141
msgid "The genre of the music (e.g., Rock, Pop, Jazz)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:148
msgid "Album"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:149
msgid "The name of the album (if applicable)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:152
msgid "Enter album name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:156
msgid "Record Label"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:157
msgid "The name of the record label."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-music.php:160
msgid "Enter record label name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:42
msgid "Person Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:43
msgid "Generate schema markup for people to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:61
msgid "This generator creates Person schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:67
msgid "Person Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:74
msgid "The full name of the person."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:77
msgid "Enter the person's name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:84
msgid "A detailed description of the person."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:87
msgid "Describe the person..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:93
#: includes/generator/class-wpcode-generator-widget.php:190
msgid "URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:94
msgid "The URL of the person's page."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:105
msgid "Image URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:106
msgid "The URL of the person's photo."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:115
msgid "The person's job title or role."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:118
msgid "Enter job title..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:122
msgid "Works For"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:123
msgid "The organization the person works for."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:126
msgid "Enter organization name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:132
#: includes/generator/class-wpcode-generator-schema-service.php:187
#: includes/generator/class-wpcode-generator-widget.php:189
msgid "Email"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:133
msgid "The person's email address."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:140
#: includes/generator/class-wpcode-generator-schema-service.php:195
msgid "Telephone"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:141
msgid "The person's telephone number."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:148
msgid "Same As"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-person.php:149
msgid "URLs of the person's social media profiles (comma-separated)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:42
msgid "Product Review Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:43
msgid "Generate schema markup for product reviews to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:61
msgid "This generator creates Product Review schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:67
msgid "Review Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:73
msgid "Review Title"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:74
msgid "The title of the review."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:77
msgid "Enter the review title..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:83
msgid "Review Description"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:84
msgid "The detailed review content."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:87
msgid "Write your review..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:93
msgid "Review URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:94
msgid "The URL of the review page."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:105
msgid "Review Date"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:106
msgid "The date when the review was published."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:113
msgid "Review Rating"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:114
msgid "The rating given in the review (1-5)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:121
msgid "Reviewer Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:122
msgid "The name of the reviewer."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:125
msgid "Enter reviewer name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:131
#: includes/generator/class-wpcode-generator-schema-product.php:67
msgid "Product Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:137
#: includes/generator/class-wpcode-generator-schema-product.php:73
msgid "Product Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:138
msgid "The name of the product being reviewed."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:141
#: includes/generator/class-wpcode-generator-schema-product.php:77
msgid "Enter product name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:145
#: includes/generator/class-wpcode-generator-schema-product.php:93
msgid "Product URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:146
#: includes/generator/class-wpcode-generator-schema-product.php:94
msgid "The URL of the product page."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:155
#: includes/generator/class-wpcode-generator-schema-product.php:105
msgid "Product Image"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:156
#: includes/generator/class-wpcode-generator-schema-product.php:106
msgid "The URL of the product image."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:166
#: includes/generator/class-wpcode-generator-schema-product.php:114
msgid "Product Brand"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:167
#: includes/generator/class-wpcode-generator-schema-product.php:115
msgid "The brand or manufacturer of the product."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:170
#: includes/generator/class-wpcode-generator-schema-product.php:118
msgid "Enter brand name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:174
#: includes/generator/class-wpcode-generator-schema-product.php:124
msgid "Product SKU"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:175
#: includes/generator/class-wpcode-generator-schema-product.php:125
msgid "The SKU or model number of the product."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product-review.php:178
#: includes/generator/class-wpcode-generator-schema-product.php:128
msgid "Enter SKU..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:42
msgid "Product Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:43
msgid "Generate schema markup for products to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:61
msgid "This generator creates Product schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:74
msgid "The name of the product."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:83
msgid "Product Description"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:84
msgid "A detailed description of the product."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:87
msgid "Describe the product..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:132
msgid "Product GTIN"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:133
msgid "The GTIN (UPC, EAN, ISBN) of the product."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:136
msgid "Enter GTIN..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:142
msgid "Offer Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:149
msgid "A name to identify this offer (e.g., Regular Price, Sale Price, Bundle Offer)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:154
msgid "Regular Price"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:159
msgid "The price of the product."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:179
msgid "The availability status of the product."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:189
msgid "Limited Availability"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:190
msgid "Online Only"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:191
msgid "Pre-sale"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:197
msgid "Price Valid Until"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-product.php:198
msgid "The date until which the price is valid."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:42
msgid "Recipe Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:43
msgid "Generate schema markup for cooking recipes and food preparation instructions."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:61
msgid "This generator creates Recipe schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:73
msgid "Recipe Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:74
msgid "The name of the recipe."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:79
msgid "Classic Chocolate Chip Cookies"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:84
msgid "A detailed description of the recipe."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:89
msgid "A delicious and easy-to-make chocolate chip cookie recipe that will become your family favorite."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:93
msgid "Recipe Image"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:94
msgid "URL of the recipe image."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:103
msgid "The name of the recipe author."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:108
msgid "John Smith"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:114
msgid "Recipe Category"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:115
msgid "The category of the recipe (salad, dessert)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:118
msgid "Dessert, Main Course, Appetizer"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:122
msgid "Calories"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:123
msgid "The calorie content of the recipe."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:126
msgid "350 calories"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:130
msgid "Ingredients"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:131
msgid "List all ingredients, separated by commas."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:134
msgid "2 cups all-purpose flour, 1 cup butter, 2 eggs, 1 cup sugar"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:138
msgid "Recipe Cuisine"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:139
msgid "The cuisine type (Italian, Mexican)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:142
msgid "Italian, Mexican, Asian"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:148
msgid "Prep Time"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:149
msgid "Preparation time in ISO 8601 format (PT30M for 30 minutes)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:152
msgid "PT30M (30 minutes)"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:156
msgid "Cook Time"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:157
msgid "Cooking time in ISO 8601 format (PT1H for 1 hour)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:160
msgid "PT1H (1 hour)"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:165
msgid "Total time in ISO 8601 format."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:168
msgid "PT1H30M (1 hour 30 minutes)"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:172
msgid "Recipe Yield"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:173
msgid "Number of servings or yield amount."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:176
msgid "4 servings"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:182
msgid "Instructions"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:194
msgid "Preheat the oven"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-recipe.php:204
msgid "Preheat the oven to 350Â°F (175Â°C). Line a baking sheet with parchment paper."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:42
msgid "Service Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:43
msgid "Generate schema markup for services to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:61
msgid "This generator creates Service schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:67
msgid "Service Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:73
msgid "Service Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:74
msgid "The name of the service."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:77
msgid "Enter service name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:83
msgid "Service Description"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:84
msgid "A detailed description of the service."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:87
msgid "Describe the service..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:95
msgid "Service URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:96
msgid "The URL of the service page."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:105
msgid "Service Image"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:106
msgid "The URL of the service image."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:116
msgid "Service Type"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:117
msgid "The type of service (e.g., ProfessionalService, FinancialService)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:124
msgid "Area Served"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:125
msgid "The geographic area where the service is available."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:128
msgid "Enter area served..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:134
msgid "Service Provider"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:141
msgid "The name of the service provider."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:144
msgid "Enter provider name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:151
msgid "The URL of the service provider."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:162
msgid "Provider Logo"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:163
msgid "The URL of the provider logo."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:171
msgid "Provider Type"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:172
msgid "The type of provider (e.g., Organization, Person)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:181
msgid "Contact Information"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:188
msgid "The contact email address."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:196
msgid "The contact phone number."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:203
msgid "Address"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:204
msgid "The physical address."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-service.php:207
msgid "Enter address..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:42
msgid "Software Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:43
msgid "Generate schema markup for software applications to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:61
msgid "This generator creates Software schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:67
msgid "Software Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:73
msgid "Software Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:74
msgid "The name of the software application."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:77
msgid "Enter software name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:83
msgid "Software Description"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:84
msgid "A detailed description of the software."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:87
msgid "Describe the software..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:93
msgid "Software URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:94
msgid "The URL of the software page."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:105
msgid "Software Image"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:106
msgid "The URL of the software screenshot or logo."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:114
msgid "Application Category"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:115
msgid "The category of the software (e.g., BusinessApplication, GameApplication)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:122
#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:80
msgid "Operating System"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:123
msgid "The operating system(s) supported (e.g., Windows, macOS, Linux)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:126
msgid "Enter operating system..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:133
msgid "The version number of the software."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:141
msgid "The date when the software was released."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:150
msgid "Publisher Information"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:157
msgid "The name of the software publisher."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:160
msgid "Enter publisher name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:167
msgid "The URL of the publisher website."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:177
msgid "The URL of the publisher logo."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:194
msgid "The price of the software."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-software.php:210
msgid "The availability status of the software."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:42
msgid "Video Schema"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:43
msgid "Generate schema markup for videos to enhance search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:61
msgid "This generator creates Video schema.org markup for improved SEO and rich search results."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:67
msgid "Video Details"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:73
msgid "Video Title"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:74
msgid "The title of the video."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:77
msgid "Enter video title..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:83
msgid "Video Description"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:84
msgid "A detailed description of the video."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:87
msgid "Describe the video..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:93
msgid "Video URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:94
msgid "The URL of the video page."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:105
msgid "Video Embed URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:106
msgid "The URL of the embedded video (e.g., YouTube embed URL)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:113
msgid "Video Thumbnail"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:114
msgid "The URL of the video thumbnail image."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:124
msgid "Video Duration"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:125
msgid "The duration of the video in ISO 8601 format (e.g., PT1H30M for 1 hour 30 minutes)."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:132
msgid "Upload Date"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:133
msgid "The date when the video was uploaded."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:142
msgid "Creator Information"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:148
msgid "Creator Name"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:149
msgid "The name of the video creator."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:152
msgid "Enter creator name..."
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:156
msgid "Creator URL"
msgstr ""

#: includes/generator/class-wpcode-generator-schema-video.php:157
msgid "The URL of the creator website or profile."
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:35
msgid "Register Scripts"
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:36
msgid "Generate a snippet to load JavaScript scripts using wp_register_script."
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:55
msgid "Using this generator you can create a WordPress function to register and enqueue scripts."
msgstr ""

#. Translators: the placeholders add a link to getboostrap.com.
#: includes/generator/class-wpcode-generator-script.php:80
msgid "You can use this to load external scripts or even scripts from a theme or plugin. For example, you could load %1$sbootstrap%2$s from a cdn."
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:107
#: includes/generator/class-wpcode-generator-style.php:107
msgid "Action (hook)"
msgstr ""

#. Translators: placeholders add links to documentation on wordpress.org.
#: includes/generator/class-wpcode-generator-script.php:110
msgid "Hook used to add the scripts: %1$sfrontend%2$s, %3$sadmin%4$s, %5$slogin%6$s or %7$sembed%8$s."
msgstr ""

#. Translators: placeholder adds the hook name.
#: includes/generator/class-wpcode-generator-script.php:124
#: includes/generator/class-wpcode-generator-style.php:124
msgid "Frontend (%s)"
msgstr ""

#. Translators: placeholder adds the hook name.
#: includes/generator/class-wpcode-generator-script.php:126
#: includes/generator/class-wpcode-generator-style.php:126
msgid "Admin (%s)"
msgstr ""

#. Translators: placeholder adds the hook name.
#: includes/generator/class-wpcode-generator-script.php:128
#: includes/generator/class-wpcode-generator-style.php:128
msgid "Login (%s)"
msgstr ""

#. Translators: placeholder adds the hook name.
#: includes/generator/class-wpcode-generator-script.php:130
#: includes/generator/class-wpcode-generator-style.php:130
msgid "Embed (%s)"
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:137
msgid "Scripts"
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:143
msgid "Script name"
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:144
#: includes/generator/class-wpcode-generator-style.php:144
msgid "This will be used as an identifier in the code, should be lowercase with no spaces."
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:153
msgid "Script URL"
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:154
msgid "The full URL for the script e.g. https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js."
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:163
#: includes/generator/class-wpcode-generator-style.php:163
msgid "Dependencies"
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:164
msgid "Comma-separated list of scripts required for this script to load, e.g. jquery"
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:173
msgid "Script Version"
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:174
msgid "The script version."
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:186
msgid "Header or Footer?"
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:187
msgid "Load the script in the page head or in the footer."
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:199
msgid "Deregister script?"
msgstr ""

#. Translators: Placeholders for wp.org docs link.
#: includes/generator/class-wpcode-generator-script.php:202
msgid "Should the script be %1$sderegistered%2$s first? (for example, if you are replacing an existing script)."
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:217
msgid "Enqueue script?"
msgstr ""

#. Translators: Placeholders for wp.org docs link.
#: includes/generator/class-wpcode-generator-script.php:220
msgid "Should the script be %1$senqueued%2$s or just registered? (select \"No\" only if you intend enqueueing it later."
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:241
msgid "Add more scripts"
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:242
msgid "Use the \"Add script\" button below to add multiple scripts in this snippet."
msgstr ""

#: includes/generator/class-wpcode-generator-script.php:246
msgid "Add script"
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:35
msgid "Sidebar"
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:36
msgid "Generate a snippet to register a sidebar for your widgets."
msgstr ""

#. Translators: Placeholders add links to the wordpress.org references.
#: includes/generator/class-wpcode-generator-sidebar.php:57
msgid "This generator makes it easy to add sidebars to your website using the \"register_sidebar\" function."
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:83
msgid "You can add multiple widget areas for your footer or post-type specific sidebars."
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:116
msgid "Sidebars"
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:122
msgid "Sidebar Id"
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:123
msgid "This is the sidebar unique id, used in the code, lowercase with no spaces."
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:131
msgid "Add a descriptive label for this sidebar to be used in the admin."
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:139
msgid "A short description for the the admin area."
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:146
#: includes/generator/class-wpcode-generator-widget.php:158
msgid "CSS Class"
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:147
msgid "Use an unique CSS class name for better control over this sidebar's styles in the admin."
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:157
msgid "Before Title"
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:158
msgid "HTML code to add before each widget title."
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:166
msgid "After Title"
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:167
msgid "HTML code to add after each widget title."
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:175
msgid "Before Widget"
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:176
msgid "HTML code to add before each widget."
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:184
msgid "After Widget"
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:185
msgid "HTML code to add after each widget."
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:199
msgid "Add another sidebar"
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:200
msgid "Use the \"Add Sidebar\" button below to add as many sidebars as you need."
msgstr ""

#: includes/generator/class-wpcode-generator-sidebar.php:204
msgid "Add Sidebar"
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:35
msgid "Register Stylesheets"
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:36
msgid "Generate a snippet to load CSS stylesheets using wp_register_style."
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:55
msgid "Using this generator you can create a WordPress function to register and enqueue styles."
msgstr ""

#. Translators: the placeholders add a link to getboostrap.com.
#: includes/generator/class-wpcode-generator-style.php:80
msgid "You can use this to load external styles or even styles from a theme or plugin. For example, you could load %1$sfontawesome%2$s from a cdn."
msgstr ""

#. Translators: placeholders add links to documentation on wordpress.org.
#: includes/generator/class-wpcode-generator-style.php:110
msgid "Hook used to add the styles: %1$sfrontend%2$s, %3$sadmin%4$s, %5$slogin%6$s or %7$sembed%8$s."
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:137
msgid "Styles"
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:143
msgid "Style name"
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:153
msgid "Stylesheet URL"
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:154
msgid "The full URL for the stylesheet e.g. https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css."
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:164
msgid "Comma-separated list of styles required for this style to load, e.g. jquery"
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:173
msgid "Style Version"
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:174
msgid "The style version."
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:186
msgid "Media"
msgstr ""

#. Translators: placeholders add a link to the W3.org reference.
#: includes/generator/class-wpcode-generator-style.php:189
msgid "Load the style %1$smedia type%2$s, usually \"all\"."
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:200
msgid "Deregister style?"
msgstr ""

#. Translators: Placeholders for wp.org docs link.
#: includes/generator/class-wpcode-generator-style.php:203
msgid "Should the style be %1$sderegistered%2$s first? (for example, if you are replacing an existing style)."
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:218
msgid "Enqueue style?"
msgstr ""

#. Translators: Placeholders for wp.org docs link.
#: includes/generator/class-wpcode-generator-style.php:221
msgid "Should the style be %1$senqueued%2$s or just registered? (select \"No\" only if you intend enqueueing it later."
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:242
msgid "Add more styles"
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:243
msgid "Use the \"Add style\" button below to add multiple styles in this snippet."
msgstr ""

#: includes/generator/class-wpcode-generator-style.php:247
msgid "Add style"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:36
msgid "Create a custom taxonomy for your posts using this generator."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:55
msgid "Use this generator to create custom taxonomies for your WordPress site."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:78
msgid "Use this to add more taxonomies to posts or custom post types. For example, if you used the Post Type generator to create an Artist post type you can use this one to create a Genre taxonomy."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:118
msgid "Taxonomy Key"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:119
msgid "Name of taxonomy used in the code, lowercase maximum 20 characters."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:129
msgid "Name (Singular)"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:130
msgid "The singular taxonomy name (e.g. Genre, Year)."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:138
msgid "The taxonomy plural name (e.g. Genres, Years)."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:148
msgid "Link To Post Type(s)"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:149
msgid "Comma-separated list of Post Types (e.g. post, page)"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:157
msgid "Hierarchical taxonomies can have descendants."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:161
msgid "No, like tags"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:162
msgid "Yes, like categories"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:196
msgid "Parent Item colon"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:203
msgid "New Item Name"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:241
msgid "Separate Items with commas"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:248
msgid "Add or Remove Items"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:255
msgid "Choose From Most Used"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:265
msgid "Popular Items"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:272
msgid "Search Items"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:286
msgid "No items"
msgstr ""

#. Translators: Placeholders add a link to the wp.org documentation page.
#: includes/generator/class-wpcode-generator-taxonomy.php:317
msgid "Should this taxonomy be %1$svisible to authors%2$s?"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:331
msgid "Should this taxonomy have an User Interface for managing?"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:341
msgid "Show Admin Column"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:342
msgid "Should this taxonomy add a column in the list of associated post types?"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:355
msgid "Show Tag Cloud"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:356
msgid "Should this taxonomy be visible in the tag cloud widget?"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:366
msgid "Show in Navigation Menus"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:367
msgid "Should this taxonomy be available in menus (Appearance > Menus)."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:385
msgid "Permalink Rewrite"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:386
msgid "Use Default Permalinks, disable automatic rewriting or use custom permalinks."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:390
msgid "Default (taxonomy key)"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:401
msgid "If you selected custom permalinks use this field for the rewrite base, e.g. taxonomy in https://yoursite.com/taxonomy"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:411
msgid "Prepend permastruct"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:412
msgid "Should the permastruct be prepended to the url (with_front parameter)."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:422
msgid "Hierarchical URL Slug"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:423
msgid "For hierarchical taxonomies use the whole hierarchy in the URL?"
msgstr ""

#. Translators: Placeholders add link to wp.org docs.
#: includes/generator/class-wpcode-generator-taxonomy.php:443
msgid "User capabilities in relation to this taxonomy. %1$sSee Documentation.%2$s"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:454
msgid "Use the fields on the right to assign custom capabilities for this taxonomy."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:461
msgid "Edit Terms"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:468
msgid "Delete Terms"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:478
msgid "Manage Terms"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:485
msgid "Assign Terms"
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:501
msgid "Add the taxonomy to the WordPress wp-json API."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:515
msgid "The base slug that this taxonomy will use in the REST API."
msgstr ""

#: includes/generator/class-wpcode-generator-taxonomy.php:525
msgid "The name of a custom Rest Controller class instead of WP_REST_Terms_Controller."
msgstr ""

#: includes/generator/class-wpcode-generator-type.php:374
msgid "Choose Image"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:35
#: includes/generator/class-wpcode-generator-widget.php:123
msgid "Widget"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:36
msgid "Generate a snippet to register a custom sidebar widget for your website."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:55
msgid "Using this generator you can easily add a custom sidebar widget with settings."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:78
msgid "Sidebar widgets are very useful when you want to display the same content on multiple pages, you can create a widget with contact methods, for example and fields to set a phone number, email, etc."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:90
msgid "Class name"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:91
msgid "Make this unique to avoid conflicts with other similar snippets."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:102
msgid "Prefix"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:103
msgid "Used to prefix all the field names."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:114
msgid "Optional textdomain for translations."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:129
msgid "Widget ID"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:130
msgid "Unique id for the widget, used in the code."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:138
msgid "Widget Title"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:139
msgid "The title of the widget (displayed in the admin)."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:151
msgid "Description used in the admin to explain what the widget is used for."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:159
msgid "Widget-specific CSS class name."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:168
msgid "Widget Output Code"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:169
msgid "PHP Code used for outputting the fields in the frontend. If left empty it will output the fields values in a simple list."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:177
msgid "Fields"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:183
msgid "Field Type"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:184
msgid "Pick the type of field you want to use for this setting."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:188
msgid "Text"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:191
msgid "Number"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:192
msgid "Textarea"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:193
msgid "Select"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:194
msgid "Checkboxes"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:195
msgid "Radio"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:201
msgid "Field ID"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:202
msgid "Unique id for this field, used in the code."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:209
msgid "Field Label"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:210
msgid "The label displayed next to this field in the admin form."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:224
msgid "Display a short descriptive text below this field."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:231
msgid "Default"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:232
msgid "Set the default value for this field."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:240
msgid "Use value|label for each line to add options for select, checkbox or radio."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:250
msgid "Add another field"
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:251
msgid "Use the \"Add field\" button below to add as many fields as you need."
msgstr ""

#: includes/generator/class-wpcode-generator-widget.php:255
msgid "Add field"
msgstr ""

#: includes/helpers.php:166
msgctxt "Copy to clipboard"
msgid "Copy"
msgstr ""

#: includes/helpers.php:180
msgid "Contains"
msgstr ""

#: includes/helpers.php:181
msgid "Doesn't Contain"
msgstr ""

#: includes/helpers.php:182
msgid "Is"
msgstr ""

#: includes/helpers.php:183
msgid "Is not"
msgstr ""

#: includes/helpers.php:184
msgid "Is Before"
msgstr ""

#: includes/helpers.php:185
msgid "Is After"
msgstr ""

#: includes/helpers.php:186
msgid "Is on or Before"
msgstr ""

#: includes/helpers.php:187
msgid "Is on or After"
msgstr ""

#: includes/lite/admin/class-wpcode-admin-page-loader-lite.php:45
#: includes/lite/admin/class-wpcode-admin-page-loader-lite.php:46
#: includes/lite/class-wpcode-admin-bar-info-lite.php:71
msgid "Upgrade to Pro"
msgstr ""

#: includes/lite/admin/class-wpcode-connect.php:67
msgid "You are not allowed to install plugins."
msgstr ""

#: includes/lite/admin/class-wpcode-connect.php:73
msgid "Please enter your license key to connect."
msgstr ""

#: includes/lite/admin/class-wpcode-connect.php:77
msgid "Only the Lite version can be upgraded."
msgstr ""

#: includes/lite/admin/class-wpcode-connect.php:95
msgid "WPCode Pro is installed but not activated."
msgstr ""

#: includes/lite/admin/class-wpcode-connect.php:148
msgid "There was an error while installing an upgrade. Please download the plugin from wpcode.com and install it manually."
msgstr ""

#: includes/lite/admin/class-wpcode-connect.php:181
#: includes/lite/admin/class-wpcode-connect.php:194
#: includes/lite/admin/class-wpcode-connect.php:255
msgid "Plugin installed & activated."
msgstr ""

#: includes/lite/admin/class-wpcode-connect.php:202
msgid "There was an error while installing an upgrade. Please check file system permissions and try again. Also, you can download the plugin from wpcode.com and install it manually."
msgstr ""

#: includes/lite/admin/class-wpcode-connect.php:229
msgid "No key provided."
msgstr ""

#: includes/lite/admin/class-wpcode-connect.php:259
msgid "Pro version installed but needs to be activated on the Plugins page inside your WordPress admin."
msgstr ""

#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:64
msgid "Choose the snippets you want to run on this page. Please note: only active snippets will be executed."
msgstr ""

#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:69
msgid "Select snippets"
msgstr ""

#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:75
msgid "Search snippets"
msgstr ""

#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:81
msgid "Load more snippets"
msgstr ""

#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:88
msgid "+ Choose Snippet"
msgstr ""

#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:140
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:283
#: includes/lite/class-wpcode-admin-bar-info-lite.php:91
msgid "Page Scripts is a Pro Feature"
msgstr ""

#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:143
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:286
#: includes/lite/class-wpcode-admin-bar-info-lite.php:92
msgid "While you can always use global snippets, in the PRO version you can easily add page-specific scripts and snippets directly from the post edit screen."
msgstr ""

#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:146
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:289
#: includes/lite/class-wpcode-admin-bar-info-lite.php:93
msgid "Upgrade to Pro and Unlock Page Scripts"
msgstr ""

#. Translators: placeholder for the name of the section (header or footer).
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:171
msgid "Add scripts below to the %s section of this page."
msgstr ""

#. Translators: placeholder for the name of the section (header or footer).
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:182
msgid "Disable global %s scripts on this page"
msgstr ""

#. Translators: placeholder for the name of the section (header or footer).
#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:193
msgid "%s - any device type"
msgstr ""

#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:309
msgid "As you make changes to your page scripts and save, you will get a list of previous versions with all the changes made in each revision. You can compare revisions to the current version or see changes as they have been saved by going through each revision. Any of the revisions can then be restored as needed without interfering with your post/page."
msgstr ""

#: includes/lite/admin/class-wpcode-metabox-snippets-lite.php:316
msgid "Upgrade to WPCode Pro today and start tracking revisions and see exactly who, when and which changes were made to your page scripts."
msgstr ""

#. Translators: more here is used in the sense of "get access to more snippets" and gets replaced with the number of snippets if the library items are loaded correctly.
#: includes/lite/admin/notices.php:37
msgid "more"
msgstr ""

#. Translators: %1$s and %2$s add a link to the settings page. %3$s and %4$s make the text bold. %6$s is replaced with the number of snippets and %5$s adds a "new" icon.
#: includes/lite/admin/notices.php:42
msgid "%5$s%1$sConnect to the WPCode Library%2$s to get access to %3$s%6$s FREE snippets%4$s!"
msgstr ""

#. Translators: %1$s and %2$s add a link to the upgrade page. %3$s and %4$s make the text bold.
#: includes/lite/admin/notices.php:88
msgid "%3$sYou're using WPCode Lite%4$s. To unlock more features consider %1$supgrading to Pro%2$s."
msgstr ""

#: includes/lite/admin/notices.php:116
msgid "Get WPCode Pro and Unlock all the Powerful Features"
msgstr ""

#: includes/lite/admin/notices.php:119
msgid "Save & Reuse snippets in your private Cloud Library"
msgstr ""

#: includes/lite/admin/notices.php:120
msgid "Add page-specific scripts when editing a post/page."
msgstr ""

#: includes/lite/admin/notices.php:121
msgid "Track all snippet changes with Advanced Code Revisions"
msgstr ""

#: includes/lite/admin/notices.php:124
msgid "Load snippets by device (mobile/desktop) with 1-click."
msgstr ""

#: includes/lite/admin/notices.php:125
msgid "Easily insert and reuse content with Custom Shortcodes."
msgstr ""

#: includes/lite/admin/notices.php:126
msgid "Precisely track eCommerce conversions for WooCommerce and EDD."
msgstr ""

#: includes/lite/admin/notices.php:132
msgid "Get WPCode Pro Today and Unlock all the Powerful Features Â»"
msgstr ""

#. Translators: Placeholders make the text bold.
#: includes/lite/admin/notices.php:137
msgid "%1$sBonus:%2$s WPCode Lite users get %3$s$50 off regular price%4$s, automatically applied at checkout"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:58
msgid "Anywhere (CSS Selector)"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:69
msgid "Before HTML Element"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:70
msgid "Insert snippet before the HTML element specified by the CSS selector."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:73
msgid "After HTML Element"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:74
msgid "Insert snippet after the HTML element specified by the CSS selector."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:77
msgid "At the start of HTML Element"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:78
msgid "Insert snippet before the content of the HTML element specified by CSS selector."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:81
msgid "At the end of HTML Element"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:82
msgid "Insert snippet after the content of the HTML element specified by CSS selector."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:85
msgid "Replace HTML Element"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:86
msgid "Completely replace the HTML element specified by the CSS selector with the output of this snippet."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:97
msgid "Insert Anywhere by CSS Selector is a Premium feature"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php:98
msgid "Upgrade to PRO today and insert snippets anywhere on your site using CSS selectors to target any HTML element."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:70
msgid "Insert After # Words"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:71
msgid "Insert snippet after a minimum number of words."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:74
msgid "Insert Every # Words"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:75
msgid "Insert snippet every # number of words."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:78
msgid "Insert in the Middle of the Content"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:79
msgid "Insert snippet in the middle of the post content."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:82
msgid "Insert after first Quarter (25%)"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:83
msgid "Insert snippet after the first quarter of the post content."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:86
msgid "Insert after 3rd Quarter (75%)"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:87
msgid "Insert snippet after the third quarter of the post content."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:90
msgid "Insert after first Third (33%)"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:91
msgid "Insert snippet after the first third of the post content."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:94
msgid "Insert after second Third (66%)"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:95
msgid "Insert snippet after the second third of the post content."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:98
msgid "Insert after 80%"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:99
msgid "Insert snippet after 80% of the post content."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:110
msgid "Word-based content locations are a PRO feature"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-content.php:111
msgid "Upgrade to PRO today and get access to automatic word-count based insert locations."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:69
msgid "Before the Purchase Button"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:70
msgid "Insert snippet before the EDD purchase button."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:73
msgid "After the Purchase Button"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:74
msgid "Insert snippet after the EDD purchase button."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:77
msgid "Before the Single Download"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:78
msgid "Insert snippet before the single EDD download content."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:81
msgid "After the Single Download"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:82
msgid "Insert snippet after the single EDD download content."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:85
#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:94
msgid "Before the Cart"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:86
msgid "Insert snippet before the EDD cart."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:89
#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:98
msgid "After the Cart"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:90
msgid "Insert snippet after the EDD cart."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:93
msgid "Before the Checkout Cart"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:94
msgid "Insert snippet before the EDD cart on the checkout page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:97
msgid "After the Checkout Cart"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:98
msgid "Insert snippet after the EDD cart on the checkout page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:101
#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:102
msgid "Before the Checkout Form"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:102
msgid "Insert snippet before the EDD checkout form on the checkout page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:105
#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:106
msgid "After the Checkout Form"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:106
msgid "Insert snippet after the EDD checkout form on the checkout page"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:117
msgid "Easy Digital Downloads Locations are a PRO feature"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-edd.php:118
#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:110
#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:131
msgid "Upgrade to PRO today and get access to advanced eCommerce auto-insert locations and conditional logic rules for your needs."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:69
msgid "Before the Registration Form"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:70
msgid "Insert snippet before the MemberPress registration form used for checkout."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:73
msgid "Before Checkout Submit Button"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:74
msgid "Insert snippet right before the MemberPress checkout submit button."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:77
msgid "Before Checkout Coupon Field"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:78
msgid "Insert snippet before the MemberPress checkout coupon field."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:81
msgid "Before Account First Name"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:82
msgid "Insert snippet to the Home tab of the MemberPress Account page before First Name field."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:85
msgid "Before Subscriptions Content"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:86
msgid "Insert snippet at the beginning of the Subscriptions tab on the MemberPress Account page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:89
msgid "Before Login Form Submit"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:90
msgid "Insert snippet before the Remember Me checkbox on the MemberPress Login page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:93
msgid "Before the Unauthorized Message"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:94
msgid "Insert a snippet before the notice that access to the content is unauthorized. "
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:97
msgid "After the Unauthorized Message"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:98
msgid "Insert a snippet after the notice that access to the content is unauthorized. "
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php:109
msgid "MemberPress Locations are a PRO feature"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:70
msgid "Before the List of Products"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:71
msgid "Insert snippet before the list of products on a WooCommerce page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:74
msgid "After the List of Products"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:75
msgid "Insert snippet after the list of products on a WooCommerce page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:78
msgid "Before the Single Product"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:79
msgid "Insert snippet before the content on the single WooCommerce product page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:82
msgid "After the Single Product"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:83
msgid "Insert snippet after the content on the single WooCommerce product page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:86
msgid "Before the Single Product Summary"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:87
msgid "Insert snippet before the product summary on the single WooCommerce product page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:90
msgid "After the Single Product Summary"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:91
msgid "Insert snippet after the product summary on the single WooCommerce product page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:95
msgid "Insert snippet before the cart on WooCommerce pages."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:99
msgid "Insert snippet after the cart on WooCommerce pages."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:103
msgid "Insert snippet before the checkout form on the WooCommerce checkout page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:107
msgid "Insert snippet after the checkout form on the WooCommerce checkout page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:110
msgid "Before Checkout Payment Button"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:111
msgid "Insert snippet before the checkout payment button on the WooCommerce checkout page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:114
msgid "After Checkout Payment Button"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:115
msgid "Insert snippet after the checkout payment button on the WooCommerce checkout page."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:118
msgid "Before the Thank You Page"
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:119
msgid "Insert snippet before the thank you page content for WooCommerce."
msgstr ""

#: includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php:130
msgid "WooCommerce Locations are a PRO feature"
msgstr ""

#: includes/lite/class-wpcode-admin-bar-info-lite.php:29
msgid "Page Scripts"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:37
msgid "Device"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:49
msgid "Target either desktop or mobile devices."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:52
msgid "Device Type Rules are a Pro Feature"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:53
msgid "Get access to advanced device type conditional logic rules by upgrading to PRO today."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:58
msgid "Desktop"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:63
msgid "Mobile"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:70
msgid "Browser Type"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:71
msgid "Target specific visitor web browsers."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:74
msgid "Browser Type Rules are a Pro Feature"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:75
msgid "Get access to advanced device conditional logic rules by upgrading to PRO today."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:81
msgid "Target operating systems like Windows, Mac OS or Linux."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:84
msgid "Operating System Rules are a Pro Feature"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:85
msgid "Get access to advanced operating system conditional logic rules by upgrading to PRO today."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:90
msgid "Cookie Name"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:91
msgid "Load or hide a snippet by cookie name."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:94
#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:104
msgid "Cookie-based Rules are a Pro Feature"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:95
#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:105
msgid "Get access to advanced cookie conditional logic rules by upgrading to PRO today."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:100
msgid "Cookie Value"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-device.php:101
msgid "Load or hide a snippet by cookie value."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-edd.php:48
msgid "EDD Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-edd.php:49
msgid "Load the snippet on specific Easy Digital Downloads pages."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-edd.php:52
msgid "Easy Digital Downloads Page Rules is a Pro Feature"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-edd.php:53
msgid "Get access to advanced conditional logic rules for Easy Digital Downloads by upgrading to PRO today."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-edd.php:58
#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:58
msgid "Checkout Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-edd.php:63
msgid "Confirmation Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-edd.php:68
msgid "Single Download Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-edd.php:73
msgid "Download Category Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-edd.php:78
msgid "Download Tag Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-location.php:40
msgid "Country"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-location.php:41
msgid "Limit loading the snippet based on the visitor's country."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-location.php:45
#: includes/lite/conditional-logic/class-wpcode-conditional-location.php:56
msgid "Location Rules are a Pro Feature"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-location.php:46
#: includes/lite/conditional-logic/class-wpcode-conditional-location.php:57
msgid "Get access to location-based conditional logic rules by upgrading to PRO today."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-location.php:51
msgid "Continent"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-location.php:52
msgid "Target entire continents with ease."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php:49
msgid "MemberPress Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php:50
msgid "Load the snippet on specific MemberPress pages."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php:53
msgid "MemberPress Page Rules is a Pro Feature"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php:54
#: includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php:83
msgid "Get access to advanced conditional logic rules for MemberPress by upgrading to PRO today."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php:59
msgid "Registration Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php:63
#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:63
msgid "Thank You Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php:67
msgid "Account Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php:71
msgid "Login Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php:77
msgid "User active membership"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php:78
msgid "Check if the current user has a specific MemberPress subscription active."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php:82
msgid "MemberPress Active Membership Rules is a Pro Feature"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-schedule.php:48
msgid "Date"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-schedule.php:49
msgid "Check whether today is before or after a date."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-schedule.php:53
msgid "Date & Time"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-schedule.php:54
msgid "Get more specific by also including a specific time."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-schedule.php:58
msgid "Day of the Week"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-schedule.php:59
msgid "Load the snippet on specific days of the week."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-schedule.php:64
msgid "Current time"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-schedule.php:65
msgid "Check whether it's before or after a specific time"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-schedule.php:72
msgid "Scheduling rules are a Pro Feature"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-schedule.php:73
msgid "Upgrade today and get access to advanced scheduling conditional logic rules."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-snippet.php:37
msgid "Snippet"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-snippet.php:49
msgid "Load this snippet based on another snippet being loaded."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-snippet.php:53
msgid "WPCode Snippet Loaded Rules are a Pro Feature"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-snippet.php:54
msgid "Upgrade today and use conditional logic rules based on other WPCode snippets being loaded."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:48
msgid "WooCommerce Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:49
msgid "Load the snippet on specific WooCommerce pages."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:52
msgid "WooCommerce Page Rules is a Pro Feature"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:53
#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:106
msgid "Get access to advanced conditional logic rules for WooCommerce by upgrading to PRO today."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:68
msgid "Cart Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:73
msgid "Single Product Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:78
msgid "Shop Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:83
msgid "Product Category Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:88
msgid "Product Tag Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:93
msgid "My Account Page"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:100
msgid "WooCommerce Cart"
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:101
msgid "Load the snippet based on the WooCommerce Cart Contents."
msgstr ""

#: includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php:105
msgid "WooCommerce Cart Contents Rule is a Pro Feature"
msgstr ""

#: includes/safe-mode.php:78
msgid "WPCode is in Safe Mode which means no snippets are getting executed. Please disable any snippets that have caused errors and when done click the button below to exit safe mode."
msgstr ""

#: includes/safe-mode.php:79
msgid "The link will open in a new window so if you are still encountering issues you safely can return to this tab and make further adjustments"
msgstr ""

#: includes/safe-mode.php:81
msgid "Exit safe mode"
msgstr ""
PK     t‰U]W/ A�3  �3    ihaf.phpnu „[µü¤        <?php
/**
 * Plugin Name: WPCode Lite
 * Plugin URI: https://www.wpcode.com/
 * Version: 2.3.0
 * Requires at least: 4.6
 * Requires PHP: 5.5
 * Tested up to: 6.8
 * Author: WPCode
 * Author URI: https://www.wpcode.com/
 * Description: Easily add code snippets in WordPress. Insert scripts to the header and footer, add PHP code snippets with conditional logic, insert ads pixel, custom content, and more.
 * License: GPLv2 or later
 *
 * Text Domain:         insert-headers-and-footers
 * Domain Path:         /languages
 *
 * @package WPCode
 */

/*
	Copyright 2019 WPBeginner

	This program is free software; you can redistribute it and/or modify
	it under the terms of the GNU General Public License, version 2, as
	published by the Free Software Foundation.

	This program is distributed in the hope that it will be useful,
	but WITHOUT ANY WARRANTY; without even the implied warranty of
	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
	GNU General Public License for more details.

	You should have received a copy of the GNU General Public License
	along with this program; if not, write to the Free Software
	Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
*/

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

// Don't allow multiple versions to be active.
if ( function_exists( 'WPCode' ) ) {

	if ( ! function_exists( 'wpcode_pro_just_activated' ) ) {
		/**
		 * When we activate a Pro version, we need to do additional operations:
		 * 1) deactivate a Lite version;
		 * 2) register option which help to run all activation process for Pro version (custom tables creation, etc.).
		 */
		function wpcode_pro_just_activated() {
			wpcode_deactivate();
			add_option( 'wpcode_install', 1 );
		}
	}
	add_action( 'activate_wpcode-premium/wpcode.php', 'wpcode_pro_just_activated' );

	if ( ! function_exists( 'wpcode_lite_just_activated' ) ) {
		/**
		 * Store temporarily that the Lite version of the plugin was activated.
		 * This is needed because WP does a redirect after activation and
		 * we need to preserve this state to know whether user activated Lite or not.
		 */
		function wpcode_lite_just_activated() {

			set_transient( 'wpcode_lite_just_activated', true );
		}
	}
	add_action( 'activate_insert-headers-and-footers/ihaf.php', 'wpcode_lite_just_activated' );

	if ( ! function_exists( 'wpcode_lite_just_deactivated' ) ) {
		/**
		 * Store temporarily that Lite plugin was deactivated.
		 * Convert temporary "activated" value to a global variable,
		 * so it is available through the request. Remove from the storage.
		 */
		function wpcode_lite_just_deactivated() {

			global $wpcode_lite_just_activated, $wpcode_lite_just_deactivated;

			$wpcode_lite_just_activated   = (bool) get_transient( 'wpcode_lite_just_activated' );
			$wpcode_lite_just_deactivated = true;

			delete_transient( 'wpcode_lite_just_activated' );
		}
	}
	add_action( 'deactivate_insert-headers-and-footers/ihaf.php', 'wpcode_lite_just_deactivated' );

	if ( ! function_exists( 'wpcode_deactivate' ) ) {
		/**
		 * Deactivate Lite if WPCode already activated.
		 */
		function wpcode_deactivate() {

			$plugin = 'insert-headers-and-footers/ihaf.php';

			deactivate_plugins( $plugin );

			do_action( 'wpcode_plugin_deactivated', $plugin );
		}
	}
	add_action( 'admin_init', 'wpcode_deactivate' );

	if ( ! function_exists( 'wpcode_lite_notice' ) ) {
		/**
		 * Display the notice after deactivation when Pro is still active
		 * and user wanted to activate the Lite version of the plugin.
		 */
		function wpcode_lite_notice() {

			global $wpcode_lite_just_activated, $wpcode_lite_just_deactivated;

			if (
				empty( $wpcode_lite_just_activated ) ||
				empty( $wpcode_lite_just_deactivated )
			) {
				return;
			}

			// Currently tried to activate Lite with Pro still active, so display the message.
			printf(
				'<div class="notice notice-warning">
					<p>%1$s</p>
					<p>%2$s</p>
				</div>',
				esc_html__( 'Heads up!', 'insert-headers-and-footers' ),
				esc_html__( 'Your site already has WPCode Pro activated. If you want to switch to WPCode Lite, please first go to Plugins â†’ Installed Plugins and deactivate WPCode. Then, you can activate WPCode Lite.', 'insert-headers-and-footers' )
			);

			if ( isset( $_GET['activate'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
				unset( $_GET['activate'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			}

			unset( $wpcode_lite_just_activated, $wpcode_lite_just_deactivated );
		}
	}
	add_action( 'admin_notices', 'wpcode_lite_notice' );

	// Do not process the plugin code further.
	return;
}

/**
 * Main WPCode Class
 */
class WPCode {

	/**
	 * Holds the instance of the plugin.
	 *
	 * @since 2.0.0
	 *
	 * @var WPCode The one true WPCode
	 */
	private static $instance;

	/**
	 * Plugin version.
	 *
	 * @since 2.0.0
	 *
	 * @var string
	 */
	public $version = '';

	/**
	 * The auto-insert instance.
	 *
	 * @var WPCode_Auto_Insert
	 */
	public $auto_insert;

	/**
	 * The snippet execution instance.
	 *
	 * @var WPCode_Snippet_Execute
	 */
	public $execute;

	/**
	 * The error handling instance.
	 *
	 * @var WPCode_Error
	 */
	public $error;

	/**
	 * The conditional logic instance.
	 *
	 * @var WPCode_Conditional_Logic
	 */
	public $conditional_logic;

	/**
	 * The conditional logic instance.
	 *
	 * @var WPCode_Snippet_Cache
	 */
	public $cache;

	/**
	 * The snippet library.
	 *
	 * @var WPCode_Library
	 */
	public $library;

	/**
	 * The Snippet Generator.
	 *
	 * @var WPCode_Generator
	 */
	public $generator;

	/**
	 * The plugin settings.
	 *
	 * @var WPCode_Settings
	 */
	public $settings;

	/**
	 * The plugin importers.
	 *
	 * @var WPCode_Importers
	 */
	public $importers;
	/**
	 * The file cache class.
	 *
	 * @var WPCode_File_Cache
	 */
	public $file_cache;

	/**
	 * The notifications instance (admin-only).
	 *
	 * @var WPCode_Notifications
	 */
	public $notifications;

	/**
	 * The admin page loader.
	 *
	 * @var WPCode_Admin_Page_Loader
	 */
	public $admin_page_loader;

	/**
	 * The library auth instance.
	 *
	 * @var WPCode_Library_Auth
	 */
	public $library_auth;

	/**
	 * The admin notices instance.
	 *
	 * @var WPCode_Notice
	 */
	public $notice;

	/**
	 * Instance for logging errors.
	 *
	 * @var WPCode_File_Logger
	 */
	public $logger;

	/**
	 * Load the smart tags.
	 *
	 * @var WPCode_Smart_Tags
	 */
	public $smart_tags;

	/**
	 * Main instance of WPCode.
	 *
	 * @return WPCode
	 * @since 2.0.0
	 */
	public static function instance() {
		if ( ! isset( self::$instance ) && ! ( self::$instance instanceof WPCode ) ) {
			self::$instance = new WPCode();
		}

		return self::$instance;
	}

	/**
	 * Constructor.
	 */
	private function __construct() {
		$this->setup_constants();
		$this->includes();
		add_action( 'plugins_loaded', array( $this, 'load_components' ), - 1 );
	}

	/**
	 * Set up global constants.
	 *
	 * @return void
	 */
	private function setup_constants() {

		define( 'WPCODE_FILE', __FILE__ );

		$plugin_headers = get_file_data( WPCODE_FILE, array( 'version' => 'Version' ) );

		define( 'WPCODE_VERSION', $plugin_headers['version'] );
		define( 'WPCODE_PLUGIN_BASENAME', plugin_basename( WPCODE_FILE ) );
		define( 'WPCODE_PLUGIN_URL', plugin_dir_url( WPCODE_FILE ) );
		define( 'WPCODE_PLUGIN_PATH', plugin_dir_path( WPCODE_FILE ) );

		$this->version = WPCODE_VERSION;
	}

	/**
	 * Require the files needed for the plugin.
	 *
	 * @return void
	 */
	private function includes() {
		// Load the safe mode logic first.
		require_once WPCODE_PLUGIN_PATH . 'includes/safe-mode.php';
		// Plugin helper functions.
		require_once WPCODE_PLUGIN_PATH . 'includes/helpers.php';
		// Functions for global headers & footers output.
		require_once WPCODE_PLUGIN_PATH . 'includes/global-output.php';
		// Use the old class name for backwards compatibility.
		require_once WPCODE_PLUGIN_PATH . 'includes/legacy.php';
		// Add backwards compatibility for older versions of PHP or WP.
		require_once WPCODE_PLUGIN_PATH . 'includes/compat.php';
		// Register code snippets post type.
		require_once WPCODE_PLUGIN_PATH . 'includes/post-type.php';
		// The snippet class.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-snippet.php';
		// Auto-insert options.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-auto-insert.php';
		// Execute snippets.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-snippet-execute.php';
		// Handle PHP errors.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-error.php';
		// [wpcode] shortcode.
		require_once WPCODE_PLUGIN_PATH . 'includes/shortcode.php';
		// Conditional logic.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-conditional-logic.php';
		// Snippet Cache.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-snippet-cache.php';
		// Settings class.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-settings.php';
		// Custom capabilities.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-capabilities.php';
		// Map capabilities for backwards compatibility.
		require_once WPCODE_PLUGIN_PATH . 'includes/capabilities.php';
		// Install routines.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-install.php';
		// Logging class.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-file-logger.php';
		// Smart tags class.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-smart-tags.php';
		// Admin bar info class.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-admin-bar-info.php';

		if ( is_admin() || ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
			require_once WPCODE_PLUGIN_PATH . 'includes/icons.php'; // This is not needed in the frontend atm.
			// Code Editor class.
			require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-code-editor.php';
			require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-admin-page-loader.php';
			require_once WPCODE_PLUGIN_PATH . 'includes/admin/admin-scripts.php';
			require_once WPCODE_PLUGIN_PATH . 'includes/admin/admin-ajax-handlers.php';
			// Always used just in the backend.
			require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-generator.php';
			// Snippet Library.
			require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-library.php';
			// Authentication for the library site.
			require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-library-auth.php';
			// Importers.
			require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-importers.php';
			// File cache.
			require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-file-cache.php';
			// The docs.
			require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-docs.php';
			// Notifications class.
			require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-notifications.php';
			// Metabox class.
			require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-metabox-snippets.php';
			// Metabox class.
			require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-admin-notice.php';
			// Ask for some love.
			require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-review.php';
			// Suggest free plugins.
			require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-suggested-plugins.php';
			// Highlight features.
			require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-features-notices.php';
		}

		// Load lite-specific files.
		require_once WPCODE_PLUGIN_PATH . 'includes/lite/loader.php';
	}

	/**
	 * Load the Generator on demand.
	 *
	 * @return WPCode_Generator
	 */
	public function generator() {
		if ( ! isset( $this->generator ) ) {
			$this->generator = new WPCode_Generator();
		}
		return $this->generator;
	}

	/**
	 * Load components in the main plugin instance.
	 *
	 * @return void
	 */
	public function load_components() {
		$this->auto_insert       = new WPCode_Auto_Insert();
		$this->execute           = new WPCode_Snippet_Execute();
		$this->error             = new WPCode_Error();
		$this->conditional_logic = new WPCode_Conditional_Logic();
		$this->cache             = new WPCode_Snippet_Cache();
		$this->settings          = new WPCode_Settings();
		$this->logger            = new WPCode_File_Logger();

		if ( is_admin() || ( defined( 'DOING_CRON' ) && DOING_CRON ) ) {
			$this->file_cache        = new WPCode_File_Cache();
			$this->library           = new WPCode_Library();
			$this->library_auth      = new WPCode_Library_Auth();
			$this->importers         = new WPCode_Importers();
			$this->notifications     = new WPCode_Notifications();
			$this->admin_page_loader = new WPCode_Admin_Page_Loader_Lite();
			$this->notice            = new WPCode_Notice();
			$this->smart_tags        = new WPCode_Smart_Tags_Lite();

			// Metabox class.
			new WPCode_Metabox_Snippets_Lite();
			// Usage tracking class.
			new WPCode_Usage_Tracking_Lite();
			// Suggested plugins.
			new WPCode_Suggested_Plugins();
		}

		new WPCode_Admin_Bar_Info_Lite();

		do_action( 'wpcode_loaded' );

		// Load the pluggable functions late to allow plugins to hook in.
		require_once WPCODE_PLUGIN_PATH . 'includes/pluggable.php';
	}
}

require_once dirname( __FILE__ ) . '/includes/ihaf.php';

WPCode();
PK     t‰U]
Ò/t°U  °U  
  readme.txtnu „[µü¤        === WPCode - Insert Headers and Footers + Custom Code Snippets - WordPress Code Manager ===
Contributors: WPbeginner, smub, gripgrip, wpcodeteam
Tags: code, css, php, header, code snippets
Requires at least: 4.6
Tested up to: 6.8
Requires PHP: 5.5
Stable tag: 2.3.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html

Easily add code snippets in WordPress. Insert header & footer scripts, add PHP code snippets with conditional logic, insert ads pixel code, and more.


== Description ==

= Insert Headers & Footers + Full WordPress Code Snippets Plugin =

[WPCode](https://wpcode.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin) (formerly known as Insert Headers and Footers by WPBeginner) is the most popular code snippets plugin for WordPress used by over 2 million websites.

We make it easy for you to add code snippets in WordPress without having to edit your theme's functions.php file.

Our simple insert headers and footers interface allows you to insert code like Google Analytics, custom CSS, Facebook Pixel, and more to your WordPress site's header and footer as well other areas of your website. No need to edit your theme files!

Aside from Header and Footer scripts, you can also use WPCode to insert custom PHP code snippets, JavaScript code snippets, CSS code snippets, HTML code snippets, and text snippets with full conditional logic support.

We took the pain out of adding custom code snippets in WordPress and made it easy.

> I have been using Insert Headers and Footers and it is such a useful tool. Super helpful and the very best of its kind. Highly recommend
> The_Gibble - WordPress user

= Quick Overview of WPCode from WPBeginner =

https://www.youtube.com/watch?v=Fo-7MKRRUec

> <strong>Introducing New WPCode Pro</strong><br />
> While WPCode Lite offers tons of powerful features for free, we listened to user feedback and created WPCode Pro with even more amazing features to improve your workflow. This includes smart conditional logic, saving code snippets to cloud library, code revisions, page-specific snippets, deeper integration with popular plugins like WooCommerce, Easy Digital Downloads, and so much more. [Click here to purchase the best premium WordPress code snippet plugin now!](https://wpcode.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin)

= Future Proof Code Snippet Management =

Most [WordPress tutorial websites](https://www.wpbeginner.com/category/wp-tutorials/) ask you to add code snippets to your theme's functions.php file. This makes managing code snippets messy, and it also prevents you from updating your theme.

If you ever update your theme or switch to another theme, then you will lose all custom code functions that you added in your functions.php file.

WPCode solves this by providing you an easy way to insert header and footer scripts along with other code snippets directly from your WordPress dashboard. These code snippets actually run as if they were in your theme's functions.php file.

Our smart code snippet validation helps you prevent common code errors to ensure you never break your website when adding code snippets or header and footer scripts.

<strong>New WPCode Cloud Library</strong> even allows you to store all your custom code snippets in a cloud library, so you can easily re-use code snippets across multiple website projects and save time. You can keep your code snippets completely private or [share it with the community](https://library.wpcode.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin) to give back while boosting your social profile.

> This plugin allows me to not only add things to my site whenever needed, but it takes me only seconds to accomplish it.
> David Weber - WordPress user

= Full Code Snippets Library and Code Generators =

Ever wanted a central place to find all the most popular WordPress code snippets that are tested and proven to work?

When we started Insert Headers and Footers plugin, we did too. So we built a WordPress code snippets library right inside the WPCode plugin.

You will find verified PHP code snippets for popular feature requests like disable REST API, disable XML-RPC, disable comments, allow SVG file uploads, disable Gutenberg, add Classic Editor, and more without installing separate plugins for each.

> I was very hesitant to get into any of the code for my website. Your plugin made it easy for me to do.
> Conbrio75 - WordPress user

We also built the ability to save your code snippets to [WPCode Cloud Library](https://library.wpcode.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin), so you can easily re-use it on your other websites, client projects, or even share it with the larger community.

WPCode Cloud Library helps you better organize your code snippets in one central location, so you can save more time and speed up your workflow when managing websites. No more wasting time looking for custom notes or Github gists.

Aside from our growing code snippets library, we also have WordPress code generators to help you quickly get ready-to-use custom code using the latest WordPress coding standards and API's.

= Conditional Logic for Code Snippets + Code Insertion Priority =

Our goal with WPCode was to create a WordPress code snippets plugin that's both EASY and POWERFUL.

That's why aside from our global header and footer scripts, we added advanced features like conditional logic for code snippets and made it easy.

Instead of learning WordPress conditional logic queries, you can use our beginner-friendly conditional logic user interface to:

* Load code snippets for logged in users only
* Load PHP code snippets for specific user roles
* Load PHP code snippets only on specific page URLs
* Insert header and footer pixel scripts on specific pages
* Show code snippets based on type of page
* Run code snippet only on certain post types
* Load header and footer code snippet based on referrer source
* and more...

We also added both automatic code insertion and manual code output using shortcodes.

Our Auto Insert feature allows you to run the code snippet everywhere or choose from custom options like:

* Run code snippet only on frontend
* Run code snippet only in WordPress admin area
* Add header and footer scripts sitewide
* Insert PHP code snippet before or after post content
* Insert code snippet before or after specific paragraph
* Insert code snippet on specific archive pages
* Insert code snippets after specific WooCommerce function ([Pro Feature](https://wpcode.com/?utm_source=wprepo&utm_medium=link&utm_campaign=liteplugin))

Aside from that, we also added a visual code snippet priority system, so you can choose the order for your custom functions to avoid code conflict.

> This is such a useful plugin! It makes it so much easier to include things on your website!
> Understoryliving - WordPress user

And for even more flexibility and customization, we have added the ability for you to add page-specific code snippets right from the WordPress classic editor as well as the Gutenberg editor. You can even load code snippets based on device type such as mobile only code snippets, desktop only code snippets, etc.

= Import and Export Code Snippets =

Managing multiple websites or developing in a staging environment?

We offer an easy way to import and export your custom code snippets, functions, and header and footer scripts to help you save time.

You can also save your code snippets to WPCode Cloud (Pro feature), so you can easily re-use the same code snippets across multiple websites. This also allows you to better organize your code snippets instead of wasting time searching for random Github gists.

> Simple plugin I use in quite every site. Very useful to insert scripts and tags.
> tommasoperego - WordPress user

= Full WPCode Feature List =

The simple interface of WPCode plugin (formerly known as Insert Headers and Footers) gives you one place where you can insert header and footer scripts as well as custom code snippets rather than dealing with dozens of different plugins.

Below is a full list of WPCode features:

* Quick to set up
* Unlimited code snippets
* Simple to insert header and footer scripts globally
* Beginner Friendly Code Editor with Syntax Highlighter for PHP, JavaScript, and HTML
* Smart Code Validation to Prevent PHP Errors
* Insert header code and/or footer code using Conditional Logic
* Add <strong>Google Analytics</strong> code to header and footer
* Add <strong>custom CSS</strong> code to any theme
* Insert <strong>Facebook pixel</strong> code in header and footer
* Insert any code or script, including HTML and Javascript
* Insert PHP Code Snippets
* Ready-made Code Snippet Library
* Custom WordPress Code Snippet Generator
* Show or Hide PHP Code Snippets based on conditional logic
* Run PHP code and custom code snippets everywhere or in select areas using smart auto-insert rules.
* Manually insert PHP code snippets using shortcodes anywhere on website
* Add Rich Text Ads and Content Snippets automatically on posts & pages.
* Export / Import Code Snippets
* <strong>New</strong> Save snippets to Cloud Library - All your snippets stored in your private code snippet cloud.
* <strong>New</strong> Deep integrations with Gutenberg, WooCommerce, and more.
* Device specific code snippets (such as load code snippets on mobile only, desktop only, etc)
* and more features coming soon.

= Credits =

Insert Headers and Footers plugin was first created by [Syed Balkhi](https://syedbalkhi.com/) and the [WPBeginner](http://www.wpbeginner.com/) team in 2011.

It was later rebranded to WPCode in 2022 by Syed Balkhi to add powerful code snippets features that users were requesting for.

= Branding Guideline =

WPCodeâ„¢ is a trademark of WPCode LLC. When writing about the Insert Headers and Footers - Code Snippets plugin by WPCode, please make sure to uppercase the initial 3 letters.

WPCode (correct)
WP Code (incorrect)
wpcode (incorrect)
wp code snippets (incorrect)

== Installation ==

1. Install WPCode - Insert Headers, Footers, and Code Snippets plugin by uploading the `insert-headers-and-footers` directory to the `/wp-content/plugins/` directory. (See instructions on <a href="http://www.wpbeginner.com/beginners-guide/step-by-step-guide-to-install-a-wordpress-plugin-for-beginners/" rel="friend">how to install a WordPress plugin</a>.)
2. Activate WPCode - Insert Headers, Footers, and Code Snippets plugin through the `Plugins` menu in WordPress.
3. Insert code in your header and footer or add custom code snippets by going to the `Code Snippets` menu.

[youtube https://www.youtube.com/watch?v=QXbrdVjWaME]

== Screenshots ==

1. WordPress Code Snippets Management Screen
2. Ready-Made Code Snippets Library
3. Edit PHP Snippets with Code Syntax Highlighter
4. Show / Hide Code Snippets with Smart Conditional Logic
5. Custom WordPress Code Generators
6. Example of Custom Post Type Generator
7. Insert Header and Footer Scripts Globally
8. Import and Export Code Snippets
9. Private Snippets Library In Plugin
10. Page-Specific Scripts Metabox

== Frequently Asked Questions ==

= Can I use WPCode - Insert Headers and Footers to install Google Analytics? =

Yes, you can insert your Google Analytics code in the `Scripts in Header` field.

= Can I use WPCode - Insert Headers and Footers for Google AdSense? =

Yes, to verify your account or to tag your page for Auto ads, paste the code AdSense gives you, into the Scripts in Header field.

= Will I lose my snippets if I change my WordPress theme? =

No, the idea behind WPCode - Insert Headers, Footers, and Code Snippets plugin is so you can safely add code snippets.

All code snippets are stored in the WordPress database, independent of the theme upgrades.

= Can I switch back to the old version of Insert Headers and Footers? =

Yes, if you don't want the advanced code snippets functionality, then you can switch back to the old Insert Headers and Footers features by simply going to the Settings Menu and clicking on the Headers & Footers mode.

= What Type of Code Snippets can I add? =

With WPCode, you can add any type of code snippet that you would otherwise add in your theme's functions.php file or in a site-specific plugin.

This includes custom PHP snippets, JavaScript snippets, HTML snippet, CSS snippets, Text Snippets, Conversion pixels, Tracking scripts, AdSense or other banner ads code, and more.

= What are some example plugins WPCode can replace? =

WPCode comes with a ready-made code snippets library that allows you to replace several popular plugins including:

* Disable Comment plugins
* Disable XML-RPC plugins
* Disable Rest API plugins
* Disable Gutenberg plugins
* Classic Editor plugin
* Allow SVG File Upload plugins
* Disable RSS feed plugins
* Disable Search plugins
* Disable Automatic Updates plugins
* Disable Admin Bar plugins
* Disable Widget Blocks plugin
* Classic Widgets plugin
* Remove WordPress Version Number plugins
* Google Analytics plugins
* Facebook Pixel plugins
* Google AdSense plugins
* Custom Post Types UI plugins
* Other WordPress Generator plugins

... and basically any plugin that adds a functionality which can be added via custom code snippets.

== Changelog ==

= 2.3.0 =
* New: We added a way to 1-click update snippets installed from the WPCode library when new versions are available.
* Tweak: We improved JSON code snippets import validation to show accurate error messages when files are incorrectly formatted.

= 2.2.9 =
* New: Added a new importer for the Post Snippets plugin to make it easier to migrate your code snippets.
* Tweak: We adjusted the way the safe mode works to limit its effects on frontend urls.

= 2.2.8 =
* New: Schema Generators - we added 20 new code generators to make it easier to manage schema code on your website.
* Tweak: We moved the button to update generated snippets to the top so that you can update snippets easier.
* Tweak: We added "suppress_filters" to WP_Query used by WPCode to avoid conflicts with other plugins.
* Fix: We fixed an issue where the generated snippets were not automatically inserted when activated.

= 2.2.7 =
* New: Added support for automatically importing snippets from 2 new plugins.

= 2.2.6 =
* New: Easily find where your snippet is used as a shortcode with our new shortcode finder tool. 1-click search through your site.
* New: Improved editor for snippet notes. You can now add links and format text with a WYSIWYG editor.
* New: Snippet notes column. Display the notes for each snippet in the list of snippets.
* Fix: We improved the code snippets list filtering in the admin to avoid issues when JS errors are encountered on the page from other scripts.

= 2.2.5 =
* New: We added a new way to quickly filter snippets by code type in the list of snippets.
* Tweak: Prevent content_save_pre from modifying snippet code.

= 2.2.4.1 =
* Fix: Shortcode attributes variables were not being set correctly.

= 2.2.4 =
* Tweak: We adjusted the way our plugin adds a version-specific body class to avoid conflicts with other plugins.
* Tweak: We improved the way custom PHP code is executed to avoid conflicts with variables in snippets.
* Fix: When removing the last Conditional Logic group the rule selector was no longer working.

= 2.2.3.1 =
* Tweak: Updated the way we load translatable strings in some components for compatibility with WordPress 6.7.

= 2.2.3 =
* Tweak: We updated the way we validate PHP snippets when making an edit to an active snippet for better feedback when debugging.
* Tweak: We replaced a dependency (SweetAlert2) for a more lightweight alternative to improve performance.

= 2.2.2 =
* New: The Add Snippet screen now makes it easier to get started with more than just our library of snippets, choose from expert-picked snippets, snippet generators or plugin-specific snippets.
* New: We updated the code type picker for more clarity on what each code type is useful for and the last code type you used is now saved for a streamlined experience when adding multiple snippets.
* Tweak: We extended the unfiltered HTML permissions notice when the DISALLOW_UNFILTERED_HTML constant is defined to add more clarity.

= 2.2.1 =
* Fix: We fixed a bug that was causing the selected conditional logic operator to not be displayed correctly for some rules.
* Fix: The auto-insert location picker was not opening again in some situations.

= 2.2.0 =
* New: We updated the conditional logic rules picker for more clarity and ease of use.
* New: We expanded our automatic cache clearing to include the Swift Performance plugin.
* Tweak: The Page URL conditional logic option now supports query params and wp-admin URLs.

= 2.1.14 =
* New: When making changes to the Global Header & Footer WPCode will attempt to automatically clear page cache for popular caching plugins.
* New: Save your snippet with a keyboard shortcut by pressing CTRL+S (Windows) or CMD+S (Mac) in the snippet editor.
* Tweak: Prevent error when TinyMCE is disabled by other plugins.

= 2.1.13 =
* New: We added admin-specific locations for header and footer to streamline customizations in the wp-admin area.
* New: The code editor height can now be adjusted directly from the snippet editor screen. Auto-height is still available as an option on the settings page.
* Fix: When making changes to a snippet, the function to prevent you from navigating away was no longer working.

= 2.1.12 =
* New: We added a new way to execute PHP snippets "On Demand" - look for the "On Demand" location in the Auto Insert settings.
* Tweak: We added checks in place to prevent malicious code patterns from being used in WPCode.
* Fix: We fixed a bug where the conditional logic for logged-in users was not being saved correctly the first time.

= 2.1.11 =
* Tweak: We improved the admin bar menu to fix an JS error in some scenarios and a html validation issue.
* Tweak: We added support for importing snippets from the Code Snippets Pro plugin.
* Fix: We fixed an issue with importing CSS snippets.

= 2.1.10 =
* New: When another user is editing the same snippet, we now show a warning to avoid conflicts.
* Tweak: Improved mobile styles across the plugin admin for better readability.

= 2.1.9 =
* New: Conditional logic rule for Blog home page (posts page)
* Tweak: Improved the connect to library flow to avoid the connect window from getting blocked.
* Fix: Author archive condition was not working as intended.

= 2.1.8 =
* Tweak: We changed the way the code generators are loaded to improve performance overall.
* Tweak: We changed the way translations are loaded for better performance.

= 2.1.7 =
* New: WPCode now has a Dark Mode for those late night coding sessions. Enable it on the settings page.
* Tweak: We improved the way the error messages are displayed in the snippet editor for more clarity.
* Fix: The snippet editor was no longer running syntax checks for PHP snippets upon activation.
* Fix: We fixed a bug where in certain versions of Safari the auto-insert location was being unset when saving a snippet.

= 2.1.6 =
* New: We added the option to delete all the plugin data on uninstall.
* Fix: The code of duplicated snippets was sometimes removing some slashes.
* Fix: Error count was not correctly updated when snippets were trashed or deleted.

= 2.1.5 =
* New: Priority column added to the list of snippets, order by snippet priority.
* Fix: Fixed a notice that was being thrown in new sites when running the installation routines.
* Fix: Filtering by tag or location in the list of snippets was not working correctly.

= 2.1.4.1 =
* Fix: Avoid notices for errors that don't include the file parameter.
* Fix: Improve compatibility with PHP 8.2 for the snippet cache class.

= 2.1.4 =
* New: Enhanced error tracking: Errors generated by PHP snippets on your website will be displayed within the snippet's context, simplifying the debugging process.
* New: We've refined the snippet auto-deactivation process. Now, only snippets that produce fatal errors in the admin section will be deactivated. All other errors will be reported through the newly implemented error tracker.
* New: We introduced three new columns to the snippet list: ID, Code Type, and Shortcode.
* Tweak: We've enhanced our file caching mechanism to prevent redundant requests in scenarios where files aren't written properly due to certain setups.
* Tweak: We've implemented an additional check to ensure that closing PHP tags don't disrupt the execution of snippets.
* Fix: We've corrected the sorting of snippets when arranged by their last updated date.

= 2.1.3.1 =
* Fix: Shortcode attributes were not being correctly parsed in some scenarios.

= 2.1.3 =
* New: We improved how we manage automatic snippet disabling when errors occur. You'll now get detailed insights into which snippet is responsible for the error and the exact line where the problem occurred.
* Tweak: We adjusted the way snippets are preloaded to improve compatibility with object cache.
* Fix: The snippets added as shortcodes were not correctly displayed in the admin bar.

= 2.1.2 =
* Tweak: We adjusted the way snippets are tracked in the Admin Bar Code Spotter to avoid wrong numbers in certain locations.
* Tweak: We improved the way the Admin Bar Code Spotter menu is loaded for better compatibility with other plugins and older themes.
* Tweak: Changed the way assets used by the admin bar are loaded to avoid errors if the head is loaded multiple times.

= 2.1.1 =
* New: Easily duplicate a snippet with all of its settings with the new Duplicate link in the list of snippets.
* Fix: Taxonomy page conditional logic was not being correctly assigned for category and tags archives.
* Tweak: Adjust admin bar markup to avoid using a heading.

= 2.1.0 =
* New: See exactly which scripts and snippets are loaded on the current page with the WPCode admin bar info menu.
* Tweak: Minor update to connect process.
PK     u‰U]ÒÍyo{6  {6  (  includes/class-wpcode-admin-bar-info.phpnu „[µü¤        <?php
/**
 * This class adds the WPCode info to the admin bar for logged-in administrator users
 * that can manage snippets (wpcode_activate_snippets capability).
 * The class will gather info about the header & footer items added and all the active snippets
 * and display a count of scripts/snippets added by wpcode after the page is fully loaded.
 */

/**
 * Class WPCode_Admin_Bar_Info
 */
abstract class WPCode_Admin_Bar_Info {

	/**
	 * The global locations disabled for the current page through the Page Scripts settings.
	 *
	 * @var array
	 */
	protected $global_disabled = array();

	/**
	 * The snippets loaded on this page.
	 *
	 * @var array
	 */
	public $loaded_snippets = array();

	/**
	 * The WPCode_Admin_Bar_Info constructor.
	 */
	public function __construct() {
		add_action( 'plugins_loaded', array( $this, 'maybe_init' ), 1 );
	}

	/**
	 * Check if we should be tracking for the current session.
	 *
	 * @return bool
	 */
	public function should_track() {
		if ( ! is_user_logged_in() ) {
			return false;
		}

		if ( ! current_user_can( 'wpcode_activate_snippets' ) ) {
			return false;
		}

		// Don't load the admin bar menu in headers & footers mode.
		if ( wpcode()->settings->get_option( 'headers_footers_mode' ) ) {
			return false;
		}

		$show_menu = wpcode()->settings->get_option( 'admin_bar_info', true );

		if ( ! $show_menu ) {
			return false;
		}

		return true;
	}

	/**
	 * Early on the plugins_loaded hook we check if we should be tracking for the current session.
	 *
	 * @return void
	 */
	public function maybe_init() {
		if ( $this->should_track() ) {
			$this->hooks();
		}
	}

	/**
	 * Add hooks needed to track the way WPCode loads scripts and snippets.
	 */
	public function hooks() {
		// Use the snippet output to more accurately track the snippets loaded.
		add_filter( 'wpcode_snippet_output', array( $this, 'track_snippet_output' ), 999, 2 );

		// Add an admin menu item to display the results.
		add_action( 'admin_bar_menu', array( $this, 'add_admin_bar_info' ), 999 );

		add_action( 'admin_bar_menu', array( $this, 'add_admin_bar_quick_links' ), 1200 );

		// Output results at the end of the page and use JS to populate the admin menu item.
		add_action( 'wp_footer', array( $this, 'add_footer_info' ), 15 );
		add_action( 'admin_footer', array( $this, 'add_footer_info' ), 999999 );

		add_action( 'admin_init', array( $this, 'enqueue_scripts' ), - 5 );
		add_action( 'admin_enqueue_scripts', array( $this, 'enqueue_scripts' ), 15 );
		add_action( 'template_redirect', array( $this, 'enqueue_scripts' ), - 5 );
	}

	/**
	 * Load the scripts used by the admin bar.
	 *
	 * @return void
	 */
	public function enqueue_scripts() {
		if ( ! is_admin_bar_showing() ) {
			return;
		}
		// Allow other plugins to modify the screens where the admin bar scripts are loaded.
		if ( apply_filters( 'wpcode_load_admin_bar_scripts', false ) ) {
			return;
		}

		$admin_asset_file = WPCODE_PLUGIN_PATH . 'build/admin-bar.asset.php';

		if ( ! file_exists( $admin_asset_file ) ) {
			return;
		}

		$asset = require $admin_asset_file;

		wp_enqueue_style( 'wpcode-admin-bar-css', WPCODE_PLUGIN_URL . 'build/admin-bar.css', null, $asset['version'] );

		wp_enqueue_script( 'wpcode-admin-bar-js', WPCODE_PLUGIN_URL . 'build/admin-bar.js', null, $asset['version'], true );

	}

	/**
	 * Add the WPCode info to the admin bar.
	 *
	 * @param WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance.
	 */
	public function add_admin_bar_info( $wp_admin_bar ) {
		// Let's see if we have any errors.
		$error_count = wpcode()->error->get_error_count();
		$indicator   = '';

		if ( $error_count > 0 ) {
			$indicator = ' <div class="wp-core-ui wp-ui-notification wpcode-menu-notification-counter">' . $error_count . '</div>';
		}

		// Add an admin menu item to append our count to.
		$wp_admin_bar->add_menu(
			array(
				'id'    => 'wpcode-admin-bar-info',
				'title' => 'WPCode' . $indicator,
				'meta'  => array(
					'class' => 'wpcode-admin-bar-info menupop',
				),
				'href'  => add_query_arg( 'page', 'wpcode', admin_url( 'admin.php' ) ),
			)
		);

		do_action( 'wpcode_admin_bar_info_top', $wp_admin_bar );

		if ( ! empty( $error_count ) ) {
			$wp_admin_bar->add_menu(
				array(
					'id'     => 'wpcode-error-count',
					'parent' => 'wpcode-admin-bar-info',
					'title'  => esc_html__( 'Snippets With Errors', 'insert-headers-and-footers' ) . $indicator,
					'meta'   => array(
						'class' => 'wpcode-admin-bar-info-submenu',
					),
					'href'   => add_query_arg(
						array(
							'page' => 'wpcode',
							'view' => 'has_error',
						),
						admin_url( 'admin.php' )
					),
				)
			);
		}

		$wp_admin_bar->add_menu(
			array(
				'id'     => 'wpcode-description',
				'parent' => 'wpcode-admin-bar-info',
				'title'  => esc_html__( 'Loaded on this page', 'insert-headers-and-footers' ),
				'meta'   => array(
					'class' => 'wpcode-admin-bar-info-submenu wpcode-admin-bar-description',
				),
			)
		);

		$global_scripts_data = $this->get_global_scripts_data();

		if ( ! empty( $global_scripts_data ) ) {

			// Calculate total by adding up the "count" property of each item.
			$total = array_sum( wp_list_pluck( $global_scripts_data, 'count' ) );

			$wp_admin_bar->add_menu(
				array(
					'id'     => 'wpcode-global-scripts',
					'parent' => 'wpcode-admin-bar-info',
					'title'  => esc_html(
						sprintf(
						// translators: %d is the total number of global scripts.
							__( 'Global Scripts (%d)', 'insert-headers-and-footers' ),
							$total
						)
					),
					'meta'   => array(
						'class' => 'wpcode-admin-bar-info-submenu',
					),
					'href'   => add_query_arg( 'page', 'wpcode-headers-footers', admin_url( 'admin.php' ) ),
				)
			);

			foreach ( $global_scripts_data as $id => $global_scripts_area ) {
				$wp_admin_bar->add_menu(
					array(
						'id'     => 'wpcode-global-' . $id,
						'parent' => 'wpcode-global-scripts',
						'title'  => esc_html( $global_scripts_area['label'] ),
						'meta'   => array(
							'class' => 'wpcode-admin-bar-info-submenu',
						),
						'href'   => $global_scripts_area['href'],
					)
				);
			}
		}

		$wp_admin_bar->add_menu(
			array(
				'id'     => 'wpcode-loaded-on-this-page',
				'parent' => 'wpcode-admin-bar-info',
				'title'  => esc_html__( 'Code Snippets', 'insert-headers-and-footers' ),
				'meta'   => array(
					'class' => 'wpcode-admin-bar-info-submenu',
				),
				'href'   => add_query_arg( 'page', 'wpcode', admin_url( 'admin.php' ) ),
			)
		);

		$wp_admin_bar->add_menu(
			array(
				'id'     => 'wpcode-admin-bar-info-replace',
				'parent' => 'wpcode-loaded-on-this-page',
				'title'  => '',
				'meta'   => array(
					'class' => 'wpcode-admin-bar-info-submenu',
				),
			)
		);
	}

	/**
	 * Use the filter called in each location to keep tabs of which snippets were actually loaded in each location.
	 *
	 * @param WPCode_Snippet[] $snippets Array of snippets.
	 * @param string           $location The location.
	 *
	 * @return mixed
	 */
	public function track_used_snippets( $snippets, $location ) {

		foreach ( $snippets as $snippet ) {
			if ( ! isset( $this->loaded_snippets[ $location ] ) ) {
				$this->loaded_snippets[ $location ] = array();
			}
			$this->loaded_snippets[ $location ][] = $snippet;
		}

		return $snippets;
	}

	/**
	 * Output a script that builds the admin bar menu with the snippet/scripts info using JS after the page has loaded.
	 *
	 * @return void
	 */
	public function add_footer_info() {

		if ( ! is_admin_bar_showing() ) {
			return;
		}

		$footer_info = array();

		foreach ( $this->loaded_snippets as $location => $snippets ) {

			$location_label = wpcode()->auto_insert->get_location_label( $location );
			if ( 'shortcode' === $location ) {
				$location_label = esc_html__( 'Shortcode', 'insert-headers-and-footers' );
			}
			if ( 'block' === $location ) {
				$location_label = esc_html__( 'Gutenberg Block', 'insert-headers-and-footers' );
			}
			if ( 0 === strpos( $location, 'shortcode-' ) ) {
				$location_label = esc_html__( 'Custom Shortcode', 'insert-headers-and-footers' );
			}
			$location_info = array(
				'label'       => $location_label . ' (' . count( $snippets ) . ')',
				'location_id' => $location,
				'snippets'    => array(),
				'href'        => $this->get_location_filter_link( $location ),
			);
			foreach ( $snippets as $snippet ) {
				$location_info['snippets'][] = array(
					'id'        => $snippet->get_id(),
					'title'     => esc_html( $snippet->get_title() ),
					'edit_link' => $this->get_snippet_edit_link( $snippet ),
				);
			}
			$location_info['count'] = count( $snippets );

			$footer_info[] = $location_info;
		}

		$total_count = 0;
		foreach ( $footer_info as $location ) {
			$total_count += $location['count'];
		}

		// Output $footer_info as a JSON in a JS variable to be used in the script to populate the admin bar.
		?>
		<script>
			var wpcode_admin_bar_info = <?php echo wp_json_encode( $footer_info ); ?>;
			var wpcode_admin_bar_info_count = <?php echo absint( $total_count ); ?>;
		</script>
		<?php
	}

	/**
	 * Get the snippet edit link based on the snippet id.
	 *
	 * @param WPCode_Snippet $snippet The snippet object.
	 *
	 * @return string
	 */
	public function get_snippet_edit_link( $snippet ) {
		return apply_filters( 'wpcode_admin_bar_edit_snippet_link', admin_url( 'admin.php?page=wpcode-snippet-manager&snippet_id=' . $snippet->get_id() ), $snippet );
	}

	/**
	 * Get data related to the global Header & Footer scripts.
	 *
	 * @return array
	 */
	public function get_global_scripts_data() {
		if ( is_admin() ) {
			// Global scripts are never loaded in the admin.
			return array();
		}
		$data = array();

		$global_locations = array(
			'header' => array(
				'label' => __( 'Global Header', 'insert-headers-and-footers' ),
			),
		);
		if ( function_exists( 'wp_body_open' ) && version_compare( get_bloginfo( 'version' ), '5.2', '>=' ) ) {
			$global_locations['body'] = array(
				'label' => __( 'Global Body', 'insert-headers-and-footers' ),
			);
		}
		$global_locations['footer'] = array(
			'label' => __( 'Global Footer', 'insert-headers-and-footers' ),
		);

		$disabled_label = esc_html__( 'Disabled via Page Scripts', 'insert-headers-and-footers' );

		foreach ( $global_locations as $location => $location_texts ) {
			$scripts = get_option( 'ihaf_insert_' . $location );

			$count = ! empty( $scripts ) ? 1 : 0;

			if ( in_array( $location, $this->global_disabled, true ) ) {
				$count = 0;

				$location_texts['label'] .= ' (' . $disabled_label . ')';
			} else {
				$location_texts['label'] .= ' (' . $count . ')';
			}
			$data[ $location ] = array(
				'label' => $location_texts['label'],
				'href'  => admin_url( 'admin.php?page=wpcode-headers-footers#wpcode-global-' . $location ),
				'count' => $count,
			);
		}

		return $data;
	}

	/**
	 * Add the WPCode info to the admin bar.
	 *
	 * @param WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance.
	 */
	public function add_admin_bar_quick_links( $wp_admin_bar ) {


		$wp_admin_bar->add_menu(
			array(
				'id'     => 'wpcode-admin-bar-info-add-new',
				'parent' => 'wpcode-admin-bar-info',
				'title'  => esc_html__( '+ Add Snippet', 'insert-headers-and-footers' ),
				'href'   => admin_url( 'admin.php?page=wpcode-snippet-manager' ),
				'meta'   => array(
					'class' => 'wpcode-admin-bar-info-submenu wpcode-admin-bar-info-separator-top',
				),
			)
		);

		$wp_admin_bar->add_menu(
			array(
				'id'     => 'wpcode-admin-bar-info-settings',
				'parent' => 'wpcode-admin-bar-info',
				'title'  => esc_html__( 'Settings', 'insert-headers-and-footers' ),
				'href'   => add_query_arg( 'page', 'wpcode-settings', admin_url( 'admin.php' ) ),
				'meta'   => array(
					'class' => 'wpcode-admin-bar-info-submenu',
				),
			)
		);

		// If error logging is enabled add a direct link here.
		if ( wpcode()->settings->get_option( 'error_logging' ) ) {
			$wp_admin_bar->add_menu(
				array(
					'id'     => 'wpcode-admin-bar-info-error-logs',
					'parent' => 'wpcode-admin-bar-info',
					'title'  => esc_html__( 'Logs', 'insert-headers-and-footers' ),
					'href'   => add_query_arg(
						array(
							'page' => 'wpcode-tools',
							'view' => 'logs',

						),
						admin_url( 'admin.php' )
					),
					'meta'   => array(
						'class' => 'wpcode-admin-bar-info-submenu',
					),
				)
			);
		}

		$wp_admin_bar->add_menu(
			array(
				'id'     => 'wpcode-admin-bar-info-help',
				'parent' => 'wpcode-admin-bar-info',
				'title'  => esc_html__( 'Help Docs', 'insert-headers-and-footers' ),
				'href'   => wpcode_utm_url( 'https://wpcode.com/docs/', 'admin-bar', 'help' ),
				'meta'   => array(
					'class'  => 'wpcode-admin-bar-info-submenu',
					'target' => '_blank',
					'rel'    => 'noopener noreferrer',
				),
			)
		);
	}

	/**
	 * Track a snippet output for the admin bar.
	 *
	 * @param string         $output The snippet output (we don't use this).
	 * @param WPCode_Snippet $snippet The snippet object.
	 *
	 * @return string
	 */
	public function track_snippet_output( $output, $snippet ) {

		$location = $snippet->get_location();

		if ( ! isset( $this->loaded_snippets[ $location ] ) ) {
			$this->loaded_snippets[ $location ] = array();
		}
		$this->loaded_snippets[ $location ][] = $snippet;

		return $output;
	}

	/**
	 * Method for the location link.
	 *
	 * @param string $location The location slug.
	 *
	 * @return string
	 */
	public function get_location_filter_link( $location ) {

		if ( in_array( $location, array( 'shortcode', 'block' ), true ) ) {
			// If this is for a shortcode or a block let's try to link to the edit page of the currently loaded post.
			return get_edit_post_link();
		}

		return esc_url(
			add_query_arg(
				array(
					'page'          => 'wpcode',
					'location'      => $location,
					'filter_action' => 'filter',
				),
				admin_url( 'admin.php' )
			)
		);
	}

}
PK     u‰U]ïÝ#E„	  „	    includes/shortcode.phpnu „[µü¤        <?php
/**
 * Handle the generic WPCode shortcode.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

add_shortcode( 'wpcode', 'wpcode_shortcode_handler' );
add_action( 'wpcode_shortcode_before_output', 'wpcode_pass_shortcode_attributes_to_snippet', 10, 4 );

add_filter( 'wpcode_shortcode_attribute_value', 'wp_kses_post' );

/**
 * Generic handler for the shortcode.
 *
 * @param array  $args The shortcode attributes.
 * @param string $content The shortcode content.
 * @param string $tag The shortcode tag.
 *
 * @return string
 */
function wpcode_shortcode_handler( $args, $content, $tag ) {
	$atts = wp_parse_args(
		$args,
		array(
			'id'            => 0,
			'wpcode_source' => 'shortcode',
		)
	);

	if ( 0 === $atts['id'] ) {
		return '';
	}

	$snippet = new WPCode_Snippet( absint( $atts['id'] ) );

	if ( ! $snippet->is_active() ) {
		return '';
	}

	// Let's check that conditional logic rules are met.
	if ( $snippet->conditional_rules_enabled() && ! wpcode()->conditional_logic->are_snippet_rules_met( $snippet ) && apply_filters( 'wpcode_shortcode_use_conditional_logic', true ) ) {
		return '';
	}

	$shortcode_location = apply_filters( 'wpcode_get_snippets_for_location', array( $snippet ), 'shortcode' );

	if ( empty( $shortcode_location ) ) {
		return '';
	}

	$snippet->location = $atts['wpcode_source'];

	do_action( 'wpcode_shortcode_before_output', $snippet, $atts, $content, $tag );

	return wpcode()->execute->get_snippet_output( $snippet );
}

/**
 * Before the shortcode output, let's check if we have to load any shortcode attributes to the class instance.
 *
 * @param WPCode_Snippet $snippet The snippet instance.
 * @param array          $atts The shortcode attributes.
 * @param string|null    $content Shortcode content, if any.
 * @param string         $tag The shortcode tag.
 *
 * @return void
 */
function wpcode_pass_shortcode_attributes_to_snippet( $snippet, $atts, $content, $tag ) {
	// Let's see if we have to load any shortcode attributes.
	$shortcode_attributes = $snippet->get_shortcode_attributes();
	if ( ! empty( $shortcode_attributes ) ) {
		foreach ( $shortcode_attributes as $attribute ) {
			$value = isset( $atts[ $attribute ] ) ? $atts[ $attribute ] : '';
			$snippet->set_attribute( $attribute, apply_filters( 'wpcode_shortcode_attribute_value', $value, $attribute ) );
		}
	}
	if ( ! empty( $content ) ) {
		$snippet->set_attribute( 'content', $content );
	}
}
PK     v‰U]+sìPë  ë  !  includes/class-wpcode-install.phpnu „[µü¤        <?php
/**
 * Logic to run on plugin install.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class WPCode_Install.
 */
class WPCode_Install {

	/**
	 * WPCode_Install constructor.
	 */
	public function __construct() {
		register_activation_hook( WPCODE_FILE, array( $this, 'activate' ) );
		add_action( 'admin_init', array( $this, 'maybe_run_install' ) );
	}

	/**
	 * Activation hook.
	 *
	 * @return void
	 */
	public function activate() {
		// Add capabilities on activation as deleting the plugin removes them
		// but the option used in the `maybe_run_install` method below is not
		// removed so the capabilities are not added back.
		WPCode_Capabilities::add_capabilities();

		// Use an action to have a single activation hook plugin-wide.
		do_action( 'wpcode_plugin_activation' );

		set_transient( 'wpcode_just_activated', class_exists( 'WPCode_License' ) ? 'pro' : 'lite', 60 );
	}

	/**
	 * Install routine to run on plugin activation.
	 * Runs on admin_init so that we also handle updates.
	 * The ihaf_activated option was used by IHAF 1.6 and the key "lite" is for the activation date
	 * of that version of the plugin. In the WPCode plugin we use the "wpcode" key, so we have the update date
	 * and install the demo data.
	 *
	 * @return void
	 */
	public function maybe_run_install() {
		if ( ! is_admin() ) {
			return;
		}

		$activated = get_option( 'ihaf_activated', array() );

		if ( ! is_array( $activated ) ) {
			$activated = array();
		}

		if ( empty( $activated['wpcode'] ) ) {
			$activated['wpcode'] = time();

			update_option( 'ihaf_activated', $activated );

			// Add custom capabilities.
			WPCode_Capabilities::add_capabilities();

			// The option was empty so let's add the demo data.
			$this->add_demo_data();

			do_action( 'wpcode_install' );
		}

		// Maybe run manually just one time.
		$install = get_option( 'wpcode_install', false );

		if ( ! empty( $install ) ) {
			$this->activate();
			delete_option( 'wpcode_install' );
		}

		// Let's run an upgrade routine.
		if ( empty( $activated['version'] ) ) {
			$this->update_2_1_0();
		}

		if ( isset( $activated['version'] ) && version_compare( $activated['version'], WPCODE_VERSION, '=' ) ) {
			// If the version is identical just skip.
			return;
		}

		if ( isset( $activated['version'] ) && version_compare( $activated['version'], '2.1.4', '<' ) ) {
			$this->update_2_1_4();
		}

		if ( isset( $activated['version'] ) && version_compare( $activated['version'], '2.1.5', '<' ) ) {
			$this->update_2_1_5();
		}

		// Give other plugins a chance to run an upgrade routine.
		do_action( 'wpcode_before_version_update', $activated );

		$activated['version'] = WPCODE_VERSION;
		update_option( 'ihaf_activated', $activated );
	}

	/**
	 * Upgrade routine for 2.1.0.
	 * Empty the library cache to get the new snippets.
	 *
	 * @return void
	 */
	public function update_2_1_0() {
		if ( isset( wpcode()->library ) ) {
			wpcode()->library->delete_cache();
		}
	}

	/**
	 * Upgrade routine for 2.1.4.
	 * Convert recently deactivated to the new error system.
	 *
	 * @return void
	 */
	public function update_2_1_4() {
		// Let's find all the snippets with the _wpcode_recently_deactivated meta key set.
		$snippets = get_posts(
			array(
				'post_type'      => 'wpcode',
				'posts_per_page' => - 1,
				'post_status'    => 'any',
				'meta_query'     => array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
					array(
						'key'     => '_wpcode_recently_deactivated',
						'compare' => 'EXISTS',
					),
				),
			)
		);
		// Let's loop through the snippets and convert them to the new error system.
		foreach ( $snippets as $snippet ) {
			$snippet    = new WPCode_Snippet( $snippet->ID );
			$error      = array(
				'message'  => esc_html__( 'Snippet was deactivated due to an error.', 'insert-headers-and-footers' ),
				'time'     => get_post_meta( $snippet->get_id(), '_wpcode_recently_deactivated', true ),
				'wpc_type' => 'deactivated',
			);
			$error_line = get_post_meta( $snippet->get_id(), '_wpcode_recently_deactivated_error_line', true );
			if ( ! empty( $error_line ) ) {
				$error['error_line'] = $error_line;
			}
			$snippet->set_last_error( $error );

			// Remove the old meta keys.
			delete_post_meta( $snippet->get_id(), '_wpcode_recently_deactivated' );
			delete_post_meta( $snippet->get_id(), '_wpcode_recently_deactivated_error_line' );

			wpcode()->error->clear_snippets_errors();
		}

		$this->add_columns_to_hidden( array( 'id', 'code_type', 'shortcode' ) );
	}

	/**
	 * Upgrade routine for 2.1.5.
	 * Add the priority column to the hidden columns.
	 *
	 * @return void
	 */
	public function update_2_1_5() {
		$this->add_columns_to_hidden( array( 'priority' ) );
	}

	/**
	 * Add columns to the hidden columns for users that set their screen settings.
	 *
	 * @param array $new_columns The columns to add.
	 *
	 * @return void
	 */
	public function add_columns_to_hidden( $new_columns ) {
		// Let's add the new columns to the hidden array for users that set their screen settings.
		$meta_key = 'managetoplevel_page_wpcodecolumnshidden';

		$users = get_users(
			array(
				'meta_key'     => $meta_key, // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
				'meta_compare' => 'EXISTS',
				'fields'       => 'ID',
			)
		);

		foreach ( $users as $user_id ) {
			$columns = get_user_meta( $user_id, $meta_key, true );
			if ( ! is_array( $columns ) ) {
				$columns = array();
			}
			$columns = array_merge( $columns, $new_columns );
			update_user_meta( $user_id, $meta_key, $columns );
		}
	}

	/**
	 * Add some example snippets in a new installation.
	 *
	 * @return void
	 */
	public function add_demo_data() {
		$snippets = array(
			array(
				'title'         => __( 'Display a message after the 1st paragraph of posts', 'insert-headers-and-footers' ),
				'code'          => 'Thank you for reading this post, don\'t forget to subscribe!',
				'code_type'     => 'text',
				'auto_insert'   => 1,
				'location'      => 'after_paragraph',
				'insert_number' => 1,
				'tags'          => array(
					'sample',
					'message',
				),
			),
			array(
				'title'       => __( 'Completely Disable Comments', 'insert-headers-and-footers' ),
				'code'        => "add_action('admin_init', function () {\r\n    \/\/ Redirect any user trying to access comments page\r\n    global \$pagenow;\r\n    \r\n    if (\$pagenow === 'edit-comments.php') {\r\n        wp_safe_redirect(admin_url());\r\n        exit;\r\n    }\r\n\r\n    \/\/ Remove comments metabox from dashboard\r\n    remove_meta_box('dashboard_recent_comments', 'dashboard', 'normal');\r\n\r\n    \/\/ Disable support for comments and trackbacks in post types\r\n    foreach (get_post_types() as \$post_type) {\r\n        if (post_type_supports(\$post_type, 'comments')) {\r\n            remove_post_type_support(\$post_type, 'comments');\r\n            remove_post_type_support(\$post_type, 'trackbacks');\r\n        }\r\n    }\r\n});\r\n\r\n\/\/ Close comments on the front-end\r\nadd_filter('comments_open', '__return_false', 20, 2);\r\nadd_filter('pings_open', '__return_false', 20, 2);\r\n\r\n\/\/ Hide existing comments\r\nadd_filter('comments_array', '__return_empty_array', 10, 2);\r\n\r\n\/\/ Remove comments page in menu\r\nadd_action('admin_menu', function () {\r\n    remove_menu_page('edit-comments.php');\r\n});\r\n\r\n\/\/ Remove comments links from admin bar\r\nadd_action('init', function () {\r\n    if (is_admin_bar_showing()) {\r\n        remove_action('admin_bar_menu', 'wp_admin_bar_comments_menu', 60);\r\n    }\r\n});",
				'code_type'   => 'php',
				'auto_insert' => 1,
				'location'    => 'everywhere',
				'tags'        => array(
					'sample',
					'disable',
					'comments',
				),
				'library_id'  => 12,
			),
		);

		// The activation hook runs after `init` so our plugin's custom
		// post type and custom taxonomies didn't have a chance to be registered.
		wpcode_register_post_type();
		wpcode_register_taxonomies();

		foreach ( $snippets as $snippet ) {
			$new_snippet = new WPCode_Snippet( $snippet );
			$new_snippet->save();
		}
	}
}

new WPCode_Install();
PK     v‰U]�â‘À$  À$  <  includes/generator/class-wpcode-generator-schema-article.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Article schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Article class.
 */
class WPCode_Generator_Schema_Article extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-article';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Article Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for articles, blog posts, and news articles.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'      => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Article schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'article'   => array(
				'label'   => __( 'Article Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic article information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Article Title', 'insert-headers-and-footers' ),
							'description'     => __( 'The title of the article.', 'insert-headers-and-footers' ),
							'id'              => 'article_title',
							'default'         => '',
							'placeholder'     => __( 'My Article Title', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Article Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A brief description or summary of the article.', 'insert-headers-and-footers' ),
							'id'              => 'article_description',
							'default'         => '',
							'placeholder'     => __( 'Description of the article...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),

					),
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Article Type', 'insert-headers-and-footers' ),
							'description' => __( 'The type of article.', 'insert-headers-and-footers' ),
							'id'          => 'article_type',
							'default'     => 'Article',
							'options'     => array(
								'Article'            => __( 'Article', 'insert-headers-and-footers' ),
								'BlogPosting'        => __( 'Blog Post', 'insert-headers-and-footers' ),
								'NewsArticle'        => __( 'News Article', 'insert-headers-and-footers' ),
								'TechArticle'        => __( 'Tech Article', 'insert-headers-and-footers' ),
								'ScholarlyArticle'   => __( 'Scholarly Article', 'insert-headers-and-footers' ),
								'SocialMediaPosting' => __( 'Social Media Post', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Article URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the article.', 'insert-headers-and-footers' ),
							'id'              => 'article_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/article',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					// Column 2 - Dates and images.
					array(
						array(
							'type'        => 'date',
							'label'       => __( 'Published Date', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the article was published.', 'insert-headers-and-footers' ),
							'id'          => 'article_published_date',
							'default'     => '',
							'placeholder' => '2025-01-01',
						),
						array(
							'type'        => 'date',
							'label'       => __( 'Modified Date', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the article was last modified.', 'insert-headers-and-footers' ),
							'id'          => 'article_modified_date',
							'default'     => '',
							'placeholder' => '2025-01-02',
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Featured Image', 'insert-headers-and-footers' ),
							'description'  => __( 'URL of the article\'s featured image.', 'insert-headers-and-footers' ),
							'id'           => 'article_image',
							'default'      => '',
							'placeholder'  => 'https://example.com/image.jpg',
							'smart_tags'   => false,
							'is_image_url' => true,
						),
					),
				),
			),
			'author'    => array(
				'label'   => __( 'Author', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Author details.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Author Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the article author.', 'insert-headers-and-footers' ),
							'id'              => 'author_name',
							'default'         => '',
							'placeholder'     => __( 'John Doe', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_name' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Author URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the author\'s profile or website.', 'insert-headers-and-footers' ),
							'id'              => 'author_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/author',
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_url' ),
						),
					),
				),
			),
			'publisher' => array(
				'label'   => __( 'Publisher', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Publisher details.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Publisher Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the publisher.', 'insert-headers-and-footers' ),
							'id'              => 'publisher_name',
							'default'         => '',
							'placeholder'     => __( 'Publisher Name', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'first_name' ),
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Publisher Logo', 'insert-headers-and-footers' ),
							'description'  => __( 'URL of the publisher\'s logo.', 'insert-headers-and-footers' ),
							'id'           => 'publisher_logo',
							'default'      => '',
							'placeholder'  => 'https://example.com/logo.png',
							'smart_tags'   => false,
							'is_image_url' => true,
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context'    => 'https://schema.org',
			'@type'       => $this->get_value( 'article_type' ),
			'headline'    => $this->get_value( 'article_title' ),
			'description' => $this->get_value( 'article_description' ),
		);

		// Add URL if set.
		$url = $this->get_value( 'article_url' );
		if ( ! empty( $url ) ) {
			$schema['url'] = $url;
		}

		// Add dates.
		$published_date = $this->get_value( 'article_published_date' );
		if ( ! empty( $published_date ) ) {
			$schema['datePublished'] = $published_date;
		}

		$modified_date = $this->get_value( 'article_modified_date' );
		if ( ! empty( $modified_date ) ) {
			$schema['dateModified'] = $modified_date;
		}

		// Add image if set.
		$image = $this->get_value( 'article_image' );
		if ( ! empty( $image ) ) {
			$schema['image'] = array(
				'@type' => 'ImageObject',
				'url'   => $image,
			);
		}

		// Add author details.
		$author_name = $this->get_value( 'author_name' );
		if ( ! empty( $author_name ) ) {
			$schema['author'] = array(
				'@type' => 'Person',
				'name'  => $author_name,
			);

			$author_url = $this->get_value( 'author_url' );
			if ( ! empty( $author_url ) ) {
				$schema['author']['url'] = $author_url;
			}
		}

		// Add publisher details.
		$publisher_name = $this->get_value( 'publisher_name' );
		if ( ! empty( $publisher_name ) ) {
			$schema['publisher'] = array(
				'@type' => 'Organization',
				'name'  => $publisher_name,
			);

			$publisher_logo = $this->get_value( 'publisher_logo' );
			if ( ! empty( $publisher_logo ) ) {
				$schema['publisher']['logo'] = array(
					'@type' => 'ImageObject',
					'url'   => $publisher_logo,
				);
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     w‰U]Ï†xŸ)  )  <  includes/generator/class-wpcode-generator-schema-service.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Service schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Service class.
 */
class WPCode_Generator_Schema_Service extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-service';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Service Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for services to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'     => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Service schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'service'  => array(
				'label'   => __( 'Service Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic Service information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Service Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the service.', 'insert-headers-and-footers' ),
							'id'              => 'service_name',
							'default'         => '',
							'placeholder'     => __( 'Enter service name...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Service Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A detailed description of the service.', 'insert-headers-and-footers' ),
							'id'              => 'service_description',
							'default'         => '',
							'placeholder'     => __( 'Describe the service...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
					),
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Service URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the service page.', 'insert-headers-and-footers' ),
							'id'              => 'service_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/service',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Service Image', 'insert-headers-and-footers' ),
							'description'  => __( 'The URL of the service image.', 'insert-headers-and-footers' ),
							'id'           => 'service_image',
							'default'      => '',
							'placeholder'  => 'https://example.com/service-image.jpg',
							'is_image_url' => true,
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Service Type', 'insert-headers-and-footers' ),
							'description' => __( 'The type of service (e.g., ProfessionalService, FinancialService).', 'insert-headers-and-footers' ),
							'id'          => 'service_type',
							'default'     => 'ProfessionalService',
							'placeholder' => 'ProfessionalService',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Area Served', 'insert-headers-and-footers' ),
							'description' => __( 'The geographic area where the service is available.', 'insert-headers-and-footers' ),
							'id'          => 'area_served',
							'default'     => '',
							'placeholder' => __( 'Enter area served...', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'provider' => array(
				'label'   => __( 'Service Provider', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Provider information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Provider Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the service provider.', 'insert-headers-and-footers' ),
							'id'              => 'provider_name',
							'default'         => '',
							'placeholder'     => __( 'Enter provider name...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'user_name' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Provider URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the service provider.', 'insert-headers-and-footers' ),
							'id'              => 'provider_url',
							'default'         => '',
							'placeholder'     => 'https://example.com',
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_url' ),
						),
					),
					array(
						array(
							'type'         => 'text',
							'label'        => __( 'Provider Logo', 'insert-headers-and-footers' ),
							'description'  => __( 'The URL of the provider logo.', 'insert-headers-and-footers' ),
							'id'           => 'provider_logo',
							'default'      => '',
							'placeholder'  => 'https://example.com/logo.png',
							'is_image_url' => true,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Provider Type', 'insert-headers-and-footers' ),
							'description' => __( 'The type of provider (e.g., Organization, Person).', 'insert-headers-and-footers' ),
							'id'          => 'provider_type',
							'default'     => 'Organization',
							'placeholder' => 'Organization',
						),
					),
				),
			),
			'contact'  => array(
				'label'   => __( 'Contact Information', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Contact details.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Email', 'insert-headers-and-footers' ),
							'description' => __( 'The contact email address.', 'insert-headers-and-footers' ),
							'id'          => 'contact_email',
							'default'     => '',
							'placeholder' => 'contact@example.com',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Telephone', 'insert-headers-and-footers' ),
							'description' => __( 'The contact phone number.', 'insert-headers-and-footers' ),
							'id'          => 'contact_telephone',
							'default'     => '',
							'placeholder' => '+1-555-555-5555',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Address', 'insert-headers-and-footers' ),
							'description' => __( 'The physical address.', 'insert-headers-and-footers' ),
							'id'          => 'contact_address',
							'default'     => '',
							'placeholder' => __( 'Enter address...', 'insert-headers-and-footers' ),
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {

		$service_type = $this->get_value( 'service_type' );
		$schema       = array(
			'@context' => 'https://schema.org',
			'@type'    => $service_type ? $service_type : 'Service',
		);

		// Add basic service information.
		$service_name = $this->get_value( 'service_name' );
		if ( ! empty( $service_name ) ) {
			$schema['name'] = $service_name;
		}

		$service_description = $this->get_value( 'service_description' );
		if ( ! empty( $service_description ) ) {
			$schema['description'] = $service_description;
		}

		$service_url = $this->get_value( 'service_url' );
		if ( ! empty( $service_url ) ) {
			$schema['url'] = $service_url;
		}

		// Add image.
		$service_image = $this->get_value( 'service_image' );
		if ( ! empty( $service_image ) ) {
			$schema['image'] = array(
				'@type' => 'ImageObject',
				'url'   => $service_image,
			);
		}

		// Add area served.
		$area_served = $this->get_value( 'area_served' );
		if ( ! empty( $area_served ) ) {
			$schema['areaServed'] = array(
				'@type' => 'City',
				'name'  => $area_served,
			);
		}

		// Add provider information.
		$provider_name  = $this->get_value( 'provider_name' );
		$provider_url   = $this->get_value( 'provider_url' );
		$provider_logo  = $this->get_value( 'provider_logo' );
		$provider_value = $this->get_value( 'provider_type' );
		$provider_type  = ! empty( $provider_value ) ? $provider_value : 'Organization';

		if ( ! empty( $provider_name ) || ! empty( $provider_url ) || ! empty( $provider_logo ) ) {
			$schema['provider'] = array(
				'@type' => $provider_type,
			);

			if ( ! empty( $provider_name ) ) {
				$schema['provider']['name'] = $provider_name;
			}

			if ( ! empty( $provider_url ) ) {
				$schema['provider']['url'] = $provider_url;
			}

			if ( ! empty( $provider_logo ) ) {
				$schema['provider']['logo'] = array(
					'@type' => 'ImageObject',
					'url'   => $provider_logo,
				);
			}
		}

		// Add contact information.
		$contact_email     = $this->get_value( 'contact_email' );
		$contact_telephone = $this->get_value( 'contact_telephone' );
		$contact_address   = $this->get_value( 'contact_address' );

		if ( ! empty( $contact_email ) || ! empty( $contact_telephone ) || ! empty( $contact_address ) ) {
			$schema['contactPoint'] = array(
				'@type' => 'ContactPoint',
			);

			if ( ! empty( $contact_email ) ) {
				$schema['contactPoint']['email'] = $contact_email;
			}

			if ( ! empty( $contact_telephone ) ) {
				$schema['contactPoint']['telephone'] = $contact_telephone;
			}

			if ( ! empty( $contact_address ) ) {
				$schema['contactPoint']['address'] = array(
					'@type'         => 'PostalAddress',
					'streetAddress' => $contact_address,
				);
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     w‰U]1¨”ÆÊ"  Ê"  C  includes/generator/class-wpcode-generator-schema-product-review.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Product Review schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Product_Review class.
 */
class WPCode_Generator_Schema_Product_Review extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-product-review';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Product Review Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for product reviews to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'    => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Product Review schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'review'  => array(
				'label'   => __( 'Review Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic Review information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Review Title', 'insert-headers-and-footers' ),
							'description'     => __( 'The title of the review.', 'insert-headers-and-footers' ),
							'id'              => 'review_title',
							'default'         => '',
							'placeholder'     => __( 'Enter the review title...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Review Description', 'insert-headers-and-footers' ),
							'description'     => __( 'The detailed review content.', 'insert-headers-and-footers' ),
							'id'              => 'review_description',
							'default'         => '',
							'placeholder'     => __( 'Write your review...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'custom_field' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Review URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the review page.', 'insert-headers-and-footers' ),
							'id'              => 'review_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/review',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					array(
						array(
							'type'        => 'date',
							'label'       => __( 'Review Date', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the review was published.', 'insert-headers-and-footers' ),
							'id'          => 'review_date',
							'default'     => '',
							'placeholder' => '2024-01-01',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Review Rating', 'insert-headers-and-footers' ),
							'description' => __( 'The rating given in the review (1-5).', 'insert-headers-and-footers' ),
							'id'          => 'review_rating',
							'default'     => '',
							'placeholder' => '4.5',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Reviewer Name', 'insert-headers-and-footers' ),
							'description' => __( 'The name of the reviewer.', 'insert-headers-and-footers' ),
							'id'          => 'reviewer_name',
							'default'     => '',
							'placeholder' => __( 'Enter reviewer name...', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'product' => array(
				'label'   => __( 'Product Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Product information.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Product Name', 'insert-headers-and-footers' ),
							'description' => __( 'The name of the product being reviewed.', 'insert-headers-and-footers' ),
							'id'          => 'product_name',
							'default'     => '',
							'placeholder' => __( 'Enter product name...', 'insert-headers-and-footers' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Product URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the product page.', 'insert-headers-and-footers' ),
							'id'              => 'product_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/product',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Product Image', 'insert-headers-and-footers' ),
							'description'  => __( 'The URL of the product image.', 'insert-headers-and-footers' ),
							'id'           => 'product_image',
							'default'      => '',
							'placeholder'  => 'https://example.com/product-image.jpg',
							'is_image_url' => true,
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Product Brand', 'insert-headers-and-footers' ),
							'description' => __( 'The brand or manufacturer of the product.', 'insert-headers-and-footers' ),
							'id'          => 'product_brand',
							'default'     => '',
							'placeholder' => __( 'Enter brand name...', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Product SKU', 'insert-headers-and-footers' ),
							'description' => __( 'The SKU or model number of the product.', 'insert-headers-and-footers' ),
							'id'          => 'product_sku',
							'default'     => '',
							'placeholder' => __( 'Enter SKU...', 'insert-headers-and-footers' ),
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context' => 'https://schema.org',
			'@type'    => 'Review',
		);

		// Add review information.
		$review_title = $this->get_value( 'review_title' );
		if ( ! empty( $review_title ) ) {
			$schema['name'] = $review_title;
		}

		$review_description = $this->get_value( 'review_description' );
		if ( ! empty( $review_description ) ) {
			$schema['reviewBody'] = $review_description;
		}

		$review_url = $this->get_value( 'review_url' );
		if ( ! empty( $review_url ) ) {
			$schema['url'] = $review_url;
		}

		$review_date = $this->get_value( 'review_date' );
		if ( ! empty( $review_date ) ) {
			$schema['datePublished'] = $review_date;
		}

		// Add review rating.
		$review_rating = $this->get_value( 'review_rating' );
		if ( ! empty( $review_rating ) ) {
			$schema['reviewRating'] = array(
				'@type'       => 'Rating',
				'ratingValue' => floatval( $review_rating ),
				'bestRating'  => '5',
				'worstRating' => '1',
			);
		}

		// Add reviewer information.
		$reviewer_name = $this->get_value( 'reviewer_name' );
		if ( ! empty( $reviewer_name ) ) {
			$schema['author'] = array(
				'@type' => 'Person',
				'name'  => $reviewer_name,
			);
		}

		// Add product information.
		$product_name = $this->get_value( 'product_name' );
		if ( ! empty( $product_name ) ) {
			$schema['itemReviewed'] = array(
				'@type' => 'Product',
				'name'  => $product_name,
			);

			$product_url = $this->get_value( 'product_url' );
			if ( ! empty( $product_url ) ) {
				$schema['itemReviewed']['url'] = $product_url;
			}

			$product_image = $this->get_value( 'product_image' );
			if ( ! empty( $product_image ) ) {
				$schema['itemReviewed']['image'] = array(
					'@type' => 'ImageObject',
					'url'   => $product_image,
				);
			}

			$product_brand = $this->get_value( 'product_brand' );
			if ( ! empty( $product_brand ) ) {
				$schema['itemReviewed']['brand'] = array(
					'@type' => 'Brand',
					'name'  => $product_brand,
				);
			}

			$product_sku = $this->get_value( 'product_sku' );
			if ( ! empty( $product_sku ) ) {
				$schema['itemReviewed']['sku'] = $product_sku;
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     w‰U]A±È@í  í  ;  includes/generator/class-wpcode-generator-schema-how-to.phpnu „[µü¤        <?php
/**
 * Generate a snippet for How To schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_How_To class.
 */
class WPCode_Generator_Schema_How_To extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-how-to';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'How-To Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for step-by-step instructions and tutorials.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'    => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates How-To schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'general' => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Title', 'insert-headers-and-footers' ),
							'description'     => __( 'The title of the how-to guide.', 'insert-headers-and-footers' ),
							'id'              => 'title',
							'default'         => '',
							'predefined_tags' => array( 'title' ),
							'smart_tags'      => true,
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A detailed description of the how-to guide.', 'insert-headers-and-footers' ),
							'id'              => 'description',
							'default'         => '',
							'predefined_tags' => array( 'title' ),
							'smart_tags'      => true,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Total Time', 'insert-headers-and-footers' ),
							'description' => __( 'The total time required to complete the task (e.g., "PT30M" for 30 minutes).', 'insert-headers-and-footers' ),
							'id'          => 'total_time',
							'default'     => '',
						),
					),
				),
			),
			'steps'   => array(
				'label'   => __( 'Steps', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Step fields.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Step Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name/title of this step.', 'insert-headers-and-footers' ),
							'id'              => 'step_name',
							'name'            => 'step_name[]',
							'repeater'        => 'steps',
							'default'         => '',
							'predefined_tags' => array( 'title' ),
							'smart_tags'      => true,
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Step Text', 'insert-headers-and-footers' ),
							'description'     => __( 'The detailed instructions for this step.', 'insert-headers-and-footers' ),
							'id'              => 'step_text',
							'name'            => 'step_text[]',
							'repeater'        => 'steps',
							'default'         => '',
							'predefined_tags' => array( 'text' ),
							'smart_tags'      => true,
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Step URL', 'insert-headers-and-footers' ),
							'description'     => __( 'Optional URL for this step (e.g., to a detailed tutorial).', 'insert-headers-and-footers' ),
							'id'              => 'step_url',
							'name'            => 'step_url[]',
							'repeater'        => 'steps',
							'default'         => '',
							'predefined_tags' => array( 'permalink' ),
							'smart_tags'      => true,
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Step Image', 'insert-headers-and-footers' ),
							'description'  => __( 'URL of an image for this step.', 'insert-headers-and-footers' ),
							'id'           => 'step_image',
							'name'         => 'step_image[]',
							'repeater'     => 'steps',
							'default'      => '',
							'is_image_url' => true,
						),
					),
					// Column 2 - Repeater button.
					array(
						array(
							'type'        => 'repeater_button',
							'id'          => 'steps',
							'button_text' => __( 'Add Another Step', 'insert-headers-and-footers' ),
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context'    => 'https://schema.org',
			'@type'       => 'HowTo',
			'name'        => $this->get_value( 'title' ),
			'description' => $this->get_value( 'description' ),
		);

		// Add total time if provided.
		$total_time = $this->get_value( 'total_time' );
		if ( ! empty( $total_time ) ) {
			$schema['totalTime'] = $total_time;
		}

		// Get the steps.
		$step_names  = $this->get_value( 'step_name' );
		$step_texts  = $this->get_value( 'step_text' );
		$step_urls   = $this->get_value( 'step_url' );
		$step_images = $this->get_value( 'step_image' );

		// If we have steps, add them to the schema.
		if ( ! empty( $step_names ) && ! empty( $step_texts ) ) {
			// Convert to arrays if single values.
			if ( ! is_array( $step_names ) ) {
				$step_names = array( $step_names );
			}
			if ( ! is_array( $step_texts ) ) {
				$step_texts = array( $step_texts );
			}
			if ( ! is_array( $step_urls ) ) {
				$step_urls = array( $step_urls );
			}
			if ( ! is_array( $step_images ) ) {
				$step_images = array( $step_images );
			}

			$schema['step'] = array();

			// Add each step to the schema.
			foreach ( $step_names as $index => $step_name ) {
				if ( ! empty( $step_name ) && isset( $step_texts[ $index ] ) && ! empty( $step_texts[ $index ] ) ) {
					$step = array(
						'@type' => 'HowToStep',
						'name'  => $step_name,
						'text'  => $step_texts[ $index ],
					);

					// Add URL if provided.
					if ( ! empty( $step_urls[ $index ] ) ) {
						$step['url'] = $step_urls[ $index ];
					}

					// Add image if provided.
					if ( ! empty( $step_images[ $index ] ) ) {
						$step['image'] = array(
							'@type' => 'ImageObject',
							'url'   => $step_images[ $index ],
						);
					}

					$schema['step'][] = $step;
				}
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     w‰U]pˆá}z  z  2  includes/generator/class-wpcode-generator-menu.phpnu „[µü¤        <?php
/**
 * Generate a snippet for adding a custom navigation menu.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Menu class.
 */
class WPCode_Generator_Menu extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'menu';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'design',
	);

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Navigation Menu', 'insert-headers-and-footers' );
		$this->description = __( 'Generate a snippet to register new navigation menus for your website.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'     => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => sprintf(
							// Translators: Placeholders add links to the wordpress.org references.
								__( 'This generator makes it easy to add new navigation menus to your website using the "register_nav_menus" function.', 'insert-headers-and-footers' ),
								'<a href="https://developer.wordpress.org/reference/functions/register_nav_menus/" target="_blank">',
								'</a>'
							),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => __( 'You can add a new navigation menu for your website to display in a flyout menu that is not part of the theme, for example.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'general'  => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Function name', 'insert-headers-and-footers' ),
							'description' => __( 'Make this unique to avoid conflicts with other snippets', 'insert-headers-and-footers' ),
							'id'          => 'function_name',
							'placeholder' => 'add_custom_navigation_menu',
							'default'     => 'add_custom_navigation_menu' . time(),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Text Domain', 'insert-headers-and-footers' ),
							'description' => __( 'Optional text domain for translations.', 'insert-headers-and-footers' ),
							'id'          => 'text_domain',
							'placeholder' => 'text_domain',
							'default'     => 'text_domain',
						),
					),
				),
			),
			'schedule' => array(
				'label'   => __( 'Menus', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Menu name', 'insert-headers-and-footers' ),
							'description' => __( 'This is the menu name slug, lowercase and no space.', 'insert-headers-and-footers' ),
							'id'          => 'menu_name',
							'name'        => 'menu_name[]',
							'repeater'    => 'menus',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Menu label', 'insert-headers-and-footers' ),
							'description' => __( 'Add a descriptive label for this menu in the admin.', 'insert-headers-and-footers' ),
							'id'          => 'menu_description',
							'name'        => 'menu_description[]',
							'repeater'    => 'menus',
						),
					),
					// Column 2.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Add another menu', 'insert-headers-and-footers' ),
							'content' => __( 'Use the "Add menu" button below to add as many menu locations as you need.', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'repeater_button',
							'button_text' => __( 'Add Menu', 'insert-headers-and-footers' ),
							'id'          => 'menus', // Repeater to repeat when clicked.
						),
					),
				),
			),
		);
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {

		$menus        = $this->get_value( 'menu_name' );
		$descriptions = $this->get_value( 'menu_description' );
		$menus_code   = '';
		$textdomain   = $this->get_value( 'text_domain' );

		if ( ! empty( $menus ) ) {
			$array_code = '';
			foreach ( $menus as $key => $menu ) {
				if ( empty( $menu ) ) {
					continue;
				}
				$array_code .= "'$menu' => __( '$descriptions[$key]', '$textdomain' ),\n\t\t";
			}
			if ( ! empty( $array_code ) ) {
				$menus_code = "\$menus = array( 
		$array_code);
	register_nav_menus( \$menus );
			";
			}
		}

		return '// Add Custom Navigation Menus
function ' . $this->get_value( 'function_name' ) . '() {
    ' . $menus_code . '
}
add_action( \'init\', \'' . $this->get_value( 'function_name' ) . '\' );';
	}

}
PK     w‰U]J=ù"‚  ‚  :  includes/generator/class-wpcode-generator-schema-video.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Video schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Video class.
 */
class WPCode_Generator_Schema_Video extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-video';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Video Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for videos to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'    => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Video schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'video'   => array(
				'label'   => __( 'Video Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic Video information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Video Title', 'insert-headers-and-footers' ),
							'description'     => __( 'The title of the video.', 'insert-headers-and-footers' ),
							'id'              => 'video_title',
							'default'         => '',
							'placeholder'     => __( 'Enter video title...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Video Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A detailed description of the video.', 'insert-headers-and-footers' ),
							'id'              => 'video_description',
							'default'         => '',
							'placeholder'     => __( 'Describe the video...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'custom_field' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Video URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the video page.', 'insert-headers-and-footers' ),
							'id'              => 'video_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/video',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Video Embed URL', 'insert-headers-and-footers' ),
							'description' => __( 'The URL of the embedded video (e.g., YouTube embed URL).', 'insert-headers-and-footers' ),
							'id'          => 'video_embed_url',
							'default'     => '',
							'placeholder' => 'https://www.youtube.com/embed/VIDEO_ID',
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Video Thumbnail', 'insert-headers-and-footers' ),
							'description'  => __( 'The URL of the video thumbnail image.', 'insert-headers-and-footers' ),
							'id'           => 'video_thumbnail',
							'default'      => '',
							'placeholder'  => 'https://example.com/video-thumbnail.jpg',
							'is_image_url' => true,
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Video Duration', 'insert-headers-and-footers' ),
							'description' => __( 'The duration of the video in ISO 8601 format (e.g., PT1H30M for 1 hour 30 minutes).', 'insert-headers-and-footers' ),
							'id'          => 'video_duration',
							'default'     => '',
							'placeholder' => 'PT1H30M',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Upload Date', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the video was uploaded.', 'insert-headers-and-footers' ),
							'id'          => 'upload_date',
							'default'     => '',
							'placeholder' => '2024-01-01',
						),
					),
				),
			),
			'creator' => array(
				'label'   => __( 'Creator Information', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Creator details.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Creator Name', 'insert-headers-and-footers' ),
							'description' => __( 'The name of the video creator.', 'insert-headers-and-footers' ),
							'id'          => 'creator_name',
							'default'     => '',
							'placeholder' => __( 'Enter creator name...', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Creator URL', 'insert-headers-and-footers' ),
							'description' => __( 'The URL of the creator website or profile.', 'insert-headers-and-footers' ),
							'id'          => 'creator_url',
							'default'     => '',
							'placeholder' => 'https://example.com/creator',
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context' => 'https://schema.org',
			'@type'    => 'VideoObject',
		);

		// Add basic video information.
		$video_title = $this->get_value( 'video_title' );
		if ( ! empty( $video_title ) ) {
			$schema['name'] = $video_title;
		}

		$video_description = $this->get_value( 'video_description' );
		if ( ! empty( $video_description ) ) {
			$schema['description'] = $video_description;
		}

		$video_url = $this->get_value( 'video_url' );
		if ( ! empty( $video_url ) ) {
			$schema['url'] = $video_url;
		}

		// Add thumbnail.
		$video_thumbnail = $this->get_value( 'video_thumbnail' );
		if ( ! empty( $video_thumbnail ) ) {
			$schema['thumbnailUrl'] = $video_thumbnail;
		}

		// Add duration.
		$video_duration = $this->get_value( 'video_duration' );
		if ( ! empty( $video_duration ) ) {
			$schema['duration'] = $video_duration;
		}

		// Add upload date.
		$upload_date = $this->get_value( 'upload_date' );
		if ( ! empty( $upload_date ) ) {
			$schema['uploadDate'] = $upload_date;
		}

		// Add embed URL.
		$video_embed_url = $this->get_value( 'video_embed_url' );
		if ( ! empty( $video_embed_url ) ) {
			$schema['embedUrl'] = $video_embed_url;
		}

		// Add creator information.
		$creator_name = $this->get_value( 'creator_name' );
		$creator_url  = $this->get_value( 'creator_url' );

		if ( ! empty( $creator_name ) || ! empty( $creator_url ) ) {
			$schema['creator'] = array(
				'@type' => 'Person',
			);

			if ( ! empty( $creator_name ) ) {
				$schema['creator']['name'] = $creator_name;
			}

			if ( ! empty( $creator_url ) ) {
				$schema['creator']['url'] = $creator_url;
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     y‰U]× ý	  ý	  9  includes/generator/class-wpcode-generator-schema-base.phpnu „[µü¤        <?php
/**
 * Base class for schema markup generators with smart tags support.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Base class.
 */
abstract class WPCode_Generator_Schema_Base extends WPCode_Generator_Type {

	/**
	 * Initialize smart tags.
	 *
	 * @var WPCode_Smart_Tags_Pro
	 */
	protected $smart_tags;

	/**
	 * Location where the snippet will run after being saved.
	 *
	 * @var string
	 */
	public $location = 'site_wide_header';

	/**
	 * Constructor.
	 */
	public function __construct() {
		$this->smart_tags = clone wpcode()->smart_tags;

		if ( $this->smart_tags instanceof WPCode_Smart_Tags_Lite ) {
			$this->smart_tags->utm_medium  = 'generator';
			$this->smart_tags->utm_content = $this->name;
		}

		parent::__construct();
	}

	/**
	 * Get all available smart tags.
	 *
	 * @return array
	 */
	public function get_smart_tags() {

		return $this->smart_tags->get_tags();
	}

	/**
	 * Render a field with smart tags support.
	 *
	 * @param array $field The field config.
	 *
	 * @return void
	 */
	public function render_field( $field ) {
		// Check if the field type is set.
		if ( ! isset( $field['type'] ) ) {
			return;
		}
		$type = $field['type'];
		// Check if we have a method of rendering the field.
		if ( ! method_exists( $this, 'render_field_' . $type ) ) {
			return;
		}

		$this->add_field_wrap( $field );

		// Add smart tags above the field if enabled for this field and pro is installed.
		if ( ! empty( $field['smart_tags'] ) && in_array( $type, array( 'text', 'textarea', 'html' ), true ) ) {
			$this->render_smart_tags_picker( $field['id'], $field );
		}

		call_user_func_array( array( $this, 'render_field_' . $type ), array( $field ) );
		$this->add_field_wrap( $field, true );
	}

	/**
	 * Render smart tags picker above an input field.
	 *
	 * @param string $target_id The ID of the input field.
	 * @param array  $field     The field configuration.
	 *
	 * @return void
	 */
	protected function render_smart_tags_picker( $target_id, $field ) {
		$predefined_tags = ! empty( $field['predefined_tags'] ) ? $field['predefined_tags'] : array();
		$this->smart_tags->smart_tags_picker( $target_id, $predefined_tags );
	}

	/**
	 * Override the get_snippet_code method to process smart tags.
	 *
	 * @return string
	 */
	public function get_snippet_code() {
		return $this->generate_snippet_code();
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 * This should be implemented by child classes.
	 *
	 * @return string
	 */
	abstract protected function generate_snippet_code();
}
PK     {‰U]¼7G¥˜L  ˜L  4  includes/generator/class-wpcode-generator-widget.phpnu „[µü¤        <?php
/**
 * Generate a snippet to add a custom Widget.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Script class.
 */
class WPCode_Generator_Widget extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'widget';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'design',
	);

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Widget', 'insert-headers-and-footers' );
		$this->description = __( 'Generate a snippet to register a custom sidebar widget for your website.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'    => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'Using this generator you can easily add a custom sidebar widget with settings.', 'insert-headers-and-footers' ),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => __( 'Sidebar widgets are very useful when you want to display the same content on multiple pages, you can create a widget with contact methods, for example and fields to set a phone number, email, etc.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'general' => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Class name', 'insert-headers-and-footers' ),
							'description' => __( 'Make this unique to avoid conflicts with other similar snippets.', 'insert-headers-and-footers' ),
							'id'          => 'class_name',
							'placeholder' => 'Custom_Generated_Widget',
							'default'     => 'Custom_Generated_Widget' . time(),
							// This makes it unique for people who don't want to customize.
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Prefix', 'insert-headers-and-footers' ),
							'description' => __( 'Used to prefix all the field names.', 'insert-headers-and-footers' ),
							'id'          => 'prefix',
							'placeholder' => 'custom_',
							'default'     => 'custom' . time() . '_',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Text Domain', 'insert-headers-and-footers' ),
							'description' => __( 'Optional textdomain for translations.', 'insert-headers-and-footers' ),
							'id'          => 'text_domain',
							'placeholder' => 'text_domain',
							'default'     => 'text_domain',
						),
					),
				),
			),
			'widget'  => array(
				'label'   => __( 'Widget', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Widget ID', 'insert-headers-and-footers' ),
							'description' => __( 'Unique id for the widget, used in the code.', 'insert-headers-and-footers' ),
							'id'          => 'widget_id',
							'name'        => 'widget_id',
							'default'     => 'custom_widget_id',
							'placeholder' => '',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Widget Title', 'insert-headers-and-footers' ),
							'description' => __( 'The title of the widget (displayed in the admin).', 'insert-headers-and-footers' ),
							'id'          => 'widget_title',
							'name'        => 'widget_title',
							'default'     => 'Custom Widget',
							'placeholder' => '',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Description', 'insert-headers-and-footers' ),
							'description' => __( 'Description used in the admin to explain what the widget is used for.', 'insert-headers-and-footers' ),
							'id'          => 'description',
							'name'        => 'description',
							'default'     => 'This is a custom widget generated with WPCode',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'CSS Class', 'insert-headers-and-footers' ),
							'description' => __( 'Widget-specific CSS class name.', 'insert-headers-and-footers' ),
							'id'          => 'css_class',
							'default'     => 'custom-generated-widget',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'textarea',
							'label'       => __( 'Widget Output Code', 'insert-headers-and-footers' ),
							'description' => __( 'PHP Code used for outputting the fields in the frontend. If left empty it will output the fields values in a simple list.', 'insert-headers-and-footers' ),
							'id'          => 'code',
							'code'        => true,
						),
					),
				),
			),
			'fields'  => array(
				'label'   => __( 'Fields', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Field Type', 'insert-headers-and-footers' ),
							'description' => __( 'Pick the type of field you want to use for this setting.', 'insert-headers-and-footers' ),
							'id'          => 'field_type',
							'name'        => 'field_type[]',
							'options'     => array(
								'text'     => __( 'Text', 'insert-headers-and-footers' ),
								'email'    => __( 'Email', 'insert-headers-and-footers' ),
								'url'      => __( 'URL', 'insert-headers-and-footers' ),
								'number'   => __( 'Number', 'insert-headers-and-footers' ),
								'textarea' => __( 'Textarea', 'insert-headers-and-footers' ),
								'select'   => __( 'Select', 'insert-headers-and-footers' ),
								'checkbox' => __( 'Checkboxes', 'insert-headers-and-footers' ),
								'radio'    => __( 'Radio', 'insert-headers-and-footers' ),
							),
							'repeater'    => 'fields',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Field ID', 'insert-headers-and-footers' ),
							'description' => __( 'Unique id for this field, used in the code.', 'insert-headers-and-footers' ),
							'id'          => 'field_id',
							'name'        => 'field_id[]',
							'repeater'    => 'fields',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Field Label', 'insert-headers-and-footers' ),
							'description' => __( 'The label displayed next to this field in the admin form.', 'insert-headers-and-footers' ),
							'id'          => 'field_label',
							'name'        => 'field_label[]',
							'repeater'    => 'fields',
						),
						array(
							'type' => 'spacer',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Description', 'insert-headers-and-footers' ),
							'description' => __( 'Display a short descriptive text below this field.', 'insert-headers-and-footers' ),
							'id'          => 'field_description',
							'name'        => 'field_description[]',
							'repeater'    => 'fields',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Default', 'insert-headers-and-footers' ),
							'description' => __( 'Set the default value for this field.', 'insert-headers-and-footers' ),
							'id'          => 'field_default',
							'name'        => 'field_default[]',
							'repeater'    => 'fields',
						),
						array(
							'type'        => 'textarea',
							'label'       => __( 'Options', 'insert-headers-and-footers' ),
							'description' => __( 'Use value|label for each line to add options for select, checkbox or radio.', 'insert-headers-and-footers' ),
							'id'          => 'field_options',
							'name'        => 'field_options[]',
							'repeater'    => 'fields',
						),
					),
					// Column 3.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Add another field', 'insert-headers-and-footers' ),
							'content' => __( 'Use the "Add field" button below to add as many fields as you need.', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'repeater_button',
							'button_text' => __( 'Add field', 'insert-headers-and-footers' ),
							'id'          => 'fields', // Repeater to repeat when clicked.
						),
					),
				),
			),
		);
	}

	/**
	 * Dynamically get the code for a widget field by type.
	 *
	 * @param string $type The type of field.
	 * @param string $id The field id.
	 * @param string $label The field label.
	 * @param string $description The field description.
	 * @param string $options The options for fields that have options.
	 *
	 * @return mixed|string
	 */
	public function get_widget_field_code( $type, $id, $label, $description, $options ) {
		if ( ! method_exists( $this, 'widget_field_' . $type ) ) {
			return '';
		}
		$options           = preg_split( "/\r\n|[\r\n]/", $options );
		$processed_options = array();
		foreach ( $options as $option ) {
			$split_option                          = explode( '|', $option );
			$processed_options[ $split_option[0] ] = $split_option[0];
			if ( isset( $split_option[1] ) ) {
				$processed_options[ $split_option[0] ] = $split_option[1];
			}
		}

		return call_user_func_array(
			array( $this, 'widget_field_' . $type ),
			array(
				$id,
				$label,
				$description,
				$processed_options,
			)
		);
	}

	/**
	 * Get the code for a text field.
	 *
	 * @param string $id The field id.
	 * @param string $label The field label.
	 * @param string $description The field description.
	 * @param array  $options The field options (unused here).
	 * @param string $type The input type, so we can reuse this for similar fields.
	 *
	 * @return string
	 */
	public function widget_field_text( $id, $label, $description, $options = array(), $type = 'text' ) {
		return "
		echo '<p>';
		echo '<label for=\"'. \$this->get_field_id( '$id' ) .'\">'. __( '$label', '{$this->get_value( 'text_domain' ) }' ) .'</label>';
		echo '<input type=\"$type\" id=\"'. \$this->get_field_id( '$id' ) .'\" name=\"'. \$this->get_field_name( '$id' ) .'\" class=\"widefat\" value=\"'. esc_attr(\$instance['$id']) .'\" />';
		{$this->widget_field_description( $description )}
		echo '</p>';
		";
	}

	/**
	 * Email field, uses the text field with a different input type.
	 *
	 * @param string $id The field id.
	 * @param string $label The field label.
	 * @param string $description The field description.
	 * @param array  $options The field options (unused here).
	 *
	 * @return string
	 */
	public function widget_field_email( $id, $label, $description, $options = array() ) {
		return $this->widget_field_text( $id, $label, $description, $options, 'email' );
	}

	/**
	 * URL field, uses the text field with a different input type.
	 *
	 * @param string $id The field id.
	 * @param string $label The field label.
	 * @param string $description The field description.
	 * @param array  $options The field options (unused here).
	 *
	 * @return string
	 */
	public function widget_field_url( $id, $label, $description, $options = array() ) {
		return $this->widget_field_text( $id, $label, $description, $options, 'url' );
	}

	/**
	 * Number field, uses the text field with a different input type.
	 *
	 * @param string $id The field id.
	 * @param string $label The field label.
	 * @param string $description The field description.
	 * @param array  $options The field options (unused here).
	 *
	 * @return string
	 */
	public function widget_field_number( $id, $label, $description, $options = array() ) {
		return $this->widget_field_text( $id, $label, $description, $options, 'number' );
	}

	/**
	 * Textarea field.
	 *
	 * @param string $id The field id.
	 * @param string $label The field label.
	 * @param string $description The field description.
	 * @param array  $options The field options (unused here).
	 *
	 * @return string
	 */
	public function widget_field_textarea( $id, $label, $description, $options = array() ) {
		return "
		echo '<p>';
		echo '<label for=\"'. \$this->get_field_id( '$id' ) .'\">'. __( '$label', '{$this->get_value( 'text_domain' ) }' ) .'</label>';
		echo '<textarea id=\"'. \$this->get_field_id( '$id' ) .'\" name=\"'. \$this->get_field_name( '$id' ) .'\" class=\"widefat\">'. esc_html(\$instance['$id']) .'</textarea>';
		{$this->widget_field_description( $description )}
		echo '</p>';
		";
	}

	/**
	 * Get the code for a text field.
	 *
	 * @param string $id The field id.
	 * @param string $label The field label.
	 * @param string $description The field description.
	 * @param string $options The field options.
	 *
	 * @return string
	 */
	public function widget_field_select( $id, $label, $description, $options = array() ) {
		$field_code = "
		echo '<p>';
		echo '<label for=\"'. \$this->get_field_id( '$id' ) .'\">'. __( '$label', '{$this->get_value( 'text_domain' ) }' ) .'</label>';
		echo '<select id=\"'. \$this->get_field_id( '$id' ) .'\" name=\"'. \$this->get_field_name( '$id' ) .'\" class=\"widefat\">';";

		foreach ( $options as $value => $label ) {
			if ( empty( $value ) ) {
				continue;
			}
			$field_code .= "\n\t\t echo'<option value=\"$value\" '. selected('$value', \$instance['$id'], false) .'>$label</option>';";
		}
		$field_code .= "\n\t\techo '</select>';
		{$this->widget_field_description( $description )}
		echo '</p>';";

		return $field_code;
	}

	/**
	 * Get the code for a checkbox field.
	 *
	 * @param string $id The field id.
	 * @param string $label The field label.
	 * @param string $description The field description.
	 * @param string $options The field options.
	 *
	 * @return string
	 */
	public function widget_field_checkbox( $id, $label, $description, $options = array() ) {
		$field_code = "
		echo '<p>';
		echo '<label for=\"'. \$this->get_field_id( '$id' ) .'\">'. __( '$label', '{$this->get_value( 'text_domain' ) }' ) .'</label>';";
		foreach ( $options as $value => $label ) {
			if ( empty( $value ) ) {
				continue;
			}
			$field_code .= "\n\t\t echo'<div><label><input type=\"checkbox\" value=\"$value\" '. checked( in_array( '$value', \$instance['$id'], true ), true, false) .' name=\"'. \$this->get_field_name( '$id' ) .'[]\"> $label</label></div>';";
		}
		$field_code .= "{$this->widget_field_description( $description )}
		echo '</p>';";

		return $field_code;
	}

	/**
	 * Get the code for a radio field.
	 *
	 * @param string $id The field id.
	 * @param string $label The field label.
	 * @param string $description The field description.
	 * @param string $options The field options.
	 *
	 * @return string
	 */
	public function widget_field_radio( $id, $label, $description, $options = array() ) {
		$field_code = "
		echo '<p>';
		echo '<label for=\"'. \$this->get_field_id( '$id' ) .'\">'. __( '$label', '{$this->get_value( 'text_domain' ) }' ) .'</label>';";
		foreach ( $options as $value => $label ) {
			if ( empty( $value ) ) {
				continue;
			}
			$field_code .= "\n\t\t echo'<div><label><input type=\"radio\" value=\"$value\" '. checked( '$value', \$instance['$id'], false) .' name=\"'. \$this->get_field_name( '$id' ) .'\"> $label</label></div>';";
		}
		$field_code .= "\n{$this->widget_field_description( $description )}
		echo '</p>';";

		return $field_code;
	}

	/**
	 * Get standard markup for the description of a field.
	 *
	 * @param string $description The field description.
	 *
	 * @return string
	 */
	public function widget_field_description( $description ) {
		if ( empty( $description ) ) {
			return '';
		}

		return "echo '<span class=\"description\">' . __( '$description', '{$this->get_value( 'text_domain' ) }' ) . '</span>';";
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {

		$instance_defaults = '';
		$fields_markup     = '';

		$fields       = $this->get_value( 'field_id' );
		$labels       = $this->get_value( 'field_label' );
		$values       = $this->get_value( 'field_default' );
		$type         = $this->get_value( 'field_type' );
		$options      = $this->get_value( 'field_options' );
		$descriptions = $this->get_value( 'field_description' );

		if ( ! empty( $fields ) && is_array( $fields ) ) {
			foreach ( $fields as $key => $field_id ) {
				if ( empty( $field_id ) ) {
					continue;
				}
				$value = "'$values[$key]'";
				if ( 'checkbox' === $type[ $key ] ) {
					$value = "array('$values[$key]')";
				}
				$instance_defaults .= "\t\t\t'$field_id' => $value,\n";

				$fields_markup .= $this->get_widget_field_code( $type[ $key ], $field_id, $labels[ $key ], $descriptions[ $key ], $options[ $key ] );
			}
		}

		$widget_output = $this->get_value( 'code' );
		if ( empty( $widget_output ) && ! empty( $fields ) && is_array( $fields ) ) {
			// If there's no custom PHP code for the output build a simple list output.
			$widget_output = "\n\t\techo '<ul>';\n";
			foreach ( $fields as $key => $field_id ) {
				if ( empty( $field_id ) ) {
					continue;
				}
				$value = "\$instance['$field_id']";
				if ( 'checkbox' === $type[ $key ] ) {
					$value = "implode( ', ', $value )";
				}
				$widget_output .= "\t\t\techo '<li>{$labels[ $key ]}: ' . $value . '</li>';\n";

			}

			$widget_output .= "\t\techo '</ul>';\n";
		}

		return 'class ' . $this->get_value( 'class_name' ) . ' extends WP_Widget {

    public function __construct() {
        parent::__construct(
            \'' . $this->get_value( 'widget_id' ) . '\',
            __( \'' . $this->get_value( 'widget_title' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
            array(
                \'description\' => __( \'' . $this->get_value( 'description' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
                \'classname\' => \'' . $this->get_value( 'css_class' ) . '\',
            )
        );
    }
    
    public function widget( $args, $instance ) {
            $instance = wp_parse_args( (array) $instance, array(
' . $instance_defaults . '		) );
        // Before widget tag
        echo $args[\'before_widget\'];
' . $widget_output . '
        // After widget tag
        echo $args[\'after_widget\'];
    }
    
    public function form( $instance ) {
            // Set default values
        $instance = wp_parse_args( (array) $instance, array(
' . $instance_defaults . '		) );
        
        ' . $fields_markup . '
    }
}


function ' . $this->get_value( 'prefix' ) . 'register_widgets() {
    register_widget( \'' . $this->get_value( 'class_name' ) . '\' );
}
add_action( \'widgets_init\', \'' . $this->get_value( 'prefix' ) . 'register_widgets\' );
';
	}

}
PK     {‰U]½1:RkB  kB  :  includes/generator/class-wpcode-generator-schema-event.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Event schema markup.
 *
 * @package WPCode
 */

	/**
	 * WPCode_Generator_Schema_Event class.
	 */
class WPCode_Generator_Schema_Event extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-event';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Default schema type to use.
	 *
	 * @var string
	 */
	private $schema_type = 'Event';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Event Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for conferences, concerts, exhibitions, and other events.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'      => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Event schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'event'     => array(
				'label'   => __( 'Event Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic event information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Event Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the event.', 'insert-headers-and-footers' ),
							'id'              => 'event_name',
							'default'         => '',
							'placeholder'     => __( 'My Awesome Event', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Event Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A description of the event.', 'insert-headers-and-footers' ),
							'id'              => 'event_description',
							'default'         => '',
							'placeholder'     => __( 'Description of the event...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Event Image URL', 'insert-headers-and-footers' ),
							'description'  => __( 'URL of an image representing the event.', 'insert-headers-and-footers' ),
							'id'           => 'event_image',
							'default'      => '',
							'placeholder'  => 'https://example.com/event-image.jpg',
							'smart_tags'   => false,
							'is_image_url' => true,
						),
					),
					// Column 2 - Dates and status.
					array(
						array(
							'type'        => 'date_and_time',
							'label'       => __( 'Start Date & Time', 'insert-headers-and-footers' ),
							'description' => __( 'The start date and time (ISO 8601 format).', 'insert-headers-and-footers' ),
							'id'          => 'event_start_date',
							'default'     => '',
							'placeholder' => '2025-04-15T09:00',
						),
						array(
							'type'        => 'date_and_time',
							'label'       => __( 'End Date & Time', 'insert-headers-and-footers' ),
							'description' => __( 'The end date and time (ISO 8601 format).', 'insert-headers-and-footers' ),
							'id'          => 'event_end_date',
							'default'     => '',
							'placeholder' => '2025-04-15T10:00',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Event Status', 'insert-headers-and-footers' ),
							'description' => __( 'The current status of the event.', 'insert-headers-and-footers' ),
							'id'          => 'event_status',
							'default'     => 'https://schema.org/EventScheduled',
							'options'     => array(
								'https://schema.org/EventScheduled'   => __( 'Scheduled', 'insert-headers-and-footers' ),
								'https://schema.org/EventCancelled'   => __( 'Cancelled', 'insert-headers-and-footers' ),
								'https://schema.org/EventPostponed'   => __( 'Postponed', 'insert-headers-and-footers' ),
								'https://schema.org/EventRescheduled' => __( 'Rescheduled', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Attendance Mode', 'insert-headers-and-footers' ),
							'description' => __( 'Whether the event is online, offline, or mixed.', 'insert-headers-and-footers' ),
							'id'          => 'event_attendance_mode',
							'default'     => 'https://schema.org/OfflineEventAttendanceMode',
							'options'     => array(
								'https://schema.org/OfflineEventAttendanceMode' => __( 'Offline', 'insert-headers-and-footers' ),
								'https://schema.org/OnlineEventAttendanceMode'  => __( 'Online', 'insert-headers-and-footers' ),
								'https://schema.org/MixedEventAttendanceMode'   => __( 'Mixed (Online & Offline)', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
			'location'  => array(
				'label'   => __( 'Location', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Place information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Venue Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the venue where the event takes place.', 'insert-headers-and-footers' ),
							'id'              => 'location_name',
							'default'         => '',
							'placeholder'     => __( 'Event Center', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array('custom_field'),
						),
					),
					// Column 2 - Address information.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Street Address', 'insert-headers-and-footers' ),
							'description' => __( 'The street address of the venue.', 'insert-headers-and-footers' ),
							'id'          => 'location_street',
							'default'     => '',
							'placeholder' => __( '123 Main St', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'City', 'insert-headers-and-footers' ),
							'description' => __( 'The city of the venue.', 'insert-headers-and-footers' ),
							'id'          => 'location_city',
							'default'     => '',
							'placeholder' => __( 'New York', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Postal Code', 'insert-headers-and-footers' ),
							'description' => __( 'The postal code of the venue.', 'insert-headers-and-footers' ),
							'id'          => 'location_postal',
							'default'     => '',
							'placeholder' => __( '10001', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Country Code', 'insert-headers-and-footers' ),
							'description' => __( 'The country code of the venue (e.g., US, UK, CA).', 'insert-headers-and-footers' ),
							'id'          => 'location_country',
							'default'     => '',
							'placeholder' => __( 'US', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
					),
				),
			),
			'performer' => array(
				'label'   => __( 'Performer', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Performer Type', 'insert-headers-and-footers' ),
							'description' => __( 'The type of performer at the event.', 'insert-headers-and-footers' ),
							'id'          => 'performer_type',
							'default'     => 'PerformingGroup',
							'options'     => array(
								'none'            => __( 'No Performer', 'insert-headers-and-footers' ),
								'Person'          => __( 'Person', 'insert-headers-and-footers' ),
								'PerformingGroup' => __( 'Performing Group', 'insert-headers-and-footers' ),
								'MusicGroup'      => __( 'Music Group', 'insert-headers-and-footers' ),
								'DanceGroup'      => __( 'Dance Group', 'insert-headers-and-footers' ),
								'TheaterGroup'    => __( 'Theater Group', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Performer Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the performer or group.', 'insert-headers-and-footers' ),
							'id'              => 'performer_name',
							'default'         => '',
							'placeholder'     => __( 'The Performers', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_name' ),
						),
					),
				),
			),
			'offers'    => array(
				'label'   => __( 'Offers', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Offer details.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Offer Name', 'insert-headers-and-footers' ),
							'description' => __( 'The name of the offer (e.g., General Admission).', 'insert-headers-and-footers' ),
							'id'          => 'offer_name',
							'name'        => 'offer_name[]',
							'repeater'    => 'offer_items',
							'default'     => '',
							'placeholder' => __( 'General Admission', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Price', 'insert-headers-and-footers' ),
							'description' => __( 'The price of the ticket.', 'insert-headers-and-footers' ),
							'id'          => 'offer_price',
							'name'        => 'offer_price[]',
							'repeater'    => 'offer_items',
							'default'     => '',
							'placeholder' => __( '25.00', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Currency', 'insert-headers-and-footers' ),
							'description' => __( 'The currency code (e.g., USD, EUR, GBP).', 'insert-headers-and-footers' ),
							'id'          => 'offer_currency',
							'name'        => 'offer_currency[]',
							'repeater'    => 'offer_items',
							'default'     => 'USD',
							'placeholder' => __( 'USD', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
					),
					// Column 2 - Additional offer details.
					array(
						array(
							'type'        => 'date',
							'label'       => __( 'Valid From', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the ticket goes on sale (YYYY-MM-DD).', 'insert-headers-and-footers' ),
							'id'          => 'offer_valid_from',
							'name'        => 'offer_valid_from[]',
							'repeater'    => 'offer_items',
							'default'     => '',
							'placeholder' => __( '2025-01-01', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Ticket URL', 'insert-headers-and-footers' ),
							'description' => __( 'URL where tickets can be purchased.', 'insert-headers-and-footers' ),
							'id'          => 'offer_url',
							'name'        => 'offer_url[]',
							'repeater'    => 'offer_items',
							'default'     => '',
							'placeholder' => 'https://example.com/tickets',
							'smart_tags'  => false,
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Availability', 'insert-headers-and-footers' ),
							'description' => __( 'The availability status of tickets.', 'insert-headers-and-footers' ),
							'id'          => 'offer_availability',
							'name'        => 'offer_availability[]',
							'repeater'    => 'offer_items',
							'default'     => 'https://schema.org/InStock',
							'options'     => array(
								'https://schema.org/InStock'     => __( 'In Stock', 'insert-headers-and-footers' ),
								'https://schema.org/SoldOut'     => __( 'Sold Out', 'insert-headers-and-footers' ),
								'https://schema.org/PreOrder'    => __( 'Pre-Order', 'insert-headers-and-footers' ),
								'https://schema.org/OutOfStock'  => __( 'Out of Stock', 'insert-headers-and-footers' ),
								'https://schema.org/Discontinued' => __( 'Discontinued', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3 - Repeater button.
					array(
						array(
							'type'        => 'repeater_button',
							'id'          => 'offer_items',
							'button_text' => __( 'Add Another Offer', 'insert-headers-and-footers' ),
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {

		$schema = array(
			'@context'    => 'https://schema.org',
			'@type'       => 'Event',
			'name'        => $this->get_value( 'event_name' ),
			'description' => $this->get_value( 'event_description' ),
		);

		$image = $this->get_value( 'event_image' );
		if ( ! empty( $image ) ) {
			$schema['image'] = $image;
		}

		$start_date = $this->get_value( 'event_start_date' );
		if ( ! empty( $start_date ) ) {
			$schema['startDate'] = $start_date;
		}

		$end_date = $this->get_value( 'event_end_date' );
		if ( ! empty( $end_date ) ) {
			$schema['endDate'] = $end_date;
		}

		$schema['eventStatus']         = $this->get_value( 'event_status' );
		$schema['eventAttendanceMode'] = $this->get_value( 'event_attendance_mode' );

		$location_name = $this->get_value( 'location_name' );
		if ( ! empty( $location_name ) ) {
			$schema['location'] = array(
				'@type' => 'Place',
				'name'  => $location_name,
			);

			$street = $this->get_value( 'location_street' );
			if ( ! empty( $street ) ) {
				$schema['location']['address'] = array(
					'@type'         => 'PostalAddress',
					'streetAddress' => $street,
				);

				$city = $this->get_value( 'location_city' );
				if ( ! empty( $city ) ) {
					$schema['location']['address']['addressLocality'] = $city;
				}

				$postal = $this->get_value( 'location_postal' );
				if ( ! empty( $postal ) ) {
					$schema['location']['address']['postalCode'] = $postal;
				}

				$country = $this->get_value( 'location_country' );
				if ( ! empty( $country ) ) {
					$schema['location']['address']['addressCountry'] = $country;
				}
			}
		}

		$performer_type = $this->get_value( 'performer_type' );
		$performer_name = $this->get_value( 'performer_name' );
		if ( 'none' !== $performer_type && ! empty( $performer_name ) ) {
			$schema['performer'] = array(
				'@type' => $performer_type,
				'name'  => $performer_name,
			);
		}

		// Get the offer items.
		$offer_names = $this->get_value( 'offer_name' );
		$offer_prices = $this->get_value( 'offer_price' );
		$offer_currencies = $this->get_value( 'offer_currency' );
		$offer_valid_from = $this->get_value( 'offer_valid_from' );
		$offer_urls = $this->get_value( 'offer_url' );
		$offer_availability = $this->get_value( 'offer_availability' );

		// If we have offer names, add them to the schema.
		if ( ! empty( $offer_names ) ) {
			// Convert to arrays if single values.
			if ( ! is_array( $offer_names ) ) {
				$offer_names = array( $offer_names );
				$offer_prices = array( $offer_prices );
				$offer_currencies = array( $offer_currencies );
				$offer_valid_from = array( $offer_valid_from );
				$offer_urls = array( $offer_urls );
				$offer_availability = array( $offer_availability );
			}

			$schema['offers'] = array();

			// Add each offer to the schema.
			foreach ( $offer_names as $index => $offer_name ) {
				if ( ! empty( $offer_name ) ) {
					$offer = array(
						'@type' => 'Offer',
						'name'  => $offer_name,
					);

					if ( ! empty( $offer_prices[ $index ] ) ) {
						$offer['price'] = $offer_prices[ $index ];
						$offer['priceCurrency'] = $offer_currencies[ $index ] ?? 'USD';
					}

					if ( ! empty( $offer_valid_from[ $index ] ) ) {
						$offer['validFrom'] = $offer_valid_from[ $index ];
					}

					if ( ! empty( $offer_urls[ $index ] ) ) {
						$offer['url'] = $offer_urls[ $index ];
					}

					if ( ! empty( $offer_availability[ $index ] ) ) {
						$offer['availability'] = $offer_availability[ $index ];
					}

					$schema['offers'][] = $offer;
				}
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     {‰U]ºæÏô5  ô5  @  includes/generator/class-wpcode-generator-schema-job-posting.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Job Posting schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Job_Posting class.
 */
class WPCode_Generator_Schema_Job_Posting extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-job-posting';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Job Posting Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for job listings and employment opportunities.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'         => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Job Posting schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'job'          => array(
				'label'   => __( 'Job Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic job information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Job Title', 'insert-headers-and-footers' ),
							'description'     => __( 'The title of the job posting.', 'insert-headers-and-footers' ),
							'id'              => 'job_title',
							'default'         => '',
							'placeholder'     => __( 'Software Engineer', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Job Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A detailed description of the job.', 'insert-headers-and-footers' ),
							'id'              => 'job_description',
							'default'         => '',
							'placeholder'     => __( 'Description of the job...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Industry', 'insert-headers-and-footers' ),
							'description' => __( 'The industry of the job (e.g., IT, Healthcare, Education).', 'insert-headers-and-footers' ),
							'id'          => 'job_industry',
							'default'     => '',
							'placeholder' => __( 'Information Technology', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Employment Type', 'insert-headers-and-footers' ),
							'description' => __( 'The type of employment.', 'insert-headers-and-footers' ),
							'id'          => 'job_employment_type',
							'default'     => 'FULL_TIME',
							'options'     => array(
								'FULL_TIME' => __( 'Full Time', 'insert-headers-and-footers' ),
								'PART_TIME' => __( 'Part Time', 'insert-headers-and-footers' ),
								'CONTRACT'  => __( 'Contract', 'insert-headers-and-footers' ),
								'TEMPORARY' => __( 'Temporary', 'insert-headers-and-footers' ),
								'INTERN'    => __( 'Intern', 'insert-headers-and-footers' ),
								'VOLUNTEER' => __( 'Volunteer', 'insert-headers-and-footers' ),
								'PER_DIEM'  => __( 'Per Diem', 'insert-headers-and-footers' ),
								'OTHER'     => __( 'Other', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Job Location Type', 'insert-headers-and-footers' ),
							'description' => __( 'The type of work location.', 'insert-headers-and-footers' ),
							'id'          => 'job_location_type',
							'default'     => 'TELECOMMUTE',
							'options'     => array(
								'TELECOMMUTE' => __( 'Remote', 'insert-headers-and-footers' ),
								'ONSITE'      => __( 'On-site', 'insert-headers-and-footers' ),
								'HYBRID'      => __( 'Hybrid', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 2 - Dates and requirements.
					array(
                        array(
                            'type'        => 'text',
                            'label'       => __( 'Work Hours', 'insert-headers-and-footers' ),
                            'description' => __( 'The number of hours per week.', 'insert-headers-and-footers' ),
                            'id'          => 'job_work_hours',
                            'default'     => '',
                            'placeholder' => '40',
                            'smart_tags'  => false,
                        ),
						array(
							'type'        => 'date',
							'label'       => __( 'Date Posted', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the job was posted.', 'insert-headers-and-footers' ),
							'id'          => 'job_date_posted',
							'default'     => '',
							'placeholder' => '2025-01-01',
						),
						array(
							'type'        => 'date',
							'label'       => __( 'Valid Through', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the job posting expires.', 'insert-headers-and-footers' ),
							'id'          => 'job_valid_through',
							'default'     => '',
							'placeholder' => '2025-12-31',
						),
					),
				),
			),
			'organization' => array(
				'label'   => __( 'Organization', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Organization details.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Organization Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the hiring organization.', 'insert-headers-and-footers' ),
							'id'              => 'org_name',
							'default'         => '',
							'placeholder'     => __( 'Company Name', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array(),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Organization Website', 'insert-headers-and-footers' ),
							'description' => __( 'The website URL of the organization.', 'insert-headers-and-footers' ),
							'id'          => 'org_website',
							'default'     => '',
							'placeholder' => 'https://example.com',
							'smart_tags'  => false,
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Organization Logo', 'insert-headers-and-footers' ),
							'description'  => __( 'URL of the organization logo.', 'insert-headers-and-footers' ),
							'id'           => 'org_logo',
							'default'      => '',
							'placeholder'  => 'https://example.com/logo.png',
							'smart_tags'   => false,
							'is_image_url' => true,
						),
					),
				),
			),
			'location'     => array(
				'label'   => __( 'Location', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Location details.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Street Address', 'insert-headers-and-footers' ),
							'description' => __( 'The street address of the job location.', 'insert-headers-and-footers' ),
							'id'          => 'location_street',
							'default'     => '',
							'placeholder' => __( '123 Main St', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'City', 'insert-headers-and-footers' ),
							'description' => __( 'The city of the job location.', 'insert-headers-and-footers' ),
							'id'          => 'location_city',
							'default'     => '',
							'placeholder' => __( 'New York', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Postal Code', 'insert-headers-and-footers' ),
							'description' => __( 'The postal code of the job location.', 'insert-headers-and-footers' ),
							'id'          => 'location_postal',
							'default'     => '',
							'placeholder' => __( '10001', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Country Code', 'insert-headers-and-footers' ),
							'description' => __( 'The country code of the job location (e.g., US, UK, CA).', 'insert-headers-and-footers' ),
							'id'          => 'location_country',
							'default'     => '',
							'placeholder' => __( 'US', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
					),
				),
			),
			'salary'       => array(
				'label'   => __( 'Salary', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Salary details.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Base Salary', 'insert-headers-and-footers' ),
							'description' => __( 'The base salary amount.', 'insert-headers-and-footers' ),
							'id'          => 'salary_base',
							'default'     => '',
							'placeholder' => '50000',
							'smart_tags'  => false,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Currency', 'insert-headers-and-footers' ),
							'description' => __( 'The currency code (e.g., USD, EUR, GBP).', 'insert-headers-and-footers' ),
							'id'          => 'salary_currency',
							'default'     => 'USD',
							'placeholder' => __( 'USD', 'insert-headers-and-footers' ),
							'smart_tags'  => false,
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Salary Unit', 'insert-headers-and-footers' ),
							'description' => __( 'The unit of time for the salary.', 'insert-headers-and-footers' ),
							'id'          => 'salary_unit',
							'default'     => 'YEAR',
							'options'     => array(
								'HOUR'  => __( 'Per Hour', 'insert-headers-and-footers' ),
								'DAY'   => __( 'Per Day', 'insert-headers-and-footers' ),
								'WEEK'  => __( 'Per Week', 'insert-headers-and-footers' ),
								'MONTH' => __( 'Per Month', 'insert-headers-and-footers' ),
								'YEAR'  => __( 'Per Year', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context'    => 'https://schema.org',
			'@type'       => 'JobPosting',
			'title'       => $this->get_value( 'job_title' ),
			'description' => $this->get_value( 'job_description' ),
		);

		// Add industry if set.
		$industry = $this->get_value( 'job_industry' );
		if ( ! empty( $industry ) ) {
			$schema['industry'] = $industry;
		}

		// Add employment type.
		$schema['employmentType'] = $this->get_value( 'job_employment_type' );

		// Add work hours if set.
		$work_hours = $this->get_value( 'job_work_hours' );
		if ( ! empty( $work_hours ) ) {
			$schema['workHours'] = $work_hours;
		}

		// Add dates.
		$date_posted = $this->get_value( 'job_date_posted' );
		if ( ! empty( $date_posted ) ) {
			$schema['datePosted'] = $date_posted;
		}

		$valid_through = $this->get_value( 'job_valid_through' );
		if ( ! empty( $valid_through ) ) {
			$schema['validThrough'] = $valid_through;
		}

		// Add job location type.
		$schema['jobLocationType'] = $this->get_value( 'job_location_type' );

		// Add organization details.
		$org_name = $this->get_value( 'org_name' );
		if ( ! empty( $org_name ) ) {
			$schema['hiringOrganization'] = array(
				'@type' => 'Organization',
				'name'  => $org_name,
			);

			$org_website = $this->get_value( 'org_website' );
			if ( ! empty( $org_website ) ) {
				$schema['hiringOrganization']['sameAs'] = $org_website;
			}

			$org_logo = $this->get_value( 'org_logo' );
			if ( ! empty( $org_logo ) ) {
				$schema['hiringOrganization']['logo'] = $org_logo;
			}
		}

		// Add location details.
		$street = $this->get_value( 'location_street' );
		if ( ! empty( $street ) ) {
			$schema['jobLocation'] = array(
				'@type'   => 'Place',
				'address' => array(
					'@type'         => 'PostalAddress',
					'streetAddress' => $street,
				),
			);

			$city = $this->get_value( 'location_city' );
			if ( ! empty( $city ) ) {
				$schema['jobLocation']['address']['addressLocality'] = $city;
			}

			$postal = $this->get_value( 'location_postal' );
			if ( ! empty( $postal ) ) {
				$schema['jobLocation']['address']['postalCode'] = $postal;
			}

			$country = $this->get_value( 'location_country' );
			if ( ! empty( $country ) ) {
				$schema['jobLocation']['address']['addressCountry'] = $country;
			}
		}

		// Add salary details.
		$base_salary = $this->get_value( 'salary_base' );
		if ( ! empty( $base_salary ) ) {
			$schema['baseSalary'] = array(
				'@type'    => 'MonetaryAmount',
				'currency' => $this->get_value( 'salary_currency' ),
				'value'    => array(
					'@type'    => 'QuantitativeValue',
					'value'    => $base_salary,
					'unitText' => $this->get_value( 'salary_unit' ),
				),
			);
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     {‰U]•ÀHC]&  ]&  9  includes/generator/class-wpcode-generator-schema-book.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Book schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Book class.
 */
class WPCode_Generator_Schema_Book extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-book';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Book Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for books, including novels, textbooks, and publications.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'      => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Book schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'book'      => array(
				'label'   => __( 'Book Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic book information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Book Title', 'insert-headers-and-footers' ),
							'description'     => __( 'The title of the book.', 'insert-headers-and-footers' ),
							'id'              => 'book_title',
							'default'         => '',
							'placeholder'     => __( 'My Book Title', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Book Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A brief description or summary of the book.', 'insert-headers-and-footers' ),
							'id'              => 'book_description',
							'default'         => '',
							'placeholder'     => __( 'Description of the book...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'        => 'date',
							'label'       => __( 'Date Published', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the book was published.', 'insert-headers-and-footers' ),
							'id'          => 'book_date_published',
							'default'     => '',
							'placeholder' => '2024-03-20',
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'ISBN', 'insert-headers-and-footers' ),
							'description' => __( 'The ISBN of the book.', 'insert-headers-and-footers' ),
							'id'          => 'book_isbn',
							'default'     => '',
							'placeholder' => '978-3-16-148410-0',
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Book URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL where the book can be purchased or viewed.', 'insert-headers-and-footers' ),
							'id'              => 'book_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/book',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Book Edition', 'insert-headers-and-footers' ),
							'description' => __( 'The edition of the book.', 'insert-headers-and-footers' ),
							'id'          => 'book_edition',
							'default'     => '',
							'placeholder' => '1st Edition',
						),
					),
					// Column 2 - Additional details.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Number of Pages', 'insert-headers-and-footers' ),
							'description' => __( 'The number of pages in the book.', 'insert-headers-and-footers' ),
							'id'          => 'book_number_of_pages',
							'default'     => '',
							'placeholder' => '300',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Book Format', 'insert-headers-and-footers' ),
							'description' => __( 'The format of the book (e.g., Hardcover, Paperback, EBook).', 'insert-headers-and-footers' ),
							'id'          => 'book_format',
							'default'     => '',
							'placeholder' => 'Hardcover',
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Book Cover Image', 'insert-headers-and-footers' ),
							'description'  => __( 'URL of the book\'s cover image.', 'insert-headers-and-footers' ),
							'id'           => 'book_image',
							'default'      => '',
							'placeholder'  => 'https://example.com/book-cover.jpg',
							'is_image_url' => true,
						),
					),
				),
			),
			'author'    => array(
				'label'   => __( 'Author', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Author details.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Author Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the book author.', 'insert-headers-and-footers' ),
							'id'              => 'author_name',
							'default'         => '',
							'placeholder'     => __( 'John Doe', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_name' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Author URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the author\'s profile or website.', 'insert-headers-and-footers' ),
							'id'              => 'author_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/author',
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_url' ),
						),
					),
				),
			),
			'publisher' => array(
				'label'   => __( 'Publisher', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Publisher details.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Publisher Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the publisher.', 'insert-headers-and-footers' ),
							'id'              => 'publisher_name',
							'default'         => '',
							'placeholder'     => __( 'Publisher Name', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_name' ),
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Publisher Logo', 'insert-headers-and-footers' ),
							'description'  => __( 'URL of the publisher\'s logo.', 'insert-headers-and-footers' ),
							'id'           => 'publisher_logo',
							'default'      => '',
							'placeholder'  => 'https://example.com/logo.png',
							'is_image_url' => true,
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code() {
		$schema = array(
			'@context'    => 'https://schema.org',
			'@type'       => 'Book',
			'name'        => $this->get_value( 'book_title' ),
			'description' => $this->get_value( 'book_description' ),
		);

		// Add date published if set.
		$date_published = $this->get_value( 'book_date_published' );
		if ( ! empty( $date_published ) ) {
			$schema['datePublished'] = $date_published;
		}

		// Add ISBN if set.
		$isbn = $this->get_value( 'book_isbn' );
		if ( ! empty( $isbn ) ) {
			$schema['isbn'] = $isbn;
		}

		// Add URL if set.
		$url = $this->get_value( 'book_url' );
		if ( ! empty( $url ) ) {
			$schema['url'] = $url;
		}

		// Add book details.
		$edition = $this->get_value( 'book_edition' );
		if ( ! empty( $edition ) ) {
			$schema['bookEdition'] = $edition;
		}

		$number_of_pages = $this->get_value( 'book_number_of_pages' );
		if ( ! empty( $number_of_pages ) ) {
			$schema['numberOfPages'] = $number_of_pages;
		}

		$format = $this->get_value( 'book_format' );
		if ( ! empty( $format ) ) {
			$schema['bookFormat'] = $format;
		}

		// Add image if set.
		$image = $this->get_value( 'book_image' );
		if ( ! empty( $image ) ) {
			$schema['image'] = array(
				'@type' => 'ImageObject',
				'url'   => $image,
			);
		}

		// Add author details.
		$author_name = $this->get_value( 'author_name' );
		if ( ! empty( $author_name ) ) {
			$schema['author'] = array(
				'@type' => 'Person',
				'name'  => $author_name,
			);

			$author_url = $this->get_value( 'author_url' );
			if ( ! empty( $author_url ) ) {
				$schema['author']['url'] = $author_url;
			}
		}

		// Add publisher details.
		$publisher_name = $this->get_value( 'publisher_name' );
		if ( ! empty( $publisher_name ) ) {
			$schema['publisher'] = array(
				'@type' => 'Organization',
				'name'  => $publisher_name,
			);

			$publisher_logo = $this->get_value( 'publisher_logo' );
			if ( ! empty( $publisher_logo ) ) {
				$schema['publisher']['logo'] = array(
					'@type' => 'ImageObject',
					'url'   => $publisher_logo,
				);
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     |‰U]íI KR+  R+  3  includes/generator/class-wpcode-generator-style.phpnu „[µü¤        <?php
/**
 * Generate a snippet to enqueue styles.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Style class.
 */
class WPCode_Generator_Style extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'enqueue_style';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'core',
	);

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Register Stylesheets', 'insert-headers-and-footers' );
		$this->description = __( 'Generate a snippet to load CSS stylesheets using wp_register_style.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'    => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'Using this generator you can create a WordPress function to register and enqueue styles.', 'insert-headers-and-footers' ),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => sprintf(
							// Translators: the placeholders add a link to getboostrap.com.
								__( 'You can use this to load external styles or even styles from a theme or plugin. For example, you could load %1$sfontawesome%2$s from a cdn.', 'insert-headers-and-footers' ),
								'<a href="https://fontawesome.com/" target="_blank">',
								'</a>'
							),
						),
					),
				),
			),
			'general' => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Function name', 'insert-headers-and-footers' ),
							'description' => __( 'Make this unique to avoid conflicts with other snippets', 'insert-headers-and-footers' ),
							'id'          => 'function_name',
							'placeholder' => 'add_custom_style',
							'default'     => 'add_custom_style' . time(),
							// This makes it unique for people who don't want to customize.
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Action (hook)', 'insert-headers-and-footers' ),
							'description' => sprintf(
							// Translators: placeholders add links to documentation on wordpress.org.
								__( 'Hook used to add the styles: %1$sfrontend%2$s, %3$sadmin%4$s, %5$slogin%6$s or %7$sembed%8$s.', 'insert-headers-and-footers' ),
								'<a href="https://developer.wordpress.org/reference/hooks/wp_enqueue_scripts/" target="_blank">',
								'</a>',
								'<a href="https://developer.wordpress.org/reference/hooks/admin_enqueue_scripts/" target="_blank">',
								'</a>',
								'<a href="https://developer.wordpress.org/reference/hooks/login_enqueue_scripts/" target="_blank">',
								'</a>',
								'<a href="https://developer.wordpress.org/reference/hooks/enqueue_embed_scripts/" target="_blank">',
								'</a>'
							),
							'id'          => 'hook',
							'default'     => 'wp_enqueue_scripts',
							'options'     => array(
								// Translators: placeholder adds the hook name.
								'wp_enqueue_scripts'    => sprintf( __( 'Frontend (%s)', 'insert-headers-and-footers' ), 'wp_enqueue_scripts' ),
								// Translators: placeholder adds the hook name.
								'admin_enqueue_scripts' => sprintf( __( 'Admin (%s)', 'insert-headers-and-footers' ), 'admin_enqueue_scripts' ),
								// Translators: placeholder adds the hook name.
								'login_enqueue_scripts' => sprintf( __( 'Login (%s)', 'insert-headers-and-footers' ), 'login_enqueue_scripts' ),
								// Translators: placeholder adds the hook name.
								'enqueue_embed_scripts' => sprintf( __( 'Embed (%s)', 'insert-headers-and-footers' ), 'enqueue_embed_scripts' ),
							),
						),
					),
				),
			),
			'styles'  => array(
				'label'   => __( 'Styles', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Style name', 'insert-headers-and-footers' ),
							'description' => __( 'This will be used as an identifier in the code, should be lowercase with no spaces.', 'insert-headers-and-footers' ),
							'id'          => 'style_name',
							'name'        => 'style_name[]',
							'default'     => '',
							'placeholder' => '',
							'repeater'    => 'style',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Stylesheet URL', 'insert-headers-and-footers' ),
							'description' => __( 'The full URL for the stylesheet e.g. https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/css/bootstrap.min.css.', 'insert-headers-and-footers' ),
							'id'          => 'style_url',
							'name'        => 'style_url[]',
							'default'     => '',
							'placeholder' => '',
							'repeater'    => 'style',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Dependencies', 'insert-headers-and-footers' ),
							'description' => __( 'Comma-separated list of styles required for this style to load, e.g. jquery', 'insert-headers-and-footers' ),
							'id'          => 'style_dependencies',
							'name'        => 'style_dependencies[]',
							'default'     => '',
							'placeholder' => '',
							'repeater'    => 'style',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Style Version', 'insert-headers-and-footers' ),
							'description' => __( 'The style version.', 'insert-headers-and-footers' ),
							'id'          => 'style_version',
							'name'        => 'style_version[]',
							'default'     => '1.0.0',
							'placeholder' => '',
							'repeater'    => 'style',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Media', 'insert-headers-and-footers' ),
							'description' => sprintf(
							// Translators: placeholders add a link to the W3.org reference.
								__( 'Load the style %1$smedia type%2$s, usually "all".', 'insert-headers-and-footers' ),
								'<a href="https://www.w3.org/TR/CSS2/media.html#media-types" target="_blank">',
								'</a>'
							),
							'id'          => 'style_media',
							'name'        => 'style_media[]',
							'default'     => 'all',
							'repeater'    => 'style',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Deregister style?', 'insert-headers-and-footers' ),
							'description' => sprintf(
							// Translators: Placeholders for wp.org docs link.
								__( 'Should the style be %1$sderegistered%2$s first? (for example, if you are replacing an existing style).', 'insert-headers-and-footers' ),
								'<a href="https://developer.wordpress.org/reference/functions/wp_deregister_style/" target="_blank">',
								'</a>'
							),
							'id'          => 'style_deregister',
							'name'        => 'style_deregister[]',
							'default'     => 'false',
							'options'     => array(
								'false' => __( 'No', 'insert-headers-and-footers' ),
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
							),
							'repeater'    => 'style',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Enqueue style?', 'insert-headers-and-footers' ),
							'description' => sprintf(
							// Translators: Placeholders for wp.org docs link.
								__( 'Should the style be %1$senqueued%2$s or just registered? (select "No" only if you intend enqueueing it later.', 'insert-headers-and-footers' ),
								'<a href="https://developer.wordpress.org/reference/functions/wp_enqueue_style/" target="_blank">',
								'</a>'
							),
							'id'          => 'style_enqueue',
							'name'        => 'style_enqueue[]',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
							'repeater'    => 'style',
						),
						array(
							'type' => 'spacer',
						),
					),
					// Column 3.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Add more styles', 'insert-headers-and-footers' ),
							'content' => __( 'Use the "Add style" button below to add multiple styles in this snippet.', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'repeater_button',
							'button_text' => __( 'Add style', 'insert-headers-and-footers' ),
							'id'          => 'style', // Repeater to repeat when clicked.
						),
					),
				),
			),
		);
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {

		$styles            = $this->get_value( 'style_name' );
		$styles_urls       = $this->get_value( 'style_url' );
		$styles_deps       = $this->get_value( 'style_dependencies' );
		$styles_versions   = $this->get_value( 'style_version' );
		$styles_media      = $this->get_value( 'style_media' );
		$styles_deregister = $this->get_value( 'style_deregister' );
		$styles_enqueue    = $this->get_value( 'style_enqueue' );
		$code              = '';

		if ( ! empty( $styles ) ) {
			foreach ( $styles as $key => $style ) {
				if ( empty( $style ) ) {
					continue;
				}
				$style        = sanitize_title( $style );
				$dependencies = explode( ',', $styles_deps[ $key ] );
				$deregister   = 'true' === $styles_deregister[ $key ] ? "wp_deregister_style( '$style' );" : '';
				$enqueue      = 'true' === $styles_enqueue[ $key ] ? "wp_enqueue_style( '$style' );" : '';
				$media        = 'all' !== $styles_media[ $key ] ? ", '$styles_media[$key]'" : '';

				$code .= "
			$deregister
			wp_register_style( '$style', '$styles_urls[$key]', {$this->array_to_code_string($dependencies)}, '$styles_versions[$key]'$media );
			$enqueue
			";
			}
		}

		return '// Add custom styles
function ' . $this->get_value( 'function_name' ) . '() {
' . $code . '
}
add_action( \'' . $this->get_value( 'hook' ) . '\', \'' . $this->get_value( 'function_name' ) . '\' );';
	}

}
PK     |‰U]—�ð",  ,  <  includes/generator/class-wpcode-generator-schema-product.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Product schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Product class.
 */
class WPCode_Generator_Schema_Product extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-product';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Product Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for products to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'    => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Product schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'product' => array(
				'label'   => __( 'Product Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic Product information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Product Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the product.', 'insert-headers-and-footers' ),
							'id'              => 'product_name',
							'default'         => '',
							'placeholder'     => __( 'Enter product name...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Product Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A detailed description of the product.', 'insert-headers-and-footers' ),
							'id'              => 'product_description',
							'default'         => '',
							'placeholder'     => __( 'Describe the product...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'custom_field' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Product URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the product page.', 'insert-headers-and-footers' ),
							'id'              => 'product_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/product',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					array(
						array(
							'type'         => 'text',
							'label'        => __( 'Product Image', 'insert-headers-and-footers' ),
							'description'  => __( 'The URL of the product image.', 'insert-headers-and-footers' ),
							'id'           => 'product_image',
							'default'      => '',
							'placeholder'  => 'https://example.com/product-image.jpg',
							'is_image_url' => true,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Product Brand', 'insert-headers-and-footers' ),
							'description' => __( 'The brand or manufacturer of the product.', 'insert-headers-and-footers' ),
							'id'          => 'product_brand',
							'default'     => '',
							'placeholder' => __( 'Enter brand name...', 'insert-headers-and-footers' ),
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Product SKU', 'insert-headers-and-footers' ),
							'description' => __( 'The SKU or model number of the product.', 'insert-headers-and-footers' ),
							'id'          => 'product_sku',
							'default'     => '',
							'placeholder' => __( 'Enter SKU...', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Product GTIN', 'insert-headers-and-footers' ),
							'description' => __( 'The GTIN (UPC, EAN, ISBN) of the product.', 'insert-headers-and-footers' ),
							'id'          => 'product_gtin',
							'default'     => '',
							'placeholder' => __( 'Enter GTIN...', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'offer'   => array(
				'label'   => __( 'Offer Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Offer information.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Offer Name', 'insert-headers-and-footers' ),
							'description' => __( 'A name to identify this offer (e.g., Regular Price, Sale Price, Bundle Offer).', 'insert-headers-and-footers' ),
							'id'          => 'offer_name',
							'name'        => 'offer_name[]',
							'repeater'    => 'offer_items',
							'default'     => '',
							'placeholder' => __( 'Regular Price', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Price', 'insert-headers-and-footers' ),
							'description' => __( 'The price of the product.', 'insert-headers-and-footers' ),
							'id'          => 'product_price',
							'name'        => 'product_price[]',
							'repeater'    => 'offer_items',
							'default'     => '',
							'placeholder' => '99.99',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Currency', 'insert-headers-and-footers' ),
							'description' => __( 'The currency of the price (e.g., USD, EUR).', 'insert-headers-and-footers' ),
							'id'          => 'product_currency',
							'name'        => 'product_currency[]',
							'repeater'    => 'offer_items',
							'default'     => 'USD',
							'placeholder' => 'USD',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Availability', 'insert-headers-and-footers' ),
							'description' => __( 'The availability status of the product.', 'insert-headers-and-footers' ),
							'id'          => 'product_availability',
							'name'        => 'product_availability[]',
							'repeater'    => 'offer_items',
							'default'     => 'InStock',
							'options'     => array(
								'InStock'             => __( 'In Stock', 'insert-headers-and-footers' ),
								'OutOfStock'          => __( 'Out of Stock', 'insert-headers-and-footers' ),
								'PreOrder'            => __( 'Pre-order', 'insert-headers-and-footers' ),
								'Discontinued'        => __( 'Discontinued', 'insert-headers-and-footers' ),
								'LimitedAvailability' => __( 'Limited Availability', 'insert-headers-and-footers' ),
								'OnlineOnly'          => __( 'Online Only', 'insert-headers-and-footers' ),
								'PreSale'             => __( 'Pre-sale', 'insert-headers-and-footers' ),
								'SoldOut'             => __( 'Sold Out', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'date',
							'label'       => __( 'Price Valid Until', 'insert-headers-and-footers' ),
							'description' => __( 'The date until which the price is valid.', 'insert-headers-and-footers' ),
							'id'          => 'price_valid_until',
							'name'        => 'price_valid_until[]',
							'repeater'    => 'offer_items',
							'default'     => '',
							'placeholder' => '2024-12-31',
						),
					),
					// Column 3 - Repeater button.
					array(
						array(
							'type'        => 'repeater_button',
							'id'          => 'offer_items',
							'button_text' => __( 'Add Another Offer', 'insert-headers-and-footers' ),
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context' => 'https://schema.org',
			'@type'    => 'Product',
		);

		// Add basic product information.
		$product_name = $this->get_value( 'product_name' );
		if ( ! empty( $product_name ) ) {
			$schema['name'] = $product_name;
		}

		$product_description = $this->get_value( 'product_description' );
		if ( ! empty( $product_description ) ) {
			$schema['description'] = $product_description;
		}

		$product_url = $this->get_value( 'product_url' );
		if ( ! empty( $product_url ) ) {
			$schema['url'] = $product_url;
		}

		// Add image.
		$product_image = $this->get_value( 'product_image' );
		if ( ! empty( $product_image ) ) {
			$schema['image'] = array(
				'@type' => 'ImageObject',
				'url'   => $product_image,
			);
		}

		// Add brand.
		$product_brand = $this->get_value( 'product_brand' );
		if ( ! empty( $product_brand ) ) {
			$schema['brand'] = array(
				'@type' => 'Brand',
				'name'  => $product_brand,
			);
		}

		// Add identifiers.
		$product_sku = $this->get_value( 'product_sku' );
		if ( ! empty( $product_sku ) ) {
			$schema['sku'] = $product_sku;
		}

		$product_gtin = $this->get_value( 'product_gtin' );
		if ( ! empty( $product_gtin ) ) {
			$schema['gtin'] = $product_gtin;
		}

		$product_mpn = $this->get_value( 'product_mpn' );
		if ( ! empty( $product_mpn ) ) {
			$schema['mpn'] = $product_mpn;
		}

		// Get the offer items.
		$offer_names = $this->get_value( 'offer_name' );
		$product_prices = $this->get_value( 'product_price' );
		$product_currencies = $this->get_value( 'product_currency' );
		$product_availability = $this->get_value( 'product_availability' );
		$price_valid_until = $this->get_value( 'price_valid_until' );

		// If we have prices, add them to the schema.
		if ( ! empty( $product_prices ) ) {
			// Convert to arrays if single values.
			if ( ! is_array( $product_prices ) ) {
				$offer_names = array( $offer_names );
				$product_prices = array( $product_prices );
				$product_currencies = array( $product_currencies );
				$product_availability = array( $product_availability );
				$price_valid_until = array( $price_valid_until );
			}

			$schema['offers'] = array();

			// Add each offer to the schema.
			foreach ( $product_prices as $index => $price ) {
				if ( ! empty( $price ) ) {
					$offer = array(
						'@type'         => 'Offer',
						'price'         => floatval( $price ),
						'priceCurrency' => $product_currencies[ $index ] ?? 'USD',
					);

					// Add offer name if provided
					if ( ! empty( $offer_names[ $index ] ) ) {
						$offer['name'] = $offer_names[ $index ];
					}

					if ( ! empty( $product_availability[ $index ] ) ) {
						$offer['availability'] = 'https://schema.org/' . $product_availability[ $index ];
					}

					if ( ! empty( $price_valid_until[ $index ] ) ) {
						$offer['priceValidUntil'] = $price_valid_until[ $index ];
					}

					$schema['offers'][] = $offer;
				}
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     |‰U]MZ ÓQ  Q  5  includes/generator/class-wpcode-generator-cronjob.phpnu „[µü¤        <?php
/**
 * Generate a snippet for scheduling a cronjob.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Cronjob class.
 */
class WPCode_Generator_Cronjob extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'cronjob';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'core',
	);

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Schedule a Cron Job', 'insert-headers-and-footers' );
		$this->description = __( 'Generate a snippet to schedule a recurring event using the WordPress cron.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'     => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => sprintf(
							// Translators: Placeholders add links to the wordpress.org references.
								__( 'This generator makes it easy to generate a snippet that will schedule a recurring event using %1$swp_schedule_event%2$s.', 'insert-headers-and-footers' ),
								'<a href="https://developer.wordpress.org/reference/functions/wp_schedule_event/" target="_blank">',
								'</a>'
							),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => __( 'You may want to run some code once every hour, day or week, for example you could use this to send an email with the number of published posts every week.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'general'  => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Function name', 'insert-headers-and-footers' ),
							'description' => __( 'Make this unique to avoid conflicts with other snippets', 'insert-headers-and-footers' ),
							'id'          => 'function_name',
							'placeholder' => 'add_custom_schedule',
							'default'     => 'add_custom_schedule' . time(),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Text Domain', 'insert-headers-and-footers' ),
							'description' => __( 'Optional text domain for translations.', 'insert-headers-and-footers' ),
							'id'          => 'text_domain',
							'placeholder' => 'text_domain',
							'default'     => 'text_domain',
						),
					),
				),
			),
			'schedule' => array(
				'label'   => __( 'Schedule', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Recurrence', 'insert-headers-and-footers' ),
							'description' => __( 'Choose how often you want this event to run.', 'insert-headers-and-footers' ),
							'id'          => 'recurrence',
							'default'     => 'hourly',
							'options'     => array(
								'hourly'     => __( 'Hourly', 'insert-headers-and-footers' ),
								'twicedaily' => __( 'Twice Daily', 'insert-headers-and-footers' ),
								'daily'      => __( 'Daily', 'insert-headers-and-footers' ),
								'custom'     => __( 'Custom', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Custom Recurrence Name', 'insert-headers-and-footers' ),
							'description' => __( 'This is the recurrence name slug, lowercase and no space.', 'insert-headers-and-footers' ),
							'id'          => 'recurrence_name',
							'default'     => 'biweekly',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Custom Recurrence Label', 'insert-headers-and-footers' ),
							'id'          => 'recurrence_label',
							'default'     => 'Once every 2 weeks',
							'description' => __( 'This label will be used in a list of cron events, for example.', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Custom Recurrence Interval', 'insert-headers-and-footers' ),
							'id'          => 'recurrence_interval',
							'default'     => 1209600,
							'description' => __( 'The number of seconds of this interval.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'hook'     => array(
				'label'   => __( 'Code', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Hook name', 'insert-headers-and-footers' ),
							'description' => __( 'Unique name of your hook used to run when scheduled.', 'insert-headers-and-footers' ),
							'id'          => 'hook_name',
							'default'     => 'do_custom_event_' . time(),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'textarea',
							'label'       => __( 'PHP Code', 'insert-headers-and-footers' ),
							'description' => __( 'Custom PHP code that will run when the event is triggered.', 'insert-headers-and-footers' ),
							'id'          => 'code',
							'code'        => true,
						),
					),
				),
			),
		);
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {

		$function_name       = $this->sanitize_function_name( $this->get_value( 'function_name' ) );
		$hook_name           = $this->sanitize_function_name( $this->get_value( 'hook_name' ) );
		$interval            = $this->get_value( 'recurrence' );
		$recurrence_interval = intval( $this->get_value( 'recurrence_interval' ) );
		$custom_recurrence   = '';

		if ( 'custom' === $interval ) {
			$recurrence_function_name = 'custom_cron_recurrence_' . time();
			$recurrence_name          = $this->sanitize_function_name( $this->get_value( 'recurrence_name' ) );
			$interval                 = $recurrence_name;

			$custom_recurrence = "
function $recurrence_function_name( \$schedules ) {
	\$schedules['$recurrence_name'] = array(
		'display' => __( '{$this->get_value('recurrence_label')}', '{$this->get_value('text_domain')}' ),
		'interval' => $recurrence_interval,
	);
				
	return \$schedules;
}
add_filter( 'cron_schedules', '$recurrence_function_name' );
			";
		}

		return '// Schedule a cron event.
function ' . $hook_name . '() {
    ' . $this->get_value( 'code' ) . '
}
add_action( \'' . $hook_name . '\', \'' . $hook_name . '\' );

' . $custom_recurrence . '
 
function ' . $function_name . '() {
    if ( ! wp_next_scheduled( \'' . $hook_name . '\' ) ) {
        wp_schedule_event( time(), \'' . $interval . '\', \'' . $hook_name . '\' );
    }
}
add_action( \'wp\', \'' . $function_name . '\' );';
	}

}
PK     |‰U]i‚x    :  includes/generator/class-wpcode-generator-schema-movie.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Movie schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Movie class.
 */
class WPCode_Generator_Schema_Movie extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-movie';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Movie Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for movies to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'  => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Movie schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'movie' => array(
				'label'   => __( 'Movie Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic Movie information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Movie Title', 'insert-headers-and-footers' ),
							'description'     => __( 'The title of the movie.', 'insert-headers-and-footers' ),
							'id'              => 'movie_title',
							'default'         => '',
							'placeholder'     => __( 'Enter the movie title...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A detailed description of the movie.', 'insert-headers-and-footers' ),
							'id'              => 'description',
							'default'         => '',
							'placeholder'     => __( 'Describe the movie...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'custom_field' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Movie URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the movie page.', 'insert-headers-and-footers' ),
							'id'              => 'movie_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/movie',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					array(
						array(
							'type'         => 'text',
							'label'        => __( 'Thumbnail URL', 'insert-headers-and-footers' ),
							'description'  => __( 'The URL of the movie poster or image.', 'insert-headers-and-footers' ),
							'id'           => 'image_url',
							'default'      => '',
							'placeholder'  => 'https://example.com/movie-poster.jpg',
							'is_image_url' => true,
						),
						array(
							'type'        => 'date',
							'label'       => __( 'Release Date', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the movie was released.', 'insert-headers-and-footers' ),
							'id'          => 'release_date',
							'default'     => '',
							'placeholder' => '2024-01-01',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Duration', 'insert-headers-and-footers' ),
							'description' => __( 'The duration of the movie in minutes.', 'insert-headers-and-footers' ),
							'id'          => 'duration',
							'default'     => '',
							'placeholder' => '120',
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Director', 'insert-headers-and-footers' ),
							'description' => __( 'The name of the movie director.', 'insert-headers-and-footers' ),
							'id'          => 'director',
							'default'     => '',
							'placeholder' => __( 'Enter director name...', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Genre', 'insert-headers-and-footers' ),
							'description' => __( 'The genre of the movie (e.g., Action, Comedy, Drama).', 'insert-headers-and-footers' ),
							'id'          => 'genre',
							'default'     => '',
							'placeholder' => 'Action, Adventure',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Rating', 'insert-headers-and-footers' ),
							'description' => __( 'The rating of the movie (e.g., PG-13, R).', 'insert-headers-and-footers' ),
							'id'          => 'rating',
							'default'     => '',
							'placeholder' => 'PG-13',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Production Company', 'insert-headers-and-footers' ),
							'description' => __( 'The name of the production company.', 'insert-headers-and-footers' ),
							'id'          => 'production_company',
							'default'     => '',
							'placeholder' => __( 'Enter production company name...', 'insert-headers-and-footers' ),
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context' => 'https://schema.org',
			'@type'    => 'Movie',
		);

		// Add basic information.
		$movie_title = $this->get_value( 'movie_title' );
		if ( ! empty( $movie_title ) ) {
			$schema['name'] = $movie_title;
		}

		$description = $this->get_value( 'description' );
		if ( ! empty( $description ) ) {
			$schema['description'] = $description;
		}

		$url = $this->get_value( 'movie_url' );
		if ( ! empty( $url ) ) {
			$schema['url'] = $url;
		}

		// Add image.
		$image_url = $this->get_value( 'image_url' );
		if ( ! empty( $image_url ) ) {
			$schema['image'] = array(
				'@type' => 'ImageObject',
				'url'   => $image_url,
			);
		}

		// Add release date.
		$release_date = $this->get_value( 'release_date' );
		if ( ! empty( $release_date ) ) {
			$schema['datePublished'] = $release_date;
		}

		// Add duration.
		$duration = $this->get_value( 'duration' );
		if ( ! empty( $duration ) ) {
			$schema['duration'] = 'PT' . intval( $duration ) . 'M';
		}

		// Add director.
		$director = $this->get_value( 'director' );
		if ( ! empty( $director ) ) {
			$schema['director'] = array(
				'@type' => 'Person',
				'name'  => $director,
			);
		}

		// Add genre.
		$genre = $this->get_value( 'genre' );
		if ( ! empty( $genre ) ) {
			$schema['genre'] = array_map( 'trim', explode( ',', $genre ) );
		}

		// Add rating.
		$rating = $this->get_value( 'rating' );
		if ( ! empty( $rating ) ) {
			$schema['contentRating'] = $rating;
		}

		// Add production company.
		$production_company = $this->get_value( 'production_company' );
		if ( ! empty( $production_company ) ) {
			$schema['productionCompany'] = array(
				'@type' => 'Organization',
				'name'  => $production_company,
			);
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     }‰U]ŽÐ´™S!  S!  5  includes/generator/class-wpcode-generator-sidebar.phpnu „[µü¤        <?php
/**
 * Generate a snippet for a sidebar.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Sidebar class.
 */
class WPCode_Generator_Sidebar extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'sidebar';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'design',
	);

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Sidebar', 'insert-headers-and-footers' );
		$this->description = __( 'Generate a snippet to register a sidebar for your widgets.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'     => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => sprintf(
							// Translators: Placeholders add links to the wordpress.org references.
								__( 'This generator makes it easy to add sidebars to your website using the "register_sidebar" function.', 'insert-headers-and-footers' ),
								'<a href="https://developer.wordpress.org/reference/functions/register_sidebar/" target="_blank">',
								'</a>'
							),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => __( 'You can add multiple widget areas for your footer or post-type specific sidebars.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'general'  => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Function name', 'insert-headers-and-footers' ),
							'description' => __( 'Make this unique to avoid conflicts with other snippets', 'insert-headers-and-footers' ),
							'id'          => 'function_name',
							'placeholder' => 'register_custom_sidebars',
							'default'     => 'register_custom_sidebars' . time(),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Text Domain', 'insert-headers-and-footers' ),
							'description' => __( 'Optional text domain for translations.', 'insert-headers-and-footers' ),
							'id'          => 'text_domain',
							'placeholder' => 'text_domain',
							'default'     => 'text_domain',
						),
					),
				),
			),
			'schedule' => array(
				'label'   => __( 'Sidebars', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Sidebar Id', 'insert-headers-and-footers' ),
							'description' => __( 'This is the sidebar unique id, used in the code, lowercase with no spaces.', 'insert-headers-and-footers' ),
							'id'          => 'sidebar_id',
							'name'        => 'sidebar_id[]',
							'repeater'    => 'sidebars',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Name', 'insert-headers-and-footers' ),
							'description' => __( 'Add a descriptive label for this sidebar to be used in the admin.', 'insert-headers-and-footers' ),
							'id'          => 'sidebar_name',
							'name'        => 'sidebar_name[]',
							'repeater'    => 'sidebars',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Description', 'insert-headers-and-footers' ),
							'description' => __( 'A short description for the the admin area.', 'insert-headers-and-footers' ),
							'id'          => 'sidebar_description',
							'name'        => 'sidebar_description[]',
							'repeater'    => 'sidebars',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'CSS Class', 'insert-headers-and-footers' ),
							'description' => __( 'Use an unique CSS class name for better control over this sidebar\'s styles in the admin.', 'insert-headers-and-footers' ),
							'id'          => 'sidebar_css_class',
							'name'        => 'sidebar_css_class[]',
							'repeater'    => 'sidebars',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'html',
							'label'       => __( 'Before Title', 'insert-headers-and-footers' ),
							'description' => __( 'HTML code to add before each widget title.', 'insert-headers-and-footers' ),
							'id'          => 'before_title',
							'name'        => 'before_title[]',
							'repeater'    => 'sidebars',
							'default'     => '<h2 class="widgettitle">',
						),
						array(
							'type'        => 'html',
							'label'       => __( 'After Title', 'insert-headers-and-footers' ),
							'description' => __( 'HTML code to add after each widget title.', 'insert-headers-and-footers' ),
							'id'          => 'after_title',
							'name'        => 'after_title[]',
							'repeater'    => 'sidebars',
							'default'     => '</h2>',
						),
						array(
							'type'        => 'html',
							'label'       => __( 'Before Widget', 'insert-headers-and-footers' ),
							'description' => __( 'HTML code to add before each widget.', 'insert-headers-and-footers' ),
							'id'          => 'before_widget',
							'name'        => 'before_widget[]',
							'repeater'    => 'sidebars',
							'default'     => '<li id="%1$s" class="widget %2$s">',
						),
						array(
							'type'        => 'html',
							'label'       => __( 'After Widget', 'insert-headers-and-footers' ),
							'description' => __( 'HTML code to add after each widget.', 'insert-headers-and-footers' ),
							'id'          => 'after_widget',
							'name'        => 'after_widget[]',
							'repeater'    => 'sidebars',
							'default'     => '</li>',
						),
						array(
							'type' => 'spacer',
						),
					),
					// Column 3.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Add another sidebar', 'insert-headers-and-footers' ),
							'content' => __( 'Use the "Add Sidebar" button below to add as many sidebars as you need.', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'repeater_button',
							'button_text' => __( 'Add Sidebar', 'insert-headers-and-footers' ),
							'id'          => 'sidebars', // Repeater to repeat when clicked.
						),
					),
				),
			),
		);
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {

		$sidebar_id   = $this->get_value( 'sidebar_id' );
		$sidebar_code = '';

		$values = array(
			'name'          => 'sidebar_name',
			'description'   => 'sidebar_description',
			'class'         => 'sidebar_css_class',
			'before_title'  => 'before_title',
			'after_title'   => 'after_title',
			'before_widget' => 'before_widget',
			'after_widget'  => 'after_widget',
		);

		if ( ! empty( $sidebar_id ) ) {
			foreach ( $sidebar_id as $key => $id ) {
				if ( empty( $id ) ) {
					continue;
				}
				$id        = sanitize_title( $id );
				$optionals = '';
				foreach ( $values as $arg_key => $form_key ) {
					$form_values = $this->get_value( $form_key );

					$optionals .= $this->get_optional_value_code( $form_values[ $key ], $this->get_default_value( $form_key ), $arg_key, true );
				}

				$sidebar_code .= "
\$args = array(
		'id'                    => '$id',
$optionals); 
register_sidebar( \$args );
				";
			}
		}

		return '// Add Sidebars
function ' . $this->get_value( 'function_name' ) . '() {
    ' . $sidebar_code . '
}
add_action( \'widgets_init\', \'' . $this->get_value( 'function_name' ) . '\' );';
	}

}
PK     }‰U]†þ¹Î|  |  ?  includes/generator/class-wpcode-generator-schema-fact-check.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Fact Check schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Fact_Check class.
 */
class WPCode_Generator_Schema_Fact_Check extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-fact-check';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Fact Check Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for fact-checking content to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'       => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Fact Check schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'fact_check' => array(
				'label'   => __( 'Fact Check Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic Fact Check information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Claim Title', 'insert-headers-and-footers' ),
							'description'     => __( 'The title of the claim being fact-checked.', 'insert-headers-and-footers' ),
							'id'              => 'claim_title',
							'default'         => '',
							'placeholder'     => __( 'Enter the claim title...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Claim Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A detailed description of the claim being fact-checked.', 'insert-headers-and-footers' ),
							'id'              => 'claim_description',
							'default'         => '',
							'placeholder'     => __( 'Describe the claim in detail...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'custom_field' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Fact Check URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the fact check page.', 'insert-headers-and-footers' ),
							'id'              => 'fact_check_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/fact-check',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Fact Check Rating', 'insert-headers-and-footers' ),
							'description' => __( 'The rating of the fact check.', 'insert-headers-and-footers' ),
							'id'          => 'fact_check_rating',
							'default'     => 'true',
							'options'     => array(
								'true'            => __( 'True', 'insert-headers-and-footers' ),
								'false'           => __( 'False', 'insert-headers-and-footers' ),
								'partially_true'  => __( 'Partially True', 'insert-headers-and-footers' ),
								'partially_false' => __( 'Partially False', 'insert-headers-and-footers' ),
								'mostly_true'     => __( 'Mostly True', 'insert-headers-and-footers' ),
								'mostly_false'    => __( 'Mostly False', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Author Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the fact checker.', 'insert-headers-and-footers' ),
							'id'              => 'author_name',
							'default'         => '',
							'placeholder'     => __( 'Enter the fact checker name...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_name' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Author URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the fact checker.', 'insert-headers-and-footers' ),
							'id'              => 'author_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/author',
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_url' ),
						),
                    ),
                    array(
						array(
							'type'        => 'date',
							'label'       => __( 'Date Published', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the fact check was published.', 'insert-headers-and-footers' ),
							'id'          => 'date_published',
							'default'     => '',
						),
						array(
							'type'        => 'date',
							'label'       => __( 'Date Modified', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the fact check was last modified.', 'insert-headers-and-footers' ),
							'id'          => 'date_modified',
							'default'     => '',
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context'      => 'https://schema.org',
			'@type'         => 'ClaimReview',
			'claimReviewed' => array(
				'@type' => 'Claim',
			),
		);

		// Add claim title.
		$claim_title = $this->get_value( 'claim_title' );
		if ( ! empty( $claim_title ) ) {
			$schema['claimReviewed']['name'] = $claim_title;
		}

		// Add claim description.
		$claim_description = $this->get_value( 'claim_description' );
		if ( ! empty( $claim_description ) ) {
			$schema['claimReviewed']['description'] = $claim_description;
		}

		// Add URL.
		$url = $this->get_value( 'fact_check_url' );
		if ( ! empty( $url ) ) {
			$schema['url'] = $url;
		}

		// Add fact check rating.
		$rating = $this->get_value( 'fact_check_rating' );
		if ( ! empty( $rating ) ) {
			$schema['reviewRating'] = array(
				'@type'       => 'Rating',
				'ratingValue' => $rating,
			);
		}

		// Add author information.
		$author_name = $this->get_value( 'author_name' );
		$author_url  = $this->get_value( 'author_url' );
		if ( ! empty( $author_name ) ) {
			$schema['author'] = array(
				'@type' => 'Person',
				'name'  => $author_name,
			);
			if ( ! empty( $author_url ) ) {
				$schema['author']['url'] = $author_url;
			}
		}

		// Add dates.
		$date_published = $this->get_value( 'date_published' );
		if ( ! empty( $date_published ) ) {
			$schema['datePublished'] = $date_published;
		}

		$date_modified = $this->get_value( 'date_modified' );
		if ( ! empty( $date_modified ) ) {
			$schema['dateModified'] = $date_modified;
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     }‰U]Pó	Ÿ-  Ÿ-  ;  includes/generator/class-wpcode-generator-schema-course.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Course schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Course class.
 */
class WPCode_Generator_Schema_Course extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-course';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Course Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for courses to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'       => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Course schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'course'     => array(
				'label'   => __( 'Course Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic course information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Course Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the course.', 'insert-headers-and-footers' ),
							'id'              => 'course_name',
							'default'         => '',
							'placeholder'     => __( 'Introduction to Web Development', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Course Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A brief description of the course.', 'insert-headers-and-footers' ),
							'id'              => 'course_description',
							'default'         => '',
							'placeholder'     => __( 'Description of the course...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Course URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL where the course can be accessed.', 'insert-headers-and-footers' ),
							'id'              => 'course_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/course',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Provider Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the course provider or institution.', 'insert-headers-and-footers' ),
							'id'              => 'provider_name',
							'default'         => '',
							'placeholder'     => 'University of Example',
							'smart_tags'      => true,
							'predefined_tags' => array( 'site_name' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Provider URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the course provider\'s website.', 'insert-headers-and-footers' ),
							'id'              => 'provider_url',
							'default'         => '',
							'placeholder'     => 'https://example.com',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					// Column 2 - Additional details.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Course Code', 'insert-headers-and-footers' ),
							'description' => __( 'The course code or identifier.', 'insert-headers-and-footers' ),
							'id'          => 'course_code',
							'default'     => '',
							'placeholder' => 'CS101',
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Course Image', 'insert-headers-and-footers' ),
							'description'  => __( 'URL of the course image.', 'insert-headers-and-footers' ),
							'id'           => 'course_image',
							'default'      => '',
							'placeholder'  => 'https://example.com/course-image.jpg',
							'smart_tags'   => false,
							'is_image_url' => true,
						),
					),
				),
			),
			'instructor' => array(
				'label'   => __( 'Instructor', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Instructor details.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Instructor Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the course instructor.', 'insert-headers-and-footers' ),
							'id'              => 'instructor_name',
							'default'         => '',
							'placeholder'     => __( 'John Doe', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_name' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Instructor URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the instructor\'s profile or website.', 'insert-headers-and-footers' ),
							'id'              => 'instructor_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/instructor',
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_url' ),
						),
					),
				),
			),
			'pricing'    => array(
				'label'   => __( 'Pricing & Availability', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Pricing details.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Course Type', 'insert-headers-and-footers' ),
							'description' => __( 'Whether this is a free or paid course.', 'insert-headers-and-footers' ),
							'id'          => 'course_type',
							'default'     => 'paid',
							'options'     => array(
								'paid' => __( 'Paid Course', 'insert-headers-and-footers' ),
								'free' => __( 'Free Course', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Price', 'insert-headers-and-footers' ),
							'description' => __( 'The price of the course (leave empty for free courses).', 'insert-headers-and-footers' ),
							'id'          => 'course_price',
							'default'     => '',
							'placeholder' => '99.99',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Currency', 'insert-headers-and-footers' ),
							'description' => __( 'The currency code (e.g., USD, EUR).', 'insert-headers-and-footers' ),
							'id'          => 'course_currency',
							'default'     => 'USD',
							'placeholder' => 'USD',
						),
					),
					// Column 2 - Additional pricing details.
					array(
						array(
							'type'        => 'date',
							'label'       => __( 'Valid From', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the course becomes available (YYYY-MM-DD).', 'insert-headers-and-footers' ),
							'id'          => 'valid_from',
							'default'     => '',
							'placeholder' => '2024-01-01',
						),
						array(
							'type'        => 'date',
							'label'       => __( 'Valid Until', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the course offer expires (YYYY-MM-DD).', 'insert-headers-and-footers' ),
							'id'          => 'valid_until',
							'default'     => '',
							'placeholder' => '2024-12-31',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Availability', 'insert-headers-and-footers' ),
							'description' => __( 'The availability status of the course.', 'insert-headers-and-footers' ),
							'id'          => 'availability',
							'default'     => 'InStock',
							'options'     => array(
								'InStock'      => __( 'In Stock', 'insert-headers-and-footers' ),
								'OutOfStock'   => __( 'Out of Stock', 'insert-headers-and-footers' ),
								'PreOrder'     => __( 'Pre-order', 'insert-headers-and-footers' ),
								'Discontinued' => __( 'Discontinued', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context'    => 'https://schema.org',
			'@type'       => 'Course',
			'name'        => $this->get_value( 'course_name' ),
			'description' => $this->get_value( 'course_description' ),
		);

		// Add URL if set.
		$url = $this->get_value( 'course_url' );
		if ( ! empty( $url ) ) {
			$schema['url'] = $url;
		}

		// Add course code if set.
		$code = $this->get_value( 'course_code' );
		if ( ! empty( $code ) ) {
			$schema['courseCode'] = $code;
		}

		// Add provider details if set.
		$provider_name = $this->get_value( 'provider_name' );
		if ( ! empty( $provider_name ) ) {
			$schema['provider'] = array(
				'@type' => 'Organization',
				'name'  => $provider_name,
			);

			$provider_url = $this->get_value( 'provider_url' );
			if ( ! empty( $provider_url ) ) {
				$schema['provider']['url'] = $provider_url;
			}
		}

		// Add image if set.
		$image = $this->get_value( 'course_image' );
		if ( ! empty( $image ) ) {
			$schema['image'] = array(
				'@type' => 'ImageObject',
				'url'   => $image,
			);
		}

		// Add instructor details if set.
		$instructor_name = $this->get_value( 'instructor_name' );
		if ( ! empty( $instructor_name ) ) {
			$schema['instructor'] = array(
				'@type' => 'Person',
				'name'  => $instructor_name,
			);

			$instructor_url = $this->get_value( 'instructor_url' );
			if ( ! empty( $instructor_url ) ) {
				$schema['instructor']['url'] = $instructor_url;
			}
		}

		// Add pricing and availability information.
		$course_type                   = $this->get_value( 'course_type' );
		$schema['isAccessibleForFree'] = ( 'free' === $course_type );

		if ( 'paid' === $course_type ) {
			$price    = $this->get_value( 'course_price' );
			$currency = $this->get_value( 'course_currency' );

			if ( ! empty( $price ) ) {
				$schema['offers'] = array(
					'@type'         => 'Offer',
					'price'         => $price,
					'priceCurrency' => $currency,
					'availability'  => 'https://schema.org/' . $this->get_value( 'availability' ),
				);

				// Add valid from date if set.
				$valid_from = $this->get_value( 'valid_from' );
				if ( ! empty( $valid_from ) ) {
					$schema['offers']['validFrom'] = $valid_from;
				}

				// Add valid until date if set.
				$valid_until = $this->get_value( 'valid_until' );
				if ( ! empty( $valid_until ) ) {
					$schema['offers']['validThrough'] = $valid_until;
				}

				// Add URL to the offer if course URL is set.
				if ( ! empty( $url ) ) {
					$schema['offers']['url'] = $url;
				}
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     }‰U]qÎÜŸ™  ™  =  includes/generator/class-wpcode-generator-contact-methods.phpnu „[µü¤        <?php
/**
 * Generate a snippet to add a extra contact methods to user profiles.
 *
 * @package WPCode
 */

/**
 * The Contact Methods generator.
 */
class WPCode_Generator_Contact_Methods extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'contact-methods';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'admin',
	);

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Contact Methods', 'insert-headers-and-footers' );
		$this->description = __( 'Add additional contact methods to WordPress user profiles.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'    => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'Use this generator to create a snippet which adds more contact methods to your WordPress users profiles.', 'insert-headers-and-footers' ),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms sections using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => __( 'You can add extra fields for user profiles like their extended address, city, country, phone number, social media profiles (Facebook, Twitter, etc).', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'general' => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Function name', 'insert-headers-and-footers' ),
							'description' => __( 'Make this unique to avoid conflicts with other snippets.', 'insert-headers-and-footers' ),
							'id'          => 'function_name',
							'placeholder' => 'add_custom_contact_methods',
							'default'     => 'add_custom_contact_methods_' . time(),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Text Domain', 'insert-headers-and-footers' ),
							'description' => __( 'Optional text domain for translations.', 'insert-headers-and-footers' ),
							'id'          => 'text_domain',
							'placeholder' => 'text_domain',
							'default'     => 'text_domain',
						),
					),
				),
			),
			'methods' => array(
				'label'   => __( 'Contact Methods', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Contact Method Slug', 'insert-headers-and-footers' ),
							'description' => __( 'A lowercase with no spaces slug for usage in the code. For example: "facebook" or "telephone".', 'insert-headers-and-footers' ),
							'id'          => 'contact_method_name',
							'name'        => 'contact_method_name[]',
							'placeholder' => '',
							'repeater'    => 'contact_methods',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Contact Method Label', 'insert-headers-and-footers' ),
							'description' => __( 'This will show up as a label next to the contact method field. For example: "Facebook URL" or "Phone number".', 'insert-headers-and-footers' ),
							'id'          => 'contact_method_description',
							'name'        => 'contact_method_description[]',
							'placeholder' => '',
							'repeater'    => 'contact_methods',
						),
					),
					// Column 3.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Add more contact methods', 'insert-headers-and-footers' ),
							'content' => __( 'Use the "Add contact method" button below to add as many contact methods as you wish.', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'repeater_button',
							'button_text' => __( 'Add contact method', 'insert-headers-and-footers' ),
							'id'          => 'contact_methods', // Repeater to repeat when clicked.
						),
					),
				),
			),
		);
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {

		$contact_method_names        = $this->get_value( 'contact_method_name' );
		$contact_method_descriptions = $this->get_value( 'contact_method_description' );

		$contact_methods_code = '';

		if ( ! empty( $contact_method_names ) ) {
			foreach ( $contact_method_names as $key => $method_name ) {
				if ( empty( $method_name ) ) {
					continue;
				}
				$method_name = sanitize_title( $method_name );
				$description = empty( $contact_method_descriptions[ $key ] ) ? '' : $contact_method_descriptions[ $key ];

				$contact_methods_code .= "
	\$contact_methods[ '$method_name' ] = __( '$description', '{$this->get_value('text_domain')}' );";
			}
		}

		return '// Add custom contact methods

function ' . $this->get_value('function_name') . '( $contact_methods ) {
    ' . $contact_methods_code . '
    
    return $contact_methods;
}

add_filter( \'user_contactmethods\', \'' . $this->get_value('function_name') . '\' );
';
	}

}
PK     }‰U]ÀQØy1  1  ;  includes/generator/class-wpcode-generator-schema-recipe.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Recipe schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Recipe class.
 */
class WPCode_Generator_Schema_Recipe extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-recipe';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Recipe Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for cooking recipes and food preparation instructions.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'         => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Recipe schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'general'      => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Recipe Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the recipe.', 'insert-headers-and-footers' ),
							'id'              => 'name',
							'default'         => '',
							'predefined_tags' => array( 'title' ),
							'smart_tags'      => true,
							'placeholder'     => __( 'Classic Chocolate Chip Cookies', 'insert-headers-and-footers' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A detailed description of the recipe.', 'insert-headers-and-footers' ),
							'id'              => 'description',
							'default'         => '',
							'predefined_tags' => array( 'title' ),
							'smart_tags'      => true,
							'placeholder'     => __( 'A delicious and easy-to-make chocolate chip cookie recipe that will become your family favorite.', 'insert-headers-and-footers' ),
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Recipe Image', 'insert-headers-and-footers' ),
							'description'  => __( 'URL of the recipe image.', 'insert-headers-and-footers' ),
							'id'           => 'image',
							'placeholder'  => 'https://example.com/recipe-image.jpg',
							'default'      => '',
							'is_image_url' => true,
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Author Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the recipe author.', 'insert-headers-and-footers' ),
							'id'              => 'author_name',
							'default'         => '',
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_name' ),
							'placeholder'     => __( 'John Smith', 'insert-headers-and-footers' ),
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Recipe Category', 'insert-headers-and-footers' ),
							'description' => __( 'The category of the recipe (salad, dessert).', 'insert-headers-and-footers' ),
							'id'          => 'recipe_category',
							'default'     => '',
							'placeholder' => __( 'Dessert, Main Course, Appetizer', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Calories', 'insert-headers-and-footers' ),
							'description' => __( 'The calorie content of the recipe.', 'insert-headers-and-footers' ),
							'id'          => 'calories',
							'default'     => '',
							'placeholder' => __( '350 calories', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'textarea',
							'label'       => __( 'Ingredients', 'insert-headers-and-footers' ),
							'description' => __( 'List all ingredients, separated by commas.', 'insert-headers-and-footers' ),
							'id'          => 'ingredients',
							'default'     => '',
							'placeholder' => __( '2 cups all-purpose flour, 1 cup butter, 2 eggs, 1 cup sugar', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Recipe Cuisine', 'insert-headers-and-footers' ),
							'description' => __( 'The cuisine type (Italian, Mexican).', 'insert-headers-and-footers' ),
							'id'          => 'recipe_cuisine',
							'default'     => '',
							'placeholder' => __( 'Italian, Mexican, Asian', 'insert-headers-and-footers' ),
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Prep Time', 'insert-headers-and-footers' ),
							'description' => __( 'Preparation time in ISO 8601 format (PT30M for 30 minutes).', 'insert-headers-and-footers' ),
							'id'          => 'prep_time',
							'default'     => '',
							'placeholder' => __( 'PT30M (30 minutes)', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Cook Time', 'insert-headers-and-footers' ),
							'description' => __( 'Cooking time in ISO 8601 format (PT1H for 1 hour).', 'insert-headers-and-footers' ),
							'id'          => 'cook_time',
							'default'     => '',
							'placeholder' => __( 'PT1H (1 hour)', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Total Time', 'insert-headers-and-footers' ),
							'description' => __( 'Total time in ISO 8601 format.', 'insert-headers-and-footers' ),
							'id'          => 'total_time',
							'default'     => '',
							'placeholder' => __( 'PT1H30M (1 hour 30 minutes)', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Recipe Yield', 'insert-headers-and-footers' ),
							'description' => __( 'Number of servings or yield amount.', 'insert-headers-and-footers' ),
							'id'          => 'recipe_yield',
							'default'     => '',
							'placeholder' => __( '4 servings', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'instructions' => array(
				'label'   => __( 'Instructions', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Instructions.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Step Name', 'insert-headers-and-footers' ),
							'description' => __( 'The name/title of this step.', 'insert-headers-and-footers' ),
							'id'          => 'instruction_name',
							'name'        => 'instruction_name[]',
							'repeater'    => 'instructions',
							'default'     => '',
							'placeholder' => __( 'Preheat the oven', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'textarea',
							'label'       => __( 'Step Text', 'insert-headers-and-footers' ),
							'description' => __( 'The detailed instructions for this step.', 'insert-headers-and-footers' ),
							'id'          => 'instruction_text',
							'name'        => 'instruction_text[]',
							'repeater'    => 'instructions',
							'default'     => '',
							'placeholder' => __( 'Preheat the oven to 350Â°F (175Â°C). Line a baking sheet with parchment paper.', 'insert-headers-and-footers' ),
							'rows'        => 4,
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Step Image', 'insert-headers-and-footers' ),
							'description'  => __( 'URL of an image for this step.', 'insert-headers-and-footers' ),
							'id'           => 'instruction_image',
							'name'         => 'instruction_image[]',
							'repeater'     => 'instructions',
							'placeholder'  => 'https://example.com/step-image.jpg',
							'default'      => '',
							'is_image_url' => true,
						),
					),
					// Column 2 - Repeater button.
					array(
						array(
							'type'        => 'repeater_button',
							'id'          => 'instructions',
							'button_text' => __( 'Add Another Step', 'insert-headers-and-footers' ),
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context'    => 'https://schema.org',
			'@type'       => 'Recipe',
			'name'        => $this->get_value( 'name' ),
			'description' => $this->get_value( 'description' ),
		);

		// Add author if provided.
		$author_name = $this->get_value( 'author_name' );
		if ( ! empty( $author_name ) ) {
			$schema['author'] = array(
				'@type' => 'Person',
				'name'  => $author_name,
			);
		}

		// Add image if provided.
		$image = $this->get_value( 'image' );
		if ( ! empty( $image ) ) {
			$schema['image'] = array(
				'@type' => 'ImageObject',
				'url'   => $image,
			);
		}

		// Add recipe category if provided.
		$recipe_category = $this->get_value( 'recipe_category' );
		if ( ! empty( $recipe_category ) ) {
			$schema['recipeCategory'] = $recipe_category;
		}

		// Add recipe cuisine if provided.
		$recipe_cuisine = $this->get_value( 'recipe_cuisine' );
		if ( ! empty( $recipe_cuisine ) ) {
			$schema['recipeCuisine'] = $recipe_cuisine;
		}

		// Add times if provided.
		$prep_time = $this->get_value( 'prep_time' );
		if ( ! empty( $prep_time ) ) {
			$schema['prepTime'] = $prep_time;
		}

		$cook_time = $this->get_value( 'cook_time' );
		if ( ! empty( $cook_time ) ) {
			$schema['cookTime'] = $cook_time;
		}

		$total_time = $this->get_value( 'total_time' );
		if ( ! empty( $total_time ) ) {
			$schema['totalTime'] = $total_time;
		}

		// Add recipe yield if provided.
		$recipe_yield = $this->get_value( 'recipe_yield' );
		if ( ! empty( $recipe_yield ) ) {
			$schema['recipeYield'] = $recipe_yield;
		}

		// Add nutrition if calories provided.
		$calories = $this->get_value( 'calories' );
		if ( ! empty( $calories ) ) {
			$schema['nutrition'] = array(
				'@type'    => 'NutritionInformation',
				'calories' => $calories,
			);
		}

		// Get the ingredients.
		$ingredients = $this->get_value( 'ingredients' );
		if ( ! empty( $ingredients ) ) {
			// Split by comma and trim each ingredient.
			$ingredients_array = array_map( 'trim', explode( ',', $ingredients ) );
			// Filter out empty values.
			$ingredients_array = array_filter( $ingredients_array );
			if ( ! empty( $ingredients_array ) ) {
				$schema['recipeIngredient'] = array_values( $ingredients_array );
			}
		}

		// Get the instructions.
		$instruction_names  = $this->get_value( 'instruction_name' );
		$instruction_texts  = $this->get_value( 'instruction_text' );
		$instruction_images = $this->get_value( 'instruction_image' );

		// If we have instructions, add them to the schema.
		if ( ! empty( $instruction_names ) && ! empty( $instruction_texts ) ) {
			// Convert to arrays if single values.
			if ( ! is_array( $instruction_names ) ) {
				$instruction_names = array( $instruction_names );
			}
			if ( ! is_array( $instruction_texts ) ) {
				$instruction_texts = array( $instruction_texts );
			}
			if ( ! is_array( $instruction_images ) ) {
				$instruction_images = array( $instruction_images );
			}

			$schema['recipeInstructions'] = array();

			// Add each instruction to the schema.
			foreach ( $instruction_names as $index => $instruction_name ) {
				if ( ! empty( $instruction_name ) && ! empty( $instruction_texts[ $index ] ) ) {
					$instruction = array(
						'@type' => 'HowToStep',
						'name'  => $instruction_name,
						'text'  => $instruction_texts[ $index ],
					);

					// Add image if provided.
					if ( ! empty( $instruction_images[ $index ] ) ) {
						$instruction['image'] = $instruction_images[ $index ];
					}

					$schema['recipeInstructions'][] = $instruction;
				}
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     }‰U]Ü#Ç	ø  ø  8  includes/generator/class-wpcode-generator-schema-faq.phpnu „[µü¤        <?php
/**
 * Generate a snippet for FAQ schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_FAQ class.
 */
class WPCode_Generator_Schema_FAQ extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-faq';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'FAQ Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for Frequently Asked Questions to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info' => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates FAQ schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'faq'  => array(
				'label'   => __( 'FAQ Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - FAQ items.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Question', 'insert-headers-and-footers' ),
							'description' => __( 'The question text.', 'insert-headers-and-footers' ),
							'id'          => 'question',
							'name'        => 'question[]',
							'repeater'    => 'faq_items',
							'default'     => '',
							'placeholder' => __( 'What is your question?', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'textarea',
							'label'       => __( 'Answer', 'insert-headers-and-footers' ),
							'description' => __( 'The answer to the question.', 'insert-headers-and-footers' ),
							'id'          => 'answer',
							'name'        => 'answer[]',
							'repeater'    => 'faq_items',
							'default'     => '',
							'placeholder' => __( 'Enter your answer here...', 'insert-headers-and-footers' ),
						),
					),
					// Column 2 - Repeater button.
					array(
						array(
							'type'        => 'repeater_button',
							'id'          => 'faq_items',
							'button_text' => __( 'Add Another FAQ Item', 'insert-headers-and-footers' ),
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context'   => 'https://schema.org',
			'@type'      => 'FAQPage',
			'mainEntity' => array(),
		);

		// Get the FAQ items.
		$questions = $this->get_value( 'question' );
		$answers   = $this->get_value( 'answer' );

		// If we have questions and answers, add them to the schema.
		if ( ! empty( $questions ) && ! empty( $answers ) ) {
			// Convert to arrays if single values.
			if ( ! is_array( $questions ) ) {
				$questions = array( $questions );
			}
			if ( ! is_array( $answers ) ) {
				$answers = array( $answers );
			}

			// Add each question/answer pair to the schema.
			foreach ( $questions as $index => $question ) {
				if ( ! empty( $question ) && ! empty( $answers[ $index ] ) ) {
					$schema['mainEntity'][] = array(
						'@type'          => 'Question',
						'name'           => $question,
						'acceptedAnswer' => array(
							'@type' => 'Answer',
							'text'  => $answers[ $index ],
						),
					);
				}
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     }‰U]ƒþåæ:  :  :  includes/generator/class-wpcode-generator-schema-music.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Music schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Music class.
 */
class WPCode_Generator_Schema_Music extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-music';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Music Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for music content to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'  => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Music schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'music' => array(
				'label'   => __( 'Music Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic Music information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Music Title', 'insert-headers-and-footers' ),
							'description'     => __( 'The title of the music track or album.', 'insert-headers-and-footers' ),
							'id'              => 'music_title',
							'default'         => '',
							'placeholder'     => __( 'Enter the music title...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A detailed description of the music.', 'insert-headers-and-footers' ),
							'id'              => 'description',
							'default'         => '',
							'placeholder'     => __( 'Describe the music...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'custom_field' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Music URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the music page.', 'insert-headers-and-footers' ),
							'id'              => 'music_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/music',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					array(
						array(
							'type'         => 'text',
							'label'        => __( 'Image Cover URL', 'insert-headers-and-footers' ),
							'description'  => __( 'The URL of the music cover art or image.', 'insert-headers-and-footers' ),
							'id'           => 'image_url',
							'default'      => '',
							'placeholder'  => 'https://example.com/album-cover.jpg',
							'is_image_url' => true,
						),
						array(
							'type'        => 'date',
							'label'       => __( 'Release Date', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the music was released.', 'insert-headers-and-footers' ),
							'id'          => 'release_date',
							'default'     => '',
							'placeholder' => '2024-01-01',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Duration', 'insert-headers-and-footers' ),
							'description' => __( 'The duration of the music in seconds.', 'insert-headers-and-footers' ),
							'id'          => 'duration',
							'default'     => '',
							'placeholder' => '180',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Artist', 'insert-headers-and-footers' ),
							'description' => __( 'The name of the music artist.', 'insert-headers-and-footers' ),
							'id'          => 'artist',
							'default'     => '',
							'placeholder' => __( 'Enter artist name...', 'insert-headers-and-footers' ),
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Genre', 'insert-headers-and-footers' ),
							'description' => __( 'The genre of the music (e.g., Rock, Pop, Jazz).', 'insert-headers-and-footers' ),
							'id'          => 'genre',
							'default'     => '',
							'placeholder' => 'Rock, Pop',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Album', 'insert-headers-and-footers' ),
							'description' => __( 'The name of the album (if applicable).', 'insert-headers-and-footers' ),
							'id'          => 'album',
							'default'     => '',
							'placeholder' => __( 'Enter album name...', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Record Label', 'insert-headers-and-footers' ),
							'description' => __( 'The name of the record label.', 'insert-headers-and-footers' ),
							'id'          => 'record_label',
							'default'     => '',
							'placeholder' => __( 'Enter record label name...', 'insert-headers-and-footers' ),
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context' => 'https://schema.org',
			'@type'    => 'MusicRecording',
		);

		// Add basic information.
		$music_title = $this->get_value( 'music_title' );
		if ( ! empty( $music_title ) ) {
			$schema['name'] = $music_title;
		}

		$description = $this->get_value( 'description' );
		if ( ! empty( $description ) ) {
			$schema['description'] = $description;
		}

		$url = $this->get_value( 'music_url' );
		if ( ! empty( $url ) ) {
			$schema['url'] = $url;
		}

		// Add image.
		$image_url = $this->get_value( 'image_url' );
		if ( ! empty( $image_url ) ) {
			$schema['image'] = array(
				'@type' => 'ImageObject',
				'url'   => $image_url,
			);
		}

		// Add release date.
		$release_date = $this->get_value( 'release_date' );
		if ( ! empty( $release_date ) ) {
			$schema['datePublished'] = $release_date;
		}

		// Add duration.
		$duration = $this->get_value( 'duration' );
		if ( ! empty( $duration ) ) {
			$schema['duration'] = 'PT' . intval( $duration ) . 'S';
		}

		// Add artist.
		$artist = $this->get_value( 'artist' );
		if ( ! empty( $artist ) ) {
			$schema['byArtist'] = array(
				'@type' => 'MusicGroup',
				'name'  => $artist,
			);
		}

		// Add genre.
		$genre = $this->get_value( 'genre' );
		if ( ! empty( $genre ) ) {
			$schema['genre'] = array_map( 'trim', explode( ',', $genre ) );
		}

		// Add album.
		$album = $this->get_value( 'album' );
		if ( ! empty( $album ) ) {
			$schema['inAlbum'] = array(
				'@type' => 'MusicAlbum',
				'name'  => $album,
			);
		}

		// Add record label.
		$record_label = $this->get_value( 'record_label' );
		if ( ! empty( $record_label ) ) {
			$schema['recordLabel'] = array(
				'@type' => 'Organization',
				'name'  => $record_label,
			);
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     }‰U]5‹¶<–  <–  3  includes/generator/class-wpcode-generator-hooks.phpnu „[µü¤        <?php
/**
 * Generate a snippet for a hook.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Hooks class.
 */
class WPCode_Generator_Hooks extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'hooks';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'core',
	);

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Hooks', 'insert-headers-and-footers' );
		$this->description = __( 'Generate a snippet for an action or a filter using any available hook.', 'insert-headers-and-footers' );
	}

	/**
	 * Return a list of hooks for suggestions in the hook autocomplete.
	 *
	 * @return array
	 */
	protected function get_all_hooks_options() {
		return array(
			'link_category',
			'link_title',
			'signup_another_blog_init',
			'signup_create_blog_meta',
			'add_signup_meta',
			'signup_user_init',
			'signup_blog_init',
			'signup_get_available_languages',
			'wpmu_active_signup',
			'wp_http_cookie_value',
			'customize_panel_active',
			'register_post_type_args',
			'http_origin',
			'allowed_http_origins',
			'allowed_http_origin',
			'wp_mail',
			'wp_mail_from',
			'wp_mail_from_name',
			'wp_mail_content_type',
			'wp_mail_charset',
			'authenticate',
			'auth_cookie',
			'auth_cookie_expiration',
			'secure_auth_cookie',
			'secure_logged_in_cookie',
			'secure_auth_redirect',
			'auth_redirect_scheme',
			'wp_redirect',
			'wp_redirect_status',
			'wp_safe_redirect_fallback',
			'allowed_redirect_hosts',
			'comment_notification_recipients',
			'comment_notification_notify_author',
			'comment_notification_text',
			'comment_notification_subject',
			'comment_notification_headers',
			'notify_moderator',
			'comment_moderation_recipients',
			'comment_moderation_text',
			'comment_moderation_subject',
			'comment_moderation_headers',
			'wp_password_change_notification_email',
			'wp_new_user_notification_email_admin',
			'wp_new_user_notification_email',
			'nonce_life',
			'nonce_user_logged_out',
			'nonce_user_logged_out',
			'salt',
			'salt',
			'check_password',
			'check_password',
			'random_password',
			'pre_get_avatar',
			'style_loader_tag',
			'print_styles_array',
			'style_loader_src',
			'graceful_fail',
			'wp_is_mobile',
			'wp_kses_allowed_html',
			'pre_kses',
			'wp_editor_settings',
			'the_editor_content',
			'quicktags_settings',
			'teeny_mce_plugins',
			'mce_external_plugins',
			'tiny_mce_plugins',
			'mce_external_languages',
			'mce_css',
			'teeny_mce_buttons',
			'mce_buttons',
			'mce_buttons_2',
			'mce_buttons_3',
			'mce_buttons_4',
			'teeny_mce_before_init',
			'tiny_mce_before_init',
			'wp_mce_translation',
			'wp_link_query_args',
			'wp_link_query',
			'use_curl_transport',
			'old_slug_redirect_post_id',
			'old_slug_redirect_url',
			'pre_do_shortcode_tag',
			'do_shortcode_tag',
			'strip_shortcodes_tagnames',
			'wp_http_ixr_client_headers',
			'session_token_manager',
			'attach_session_information',
			'session_token_manager',
			'get_attached_file',
			'update_attached_file',
			'_wp_relative_upload_path',
			'get_post_status',
			'wp_count_attachments',
			'post_mime_types',
			'pre_delete_post',
			'pre_trash_post',
			'pre_untrash_post',
			'wp_insert_post_parent',
			'wp_insert_attachment_data',
			'wp_insert_post_data',
			'wp_unique_post_slug',
			'add_ping',
			'get_enclosed',
			'get_pung',
			'get_to_ping',
			'get_page_uri',
			'wp_get_attachment_metadata',
			'wp_get_attachment_url',
			'wp_get_attachment_caption',
			'wp_get_attachment_thumb_file',
			'wp_get_attachment_thumb_url',
			'icon_dir',
			'icon_dir_uri',
			'icon_dirs',
			'wp_mime_type_icon',
			'get_lastpostdate',
			'pre_get_lastpostmodified',
			'get_lastpostmodified',
			'post_rewrite_rules',
			'date_rewrite_rules',
			'root_rewrite_rules',
			'comments_rewrite_rules',
			'search_rewrite_rules',
			'author_rewrite_rules',
			'page_rewrite_rules',
			'tag_rewrite_rules',
			'rewrite_rules_array',
			'mod_rewrite_rules',
			'rewrite_rules',
			'iis7_url_rewrite_rules',
			'customize_section_active',
			'oembed_providers',
			'pre_oembed_result',
			'oembed_result',
			'oembed_remote_get_args',
			'oembed_fetch_url',
			'oembed_dataparse',
			'rest_url_prefix',
			'rest_url',
			'wp_rest_server_class',
			'rest_avatar_sizes',
			'protected_title_format',
			'private_title_format',
			'the_title',
			'the_guid',
			'get_the_guid',
			'the_content',
			'the_content_more_link',
			'the_excerpt',
			'get_the_excerpt',
			'post_class',
			'body_class',
			'post_password_required',
			'wp_link_pages_args',
			'wp_link_pages_link',
			'wp_link_pages',
			'the_meta_key',
			'wp_dropdown_pages',
			'wp_list_pages_excludes',
			'wp_list_pages',
			'wp_page_menu_args',
			'wp_page_menu',
			'wp_get_attachment_link',
			'prepend_attachment',
			'the_password_form',
			'wp_post_revision_title_expanded',
			'customize_loaded_components',
			'customize_changeset_branching',
			'customize_save_response',
			'customize_changeset_save_data',
			'customize_dynamic_setting_args',
			'customize_dynamic_setting_class',
			'customize_allowed_urls',
			'customize_refresh_nonces',
			'customize_previewable_devices',
			'customize_load_themes',
			'user_has_cap',
			'get_date_sql',
			'core_version_check_locale',
			'core_version_check_query_args',
			'plugins_update_check_locales',
			'themes_update_check_locales',
			'wp_get_update_data',
			'link_category',
			'wp_list_bookmarks',
			'script_loader_src',
			'script_loader_tag',
			'print_scripts_array',
			'wp_admin_bar_class',
			'show_admin_bar',
			'can_add_user_to_blog',
			'is_email_address_unsafe',
			'wpmu_validate_user_signup',
			'minimum_site_name_length',
			'newblogname',
			'wpmu_validate_blog_signup',
			'signup_site_meta',
			'signup_user_meta',
			'newblog_notify_siteadmin',
			'newuser_notify_siteadmin',
			'domain_exists',
			'update_welcome_email',
			'update_welcome_subject',
			'update_welcome_user_email',
			'update_welcome_user_subject',
			'pre_get_space_used',
			'get_space_allowed',
			'wp_is_large_network',
			'subdirectory_reserved_names',
			'new_network_admin_email_content',
			'send_network_admin_email_change_email',
			'network_admin_email_change_email',
			'hook',
			'example_filter',
			'wpdocs_filter',
			'oembed_default_width',
			'oembed_request_post_id',
			'rest_oembed_ttl',
			'wp_feed_cache_transient_lifetime',
			'get_bloginfo_rss',
			'bloginfo_rss',
			'default_feed',
			'get_wp_title_rss',
			'wp_title_rss',
			'the_title_rss',
			'the_content_feed',
			'the_excerpt_rss',
			'the_permalink_rss',
			'comments_link_feed',
			'comment_link',
			'comment_author_rss',
			'comment_text_rss',
			'the_category_rss',
			'rss_enclosure',
			'atom_enclosure',
			'self_link',
			'feed_content_type',
			'wp_doing_ajax',
			'wp_doing_cron',
			'file_mod_allowed',
			'the_sites',
			'site_search_columns',
			'sites_clauses',
			'found_sites_query',
			'the_permalink',
			'user_trailingslashit',
			'pre_post_link',
			'post_link_category',
			'post_link',
			'post_type_link',
			'page_link',
			'_get_page_link',
			'attachment_link',
			'year_link',
			'month_link',
			'day_link',
			'the_feed_link',
			'feed_link',
			'post_comments_feed_link',
			'post_comments_feed_link_html',
			'author_feed_link',
			'category_feed_link',
			'tag_feed_link',
			'taxonomy_feed_link',
			'get_edit_tag_link',
			'edit_tag_link',
			'get_edit_term_link',
			'edit_term_link',
			'search_link',
			'search_feed_link',
			'post_type_archive_feed_link',
			'preview_post_link',
			'get_edit_post_link',
			'edit_post_link',
			'get_delete_post_link',
			'get_edit_comment_link',
			'edit_comment_link',
			'get_edit_bookmark_link',
			'edit_bookmark_link',
			'get_edit_user_link',
			'get_pagenum_link',
			'next_posts_link_attributes',
			'previous_posts_link_attributes',
			'navigation_markup_template',
			'get_comments_pagenum_link',
			'next_comments_link_attributes',
			'previous_comments_link_attributes',
			'home_url',
			'site_url',
			'admin_url',
			'includes_url',
			'content_url',
			'plugins_url',
			'network_site_url',
			'network_home_url',
			'network_admin_url',
			'user_admin_url',
			'self_admin_url',
			'set_url_scheme',
			'user_dashboard_url',
			'edit_profile_url',
			'get_canonical_url',
			'pre_get_shortlink',
			'get_shortlink',
			'the_shortlink',
			'pre_get_avatar_data',
			'get_avatar_comment_types',
			'get_avatar_url',
			'theme_file_uri',
			'parent_theme_file_uri',
			'theme_file_path',
			'parent_theme_file_path',
			'privacy_policy_url',
			'the_privacy_policy_link',
			'date_i18n',
			'number_format_i18n',
			'enclosure_links',
			'removable_query_args',
			'status_header',
			'nocache_headers',
			'robots_txt',
			'upload_dir',
			'wp_unique_filename',
			'wp_upload_bits',
			'wp_check_filetype_and_ext',
			'upload_mimes',
			'wp_die_ajax_handler',
			'wp_die_xmlrpc_handler',
			'wp_die_handler',
			'smilies',
			'iis7_supports_permalinks',
			'get_main_network_id',
			'global_terms_enabled',
			'kses_allowed_protocols',
			'wp_checkdate',
			'wp_auth_check_same_domain',
			'wp_delete_file',
			'admin_memory_limit',
			'image_memory_limit',
			'send_site_admin_email_change_email',
			'site_admin_email_change_email',
			'wp_privacy_anonymize_data',
			'wp_privacy_exports_dir',
			'wp_privacy_exports_url',
			'wp_privacy_export_expiration',
			'the_title',
			'the_title',
			'link_category',
			'the_content_rss',
			'icon_dir',
			'attachment_icon',
			'attachment_innerHTML',
			'the_title',
			'index_rel_link',
			'the_title',
			'parent_post_rel_link',
			'richedit_pre',
			'htmledit_pre',
			'shortcut_link',
			'rest_authentication_errors',
			'rest_send_nocache_headers',
			'rest_jsonp_enabled',
			'rest_post_dispatch',
			'rest_pre_serve_request',
			'rest_pre_echo_response',
			'rest_envelope_response',
			'rest_endpoints',
			'rest_pre_dispatch',
			'rest_request_before_callbacks',
			'rest_dispatch_request',
			'rest_request_after_callbacks',
			'rest_index',
			'rest_namespace_index',
			'rest_endpoints_description',
			'rest_route_data',
			'rest_request_parameter_order',
			'rest_request_from_url',
			'rest_comment_query',
			'rest_allow_anonymous_comments',
			'rest_pre_insert_comment',
			'rest_comment_trashable',
			'rest_prepare_comment',
			'rest_preprocess_comment',
			'rest_comment_collection_params',
			'rest_prepare_attachment',
			'rest_prepare_revision',
			'rest_user_query',
			'rest_prepare_user',
			'rest_pre_insert_user',
			'rest_user_collection_params',
			'rest_pre_get_setting',
			'rest_pre_update_setting',
			'rest_prepare_status',
			'rest_prepare_taxonomy',
			'rest_prepare_post_type',
			'rest_response_link_curies',
			'secure_signon_cookie',
			'wp_authenticate_user',
			'wp_authenticate_user',
			'check_is_user_spammed',
			'get_usernumposts',
			'pre_get_blogs_of_user',
			'get_blogs_of_user',
			'wp_dropdown_users_args',
			'wp_dropdown_users',
			'username_exists',
			'validate_username',
			'pre_user_login',
			'illegal_user_logins',
			'pre_user_nicename',
			'pre_user_url',
			'pre_user_email',
			'pre_user_nickname',
			'pre_user_first_name',
			'pre_user_last_name',
			'pre_user_display_name',
			'pre_user_description',
			'wp_pre_insert_user_data',
			'insert_user_meta',
			'send_password_change_email',
			'send_email_change_email',
			'password_change_email',
			'email_change_email',
			'user_contactmethods',
			'password_hint',
			'allow_password_reset',
			'password_reset_expiration',
			'password_reset_key_expired',
			'user_registration_email',
			'registration_errors',
			'determine_current_user',
			'new_user_email_content',
			'user_request_confirmed_email_to',
			'user_confirmed_action_email_content',
			'user_request_confirmed_email_subject',
			'user_erasure_fulfillment_email_to',
			'user_erasure_complete_email_subject',
			'user_confirmed_action_email_content',
			'user_request_action_confirmed_message',
			'user_request_action_description',
			'user_request_action_email_content',
			'user_request_action_email_subject',
			'user_request_key_expiration',
			'get_terms_defaults',
			'get_terms_args',
			'list_terms_exclusions',
			'get_terms_fields',
			'terms_clauses',
			'get_terms_orderby',
			'list_pages',
			'register_taxonomy_args',
			'get_categories_taxonomy',
			'get_tags',
			'the_comments',
			'comments_clauses',
			'found_comments_query',
			'get_the_categories',
			'the_category_list',
			'the_category',
			'list_cats',
			'list_cats',
			'wp_dropdown_cats',
			'wp_list_categories',
			'wp_tag_cloud',
			'tag_cloud_sort',
			'wp_generate_tag_cloud_data',
			'wp_generate_tag_cloud',
			'get_the_tags',
			'the_tags',
			'get_the_terms',
			'the_terms',
			'pre_get_main_site_id',
			'network_by_path_segments_count',
			'pre_get_network_by_path',
			'get_site',
			'get_network',
			'pre_http_send_through_proxy',
			'customize_partial_render',
			'customize_dynamic_partial_args',
			'customize_dynamic_partial_class',
			'customize_render_partials_response',
			'wp_query_search_exclusion_prefix',
			'wp_search_stopwords',
			'posts_search',
			'posts_search_orderby',
			'posts_where',
			'posts_join',
			'comment_feed_join',
			'comment_feed_where',
			'comment_feed_groupby',
			'comment_feed_orderby',
			'comment_feed_limits',
			'posts_where_paged',
			'posts_groupby',
			'posts_join_paged',
			'posts_orderby',
			'posts_distinct',
			'post_limits',
			'posts_fields',
			'posts_clauses',
			'posts_where_request',
			'posts_groupby_request',
			'posts_join_request',
			'posts_orderby_request',
			'posts_distinct_request',
			'posts_fields_request',
			'post_limits_request',
			'posts_clauses_request',
			'posts_request',
			'posts_pre_query',
			'split_the_query',
			'posts_request_ids',
			'posts_results',
			'comment_feed_orderby',
			'comment_feed_limits',
			'the_preview',
			'the_posts',
			'found_posts_query',
			'found_posts',
			'content_pagination',
			'embed_handler_html',
			'oembed_ttl',
			'embed_oembed_html',
			'embed_oembed_discover',
			'embed_maybe_make_link',
			'is_protected_meta',
			'register_meta_args',
			'customizer_widgets_section_args',
			'is_wide_widget_in_customizer',
			'widget_customizer_setting_args',
			'search_form_format',
			'get_search_form',
			'loginout',
			'loginout',
			'logout_url',
			'login_url',
			'register_url',
			'login_form_defaults',
			'login_form_top',
			'login_form_middle',
			'login_form_bottom',
			'lostpassword_url',
			'register',
			'bloginfo_url',
			'bloginfo',
			'get_site_icon_url',
			'get_custom_logo',
			'pre_get_document_title',
			'document_title_separator',
			'document_title_parts',
			'wp_title_parts',
			'wp_title',
			'single_post_title',
			'post_type_archive_title',
			'single_cat_title',
			'single_tag_title',
			'single_term_title',
			'get_the_archive_title',
			'get_the_archive_description',
			'get_the_post_type_description',
			'get_archives_link',
			'getarchives_where',
			'getarchives_join',
			'get_calendar',
			'get_calendar',
			'the_date',
			'get_the_date',
			'the_modified_date',
			'get_the_modified_date',
			'the_time',
			'get_the_time',
			'get_post_time',
			'the_modified_time',
			'get_the_modified_time',
			'get_post_modified_time',
			'the_weekday',
			'the_weekday_date',
			'site_icon_meta_tags',
			'wp_resource_hints',
			'user_can_richedit',
			'wp_default_editor',
			'wp_code_editor_settings',
			'get_search_query',
			'the_search_query',
			'language_attributes',
			'paginate_links',
			'wp_admin_css_uri',
			'wp_admin_css',
			'wp_generator_type',
			'the_generator',
			'redirect_canonical',
			'role_has_cap',
			'theme_templates',
			'theme_scandir_exclusions',
			'network_allowed_themes',
			'allowed_themes',
			'site_allowed_themes',
			'site_allowed_themes',
			'wp_http_accept_encoding',
			'',
			'incompatible_sql_modes',
			'query',
			'pre_get_table_charset',
			'pre_get_col_charset',
			'stylesheet',
			'stylesheet_directory',
			'stylesheet_directory_uri',
			'stylesheet_uri',
			'locale_stylesheet_uri',
			'template',
			'template_directory',
			'template_directory_uri',
			'theme_root',
			'theme_root_uri',
			'get_header_image_tag',
			'get_header_video_url',
			'header_video_settings',
			'is_header_video_active',
			'wp_get_custom_css',
			'update_custom_css_data',
			'editor_stylesheets',
			'get_theme_starter_content',
			'rss_update_period',
			'rss_update_frequency',
			'pre_cache_alloptions',
			'alloptions',
			'pre_update_option',
			'register_setting_args',
			'post_thumbnail_size',
			'post_thumbnail_html',
			'the_post_thumbnail_caption',
			'category_description',
			'category_css_class',
			'map_meta_cap',
			'editor_max_image_size',
			'get_image_tag_class',
			'get_image_tag',
			'wp_constrain_dimensions',
			'image_resize_dimensions',
			'image_get_intermediate_size',
			'intermediate_image_sizes',
			'wp_get_attachment_image_src',
			'wp_get_attachment_image_attributes',
			'wp_calculate_image_srcset_meta',
			'max_srcset_image_width',
			'wp_calculate_image_srcset',
			'wp_calculate_image_sizes',
			'img_caption_shortcode',
			'img_caption_shortcode_width',
			'post_gallery',
			'gallery_style',
			'post_playlist',
			'wp_mediaelement_fallback',
			'wp_audio_extensions',
			'wp_get_attachment_id3_keys',
			'wp_audio_shortcode_override',
			'wp_audio_shortcode_library',
			'wp_audio_shortcode_class',
			'wp_audio_shortcode',
			'wp_video_extensions',
			'wp_video_shortcode_override',
			'wp_video_shortcode_library',
			'wp_video_shortcode_class',
			'wp_video_shortcode',
			'upload_size_limit',
			'wp_image_editors',
			'plupload_default_settings',
			'plupload_default_params',
			'wp_prepare_attachment_for_js',
			'media_library_show_audio_playlist',
			'media_library_show_video_playlist',
			'media_library_months_with_files',
			'media_view_settings',
			'media_view_strings',
			'get_attached_media_args',
			'get_attached_media',
			'media_embedded_in_content_allowed_types',
			'get_post_galleries',
			'get_post_gallery',
			'attachment_url_to_postid',
			'site_details',
			'page_css_class',
			'page_menu_link_attributes',
			'xmlrpc_methods',
			'pre_option_enable_xmlrpc',
			'option_enable_xmlrpc',
			'xmlrpc_enabled',
			'xmlrpc_login_error',
			'xmlrpc_blog_options',
			'xmlrpc_prepare_taxonomy',
			'xmlrpc_prepare_term',
			'xmlrpc_prepare_post',
			'xmlrpc_prepare_post_type',
			'xmlrpc_prepare_media_item',
			'xmlrpc_prepare_page',
			'xmlrpc_prepare_comment',
			'xmlrpc_prepare_user',
			'xmlrpc_wp_insert_post_data',
			'xmlrpc_default_post_fields',
			'xmlrpc_default_taxonomy_fields',
			'xmlrpc_default_user_fields',
			'xmlrpc_allow_anonymous_comments',
			'xmlrpc_default_posttype_fields',
			'xmlrpc_default_revision_fields',
			'xmlrpc_text_filters',
			'pingback_ping_source_uri',
			'pre_remote_source',
			'xmlrpc_pingback_error',
			'url_to_postid',
			'wp_editor_set_quality',
			'jpeg_quality',
			'image_editor_default_mime_type',
			'post_format_rewrite_base',
			'get_term',
			'get_terms',
			'pre_category_nicename',
			'wp_get_object_terms_args',
			'get_object_terms',
			'wp_get_object_terms',
			'pre_insert_term',
			'wp_insert_term_data',
			'term_id_filter',
			'wp_unique_term_slug',
			'wp_update_term_parent',
			'wp_update_term_data',
			'term_id_filter',
			'pre_term_link',
			'tag_link',
			'category_link',
			'term_link',
			'https_local_ssl_verify',
			'https_ssl_verify',
			'use_streams_transport',
			'embed_defaults',
			'wp_audio_embed_handler',
			'wp_video_embed_handler',
			'wp_embed_handler_youtube',
			'wp_embed_handler_audio',
			'wp_embed_handler_video',
			'oembed_discovery_links',
			'post_embed_url',
			'oembed_endpoint_url',
			'embed_html',
			'oembed_response_data',
			'the_excerpt_embed',
			'embed_site_title_html',
			'xmlrpc_element_limit',
			'xmlrpc_chunk_parsing_size',
			'embed_thumbnail_id',
			'embed_thumbnail_image_size',
			'embed_thumbnail_image_shape',
			'http_headers_useragent',
			'http_request_args',
			'pre_http_request',
			'https_ssl_verify',
			'http_response',
			'http_api_transports',
			'http_response',
			'block_local_requests',
			'schedule_event',
			'schedule_event',
			'cron_schedules',
			'run_wptexturize',
			'no_texturize_tags',
			'no_texturize_shortcodes',
			'sanitize_file_name_chars',
			'sanitize_file_name',
			'sanitize_user',
			'sanitize_key',
			'sanitize_title',
			'sanitize_html_class',
			'format_to_edit',
			'smilies_src',
			'is_email',
			'sanitize_email',
			'human_time_diff',
			'excerpt_length',
			'excerpt_more',
			'wp_trim_excerpt',
			'wp_trim_words',
			'pre_ent2ncr',
			'format_for_editor',
			'clean_url',
			'js_escape',
			'esc_html',
			'attribute_escape',
			'esc_textarea',
			'tag_escape',
			'wp_parse_str',
			'wp_sprintf',
			'sanitize_text_field',
			'sanitize_textarea_field',
			'sanitize_mime_type',
			'sanitize_trackback_urls',
			'wp_spaces_regexp',
			'process_text_diff_html',
			'user_search_columns',
			'found_users_query',
			'wp_get_nav_menu_object',
			'has_nav_menu',
			'wp_get_nav_menu_name',
			'wp_get_nav_menus',
			'wp_get_nav_menu_items',
			'nav_menu_attr_title',
			'nav_menu_description',
			'wp_setup_nav_menu_item',
			'_wp_post_revision_fields',
			'wp_save_post_revision_post_has_changed',
			'wp_revisions_to_keep',
			'ms_site_check',
			'site_by_path_segments_count',
			'pre_get_site_by_path',
			'the_author',
			'the_modified_author',
			'the_author_posts_link',
			'author_link',
			'is_multi_author',
			'get_comment_author',
			'comment_author',
			'get_comment_author_email',
			'author_email',
			'comment_email',
			'get_comment_author_link',
			'get_comment_author_IP',
			'get_comment_author_url',
			'comment_url',
			'get_comment_author_url_link',
			'comment_class',
			'get_comment_date',
			'comment_excerpt_length',
			'get_comment_excerpt',
			'comment_excerpt',
			'get_comment_ID',
			'get_comment_link',
			'get_comments_link',
			'get_comments_number',
			'comments_number',
			'get_comment_text',
			'comment_text',
			'get_comment_time',
			'get_comment_type',
			'trackback_url',
			'comments_open',
			'pings_open',
			'comments_template_query_args',
			'comments_array',
			'comments_template',
			'respond_link',
			'comments_popup_link_attributes',
			'comment_reply_link_args',
			'comment_reply_link',
			'post_comments_link',
			'cancel_comment_reply_link',
			'comment_id_fields',
			'wp_list_comments_args',
			'comment_form_default_fields',
			'comment_form_defaults',
			'comment_form_logged_in',
			'comment_form_fields',
			'comment_form_field_comment',
			'comment_form_submit_button',
			'comment_form_submit_field',
			'get_bookmarks',
			'dynamic_sidebar_params',
			'dynamic_sidebar_has_widgets',
			'is_active_sidebar',
			'sidebars_widgets',
			'customize_control_active',
			'locale',
			'locale',
			'gettext',
			'gettext_with_context',
			'ngettext',
			'ngettext_with_context',
			'override_load_textdomain',
			'load_textdomain_mofile',
			'override_unload_textdomain',
			'plugin_locale',
			'plugin_locale',
			'theme_locale',
			'get_available_languages',
			'the_networks',
			'networks_clauses',
			'found_networks_query',
			'query_vars',
			'request',
			'wp_headers',
			'query_string',
			'widget_categories_dropdown_args',
			'widget_categories_args',
			'widget_title',
			'widget_links_args',
			'widget_nav_menu_args',
			'widget_text',
			'widget_text_content',
			'widget_custom_html_content',
			'comment_max_links_url',
			'get_comment',
			'get_default_comment_status',
			'comment_cookie_lifetime',
			'pre_comment_author_name',
			'pre_comment_author_email',
			'pre_comment_author_url',
			'duplicate_comment_id',
			'pre_comment_approved',
			'comment_flood_filter',
			'get_page_of_comment',
			'wp_get_comment_fields_max_lengths',
			'wp_count_comments',
			'wp_get_current_commenter',
			'pre_user_id',
			'pre_comment_user_agent',
			'pre_comment_content',
			'pre_comment_user_ip',
			'preprocess_comment',
			'notify_post_author',
			'comment_save_pre',
			'wp_update_comment_data',
			'pre_wp_update_comment_count_now',
			'pingback_useragent',
			'close_comments_for_post_types',
			'close_comments_for_post_types',
			'wp_anonymize_comment',
			'customize_nav_menu_available_items',
			'customize_nav_menu_searched_items',
			'customize_nav_menu_available_item_types',
			'wp_nav_menu_args',
			'pre_wp_nav_menu',
			'wp_nav_menu_container_allowedtags',
			'wp_nav_menu_objects',
			'wp_nav_menu_items',
			'wp_nav_menu',
			'nav_menu_submenu_css_class',
			'nav_menu_item_args',
			'nav_menu_css_class',
			'nav_menu_item_id',
			'nav_menu_link_attributes',
			'nav_menu_item_title',
			'walker_nav_menu_start_el',
			'get_meta_sql',
			'meta_query_find_compatible_table_alias',
			'widget_display_callback',
			'widget_update_callback',
			'widget_form_callback',
			'wp_xmlrpc_server_class',
			'comment_post_redirect',
			'edit_comment_misc_actions',
			'myblogs_options',
			'myblogs_blog_actions',
			'wp_nav_locations_listed_per_menu',
			'redirect_term_location',
			'taxonomy_parent_dropdown_args',
			'whitelist_options',
			'redirect_user_admin_request',
			'delete_site_email_content',
			'admin_title',
			'admin_body_class',
			'parent_file',
			'submenu_file',
			'export_args',
			'bulk_post_updated_messages',
			'user_profile_picture_description',
			'post_updated_messages',
			'enter_title_here',
			'tables_to_repair',
			'thread_comments_depth_max',
			'avatar_defaults',
			'default_avatar_select',
			'redirect_network_admin_request',
			'mu_menu_items',
			'media_upload_default_type',
			'media_upload_default_tab',
			'pre_user_login',
			'date_formats',
			'time_formats',
			'admin_footer_text',
			'update_footer',
			'install_themes_tabs',
			'available_permalink_structure_tags',
			'editable_slug',
			'wp_header_image_attachment_metadata',
			'theme_action_links',
			'theme_row_meta',
			'heartbeat_nopriv_received',
			'heartbeat_nopriv_send',
			'term_search_min_chars',
			'wp_check_post_lock_window',
			'ajax_query_attachments_args',
			'wp_refresh_nonces',
			'heartbeat_received',
			'heartbeat_send',
			'wp_ajax_cropped_attachment_metadata',
			'wp_ajax_cropped_attachment_id',
			'wp_privacy_personal_data_exporters',
			'wp_privacy_personal_data_export_page',
			'wp_privacy_personal_data_erasers',
			'wp_privacy_personal_data_erasure_page',
			'intermediate_image_sizes_advanced',
			'attachment_thumbnail_args',
			'fallback_intermediate_image_sizes',
			'wp_generate_attachment_metadata',
			'wp_read_image_metadata',
			'file_is_displayable_image',
			'load_image_to_edit',
			'load_image_to_edit_filesystempath',
			'load_image_to_edit_attachmenturl',
			'load_image_to_edit_path',
			'wpmu_users_columns',
			'ms_user_list_site_actions',
			'ms_user_row_actions',
			'default_content',
			'default_title',
			'default_excerpt',
			'edit_posts_per_page',
			'upload_per_page',
			'get_sample_permalink',
			'get_sample_permalink_html',
			'admin_post_thumbnail_size',
			'admin_post_thumbnail_html',
			'override_post_lock',
			'redirect_post_location',
			'default_hidden_columns',
			'hidden_columns',
			'default_hidden_meta_boxes',
			'hidden_meta_boxes',
			'months_dropdown_results',
			'list_table_primary_column',
			'update_right_now_text',
			'install_themes_nonmenu_tabs',
			'theme_install_actions',
			'plugin_files_exclusions',
			'translations_api',
			'translations_api_result',
			'add_menu_classes',
			'menu_order',
			'manage_pages_columns',
			'manage_posts_columns',
			'post_date_column_status',
			'post_date_column_time',
			'page_row_actions',
			'post_row_actions',
			'quick_edit_dropdown_pages_args',
			'all_plugins',
			'show_network_active_plugins',
			'network_admin_plugin_action_links',
			'plugin_action_links',
			'plugin_row_meta',
			'install_plugin_complete_actions',
			'wp_terms_checklist_args',
			'wp_comment_reply',
			'postmeta_form_keys',
			'postmeta_form_limit',
			'import_upload_size_limit',
			'display_post_states',
			'display_media_states',
			'export_wp_filename',
			'the_content_export',
			'the_excerpt_export',
			'update_bulk_plugins_complete_actions',
			'get_editable_authors',
			'get_others_drafts',
			'wp_create_thumbnail',
			'site_icon_attachment_metadata',
			'site_icon_image_sizes',
			'site_icon_image_sizes',
			'update_feedback',
			'editable_roles',
			'get_users_drafts',
			'post_types_to_delete_with_user',
			'manage_taxonomies_for_attachment_columns',
			'manage_media_columns',
			'media_row_actions',
			'update_bulk_theme_complete_actions',
			'install_theme_complete_actions',
			'update_theme_complete_actions',
			'install_plugins_tabs',
			'install_plugins_nonmenu_tabs',
			'plugin_install_action_links',
			'post_edit_category_parent_dropdown_args',
			'page_attributes_dropdown_pages_args',
			'default_page_template_title',
			'users_list_table_query_args',
			'user_row_actions',
			'manage_users_custom_column',
			'get_role_list',
			'comments_per_page',
			'comment_status_links',
			'term_updated_messages',
			'contextual_help_list',
			'contextual_help',
			'default_contextual_help',
			'screen_layout_columns',
			'screen_settings',
			'screen_options_show_screen',
			'screen_options_show_submit',
			'view_mode_post_types',
			'edit_tags_per_page',
			'tagsperpage',
			'edit_categories_per_page',
			'term_name',
			'tag_row_actions',
			'automatic_updater_disabled',
			'automatic_updates_is_vcs_checkout',
			'auto_core_update_email',
			'automatic_updates_debug_email',
			'async_update_translation',
			'plugins_api_args',
			'plugins_api',
			'plugins_api_result',
			'upgrader_pre_download',
			'upgrader_pre_install',
			'upgrader_source_selection',
			'upgrader_clear_destination',
			'upgrader_post_install',
			'upgrader_package_options',
			'themes_api_args',
			'themes_api',
			'themes_api_result',
			'pre_prepare_themes_for_js',
			'wp_prepare_themes_for_js',
			'dbdelta_queries',
			'dbdelta_create_queries',
			'dbdelta_insert_queries',
			'wp_should_upgrade_global_tables',
			'ms_sites_list_table_query_args',
			'wpmu_blogs_columns',
			'manage_sites_action_links',
			'wp_network_dashboard_widgets',
			'wp_user_dashboard_widgets',
			'wp_dashboard_widgets',
			'dashboard_glance_items',
			'privacy_on_link_title',
			'privacy_on_link_text',
			'dashboard_recent_drafts_query_args',
			'comment_row_actions',
			'dashboard_recent_posts_query_args',
			'browse-happy-notice',
			'try_gutenberg_learn_more_link',
			'allow_minor_auto_core_updates',
			'allow_major_auto_core_updates',
			'media_upload_tabs',
			'image_send_to_editor',
			'image_add_caption_text',
			'image_add_caption_shortcode',
			'media_buttons_context',
			'attachment_fields_to_save',
			'media_send_to_editor',
			'image_send_to_editor_url',
			'attachment_fields_to_edit',
			'get_media_item_args',
			'media_meta',
			'get_media_item_args',
			'attachment_fields_to_edit',
			'upload_post_params',
			'plupload_init',
			'media_upload_form_url',
			'media_upload_form_url',
			'type_url_form_media',
			'media_upload_form_url',
			'media_upload_form_url',
			'media_upload_mime_type_links',
			'media_meta',
			'media_submitbox_misc_sections',
			'audio_submitbox_misc_sections',
			'wp_read_video_metadata',
			'got_rewrite',
			'got_url_rewrite',
			'documentation_ignore_functions',
			'set-screen-option',
			'admin_referrer_policy',
			'new_admin_email_content',
			'wp_get_default_privacy_policy_content',
			'terms_to_edit',
			'populate_network_meta',
			'update_plugin_complete_actions',
			'update_translations_complete_actions',
			'nav_menu_meta_box_object',
			'wp_edit_nav_menu_walker',
			'revision_text_diff_options',
			'wp_get_revision_ui_diff',
			'wp_prepare_revision_for_js',
			'wpmu_drop_tables',
			'wpmu_delete_blog_upload_dir',
			'lang_codes',
			'mu_dropdown_languages',
			'can_edit_network',
			'comment_edit_pre',
			'editable_extensions',
			'wp_theme_editor_filetypes',
			'pre_move_uploaded_file',
			'filesystem_method_file',
			'filesystem_method',
			'request_filesystem_credentials',
			'fs_ftp_connection_types',
			'wp_privacy_personal_data_email_content',
			'image_editor_save_pre',
			'image_save_pre',
			'wp_save_image_editor_file',
			'wp_save_image_file',
			'wp_image_editor_before_change',
			'image_edit_before_change',
			'comment_edit_redirect',
			'shake_error_codes',
			'login_title',
			'login_headerurl',
			'login_headertitle',
			'login_body_class',
			'login_message',
			'login_errors',
			'login_messages',
			'retrieve_password_title',
			'retrieve_password_message',
			'login_link_separator',
			'post_password_expires',
			'logout_redirect',
			'lostpassword_redirect',
			'wp_signup_location',
			'registration_redirect',
			'login_redirect',
			'wp_login_errors',
			'wp_mail_original_content',
			'phone_content',
		);
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info' => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => sprintf(
							// Translators: Placeholders add links to the wordpress.org references.
								__( 'Using this generator you can safely add custom %1$shooks%2$s using either %3$sadd_action%4$s or %5$sadd_filter%6$s.', 'insert-headers-and-footers' ),
								'<a href="https://developer.wordpress.org/reference/hooks/" target="_blank">',
								'</a>',
								'<a href="https://developer.wordpress.org/reference/functions/add_action/" target="_blank">',
								'</a>',
								'<a href="https://developer.wordpress.org/reference/functions/add_filter/" target="_blank">',
								'</a>'
							),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => __( 'You can use this to quickly get started with adding an action or filter.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'hook' => array(
				'label'   => __( 'Hook Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Hook type', 'insert-headers-and-footers' ),
							'description' => __( 'Can be either an action or a filter', 'insert-headers-and-footers' ),
							'id'          => 'hook_type',
							'default'     => 'add_action',
							'options'     => array(
								'add_action' => __( 'Action', 'insert-headers-and-footers' ),
								'add_filter' => __( 'Filter', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Hook name', 'insert-headers-and-footers' ),
							'description'  => __( 'Input hook name or pick one from the suggested list as you type.', 'insert-headers-and-footers' ),
							'id'           => 'hook_name',
							'default'      => '',
							'autocomplete' => $this->get_all_hooks_options(),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Callback function', 'insert-headers-and-footers' ),
							'description' => __( 'Name of the function you want to add to this hook.', 'insert-headers-and-footers' ),
							'id'          => 'callback',
							'default'     => 'custom_function_' . time(),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Priority', 'insert-headers-and-footers' ),
							'description' => __( 'Priority of this hook, by default 10.', 'insert-headers-and-footers' ),
							'id'          => 'priority',
							'default'     => '10',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Arguments list', 'insert-headers-and-footers' ),
							'description' => __( 'Add comma-separated custom arguments that will be passed to the callback function depending on the action/filter.', 'insert-headers-and-footers' ),
							'id'          => 'arguments',
							'default'     => '',
						),
					),
				),
			),
			'code' => array(
				'label'   => __( 'Code', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'textarea',
							'label'       => __( 'PHP Code', 'insert-headers-and-footers' ),
							'description' => __( 'Custom PHP code you want to run in the function, you can also edit this after you create the snippet.', 'insert-headers-and-footers' ),
							'id'          => 'code',
							'code'        => true,
						),
					),
				),
			),
		);
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {

		$arguments = $this->get_value( 'arguments' );

		$arguments_array = explode( ',', $arguments );
		$arguments_array = array_map( 'trim', $arguments_array );
		$count           = count( $arguments_array );
		if ( $count > 1 ) {
			$count = ", $count";
		} else {
			$count = '';
		}
		$arguments_formatted = implode( ', ', $arguments_array );
		$priority            = intval( $this->get_value( 'priority' ) );
		$callback            = str_replace( '-', '_', sanitize_title_with_dashes( $this->get_value( 'callback' ) ) );

		return '// Add a hook.
function ' . $callback . '( ' . $arguments_formatted . ' ) {
' . $this->get_value( 'code' ) . '
}
' . $this->get_value( 'hook_type' ) . '( \'' . $this->get_value( 'hook_name' ) . '\', \'' . $callback . '\', ' . $priority . $count . ' );';
	}

}
PK     }‰U]Ý¬ÈX˜  ˜  7  includes/generator/class-wpcode-generator-post-type.phpnu „[µü¤        <?php
/**
 * Generate a snippet to register a new post type.
 *
 * @package WPCode
 */

/**
 * The Post Type generator.
 */
class WPCode_Generator_Post_Type extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'post-type';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'content',
	);

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Post Type', 'insert-headers-and-footers' );
		$this->description = __( 'Use this tool to generate a custom post type for your website.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'         => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'Generate custom post types for your website using a snippet.', 'insert-headers-and-footers' ),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => __( 'You can add custom post types for specific items that are not blog posts, for example, if your site is about music you can have post types for artists, albums or songs.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'general'      => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Function name', 'insert-headers-and-footers' ),
							'description' => __( 'Make this unique to avoid conflicts with other snippets', 'insert-headers-and-footers' ),
							'id'          => 'function_name',
							'placeholder' => 'custom_post_type',
							'default'     => 'custom_post_type' . time(),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Text Domain', 'insert-headers-and-footers' ),
							'description' => __( 'Optional text domain for translations.', 'insert-headers-and-footers' ),
							'id'          => 'text_domain',
							'placeholder' => 'text_domain',
							'default'     => 'text_domain',
						),
					),
				),
			),
			'post_type'    => array(
				'label'   => __( 'Post Type', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Post Type Key', 'insert-headers-and-footers' ),
							'description' => __( 'Name of post type used in the code, lowercase maximum 20 characters.', 'insert-headers-and-footers' ),
							'id'          => 'post_type',
							'placeholder' => 'post_type',
							'default'     => 'post_type',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Description', 'insert-headers-and-footers' ),
							'description' => __( 'A short description of the post type.', 'insert-headers-and-footers' ),
							'id'          => 'description',
							'placeholder' => 'Post type description',
							'default'     => 'Post type description',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Name', 'insert-headers-and-footers' ),
							'description' => __( 'The singular post type name (e.g. Artist, Album, Song).', 'insert-headers-and-footers' ),
							'id'          => 'label',
							'placeholder' => 'Post Type',
							'default'     => 'Post Type',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Name (Plural)', 'insert-headers-and-footers' ),
							'description' => __( 'The post type plural name (e.g. Artists, Albums, Songs).', 'insert-headers-and-footers' ),
							'id'          => 'label_count',
							'placeholder' => 'Post Types',
							'default'     => 'Post Types',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Link To Taxonomies', 'insert-headers-and-footers' ),
							'description' => __( 'Comma-separated list of Taxonomies (e.g. post_tag, category)', 'insert-headers-and-footers' ),
							'id'          => 'taxonomies',
							'placeholder' => 'category,post_tag',
							'default'     => '',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Hierarchical', 'insert-headers-and-footers' ),
							'description' => __( 'Hierarchical post types can have parents/children.', 'insert-headers-and-footers' ),
							'id'          => 'hierarchical',
							'default'     => 'false',
							'options'     => array(
								'true'  => __( 'Yes, like pages', 'insert-headers-and-footers' ),
								'false' => __( 'No, like posts', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
			'labels'       => array(
				'label'   => __( 'Labels', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Menu Name', 'insert-headers-and-footers' ),
							'id'          => 'label_menu_name',
							'placeholder' => 'Post Types',
							'default'     => 'Post Types',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Admin Bar Name', 'insert-headers-and-footers' ),
							'id'          => 'label_admin_bar_name',
							'placeholder' => 'Post Type',
							'default'     => 'Post Type',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Archives', 'insert-headers-and-footers' ),
							'id'          => 'label_archives',
							'placeholder' => 'Item Archives',
							'default'     => 'Item Archives',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Attributes', 'insert-headers-and-footers' ),
							'id'          => 'label_attributes',
							'placeholder' => 'Item Attributes',
							'default'     => 'Item Attributes',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Parent Item', 'insert-headers-and-footers' ),
							'id'          => 'label_parent_item',
							'placeholder' => 'Parent Item:',
							'default'     => 'Parent Item:',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'All Items', 'insert-headers-and-footers' ),
							'id'          => 'label_all_items',
							'placeholder' => 'All Items',
							'default'     => 'All Items',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Add New Item', 'insert-headers-and-footers' ),
							'id'          => 'label_add_new_item',
							'placeholder' => 'Add New Item',
							'default'     => 'Add New Item',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Add New', 'insert-headers-and-footers' ),
							'id'          => 'label_add_new',
							'placeholder' => 'Add New',
							'default'     => 'Add New',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'New Item', 'insert-headers-and-footers' ),
							'id'          => 'label_new_item',
							'placeholder' => 'New Item',
							'default'     => 'New Item',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Edit Item', 'insert-headers-and-footers' ),
							'id'          => 'label_edit_item',
							'placeholder' => 'Edit Item',
							'default'     => 'Edit Item',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Update Item', 'insert-headers-and-footers' ),
							'id'          => 'label_update_item',
							'placeholder' => 'Update Item',
							'default'     => 'Update Item',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'View Item', 'insert-headers-and-footers' ),
							'id'          => 'label_view_item',
							'placeholder' => 'View Item',
							'default'     => 'View Item',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'View Items', 'insert-headers-and-footers' ),
							'id'          => 'label_view_items',
							'placeholder' => 'View Items',
							'default'     => 'View Items',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Search Item', 'insert-headers-and-footers' ),
							'id'          => 'label_search_item',
							'placeholder' => 'Search Item',
							'default'     => 'Search Item',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Not Found', 'insert-headers-and-footers' ),
							'id'          => 'label_not_found',
							'placeholder' => 'Not Found',
							'default'     => 'Not Found',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Not Found in Trash', 'insert-headers-and-footers' ),
							'id'          => 'label_not_found_in_trash',
							'placeholder' => 'Not Found in Trash',
							'default'     => 'Not Found in Trash',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Featured Image', 'insert-headers-and-footers' ),
							'id'          => 'label_featured_image',
							'placeholder' => 'Featured Image',
							'default'     => 'Featured Image',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Set featured image', 'insert-headers-and-footers' ),
							'id'          => 'label_set_featured_image',
							'placeholder' => 'Set featured image',
							'default'     => 'Set featured image',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Remove featured image', 'insert-headers-and-footers' ),
							'id'          => 'label_remove_featured_image',
							'placeholder' => 'Remove featured image',
							'default'     => 'Remove featured image',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Use as featured image', 'insert-headers-and-footers' ),
							'id'          => 'label_use_as_featured_image',
							'placeholder' => 'Use as featured image',
							'default'     => 'Use as featured image',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Insert into item', 'insert-headers-and-footers' ),
							'id'          => 'label_label_insert_into_item',
							'placeholder' => 'Insert into item',
							'default'     => 'Insert into item',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Uploaded to this item', 'insert-headers-and-footers' ),
							'id'          => 'label_uploaded_to_this_item',
							'placeholder' => 'Uploaded to this item',
							'default'     => 'Uploaded to this item',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Items list', 'insert-headers-and-footers' ),
							'id'          => 'label_items_list',
							'placeholder' => 'Items list',
							'default'     => 'Items list',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Items list navigation', 'insert-headers-and-footers' ),
							'id'          => 'label_items_list_navigation',
							'placeholder' => 'Items list navigation',
							'default'     => 'Items list navigation',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Filter items list', 'insert-headers-and-footers' ),
							'id'          => 'label_filter_items_list',
							'placeholder' => 'Filter items list',
							'default'     => 'Filter items list',
						),
					),
				),
			),
			'options'      => array(
				'label'   => __( 'Options', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'checkbox_list',
							'label'       => __( 'Supports', 'insert-headers-and-footers' ),
							'description' => __( 'Select which features this post type should support', 'insert-headers-and-footers' ),
							'id'          => 'supports',
							'default'     => array( 'title', 'editor' ),
							'options'     => array(
								'title'           => __( 'Title', 'insert-headers-and-footers' ),
								'editor'          => __( 'Content Editor', 'insert-headers-and-footers' ),
								'author'          => __( 'Author', 'insert-headers-and-footers' ),
								'thumbnail'       => __( 'Featured image', 'insert-headers-and-footers' ),
								'excerpt'         => __( 'Excerpt', 'insert-headers-and-footers' ),
								'trackbacks'      => __( 'Trackbacks', 'insert-headers-and-footers' ),
								'custom-fields'   => __( 'Custom Fields', 'insert-headers-and-footers' ),
								'comments'        => __( 'Comments', 'insert-headers-and-footers' ),
								'revisions'       => __( 'Revisions', 'insert-headers-and-footers' ),
								'page-attributes' => __( 'Page Attributes', 'insert-headers-and-footers' ),
								'post-formats'    => __( 'Post Formats', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Exclude From Search', 'insert-headers-and-footers' ),
							'description' => __( 'Exclude the posts of this post type from search results?', 'insert-headers-and-footers' ),
							'id'          => 'exclude_from_search',
							'default'     => 'false',
							'options'     => array(
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
								'false' => __( 'No - default', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Enable Export', 'insert-headers-and-footers' ),
							'description' => __( 'Allow exporting posts of this post type in Tools > Export.', 'insert-headers-and-footers' ),
							'id'          => 'can_export',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Enable Archives', 'insert-headers-and-footers' ),
							'description' => __( 'Enables archives for this post type, the post type key is used as default.', 'insert-headers-and-footers' ),
							'id'          => 'has_archive',
							'default'     => 'true',
							'options'     => array(
								'true'   => __( 'Yes - default', 'insert-headers-and-footers' ),
								'custom' => __( 'Yes - using custom slug', 'insert-headers-and-footers' ),
								'false'  => __( 'No', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Custom Archive Slug', 'insert-headers-and-footers' ),
							'description' => __( 'Custom archive slug (if selected above).', 'insert-headers-and-footers' ),
							'id'          => 'custom_archive_slug',
							'placeholder' => '',
							'default'     => '',
						),
					),
				),
			),
			'visibility'   => array(
				'label'   => __( 'Visibility', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Public', 'insert-headers-and-footers' ),
							// Translators: Placeholders add a link to the wp.org documentation page.
							'description' => sprintf( __( 'Should this post type be %1$svisible to authors%2$s?', 'insert-headers-and-footers' ), '<a href="https://developer.wordpress.org/reference/functions/register_post_type/#public" target="_blank">', '</a>' ),
							'id'          => 'public',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Show UI', 'insert-headers-and-footers' ),
							'description' => __( 'Should this post type be visible in the Admin?', 'insert-headers-and-footers' ),
							'id'          => 'show_ui',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Show in Menu?', 'insert-headers-and-footers' ),
							'description' => __( 'Should this post type be visible in the admin menu?', 'insert-headers-and-footers' ),
							'id'          => 'show_in_menu',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Menu position', 'insert-headers-and-footers' ),
							'description' => __( 'Choose the admin menu position.', 'insert-headers-and-footers' ),
							'id'          => 'menu_position',
							'default'     => '5',
							'options'     => array(
								'5'   => __( 'Below Posts (5)', 'insert-headers-and-footers' ),
								'10'  => __( 'Below Media (10)', 'insert-headers-and-footers' ),
								'20'  => __( 'Below Pages (20)', 'insert-headers-and-footers' ),
								'30'  => __( 'Below Comments (30)', 'insert-headers-and-footers' ),
								'60'  => __( 'Below First Separator (60)', 'insert-headers-and-footers' ),
								'65'  => __( 'Below Plugins (65)', 'insert-headers-and-footers' ),
								'70'  => __( 'Below Users (70)', 'insert-headers-and-footers' ),
								'75'  => __( 'Below Tools (75)', 'insert-headers-and-footers' ),
								'80'  => __( 'Below Settings (80)', 'insert-headers-and-footers' ),
								'100' => __( 'Below Second Separator (100)', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Menu Icon', 'insert-headers-and-footers' ),
							// Translators: Placeholder adds a link to the dashicons page.
							'description' => sprintf( __( 'Icon used next to the post type label in the admin menu. Use either a %1$sdashicon%2$s name or a full URL to an image file.', 'insert-headers-and-footers' ), '<a href="https://developer.wordpress.org/resource/dashicons/" target="_blank">', '</a>' ),
							'id'          => 'menu_icon',
							'placeholder' => '',
							'default'     => '',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Show in Admin Bar?', 'insert-headers-and-footers' ),
							'description' => __( 'Should this post type be visible in the admin bar?', 'insert-headers-and-footers' ),
							'id'          => 'show_in_admin_bar',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Show in Navigation Menus?', 'insert-headers-and-footers' ),
							'description' => __( 'Should this post type be available for use in menus (Appearance > Menus)?', 'insert-headers-and-footers' ),
							'id'          => 'show_in_nav_menus',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
			'query'        => array(
				'label'   => __( 'Query', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Publicly Queryable', 'insert-headers-and-footers' ),
							// Translators: Placeholders add link to wp.org docs.
							'description' => sprintf( __( 'Enable frontend requests using the query variable. %1$sSee Documentation.%2$s', 'insert-headers-and-footers' ), '<a href="https://developer.wordpress.org/reference/functions/register_post_type/#publicly_queryable" target="_blank">', '</a>' ),
							'id'          => 'publicly_queryable',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Query variable', 'insert-headers-and-footers' ),
							// Translators: Placeholders add link to wp.org docs.
							'description' => sprintf( __( 'Key used for querying posts in the frontend. %1$sSee Documentation.%2$s', 'insert-headers-and-footers' ), '<a href="https://developer.wordpress.org/reference/functions/register_post_type/#query_var" target="_blank">', '</a>' ),
							'id'          => 'query_var',
							'default'     => 'true',
							'options'     => array(
								'true'   => __( 'Default (post type key)', 'insert-headers-and-footers' ),
								'custom' => __( 'Custom variable', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Custom Query Variable', 'insert-headers-and-footers' ),
							// Translators: Placeholder adds a link to the dashicons page.
							'description' => sprintf( __( 'The custom query variable to use for this post type. %1$sSee documentation%2$s.', 'insert-headers-and-footers' ), '<a href="https://developer.wordpress.org/reference/functions/register_post_type/#query_var" target="_blank">', '</a>' ),
							'id'          => 'query_var',
							'placeholder' => '',
							'default'     => '',
						),
					),
				),
			),
			'permalinks'   => array(
				'label'   => __( 'Permalinks', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Rewrite Permalinks', 'insert-headers-and-footers' ),
							// Translators: Placeholders add link to wp.org docs.
							'description' => sprintf( __( 'Use the default permalink structure, disable permalinks for this post type or use custom options. %1$sSee Documentation.%2$s', 'insert-headers-and-footers' ), '<a href="https://developer.wordpress.org/reference/functions/register_post_type/#rewrite" target="_blank">', '</a>' ),
							'id'          => 'rewrite',
							'default'     => 'true',
							'options'     => array(
								'true'   => __( 'Default (post type key)', 'insert-headers-and-footers' ),
								'false'  => __( 'Disable permalink rewrites', 'insert-headers-and-footers' ),
								'custom' => __( 'Custom permalink structure', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'URL Slug', 'insert-headers-and-footers' ),
							'description' => __( 'The slug used for this post types base. (for example: artist in www.example.com/artist/ )', 'insert-headers-and-footers' ),
							'id'          => 'rewrite_slug',
							'placeholder' => '',
							'default'     => '',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Use URL Slug?', 'insert-headers-and-footers' ),
							'description' => __( 'Use the post type name as URL slug base?', 'insert-headers-and-footers' ),
							'id'          => 'with_front',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Use pagination?', 'insert-headers-and-footers' ),
							'description' => __( 'Allow the post type to have pagination?', 'insert-headers-and-footers' ),
							'id'          => 'pages',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Use feeds?', 'insert-headers-and-footers' ),
							'description' => __( 'Allow the post type to have feeds?', 'insert-headers-and-footers' ),
							'id'          => 'feeds',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
			'capabilities' => array(
				'label'   => __( 'Capabilities', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Capabilities', 'insert-headers-and-footers' ),
							// Translators: Placeholders add link to wp.org docs.
							'description' => sprintf( __( 'User capabilities in relation to this post type. %1$sSee Documentation.%2$s', 'insert-headers-and-footers' ), '<a href="https://developer.wordpress.org/reference/functions/register_post_type/#capability_type" target="_blank">', '</a>' ),
							'id'          => 'capabilities',
							'default'     => 'true',
							'options'     => array(
								'true'   => __( 'Base capabilities - default', 'insert-headers-and-footers' ),
								'custom' => __( 'Custom Capabilities', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Base Capablities Type', 'insert-headers-and-footers' ),
							'description' => __( 'Use base capabilities from a core post type.', 'insert-headers-and-footers' ),
							'id'          => 'capability_type',
							'default'     => 'post',
							'options'     => array(
								'post' => __( 'Posts', 'insert-headers-and-footers' ),
								'page' => __( 'Pages', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 2.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Custom Capabilities', 'insert-headers-and-footers' ),
							'content' => __( 'Use the fields below to use custom capabilities for this post type.', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Read Post', 'insert-headers-and-footers' ),
							'id'          => 'read_post',
							'default'     => 'read_post',
							'placeholder' => 'read_post',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Read Private Posts', 'insert-headers-and-footers' ),
							'id'          => 'read_private_posts',
							'default'     => 'read_private_posts',
							'placeholder' => 'read_private_posts',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Publish Posts', 'insert-headers-and-footers' ),
							'id'          => 'publish_posts',
							'default'     => 'publish_posts',
							'placeholder' => 'publish_posts',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Delete Posts', 'insert-headers-and-footers' ),
							'id'          => 'delete_post',
							'default'     => 'delete_post',
							'placeholder' => 'delete_post',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Edit Post', 'insert-headers-and-footers' ),
							'id'          => 'edit_post',
							'default'     => 'edit_post',
							'placeholder' => 'edit_post',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Edit Posts', 'insert-headers-and-footers' ),
							'id'          => 'edit_posts',
							'default'     => 'edit_posts',
							'placeholder' => 'edit_posts',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Edit Others Posts', 'insert-headers-and-footers' ),
							'id'          => 'edit_others_posts',
							'default'     => 'edit_others_posts',
							'placeholder' => 'edit_others_posts',
						),
					),
				),
			),
			'rest_api'     => array(
				'label'   => __( 'Rest API', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Show in Rest API?', 'insert-headers-and-footers' ),
							// Translators: Placeholders add link to wp.org docs.
							'description' => sprintf( __( 'Add the post type to the WordPress wp-json API. %1$sSee Documentation.%2$s', 'insert-headers-and-footers' ), '<a href="https://developer.wordpress.org/reference/functions/register_post_type/#show_in_rest" target="_blank">', '</a>' ),
							'id'          => 'show_in_rest',
							'default'     => 'false',
							'options'     => array(
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
								'false' => __( 'No - default', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Rest Base', 'insert-headers-and-footers' ),
							// Translators: Placeholders add link to wp.org docs.
							'description' => sprintf( __( 'The base slug that this post type will use in the REST API. %1$sSee Documentation.%2$s', 'insert-headers-and-footers' ), '<a href="https://developer.wordpress.org/reference/functions/register_post_type/#rest_base" target="_blank">', '</a>' ),
							'id'          => 'rest_base',
							'default'     => '',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Rest Controller Class', 'insert-headers-and-footers' ),
							// Translators: Placeholders add link to wp.org docs.
							'description' => sprintf( __( 'The name of a custom Rest Controller class instead of WP_REST_Posts_Controller. %1$sSee Documentation.%2$s', 'insert-headers-and-footers' ), '<a href="https://developer.wordpress.org/reference/functions/register_post_type/#rest_controller_class" target="_blank">', '</a>' ),
							'id'          => 'rest_controller_class',
							'default'     => '',
						),
					),
				),
			),
		);
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {
		$has_archive = $this->get_value( 'has_archive' );
		if ( 'custom' === $has_archive ) {
			$has_archive = "'{$this->get_value( 'custom_archive_slug' )}'";
		}

		$rewrite         = $this->get_value( 'rewrite' );
		$rewrite_options = '';
		if ( 'true' === $rewrite ) {
			$rewrite = '';
		} elseif ( 'custom' === $rewrite ) {
			$rewrite         = "\t\t'rewrite'               => \$rewrite_options,\n";
			$rewrite_options = "
	\$rewrite_options = array(
		'slug'       => '{$this->get_value('rewrite_slug')}',
		'with_front' => {$this->get_value( 'with_front')},
		'pages'      => {$this->get_value( 'pages')},
		'feeds'      => {$this->get_value( 'feeds')},
 	); 
			";
		} else {
			$rewrite = "\t\t'rewrite'               => $rewrite,\n";
		}

		$custom_capabilities = '';
		$capabilities        = $this->get_value( 'capabilities' );

		if ( 'custom' === $capabilities ) {
			$custom_capabilities = "
	\$capabilities = array(
		'read_post'          => '{$this->get_value( 'read_post')}',
		'read_private_posts' => '{$this->get_value( 'read_private_posts')}',
		'publish_posts'      => '{$this->get_value( 'publish_posts')}',
		'delete_post'        => '{$this->get_value( 'delete_post')}',
		'edit_post'          => '{$this->get_value( 'edit_post')}',
		'edit_posts'         => '{$this->get_value( 'edit_posts')}',
		'edit_others_posts'  => '{$this->get_value( 'edit_others_posts')}',
	);
			";
			$capabilities        = "'capabilities'          => \$capabilities,\n";
		} else {
			$capabilities = "'capability_type'       => '{$this->get_value('capability_type')}',\n";
		}

		return '// Register Custom Post Type
function ' . $this->get_value('function_name') . '() {

    $labels = array(
        \'name\'                  => _x( \'' . $this->get_value('label_count') . '\', \'Post Type General Name\', \'' . $this->get_value('text_domain') . '\' ),
        \'singular_name\'         => _x( \'' . $this->get_value('label') . '\', \'Post Type Singular Name\', \'' . $this->get_value('text_domain') . '\' ),
        \'menu_name\'             => __( \'' . $this->get_value('label_menu_name') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'name_admin_bar\'        => __( \'' . $this->get_value('label_admin_bar_name') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'archives\'              => __( \'' . $this->get_value('label_archives') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'attributes\'            => __( \'' . $this->get_value('label_attributes') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'parent_item_colon\'     => __( \'' . $this->get_value('label_parent_item') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'all_items\'             => __( \'' . $this->get_value('label_all_items') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'add_new_item\'          => __( \'' . $this->get_value('label_add_new_item') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'add_new\'               => __( \'' . $this->get_value('label_add_new') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'new_item\'              => __( \'' . $this->get_value('label_new_item') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'edit_item\'             => __( \'' . $this->get_value('label_edit_item') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'update_item\'           => __( \'' . $this->get_value('label_update_item') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'view_item\'             => __( \'' . $this->get_value('label_view_item') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'view_items\'            => __( \'' . $this->get_value('label_view_items') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'search_items\'          => __( \'' . $this->get_value('label_search_item') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'not_found\'             => __( \'' . $this->get_value('label_not_found') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'not_found_in_trash\'    => __( \'' . $this->get_value('label_not_found_in_trash') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'featured_image\'        => __( \'' . $this->get_value('label_featured_image') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'set_featured_image\'    => __( \'' . $this->get_value('label_set_featured_image') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'remove_featured_image\' => __( \'' . $this->get_value('label_remove_featured_image') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'use_featured_image\'    => __( \'' . $this->get_value('label_use_as_featured_image') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'insert_into_item\'      => __( \'' . $this->get_value('label_label_insert_into_item') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'uploaded_to_this_item\' => __( \'' . $this->get_value('label_uploaded_to_this_item') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'items_list\'            => __( \'' . $this->get_value('label_items_list') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'items_list_navigation\' => __( \'' . $this->get_value('label_items_list_navigation') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'filter_items_list\'     => __( \'' . $this->get_value('label_filter_items_list') . '\', \'' . $this->get_value('text_domain') . '\' ),
    );
    ' . $custom_capabilities . '
    ' . $rewrite_options . '
    $args = array(
        \'label\'                 => __( \'' . $this->get_value('label') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'description\'           => __( \'' . $this->get_value('description') . '\', \'' . $this->get_value('text_domain') . '\' ),
        \'labels\'                => $labels,
        \'supports\'              => ' . $this->get_array_value('supports') . ',
        \'taxonomies\'            => ' . $this->get_value_comma_separated('taxonomies') . ',
        \'hierarchical\'          => ' . $this->get_value('hierarchical') . ',
        \'public\'                => ' . $this->get_value('public') . ',
        \'show_ui\'               => ' . $this->get_value('show_ui') . ',
        \'show_in_menu\'          => ' . $this->get_value('show_in_menu') . ',
        \'menu_position\'         => ' . $this->get_value('menu_position') . ',
        \'show_in_admin_bar\'     => ' . $this->get_value('show_in_admin_bar') . ',
        \'show_in_nav_menus\'     => ' . $this->get_value('show_in_nav_menus') . ',
        \'can_export\'            => ' . $this->get_value('can_export') . ',
        \'has_archive\'           => ' . $has_archive . ',
        \'exclude_from_search\'   => ' . $this->get_value('exclude_from_search') . ',
        \'publicly_queryable\'    => ' . $this->get_value('publicly_queryable') . ',
        ' . $capabilities . $rewrite . $this->get_optional_value('menu_icon', true) . $this->get_optional_value('show_in_rest') . $this->get_optional_value('rest_base', true) . $this->get_optional_value('rest_controller_class', true) . chr(9) . ');
    register_post_type( \'' . $this->get_value('post_type') . '\', $args );

}
add_action( \'init\', \'' . $this->get_value('function_name') . '\', 0 );';
	}

}
PK     }‰U]·þ/4+  4+  =  includes/generator/class-wpcode-generator-schema-software.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Software schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Software class.
 */
class WPCode_Generator_Schema_Software extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-software';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Software Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for software applications to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'      => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Software schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'software'  => array(
				'label'   => __( 'Software Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic Software information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Software Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the software application.', 'insert-headers-and-footers' ),
							'id'              => 'software_name',
							'default'         => '',
							'placeholder'     => __( 'Enter software name...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Software Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A detailed description of the software.', 'insert-headers-and-footers' ),
							'id'              => 'software_description',
							'default'         => '',
							'placeholder'     => __( 'Describe the software...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Software URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the software page.', 'insert-headers-and-footers' ),
							'id'              => 'software_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/software',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					array(
						array(
							'type'         => 'text',
							'label'        => __( 'Software Image', 'insert-headers-and-footers' ),
							'description'  => __( 'The URL of the software screenshot or logo.', 'insert-headers-and-footers' ),
							'id'           => 'software_image',
							'default'      => '',
							'placeholder'  => 'https://example.com/software-image.jpg',
							'is_image_url' => true,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Application Category', 'insert-headers-and-footers' ),
							'description' => __( 'The category of the software (e.g., BusinessApplication, GameApplication).', 'insert-headers-and-footers' ),
							'id'          => 'application_category',
							'default'     => 'BusinessApplication',
							'placeholder' => 'BusinessApplication',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Operating System', 'insert-headers-and-footers' ),
							'description' => __( 'The operating system(s) supported (e.g., Windows, macOS, Linux).', 'insert-headers-and-footers' ),
							'id'          => 'operating_system',
							'default'     => '',
							'placeholder' => __( 'Enter operating system...', 'insert-headers-and-footers' ),
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Version', 'insert-headers-and-footers' ),
							'description' => __( 'The version number of the software.', 'insert-headers-and-footers' ),
							'id'          => 'software_version',
							'default'     => '',
							'placeholder' => '1.0.0',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Release Date', 'insert-headers-and-footers' ),
							'description' => __( 'The date when the software was released.', 'insert-headers-and-footers' ),
							'id'          => 'release_date',
							'default'     => '',
							'placeholder' => '2024-01-01',
						),
					),
				),
			),
			'publisher' => array(
				'label'   => __( 'Publisher Information', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Publisher details.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Publisher Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the software publisher.', 'insert-headers-and-footers' ),
							'id'              => 'publisher_name',
							'default'         => '',
							'placeholder'     => __( 'Enter publisher name...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_name' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Publisher URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the publisher website.', 'insert-headers-and-footers' ),
							'id'              => 'publisher_url',
							'default'         => '',
							'placeholder'     => 'https://example.com',
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_url' ),
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Publisher Logo', 'insert-headers-and-footers' ),
							'description'  => __( 'The URL of the publisher logo.', 'insert-headers-and-footers' ),
							'id'           => 'publisher_logo',
							'default'      => '',
							'placeholder'  => 'https://example.com/logo.png',
							'is_image_url' => true,
						),
					),
				),
			),
			'offers'    => array(
				'label'   => __( 'Offers', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Offer details.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Price', 'insert-headers-and-footers' ),
							'description' => __( 'The price of the software.', 'insert-headers-and-footers' ),
							'id'          => 'software_price',
							'default'     => '',
							'placeholder' => '99.99',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Currency', 'insert-headers-and-footers' ),
							'description' => __( 'The currency of the price (e.g., USD, EUR).', 'insert-headers-and-footers' ),
							'id'          => 'software_currency',
							'default'     => 'USD',
							'placeholder' => 'USD',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Availability', 'insert-headers-and-footers' ),
							'description' => __( 'The availability status of the software.', 'insert-headers-and-footers' ),
							'id'          => 'software_availability',
							'default'     => 'InStock',
							'placeholder' => 'InStock',
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context' => 'https://schema.org',
			'@type'    => 'SoftwareApplication',
		);

		// Add basic software information.
		$software_name = $this->get_value( 'software_name' );
		if ( ! empty( $software_name ) ) {
			$schema['name'] = $software_name;
		}

		$software_description = $this->get_value( 'software_description' );
		if ( ! empty( $software_description ) ) {
			$schema['description'] = $software_description;
		}

		$software_url = $this->get_value( 'software_url' );
		if ( ! empty( $software_url ) ) {
			$schema['url'] = $software_url;
		}

		// Add image.
		$software_image = $this->get_value( 'software_image' );
		if ( ! empty( $software_image ) ) {
			$schema['image'] = array(
				'@type' => 'ImageObject',
				'url'   => $software_image,
			);
		}

		// Add application category.
		$application_category = $this->get_value( 'application_category' );
		if ( ! empty( $application_category ) ) {
			$schema['applicationCategory'] = $application_category;
		}

		// Add operating system.
		$operating_system = $this->get_value( 'operating_system' );
		if ( ! empty( $operating_system ) ) {
			$schema['operatingSystem'] = $operating_system;
		}

		// Add version.
		$software_version = $this->get_value( 'software_version' );
		if ( ! empty( $software_version ) ) {
			$schema['softwareVersion'] = $software_version;
		}

		// Add release date.
		$release_date = $this->get_value( 'release_date' );
		if ( ! empty( $release_date ) ) {
			$schema['releaseDate'] = $release_date;
		}

		// Add publisher information.
		$publisher_name = $this->get_value( 'publisher_name' );
		$publisher_url  = $this->get_value( 'publisher_url' );
		$publisher_logo = $this->get_value( 'publisher_logo' );

		if ( ! empty( $publisher_name ) || ! empty( $publisher_url ) || ! empty( $publisher_logo ) ) {
			$schema['publisher'] = array(
				'@type' => 'Organization',
			);

			if ( ! empty( $publisher_name ) ) {
				$schema['publisher']['name'] = $publisher_name;
			}

			if ( ! empty( $publisher_url ) ) {
				$schema['publisher']['url'] = $publisher_url;
			}

			if ( ! empty( $publisher_logo ) ) {
				$schema['publisher']['logo'] = array(
					'@type' => 'ImageObject',
					'url'   => $publisher_logo,
				);
			}
		}

		// Add offer information.
		$software_price        = $this->get_value( 'software_price' );
		$software_currency     = $this->get_value( 'software_currency' );
		$software_availability = $this->get_value( 'software_availability' );

		if ( ! empty( $software_price ) ) {
			$schema['offers'] = array(
				'@type'         => 'Offer',
				'price'         => floatval( $software_price ),
				'priceCurrency' => $software_currency ? $software_currency : 'USD',
			);

			if ( ! empty( $software_availability ) ) {
				$schema['offers']['availability'] = 'https://schema.org/' . $software_availability;
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     €‰U]›²×aQ]  Q]  2  includes/generator/class-wpcode-generator-type.phpnu „[µü¤        <?php
/**
 * Base for different types of snippet generators.
 *
 * @package WPCode
 */

abstract class WPCode_Generator_Type {
	/**
	 * The name (slug) for this generator.
	 *
	 * @var string
	 */
	public $name;
	/**
	 * The title of the generator (translatable field).
	 *
	 * @var string
	 */
	public $title;
	/**
	 * The description of the generator.
	 * This will be displayed in the list of available generators.
	 *
	 * @var string
	 */
	public $description;
	/**
	 * Array of categories for this generator.
	 *
	 * @var array
	 */
	public $categories;
	/**
	 * Array of tabs for the generator fields.
	 *
	 * @var array;
	 */
	public $tabs;
	/**
	 * Store the form data object in an array so we pick values from it.
	 *
	 * @var array
	 */
	public $form_data;
	/**
	 * Catch here all the fields not using the default value.
	 *
	 * @var array
	 */
	public $fields_from_form = array();
	/**
	 * Location where the snippet will run after being saved.
	 *
	 * @var string
	 */
	public $location = 'everywhere';
	/**
	 * Array of tags to add to the saved snippet.
	 *
	 * @var string[]
	 */
	public $tags = array(
		'generated',
	);
	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'php';
	/**
	 * Should the generated snippet be auto-inserted?
	 *
	 * @var int
	 */
	public $auto_insert = 1;

	/**
	 * Constructor.
	 */
	public function __construct() {
		$this->set_strings();
		$this->load_tabs();
	}

	/**
	 * Replace this in the type to add translatable fields on init.
	 *
	 * @return void
	 */
	abstract protected function set_strings();

	/**
	 * Load the data for the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array();
	}

	/**
	 * Let's use a method.
	 *
	 * @return string
	 */
	public function get_title() {
		return $this->title;
	}

	/**
	 * Let's use a method.
	 *
	 * @return string
	 */
	public function get_description() {
		return $this->description;
	}

	/**
	 * Let's use a method.
	 *
	 * @return string
	 */
	public function get_location() {
		return $this->location;
	}

	/**
	 * Let's use a method.
	 *
	 * @return array
	 */
	public function get_tags() {
		return $this->tags;
	}

	/**
	 * Let's use a method.
	 *
	 * @return string
	 */
	public function get_code_type() {
		return $this->code_type;
	}

	/**
	 * Get the name.
	 *
	 * @return string
	 */
	public function get_name() {
		return $this->name;
	}

	/**
	 * Get the categories of this generator.
	 *
	 * @return array
	 */
	public function get_categories() {
		return $this->categories;
	}

	/**
	 * Takes a tab id and renders the form items.
	 *
	 * @param string $tab_id The tab id.
	 * @param array  $snippet_data Data to prefill the form with from a generated snippet.
	 *
	 * @return void
	 */
	public function render_tab( $tab_id, $snippet_data ) {
		$tab_info = $this->tabs[ $tab_id ];

		foreach ( $tab_info['columns'] as $column_fields ) {
			$repeater_groups_fields = array();
			$repeater_groups_values = array();
			?>
			<div class="wpcode-generator-column">
				<?php
				foreach ( $column_fields as $field ) {
					if ( isset( $field['id'] ) && isset( $snippet_data[ $field['id'] ] ) ) {
						if ( isset( $field['repeater'] ) ) {
							$repeater_groups_fields[ $field['repeater'] ][ $field['id'] ] = $field;
							$repeater_groups_values[ $field['repeater'] ][ $field['id'] ] = $snippet_data[ $field['id'] ];
							$field['value'] = $snippet_data[ $field['id'] ][0];
						} else {
							$field['value'] = $snippet_data[ $field['id'] ];
						}
					}
					$this->render_field( $field );
				}
				// Render repeater fields values.
				if ( ! empty( $repeater_groups_values ) ) {
					$i = 0;
					foreach ( $repeater_groups_values as $repeater_id => $repeater_values ) {
						foreach ( $repeater_values as $field_id => $field_values ) {
							foreach ( $field_values as $key => $field_value ) {
								if ( 0 === $key ) {
									// This one was already rendered.
									continue;
								}
								?>
								<div class="wpcode-repeater-group" data-id="<?php echo absint( $i ); ?>">
									<?php
									foreach ( $repeater_groups_fields[ $repeater_id ] as $repeater_field_id => $repeater_groups_field ) {
										$repeater_groups_field['value'] = $repeater_values[ $repeater_field_id ][ $key ];
										$this->render_field( $repeater_groups_field );
									}
									?>
									<button type="button" class="wpcode-button wpcode-button-secondary wpcode-remove-row" data-target="<?php echo absint( $i ); ?>"><?php esc_html_e( 'Remove Row', 'insert-headers-and-footers' ); ?></button>
								</div>
								<?php
								++$i;
							}
							continue 2;
						}
					}
				}
				?>
			</div>
			<?php
		}
	}

	/**
	 * Takes a field config from the tabs object and renders it's input.
	 *
	 * @param array $field The field config.
	 *
	 * @return void
	 */
	public function render_field( $field ) {
		// Check if the field type is set.
		if ( ! isset( $field['type'] ) ) {
			return;
		}
		$type = $field['type'];
		// Check if we have a method of rendering the field.
		if ( ! method_exists( $this, 'render_field_' . $type ) ) {
			return;
		}

		$this->add_field_wrap( $field );
		call_user_func_array( array( $this, 'render_field_' . $type ), array( $field ) );
		$this->add_field_wrap( $field, true );
	}

	/**
	 * Add field wrap.
	 *
	 * @param array $field The field config.
	 * @param bool  $end Whether to output the closing tag.
	 *
	 * @return void
	 */
	public function add_field_wrap( $field, $end = false ) {
		if ( $end ) {
			echo '</div>';

			return;
		}
		$type     = $field['type'];
		$repeater = empty( $field['repeater'] ) ? '' : 'data-repeater="' . esc_attr( $field['repeater'] ) . '"';
		$classes  = array(
			'wpcode-generator-field',
			'wpcode-generator-field-' . $type,
		);
		if ( ! empty( $field['autocomplete'] ) ) {
			$classes[] = 'wpcode-generator-field-autocomplete';
		}
		if ( ! empty( $field['is_image_url'] ) ) {
			$classes[] = 'wpcode-generator-field-image-url';
		}

		echo '<div class="' . esc_attr( implode( ' ', $classes ) ) . '" ' . $repeater . '>';// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	/**
	 * Render the description field.
	 *
	 * @param array $field The field array as defined in the tabs array.
	 *
	 * @return void
	 */
	public function render_field_description( $field ) {
		$field = wp_parse_args(
			$field,
			array(
				'label'   => '',
				'content' => '',
			)
		);

		$this->text_field_label( $field['label'] );
		if ( ! empty( $field['content'] ) ) {
			?>
			<p><?php echo wp_kses_post( $field['content'] ); ?></p>
			<?php
		}
	}

	/**
	 * Render a label for text-type fields (description, list, etc).
	 *
	 * @param string $label The label to render.
	 *
	 * @return void
	 */
	public function text_field_label( $label ) {
		if ( empty( $label ) ) {
			return;
		}
		?>
		<label><?php echo wp_kses_post( $label ); ?></label>
		<?php
	}

	/**
	 * Render a list from an array.
	 *
	 * @param array $field The field array.
	 *
	 * @return void
	 */
	public function render_field_list( $field ) {
		$field = wp_parse_args(
			$field,
			array(
				'label'   => '',
				'content' => array(),
			)
		);

		$this->text_field_label( $field['label'] );
		if ( ! empty( $field['content'] ) && is_array( $field['content'] ) ) {
			?>
			<ul>
				<?php foreach ( $field['content'] as $li ) { ?>
					<li><?php echo wp_kses_post( $li ); ?></li>
				<?php } ?>
			</ul>
			<?php
		}
	}

	/**
	 * Render a text input field.
	 *
	 * @param array $field The field array.
	 *
	 * @return void
	 */
	public function render_field_text( $field ) {
		if ( empty( $field['id'] ) ) {
			return;
		}
		if ( ! empty( $field['label'] ) ) {
			$this->input_field_label( $field['label'], $field['id'] );
		}
		$id          = $field['id'];
		$placeholder = ! empty( $field['placeholder'] ) ? $field['placeholder'] : '';
		$name        = empty( $field['name'] ) ? $id : $field['name'];
		$value       = isset( $field['value'] ) ? $field['value'] : $this->get_default_value( $field['id'] );

		// Check if this is an image URL field.
		if ( ! empty( $field['is_image_url'] ) ) {
			?>
			<div class="wpcode-image-url-field">
				<input type="text" id="<?php echo esc_attr( $id ); ?>" name="<?php echo esc_attr( $name ); ?>" placeholder="<?php echo esc_attr( $placeholder ); ?>" value="<?php echo esc_attr( $value ); ?>" class="wpcode-input-text wpcode-image-url-input"/>
				<button type="button" class="wpcode-button wpcode-button-secondary wpcode-media-library-button" data-target="<?php echo esc_attr( $id ); ?>">
					<?php esc_html_e( 'Choose Image', 'insert-headers-and-footers' ); ?>
				</button>
			</div>
			<?php
		} else {
			?>
			<input type="text" id="<?php echo esc_attr( $id ); ?>" name="<?php echo esc_attr( $name ); ?>" placeholder="<?php echo esc_attr( $placeholder ); ?>" value="<?php echo esc_attr( $value ); ?>" class="wpcode-input-text"/>
			<?php
		}
		if ( ! empty( $field['description'] ) ) {
			$this->input_field_description( $field['description'] );
		}
		if ( ! empty( $field['autocomplete'] ) ) {
			?>
			<script type="application/json" class="wpcode-field-autocomplete"><?php echo wp_json_encode( $field['autocomplete'] ); ?></script>
			<?php
		}
	}

	/**
	 * HTML field just extends the text one for now.
	 *
	 * @param array $field The field array.
	 *
	 * @return void
	 */
	public function render_field_html( $field ) {
		$this->render_field_text( $field );
	}

	/**
	 * Render a label for an input.
	 *
	 * @param string $label The label text.
	 * @param string $id The id to use for the "for" attribute of the label.
	 *
	 * @return void
	 */
	public function input_field_label( $label, $id ) {
		if ( empty( $label ) ) {
			return;
		}
		?>
		<label for="<?php echo esc_attr( $id ); ?>">
			<?php echo wp_kses_post( $label ); ?>
		</label>
		<?php
	}

	/**
	 * Render a field's description.
	 *
	 * @param string $description The field description.
	 *
	 * @return void
	 */
	public function input_field_description( $description ) {
		?>
		<p class="wpcode-field-description"><?php echo wp_kses_post( $description ); ?></p>
		<?php
	}

	/**
	 * Render a select dropdown.
	 *
	 * @param array $field The field options.
	 *
	 * @return void
	 */
	public function render_field_select( $field ) {
		if ( empty( $field['id'] ) ) {
			return;
		}
		if ( ! empty( $field['label'] ) ) {
			$this->input_field_label( $field['label'], $field['id'] );
		}
		$id   = $field['id'];
		$name = empty( $field['name'] ) ? $id : $field['name'];
		if ( ! empty( $field['options'] ) && is_array( $field['options'] ) ) {
			reset( $field['options'] );
			if ( isset( $field['value'] ) ) {
				$selected = $field['value'];
			} else {
				$selected = isset( $field['default'] ) ? $field['default'] : key( $field['options'] );
			}
			?>
			<select name="<?php echo esc_attr( $name ); ?>" id="<?php echo esc_attr( $id ); ?>">
				<?php
				foreach ( $field['options'] as $value => $label ) {
					?>
					<option value="<?php echo esc_attr( $value ); ?>" <?php selected( $selected, $value ); ?>><?php echo esc_html( $label ); ?></option>
				<?php } ?>
			</select>
			<?php
		}
		if ( ! empty( $field['description'] ) ) {
			$this->input_field_description( $field['description'] );
		}
	}

	/**
	 * Render a list of checkboxes from a field list of options.
	 *
	 * @param array $field The field settings array.
	 *
	 * @return void
	 */
	public function render_field_checkbox_list( $field ) {
		if ( empty( $field['options'] ) ) {
			return;
		}
		$checked = empty( $field['default'] ) ? array() : $field['default'];
		if ( isset( $field['value'] ) ) {
			$checked = $field['value'];
		}

		foreach ( $field['options'] as $value => $label ) {
			?>
			<div class="wpcode-checkbox-line">
				<label class="wpcode-checkbox-toggle">
					<input type="checkbox" name="<?php echo esc_attr( $field['id'] ); ?>[]" value="<?php echo esc_attr( $value ); ?>" id="<?php echo esc_attr( $field['id'] . '_' . $value ); ?>" <?php checked( in_array( $value, $checked, true ) ); ?>/>
					<span class="wpcode-checkbox-toggle-slider"></span>
				</label>
				<label for="<?php echo esc_attr( $field['id'] . '_' . $value ); ?>"><?php echo esc_html( $label ); ?></label>
			</div>
			<?php
		}
	}

	/**
	 * The repeater button used to add new repeater rows.
	 *
	 * @param array $field The field array.
	 *
	 * @return void
	 */
	public function render_field_repeater_button( $field ) {
		if ( empty( $field['id'] ) ) {
			return;
		}

		?>
		<button type="button" class="wpcode-button wpcode-button-secondary wpcode-repeater-button" data-target="<?php echo esc_attr( $field['id'] ); ?>"><?php echo esc_html( $field['button_text'] ); ?></button>
		<?php

	}

	/**
	 * Set the form data object from an array - usually the $_POST object.
	 *
	 * @param array $form_data The form data object.
	 *
	 * @return string
	 */
	public function process_form_data( $form_data ) {
		$this->form_data = $form_data;

		return $this->get_snippet_code();
	}

	/**
	 * Get the snippet code with the values added to it.
	 *
	 * @return string
	 */
	abstract public function get_snippet_code();

	/**
	 * Get a value for output in the snippet code, if the form data is set
	 * we sanitise that and return it otherwise return the default value.
	 *
	 * @param string $field_id The field id.
	 *
	 * @return string
	 */
	public function get_value( $field_id ) {
		return ! empty( $this->form_data[ $field_id ] ) ? $this->sanitize_form_data( $field_id ) : $this->get_default_value( $field_id );
	}

	/**
	 * Sanitize form value based on the field type.
	 *
	 * @param string $field_id The id of the field.
	 *
	 * @return string
	 */
	protected function sanitize_form_data( $field_id ) {
		$field_type = $this->find_field_prop( $field_id, 'type' );
		$value      = $this->form_data[ $field_id ];
		if ( 'text' === $field_type && is_array( $value ) ) {
			$field_type = 'text_array';
		}
		if ( 'textarea' === $field_type && is_array( $value ) ) {
			$field_type = 'textarea_array';
		}
		if ( 'select' === $field_type && is_array( $value ) ) {
			$field_type = 'text_array';
		}
		if ( 'html' === $field_type && is_array( $value ) ) {
			$field_type = 'html_array';
		}

		switch ( $field_type ) {
			case 'text_array':
			case 'checkbox_list':
				$sanitized = array_map( 'sanitize_text_field', wp_unslash( $value ) );
				foreach ( $sanitized as $item => $value ) {
					$sanitized[ $item ] = '' === $value ? $this->get_default_value( $field_id ) : $value;
				}
				break;
			case 'textarea_array':
				$sanitized = array_map( 'sanitize_textarea_field', wp_unslash( $value ) );
				foreach ( $sanitized as $item => $value ) {
					$sanitized[ $item ] = '' === $value ? $this->get_default_value( $field_id ) : $value;
				}
				break;
			case 'html_array':
				$sanitized = array_map( 'wp_kses_post', wp_unslash( $value ) );
				foreach ( $sanitized as $item => $value ) {
					$sanitized[ $item ] = '' === $value ? $this->get_default_value( $field_id ) : $value;
				}
				break;
			case 'textarea':
				$sanitized = sanitize_textarea_field( wp_unslash( $value ) );
				break;
			case 'html':
				$sanitized = wp_kses_post( wp_unslash( $value ) );
				break;
			case 'date':
			case 'date_and_time':
				$sanitized = sanitize_text_field( wp_unslash( $value ) );
				break;
			case 'text':
			default:
				$sanitized = sanitize_text_field( wp_unslash( $value ) );
		}

		if ( ! isset( $this->fields_from_form[ $field_id ] ) ) {
			$this->fields_from_form[ $field_id ] = $sanitized;
		}

		return $sanitized;
	}

	/**
	 * Go through the tabs config and find a field value by its id.
	 *
	 * @param string $field_id The id of the field.
	 * @param string $field_value The key of the value (e.g. 'content').
	 *
	 * @return string
	 */
	public function find_field_prop( $field_id, $field_value ) {
		$tabs = $this->get_tabs();
		foreach ( $tabs as $tab ) {
			foreach ( $tab['columns'] as $column_fields ) {
				foreach ( $column_fields as $field ) {
					if ( ! empty( $field['id'] ) && $field_id === $field['id'] ) {
						return ! isset( $field[ $field_value ] ) ? '' : $field[ $field_value ];
					}
				}
			}
		}

		return '';
	}

	/**
	 * Get the tabs for rendering.
	 *
	 * @return array
	 */
	public function get_tabs() {
		return $this->tabs;
	}

	/**
	 * Go through the tabs config and find the default value for a field.
	 *
	 * @param string $field_id The id of the field for which we want the default value.
	 *
	 * @return string
	 */
	public function get_default_value( $field_id ) {
		return $this->find_field_prop( $field_id, 'default' );
	}

	/**
	 * Get a string with values comma-separated and convert it to PHP array.
	 *
	 * @param string $field_id The id of the field to grab the data for.
	 *
	 * @return string
	 */
	public function get_value_comma_separated( $field_id ) {
		return $this->get_value_comma_separated_code( $this->get_value( $field_id ) );
	}

	/**
	 * Get a comma separated string and return an array.
	 *
	 * @param string $value The value to explode.
	 * @param bool   $quotes Whether to add quotes to the values or not.
	 *
	 * @return string
	 */
	public function get_value_comma_separated_code( $value, $quotes = true ) {
		$items = explode( ',', $value );

		return $this->array_to_code_string( $items, $quotes );
	}

	/**
	 * Takes an array of strings and returns php code for an array of strings.
	 *
	 * @param string[] $items The array to convert.
	 * @param bool     $quotes Whether to add quotes to the values or not.
	 *
	 * @return string
	 */
	public function array_to_code_string( $items, $quotes = true ) {
		if ( empty( $items ) || empty( $items[0] ) ) {
			return 'array()';
		}
		$items = array_map( 'trim', $items );
		if ( $quotes ) {
			$items = array_map( array( $this, 'add_quotes' ), $items );
		}

		return 'array( ' . implode( ', ', $items ) . ' )';
	}

	/**
	 * Callback to add quotes because we can't use closures in PHP 5.2.
	 *
	 * @param string $item String to add quotes to.
	 *
	 * @return string
	 */
	private function add_quotes( $item ) {
		return "'$item'";
	}

	/**
	 * Get value of array fields like checkboxes or select multiple.
	 *
	 * @param string $field_id The field id.
	 *
	 * @return string
	 */
	public function get_array_value( $field_id ) {
		$value = $this->get_value( $field_id );

		return $this->array_to_code_string( $value );
	}

	/**
	 * Get the fields that were updated using the form (not using the default value).
	 *
	 * @return array
	 */
	public function get_generator_data() {
		return $this->fields_from_form;
	}

	/**
	 * If the generated snippet should be auto-inserted or not (used as a shortcode).
	 *
	 * @return bool
	 */
	public function get_auto_insert() {
		return $this->auto_insert;
	}

	/**
	 * Get PHP array code for an optional parameter by field ID.
	 *
	 * @param string $field_id The field id to grab the value for.
	 * @param bool   $quotes Wrap the output value in quotes?.
	 * @param string $array_key The array key if different from the field id, otherwise the field id is used.
	 *
	 * @return string
	 * @see get_optional_value_code
	 */
	public function get_optional_value( $field_id, $quotes = false, $array_key = '' ) {
		if ( empty( $array_key ) ) {
			$array_key = $field_id;
		}
		$value           = $this->get_value( $field_id );
		$default         = $this->get_default_value( $field_id );
		$comma_separated = $this->find_field_prop( $field_id, 'comma-separated' );

		return $this->get_optional_value_code( $value, $default, $array_key, $quotes, $comma_separated );
	}

	/**
	 * Get PHP array code for an optional parameter.
	 * If the default value is used nothing will be output.
	 * It will also attempt to align all the values properly.
	 *
	 * @param string $value The current value to compare to the default.
	 * @param string $default The default value.
	 * @param string $array_key The array key to use if the value will be output.
	 * @param bool   $quotes Whether to use quotes for the value output.
	 * @param bool   $comma_separated If the value is actually a comma-separated list.
	 *
	 * @return string
	 */
	public function get_optional_value_code( $value, $default, $array_key, $quotes = false, $comma_separated = false ) {
		if ( $value === $default ) {
			return '';
		}
		if ( $comma_separated ) {
			$value = $this->get_value_comma_separated_code( $value, $quotes );
		} elseif ( $quotes ) {
			$value = "'$value'";
		}
		$indent = 22 - strlen( $array_key );
		$indent = str_repeat( ' ', $indent );

		return "\t\t'$array_key'$indent=> $value,\n";
	}

	/**
	 * Output a simple spacer used to align repeater rows.
	 *
	 * @return void
	 */
	public function render_field_spacer() {
		?>
		<div class="wpcode-column-spacer"></div>
		<?php
	}

	/**
	 * Render a textarea field, optionally a code editor.
	 *
	 * @param array $field The field settings.
	 *
	 * @return void
	 */
	public function render_field_textarea( $field ) {
		if ( empty( $field['id'] ) ) {
			return;
		}
		if ( ! empty( $field['label'] ) ) {
			$this->input_field_label( $field['label'], $field['id'] );
		}
		$id      = $field['id'];
		$name    = empty( $field['name'] ) ? $id : $field['name'];
		$classes = array(
			'wpcode-input-textarea',
		);
		if ( ! empty( $field['code'] ) ) {
			$classes[] = 'wpcode-generator-code';
		}
		$value = isset( $field['value'] ) ? $field['value'] : '';
		?>
		<textarea name="<?php echo esc_attr( $name ); ?>" id="<?php echo esc_attr( $id ); ?>" class="<?php echo esc_attr( implode( ' ', $classes ) ); ?>"><?php echo esc_html( $value ); ?></textarea>
		<?php
		if ( ! empty( $field['description'] ) ) {
			$this->input_field_description( $field['description'] );
		}
	}

	/**
	 * Sanitize a value to be used as a PHP function name.
	 *
	 * @param string $value The name you want sanitized.
	 *
	 * @return string
	 */
	public function sanitize_function_name( $value ) {
		return str_replace( '-', '_', sanitize_title_with_dashes( $value ) );
	}

	/**
	 * Render a date input field (date only).
	 *
	 * @param array $field The field array.
	 *
	 * @return void
	 */
	public function render_field_date( $field ) {
		if ( empty( $field['id'] ) ) {
			return;
		}
		if ( ! empty( $field['label'] ) ) {
			$this->input_field_label( $field['label'], $field['id'] );
		}
		$id          = $field['id'];
		$placeholder = ! empty( $field['placeholder'] ) ? $field['placeholder'] : '';
		$name        = empty( $field['name'] ) ? $id : $field['name'];
		$value       = isset( $field['value'] ) ? $field['value'] : $this->get_default_value( $field['id'] );
		?>
		<input type="date" id="<?php echo esc_attr( $id ); ?>" name="<?php echo esc_attr( $name ); ?>" placeholder="<?php echo esc_attr( $placeholder ); ?>" value="<?php echo esc_attr( $value ); ?>" class="wpcode-input-date"/>
		<?php
		if ( ! empty( $field['description'] ) ) {
			$this->input_field_description( $field['description'] );
		}
	}

	/**
	 * Render a date and time input field.
	 *
	 * @param array $field The field array.
	 *
	 * @return void
	 */
	public function render_field_date_and_time( $field ) {
		if ( empty( $field['id'] ) ) {
			return;
		}
		if ( ! empty( $field['label'] ) ) {
			$this->input_field_label( $field['label'], $field['id'] );
		}
		$id          = $field['id'];
		$placeholder = ! empty( $field['placeholder'] ) ? $field['placeholder'] : '';
		$name        = empty( $field['name'] ) ? $id : $field['name'];
		$value       = isset( $field['value'] ) ? $field['value'] : $this->get_default_value( $field['id'] );
		?>
		<input type="datetime-local" id="<?php echo esc_attr( $id ); ?>" name="<?php echo esc_attr( $name ); ?>" placeholder="<?php echo esc_attr( $placeholder ); ?>" value="<?php echo esc_attr( $value ); ?>" class="wpcode-input-date"/>
		<?php
		if ( ! empty( $field['description'] ) ) {
			$this->input_field_description( $field['description'] );
		}
	}
}
PK     €‰U]b&AxÃ!  Ã!  7  includes/generator/class-wpcode-generator-admin-bar.phpnu „[µü¤        <?php
/**
 * Generate a snippet to add a custom menu to the admin bar.
 *
 * @package WPCode
 */

/**
 * The Post Status generator.
 */
class WPCode_Generator_Admin_Bar extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'admin-bar';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'admin',
	);

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Admin Bar Menu', 'insert-headers-and-footers' );
		$this->description = __( 'Add a custom admin bar menu with links or content.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'    => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'Generate a snippet to add a custom menu to the admin bar by filling in a simple form.', 'insert-headers-and-footers' ),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms sections using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => __( 'You could add a new admin bar menu for links you use often, a list of posts, a site you often visit when in the admin, etc.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'general' => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Function name', 'insert-headers-and-footers' ),
							'description' => __( 'Make this unique to avoid conflicts with other snippets', 'insert-headers-and-footers' ),
							'id'          => 'function_name',
							'placeholder' => 'add_admin_bar_item',
							'default'     => 'add_admin_bar_item' . time(),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Position', 'insert-headers-and-footers' ),
							'description' => __( 'Select where you want the menu item to be displayed on the admin bar.', 'insert-headers-and-footers' ),
							'id'          => 'priority',
							'default'     => '1100',
							'options'     => array(
								'1100' => __( 'Last item on the left', 'insert-headers-and-footers' ),
								'30'   => __( 'Before Site Name', 'insert-headers-and-footers' ),
								'50'   => __( 'After Site Name', 'insert-headers-and-footers' ),
								'70'   => __( 'Before "New" Button', 'insert-headers-and-footers' ),
								'80'   => __( 'After "New" Button', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
			'menu'    => array(
				'label'   => __( 'Menu Structure', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Menu ID', 'insert-headers-and-footers' ),
							'description' => __( 'Unique menu id for the admin bar menu.', 'insert-headers-and-footers' ),
							'id'          => 'menu_id',
							'placeholder' => 'custom_menu_id',
							'default'     => 'custom_menu_id',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Menu Title', 'insert-headers-and-footers' ),
							'description' => __( 'Text or HTML that will show up in the admin bar top-level item. Use HTML if you want to display an image.', 'insert-headers-and-footers' ),
							'id'          => 'menu_title',
							'placeholder' => '',
							'default'     => '',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Menu item link', 'insert-headers-and-footers' ),
							'description' => __( 'If left empty, the top level menu item will not be a link, just text.', 'insert-headers-and-footers' ),
							'id'          => 'menu_href',
							'placeholder' => '',
							'default'     => '',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Menu item target', 'insert-headers-and-footers' ),
							'description' => __( 'The menu item is a link use this field to set the target attribute. Use "_blank" to open the link in a new tab.', 'insert-headers-and-footers' ),
							'id'          => 'menu_target',
							'placeholder' => '',
							'default'     => '',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Submenu Item Title', 'insert-headers-and-footers' ),
							'description' => __( 'Text or HTML for the submenu item.', 'insert-headers-and-footers' ),
							'id'          => 'submenu_title',
							'name'        => 'submenu_title[]',
							'placeholder' => '',
							'repeater'    => 'submenu',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Submenu item link', 'insert-headers-and-footers' ),
							'description' => __( 'If left empty, this menu item will not be a link, just text.', 'insert-headers-and-footers' ),
							'id'          => 'submenu_href',
							'name'        => 'submenu_href[]',
							'placeholder' => '',
							'repeater'    => 'submenu',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Submenu item target attribute', 'insert-headers-and-footers' ),
							'description' => __( 'If the menu item is a link use this for the target attribute. Use "_blank" to open in a new tab.', 'insert-headers-and-footers' ),
							'id'          => 'submenu_target',
							'name'        => 'submenu_target[]',
							'placeholder' => '',
							'repeater'    => 'submenu',
						),
					),
					// Column 3.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Add more submenu items', 'insert-headers-and-footers' ),
							'content' => __( 'Use the "Add submenu item" button below to add multiple submenu items.', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'repeater_button',
							'button_text' => __( 'Add submenu item', 'insert-headers-and-footers' ),
							'id'          => 'submenu', // Repeater to repeat when clicked.
						),
					),
				),
			),
		);
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {

		$submenu_titles  = $this->get_value( 'submenu_title' );
		$submenu_hrefs   = $this->get_value( 'submenu_href' );
		$submenu_targets = $this->get_value( 'submenu_target' );
		$submenus_code   = '';

		if ( ! empty( $submenu_titles ) ) {
			foreach ( $submenu_titles as $key => $submenu_title ) {
				if ( empty( $submenu_title ) ) {
					continue;
				}
				$submenu_href   = empty( $submenu_hrefs[ $key ] ) ? '' : $submenu_hrefs[ $key ];
				$submenu_target = empty( $submenu_targets[ $key ] ) ? '' : $submenu_targets[ $key ];

				$submenus_code .= "
	\$admin_bar->add_menu(
		array(
			'id'     => 'submenu_{$this->get_value( 'menu_id' )}_$key',
			'parent' => '{$this->get_value( 'menu_id' )}',
			'title'  => '$submenu_title',
			'href'   => '$submenu_href',
			'meta'   => array(
				'target' => '$submenu_target',
			),
 		)
	);
			";
			}
		}

		return '// Add a custom menu item.

function ' . $this->get_value( 'function_name' ) . '( $admin_bar ) {
	$admin_bar->add_menu(
		array(
			\'id\'     => \'' . $this->get_value( 'menu_id' ) . '\',
			\'title\'  => \'' . $this->get_value( 'menu_title' ) . '\',
			\'href\'   => \'' . $this->get_value( 'menu_href' ) . '\',
			\'meta\'   => array(
				\'target\' => \'' . $this->get_value( 'menu_target' ) . '\',
			),
		)
	);
	' . $submenus_code . '
}

add_action( \'admin_bar_menu\', \'' . $this->get_value( 'function_name' ) . '\', ' . $this->get_value( 'priority' ) . ' );
';
	}

}
PK     €‰U]³®‚ñ&  ñ&  8  includes/generator/class-wpcode-generator-schema-car.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Car schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Car class.
 */
class WPCode_Generator_Schema_Car extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-car';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Car Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for cars and vehicles to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'    => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Car schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'vehicle' => array(
				'label'   => __( 'Vehicle Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic vehicle information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Vehicle Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name or model of the vehicle.', 'insert-headers-and-footers' ),
							'id'              => 'vehicle_name',
							'default'         => '',
							'placeholder'     => __( 'Toyota Camry', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Vehicle Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A brief description of the vehicle.', 'insert-headers-and-footers' ),
							'id'              => 'vehicle_description',
							'default'         => '',
							'placeholder'     => __( 'Description of the vehicle...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Vehicle URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL where the vehicle can be viewed or purchased.', 'insert-headers-and-footers' ),
							'id'              => 'vehicle_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/vehicle',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Brand', 'insert-headers-and-footers' ),
							'description' => __( 'The brand or manufacturer of the vehicle.', 'insert-headers-and-footers' ),
							'id'          => 'vehicle_brand',
							'default'     => '',
							'placeholder' => 'Toyota',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Vehicle Identification Number (VIN)', 'insert-headers-and-footers' ),
							'description' => __( 'The VIN of the vehicle.', 'insert-headers-and-footers' ),
							'id'          => 'vehicle_vin',
							'default'     => '',
							'placeholder' => '1HGCM82633A123456',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Model Year', 'insert-headers-and-footers' ),
							'description' => __( 'The model year of the vehicle.', 'insert-headers-and-footers' ),
							'id'          => 'vehicle_model_year',
							'default'     => '',
							'placeholder' => '2023',
						),
					),
					// Column 2 - Additional details.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Fuel Type', 'insert-headers-and-footers' ),
							'description' => __( 'The type of fuel used by the vehicle.', 'insert-headers-and-footers' ),
							'id'          => 'vehicle_fuel_type',
							'default'     => '',
							'placeholder' => 'Gasoline',
						),
						array(
							'type'         => 'text',
							'label'        => __( 'Vehicle Image', 'insert-headers-and-footers' ),
							'description'  => __( 'URL of the vehicle\'s image.', 'insert-headers-and-footers' ),
							'id'           => 'vehicle_image',
							'default'      => '',
							'placeholder'  => 'https://example.com/vehicle-image.jpg',
							'smart_tags'   => false,
							'is_image_url' => true,
						),
					),
				),
			),
			'seller'  => array(
				'label'   => __( 'Seller', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Seller details.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Seller Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the seller or dealership.', 'insert-headers-and-footers' ),
							'id'              => 'seller_name',
							'default'         => '',
							'placeholder'     => __( 'ABC Motors', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'first_name' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Seller URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the seller\'s website.', 'insert-headers-and-footers' ),
							'id'              => 'seller_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/dealership',
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_url' ),
						),
					),
				),
			),
			'offer'   => array(
				'label'   => __( 'Offer', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Offer details.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Price', 'insert-headers-and-footers' ),
							'description' => __( 'The price of the vehicle.', 'insert-headers-and-footers' ),
							'id'          => 'offer_price',
							'default'     => '',
							'placeholder' => '25000',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Price Currency', 'insert-headers-and-footers' ),
							'description' => __( 'The currency of the price (e.g., USD, EUR).', 'insert-headers-and-footers' ),
							'id'          => 'offer_price_currency',
							'default'     => 'USD',
							'placeholder' => 'USD',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Availability', 'insert-headers-and-footers' ),
							'description' => __( 'The availability status of the vehicle.', 'insert-headers-and-footers' ),
							'id'          => 'offer_availability',
							'default'     => 'InStock',
							'options'     => array(
								'InStock'      => __( 'In Stock', 'insert-headers-and-footers' ),
								'OutOfStock'   => __( 'Out of Stock', 'insert-headers-and-footers' ),
								'PreOrder'     => __( 'Pre-Order', 'insert-headers-and-footers' ),
								'Discontinued' => __( 'Discontinued', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context'    => 'https://schema.org',
			'@type'       => 'Vehicle',
			'name'        => $this->get_value( 'vehicle_name' ),
			'description' => $this->get_value( 'vehicle_description' ),
		);

		// Add URL if set.
		$url = $this->get_value( 'vehicle_url' );
		if ( ! empty( $url ) ) {
			$schema['url'] = $url;
		}

		// Add VIN if set.
		$vin = $this->get_value( 'vehicle_vin' );
		if ( ! empty( $vin ) ) {
			$schema['vehicleIdentificationNumber'] = $vin;
		}

		// Add brand if set.
		$brand = $this->get_value( 'vehicle_brand' );
		if ( ! empty( $brand ) ) {
			$schema['brand'] = array(
				'@type' => 'Brand',
				'name'  => $brand,
			);
		}

		// Add model year if set.
		$model_year = $this->get_value( 'vehicle_model_year' );
		if ( ! empty( $model_year ) ) {
			$schema['modelDate'] = $model_year;
		}

		// Add fuel type if set.
		$fuel_type = $this->get_value( 'vehicle_fuel_type' );
		if ( ! empty( $fuel_type ) ) {
			$schema['fuelType'] = $fuel_type;
		}

		// Add image if set.
		$image = $this->get_value( 'vehicle_image' );
		if ( ! empty( $image ) ) {
			$schema['image'] = array(
				'@type' => 'ImageObject',
				'url'   => $image,
			);
		}

		// Add seller details if set.
		$seller_name = $this->get_value( 'seller_name' );
		if ( ! empty( $seller_name ) ) {
			$schema['seller'] = array(
				'@type' => 'Organization',
				'name'  => $seller_name,
			);

			$seller_url = $this->get_value( 'seller_url' );
			if ( ! empty( $seller_url ) ) {
				$schema['seller']['url'] = $seller_url;
			}
		}

		// Add offer details if set.
		$price = $this->get_value( 'offer_price' );
		if ( ! empty( $price ) ) {
			$schema['offers'] = array(
				'@type'         => 'Offer',
				'price'         => $price,
				'priceCurrency' => $this->get_value( 'offer_price_currency' ),
				'availability'  => $this->get_value( 'offer_availability' ),
			);

			// Add seller to offer if available.
			if ( ! empty( $seller_name ) ) {
				$schema['offers']['seller'] = $schema['seller'];
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     €‰U]›ÞáP•  •  <  includes/generator/class-wpcode-generator-schema-dataset.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Dataset schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Dataset class.
 */
class WPCode_Generator_Schema_Dataset extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-dataset';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Dataset Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for datasets to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'         => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Dataset schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'dataset'      => array(
				'label'   => __( 'Dataset Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic dataset information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Dataset Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the dataset.', 'insert-headers-and-footers' ),
							'id'              => 'dataset_name',
							'default'         => '',
							'placeholder'     => __( 'Global Climate Data 2023', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Dataset Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A brief description of the dataset.', 'insert-headers-and-footers' ),
							'id'              => 'dataset_description',
							'default'         => '',
							'placeholder'     => __( 'Description of the dataset...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'custom_field' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Dataset URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL where the dataset can be accessed.', 'insert-headers-and-footers' ),
							'id'              => 'dataset_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/dataset',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Publisher Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The name of the dataset publisher.', 'insert-headers-and-footers' ),
							'id'              => 'publisher_name',
							'default'         => '',
							'placeholder'     => 'Data Organization',
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_name' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Publisher URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the publisher\'s website.', 'insert-headers-and-footers' ),
							'id'              => 'publisher_url',
							'default'         => '',
							'placeholder'     => 'https://example.com',
							'smart_tags'      => true,
							'predefined_tags' => array( 'author_url' ),
						),
					),
					// Column 2 - Additional details.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Version', 'insert-headers-and-footers' ),
							'description' => __( 'The version of the dataset.', 'insert-headers-and-footers' ),
							'id'          => 'version',
							'default'     => '',
							'placeholder' => '1.0.0',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'License', 'insert-headers-and-footers' ),
							'description' => __( 'The license under which the dataset is distributed.', 'insert-headers-and-footers' ),
							'id'          => 'license',
							'default'     => '',
							'placeholder' => 'https://creativecommons.org/licenses/by/4.0/',
						),
					),
				),
			),
			'distribution' => array(
				'label'   => __( 'Distribution', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Distribution details.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Distribution URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL where the dataset can be downloaded.', 'insert-headers-and-footers' ),
							'id'              => 'distribution_url',
							'default'         => '',
							'placeholder'     => 'https://example.com/dataset/download',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'File Format', 'insert-headers-and-footers' ),
							'description' => __( 'The format of the dataset file (e.g., CSV, JSON, XML).', 'insert-headers-and-footers' ),
							'id'          => 'file_format',
							'default'     => '',
							'placeholder' => 'CSV',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'File Size', 'insert-headers-and-footers' ),
							'description' => __( 'The size of the dataset file.', 'insert-headers-and-footers' ),
							'id'          => 'file_size',
							'default'     => '',
							'placeholder' => '10MB',
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context'    => 'https://schema.org',
			'@type'       => 'Dataset',
			'name'        => $this->get_value( 'dataset_name' ),
			'description' => $this->get_value( 'dataset_description' ),
		);

		// Add URL if set.
		$url = $this->get_value( 'dataset_url' );
		if ( ! empty( $url ) ) {
			$schema['url'] = $url;
		}

		// Add version if set.
		$version = $this->get_value( 'version' );
		if ( ! empty( $version ) ) {
			$schema['version'] = $version;
		}

		// Add publisher details if set.
		$publisher_name = $this->get_value( 'publisher_name' );
		if ( ! empty( $publisher_name ) ) {
			$schema['publisher'] = array(
				'@type' => 'Organization',
				'name'  => $publisher_name,
			);

			$publisher_url = $this->get_value( 'publisher_url' );
			if ( ! empty( $publisher_url ) ) {
				$schema['publisher']['url'] = $publisher_url;
			}
		}

		// Add license if set.
		$license = $this->get_value( 'license' );
		if ( ! empty( $license ) ) {
			$schema['license'] = $license;
		}

		// Add distribution details if set.
		$distribution_url = $this->get_value( 'distribution_url' );
		if ( ! empty( $distribution_url ) ) {
			$schema['distribution'] = array(
				'@type' => 'DataDownload',
				'url'   => $distribution_url,
			);

			$file_format = $this->get_value( 'file_format' );
			if ( ! empty( $file_format ) ) {
				$schema['distribution']['encodingFormat'] = $file_format;
			}

			$file_size = $this->get_value( 'file_size' );
			if ( ! empty( $file_size ) ) {
				$schema['distribution']['contentSize'] = $file_size;
			}
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     €‰U]�…63u+  u+  4  includes/generator/class-wpcode-generator-script.phpnu „[µü¤        <?php
/**
 * Generate a snippet to enqueue scripts.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Script class.
 */
class WPCode_Generator_Script extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'enqueue_script';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'core',
	);

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Register Scripts', 'insert-headers-and-footers' );
		$this->description = __( 'Generate a snippet to load JavaScript scripts using wp_register_script.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'    => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'Using this generator you can create a WordPress function to register and enqueue scripts.', 'insert-headers-and-footers' ),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => sprintf(
							// Translators: the placeholders add a link to getboostrap.com.
								__( 'You can use this to load external scripts or even scripts from a theme or plugin. For example, you could load %1$sbootstrap%2$s from a cdn.', 'insert-headers-and-footers' ),
								'<a href="https://getbootstrap.com/" target="_blank">',
								'</a>'
							),
						),
					),
				),
			),
			'general' => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Function name', 'insert-headers-and-footers' ),
							'description' => __( 'Make this unique to avoid conflicts with other snippets', 'insert-headers-and-footers' ),
							'id'          => 'function_name',
							'placeholder' => 'add_custom_script',
							'default'     => 'add_custom_script' . time(),
							// This makes it unique for people who don't want to customize.
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Action (hook)', 'insert-headers-and-footers' ),
							'description' => sprintf(
							// Translators: placeholders add links to documentation on wordpress.org.
								__( 'Hook used to add the scripts: %1$sfrontend%2$s, %3$sadmin%4$s, %5$slogin%6$s or %7$sembed%8$s.', 'insert-headers-and-footers' ),
								'<a href="https://developer.wordpress.org/reference/hooks/wp_enqueue_scripts/" target="_blank">',
								'</a>',
								'<a href="https://developer.wordpress.org/reference/hooks/admin_enqueue_scripts/" target="_blank">',
								'</a>',
								'<a href="https://developer.wordpress.org/reference/hooks/login_enqueue_scripts/" target="_blank">',
								'</a>',
								'<a href="https://developer.wordpress.org/reference/hooks/enqueue_embed_scripts/" target="_blank">',
								'</a>'
							),
							'id'          => 'hook',
							'default'     => 'wp_enqueue_scripts',
							'options'     => array(
								// Translators: placeholder adds the hook name.
								'wp_enqueue_scripts'    => sprintf( __( 'Frontend (%s)', 'insert-headers-and-footers' ), 'wp_enqueue_scripts' ),
								// Translators: placeholder adds the hook name.
								'admin_enqueue_scripts' => sprintf( __( 'Admin (%s)', 'insert-headers-and-footers' ), 'admin_enqueue_scripts' ),
								// Translators: placeholder adds the hook name.
								'login_enqueue_scripts' => sprintf( __( 'Login (%s)', 'insert-headers-and-footers' ), 'login_enqueue_scripts' ),
								// Translators: placeholder adds the hook name.
								'enqueue_embed_scripts' => sprintf( __( 'Embed (%s)', 'insert-headers-and-footers' ), 'enqueue_embed_scripts' ),
							),
						),
					),
				),
			),
			'scripts' => array(
				'label'   => __( 'Scripts', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Script name', 'insert-headers-and-footers' ),
							'description' => __( 'This will be used as an identifier in the code, should be lowercase with no spaces.', 'insert-headers-and-footers' ),
							'id'          => 'script_name',
							'name'        => 'script_name[]',
							'default'     => '',
							'placeholder' => '',
							'repeater'    => 'script',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Script URL', 'insert-headers-and-footers' ),
							'description' => __( 'The full URL for the script e.g. https://cdn.jsdelivr.net/npm/bootstrap@5.2.0-beta1/dist/js/bootstrap.bundle.min.js.', 'insert-headers-and-footers' ),
							'id'          => 'script_url',
							'name'        => 'script_url[]',
							'default'     => '',
							'placeholder' => '',
							'repeater'    => 'script',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Dependencies', 'insert-headers-and-footers' ),
							'description' => __( 'Comma-separated list of scripts required for this script to load, e.g. jquery', 'insert-headers-and-footers' ),
							'id'          => 'script_dependencies',
							'name'        => 'script_dependencies[]',
							'default'     => '',
							'placeholder' => '',
							'repeater'    => 'script',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Script Version', 'insert-headers-and-footers' ),
							'description' => __( 'The script version.', 'insert-headers-and-footers' ),
							'id'          => 'script_version',
							'name'        => 'script_version[]',
							'default'     => '1.0.0',
							'placeholder' => '',
							'repeater'    => 'script',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Header or Footer?', 'insert-headers-and-footers' ),
							'description' => __( 'Load the script in the page head or in the footer.', 'insert-headers-and-footers' ),
							'id'          => 'script_location',
							'name'        => 'script_location[]',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Footer', 'insert-headers-and-footers' ),
								'false' => __( 'Header', 'insert-headers-and-footers' ),
							),
							'repeater'    => 'script',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Deregister script?', 'insert-headers-and-footers' ),
							'description' => sprintf(
							// Translators: Placeholders for wp.org docs link.
								__( 'Should the script be %1$sderegistered%2$s first? (for example, if you are replacing an existing script).', 'insert-headers-and-footers' ),
								'<a href="https://developer.wordpress.org/reference/functions/wp_deregister_script/" target="_blank">',
								'</a>'
							),
							'id'          => 'script_deregister',
							'name'        => 'script_deregister[]',
							'default'     => 'false',
							'options'     => array(
								'false' => __( 'No', 'insert-headers-and-footers' ),
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
							),
							'repeater'    => 'script',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Enqueue script?', 'insert-headers-and-footers' ),
							'description' => sprintf(
							// Translators: Placeholders for wp.org docs link.
								__( 'Should the script be %1$senqueued%2$s or just registered? (select "No" only if you intend enqueueing it later.', 'insert-headers-and-footers' ),
								'<a href="https://developer.wordpress.org/reference/functions/wp_enqueue_script/" target="_blank">',
								'</a>'
							),
							'id'          => 'script_enqueue',
							'name'        => 'script_enqueue[]',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
							'repeater'    => 'script',
						),
						array(
							'type' => 'spacer',
						),
					),
					// Column 3.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Add more scripts', 'insert-headers-and-footers' ),
							'content' => __( 'Use the "Add script" button below to add multiple scripts in this snippet.', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'repeater_button',
							'button_text' => __( 'Add script', 'insert-headers-and-footers' ),
							'id'          => 'script', // Repeater to repeat when clicked.
						),
					),
				),
			),
		);
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {

		$scripts            = $this->get_value( 'script_name' );
		$scripts_urls       = $this->get_value( 'script_url' );
		$scripts_deps       = $this->get_value( 'script_dependencies' );
		$scripts_versions   = $this->get_value( 'script_version' );
		$scripts_locations  = $this->get_value( 'script_location' );
		$scripts_deregister = $this->get_value( 'script_deregister' );
		$scripts_enqueue    = $this->get_value( 'script_enqueue' );
		$code               = '';

		if ( ! empty( $scripts ) ) {
			foreach ( $scripts as $key => $script_name ) {
				if ( empty( $script_name ) ) {
					continue;
				}
				$script_name  = sanitize_title( $script_name );
				$dependencies = explode( ',', $scripts_deps[ $key ] );
				$deregister   = 'true' === $scripts_deregister[ $key ] ? "wp_deregister_script( '$script_name' );" : '';
				$enqueue      = 'true' === $scripts_enqueue[ $key ] ? "wp_enqueue_script( '$script_name' );" : '';

				$code .= "
			$deregister
			wp_register_script( '$script_name', '$scripts_urls[$key]', {$this->array_to_code_string($dependencies)}, '$scripts_versions[$key]', $scripts_locations[$key] );
			$enqueue
			";
			}
		}

		return '// Add custom scripts
function ' . $this->get_value( 'function_name' ) . '() {
' . $code . '
}
add_action( \'' . $this->get_value( 'hook' ) . '\', \'' . $this->get_value( 'function_name' ) . '\' );';
	}

}
PK     €‰U]ÆÆ
•e  •e  3  includes/generator/class-wpcode-generator-query.phpnu „[µü¤        <?php
/**
 * Generate a snippet using WP_Query
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Query class.
 */
class WPCode_Generator_Query extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'query';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'query',
	);

	/**
	 * This snippet should not be auto-inserted by default.
	 *
	 * @var bool
	 */
	public $auto_insert = false;

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'WP_Query', 'insert-headers-and-footers' );
		$this->description = __( 'Generate a snippet using WP_Query to load posts from your website.', 'insert-headers-and-footers' );
	}

	/**
	 * Get a list of available post types for autocomplete.
	 *
	 * @return array
	 */
	public function get_autocomplete_post_types() {
		return array_keys( get_post_types() );
	}

	/**
	 * Get a list of available post statuses for autocomplete.
	 *
	 * @return array
	 */
	public function get_autocomplete_post_statuses() {
		return array_keys( get_post_statuses() );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'       => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => sprintf(
							// Translators: Placeholders add links to the wordpress.org references.
								__( 'This generator makes it easy for you to create custom queries using %1$sWP_Query%2$s which you can then extend to display posts or similar.', 'insert-headers-and-footers' ),
								'<a href="https://developer.wordpress.org/reference/classes/wp_query/" target="_blank">',
								'</a>'
							),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => __( 'You can use this generator to get quickly started with a query for all the posts of an author and display them using the shortcode functionality of WPCode or automatically displaying the posts using the auto-insert option.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'general'    => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Query variable name', 'insert-headers-and-footers' ),
							'description' => __( 'If you want to use something more specific. The leading $ will be automatically added.', 'insert-headers-and-footers' ),
							'id'          => 'var_name',
							'placeholder' => '$query',
							'default'     => 'query',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Include loop', 'insert-headers-and-footers' ),
							'description' => __( 'Select yes if you want to include an empty loop of the results that you can fill in for output.', 'insert-headers-and-footers' ),
							'id'          => 'loop',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
			'post'       => array(
				'label'   => __( 'IDs & Parents', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Post ID(s)', 'insert-headers-and-footers' ),
							'description'     => __( 'Query a specific post ID or comma-separated list of ids. Cannot be combined with "Post ID not in" below.', 'insert-headers-and-footers' ),
							'id'              => 'post__in',
							'default'         => '',
							'comma-separated' => true,
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Post ID not in', 'insert-headers-and-footers' ),
							'description'     => __( 'Post ids to exclude from this query. Cannot be combined with "Post ID(s)" above.', 'insert-headers-and-footers' ),
							'id'              => 'post__not_in',
							'default'         => '',
							'comma-separated' => true,
						),
					),
					// Column 2.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Post parent ID(s)', 'insert-headers-and-footers' ),
							'description'     => __( 'Comma-separated list of post parent ids if the post type is hierarchical (like pages).', 'insert-headers-and-footers' ),
							'id'              => 'post_parent__in',
							'default'         => '',
							'comma-separated' => true,
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Post parent not in', 'insert-headers-and-footers' ),
							'description'     => __( 'Comma-separated list of post parent ids to exclude.', 'insert-headers-and-footers' ),
							'id'              => 'post_parent__not_in',
							'default'         => '',
							'comma-separated' => true,
						),
					),
					// Column 3.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Post slugs', 'insert-headers-and-footers' ),
							'description'     => __( 'Comma-separated list of post slugs to query by.', 'insert-headers-and-footers' ),
							'id'              => 'post_name__in',
							'default'         => '',
							'comma-separated' => true,
						),
					),
				),
			),
			'status'     => array(
				'label'   => __( 'Type & Status', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'         => 'text',
							'label'        => __( 'Post type', 'insert-headers-and-footers' ),
							'description'  => __( 'Post type to query by, start typing to get suggestions.', 'insert-headers-and-footers' ),
							'id'           => 'post_type',
							'default'      => 'post',
							'autocomplete' => $this->get_autocomplete_post_types(),
						),
					),
					// Column 2.
					array(
						array(
							'type'         => 'text',
							'label'        => __( 'Post status', 'insert-headers-and-footers' ),
							'description'  => __( 'Post status to query by.', 'insert-headers-and-footers' ),
							'id'           => 'post_status',
							'default'      => 'publish',
							'autocomplete' => $this->get_autocomplete_post_statuses(),
						),
					),
				),
			),
			'author'     => array(
				'label'   => __( 'Author', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Author ID(s)', 'insert-headers-and-footers' ),
							'description' => __( 'Author ID or comma-separated list of ids.', 'insert-headers-and-footers' ),
							'id'          => 'author',
							'default'     => '',
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Author not in', 'insert-headers-and-footers' ),
							'description'     => __( 'Comma-separated list of author ids to exclude from the query.', 'insert-headers-and-footers' ),
							'id'              => 'author__not_in',
							'default'         => '',
							'comma-separated' => true,
						),
					),
					// Column 2.
					array(

						array(
							'type'        => 'text',
							'label'       => __( 'Author name', 'insert-headers-and-footers' ),
							'description' => __( 'Use the "user_nicename" parameter to query by author.', 'insert-headers-and-footers' ),
							'id'          => 'author_name',
							'default'     => '',
						),
					),
				),
			),
			'search'     => array(
				'label'   => __( 'Search', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Search term', 'insert-headers-and-footers' ),
							'description' => __( 'Search for posts by this search term.', 'insert-headers-and-footers' ),
							'id'          => 's',
							'default'     => '',
						),
					),
				),
			),
			'order'      => array(
				'label'   => __( 'Order', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'select',
							'label'   => __( 'Results Order', 'insert-headers-and-footers' ),
							'id'      => 'order',
							'default' => 'DESC',
							'options' => array(
								'DESC' => __( 'Descending order (3, 2, 1; c, b, a)', 'insert-headers-and-footers' ),
								'ASC'  => __( 'Ascending order (1, 2, 3; a, b, c)', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 2.
					array(
						array(
							'type'    => 'select',
							'label'   => __( 'Order by', 'insert-headers-and-footers' ),
							'id'      => 'orderby',
							'default' => 'date',
							'options' => array(
								'none'            => __( 'No order (none)', 'insert-headers-and-footers' ),
								'ID'              => __( 'ID', 'insert-headers-and-footers' ),
								'author'          => __( 'Author', 'insert-headers-and-footers' ),
								'title'           => __( 'Title', 'insert-headers-and-footers' ),
								'name'            => __( 'Slug (name)', 'insert-headers-and-footers' ),
								'type'            => __( 'Post type (type)', 'insert-headers-and-footers' ),
								'date'            => __( 'Date (default)', 'insert-headers-and-footers' ),
								'modified'        => __( 'Modified date', 'insert-headers-and-footers' ),
								'parent'          => __( 'Parent id', 'insert-headers-and-footers' ),
								'rand'            => __( 'Random', 'insert-headers-and-footers' ),
								'comment_count'   => __( 'Comment count', 'insert-headers-and-footers' ),
								'relevance'       => __( 'Relevance (for search)', 'insert-headers-and-footers' ),
								'menu_order'      => __( 'Page Order (menu_order)', 'insert-headers-and-footers' ),
								//phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_value
								'meta_value'      => __( 'Meta value', 'insert-headers-and-footers' ),
								'meta_value_num'  => __( 'Numerical meta value (meta_value_num)', 'insert-headers-and-footers' ),
								'post__in'        => __( 'Order of ids in post__in', 'insert-headers-and-footers' ),
								'post_name__in'   => __( 'Order of names in post_name__in', 'insert-headers-and-footers' ),
								'post_parent__in' => __( 'Order of ids in post_parent__in', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Meta Key', 'insert-headers-and-footers' ),
							'description' => __( 'Meta key to use if you choose to order by meta value.', 'insert-headers-and-footers' ),
							'id'          => 'meta_key',
							'default'     => '',
						),
					),
					// Column 3.
					array(),
				),
			),
			'pagination' => array(
				'label'   => __( 'Pagination', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Use Pagination', 'insert-headers-and-footers' ),
							'id'          => 'nopaging',
							'default'     => 'false',
							'description' => __( 'Choose no to display all posts (not recommended).', 'insert-headers-and-footers' ),
							'options'     => array(
								'true'  => __( 'No', 'insert-headers-and-footers' ),
								'false' => __( 'Yes (default)', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Page number', 'insert-headers-and-footers' ),
							'description' => __( 'Which page to show.', 'insert-headers-and-footers' ),
							'id'          => 'paged',
							'default'     => '',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Posts per page', 'insert-headers-and-footers' ),
							'description' => __( 'How many posts should be displayed per page.', 'insert-headers-and-footers' ),
							'id'          => 'posts_per_page',
							'default'     => '',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Offset', 'insert-headers-and-footers' ),
							'description' => __( 'Number of posts to skip.', 'insert-headers-and-footers' ),
							'id'          => 'offset',
							'default'     => '',
						),
					),
					// Column 3.
					array(
						array(
							'type'    => 'select',
							'label'   => __( 'Ignore sticky posts', 'insert-headers-and-footers' ),
							'id'      => 'ignore_sticky_posts',
							'default' => 'false',
							'options' => array(
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
								'false' => __( 'No (default)', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
			'taxonomy'   => array(
				'label'   => __( 'Taxonomy', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Taxonomy', 'insert-headers-and-footers' ),
							'description' => __( 'Taxonomy slug that you want to query by.', 'insert-headers-and-footers' ),
							'id'          => 'taxonomy',
							'name'        => 'taxonomy[]',
							'default'     => '',
							'repeater'    => 'tax_query',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Field', 'insert-headers-and-footers' ),
							'description' => __( 'Select taxonomy term by.', 'insert-headers-and-footers' ),
							'id'          => 'field',
							'name'        => 'field[]',
							'repeater'    => 'tax_query',
							'default'     => 'term_id',
							'options'     => array(
								'term_id'          => __( 'Term ID (default)', 'insert-headers-and-footers' ),
								'name'             => __( 'Term Name', 'insert-headers-and-footers' ),
								'slug'             => __( 'Term Slug', 'insert-headers-and-footers' ),
								'term_taxonomy_id' => __( 'Term Taxonomy ID', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'Terms', 'insert-headers-and-footers' ),
							'description'     => __( 'Comma-separated list of terms to query by.', 'insert-headers-and-footers' ),
							'id'              => 'terms',
							'name'            => 'terms[]',
							'default'         => '',
							'repeater'        => 'tax_query',
							'comma-separated' => true,
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Include Children', 'insert-headers-and-footers' ),
							'id'          => 'include_children',
							'name'        => 'include_children[]',
							'default'     => 'true',
							'description' => __( 'Whether or not to include children for hierarchical taxonomies.', 'insert-headers-and-footers' ),
							'options'     => array(
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
							'repeater'    => 'tax_query',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Operator', 'insert-headers-and-footers' ),
							'id'          => 'operator',
							'name'        => 'operator[]',
							'default'     => 'IN',
							'description' => __( 'Operator to test relation by.', 'insert-headers-and-footers' ),
							'options'     => array(
								'IN'         => 'IN',
								'NOT IN'     => 'NOT IN',
								'AND'        => 'AND',
								'EXISTS'     => 'EXISTS',
								'NOT EXISTS' => 'NOT EXISTS',
							),
							'repeater'    => 'tax_query',
						),
						array(
							'type' => 'spacer',
						),
					),
					// Column 3.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Add another taxonomy', 'insert-headers-and-footers' ),
							'content' => __( 'Use the "Add Taxonomy" button below to query multiple taxonomies.', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'repeater_button',
							'button_text' => __( 'Add Taxonomy', 'insert-headers-and-footers' ),
							'id'          => 'tax_query', // Repeater to repeat when clicked.
						),
						array(
							'type'    => 'select',
							'label'   => __( 'Tax Relation', 'insert-headers-and-footers' ),
							'id'      => 'relation',
							'default' => 'AND',
							'options' => array(
								'AND' => __( 'AND (default)', 'insert-headers-and-footers' ),
								'OR'  => __( 'OR', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
			'meta'       => array(
				'label'   => __( 'Custom Fields', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Meta Key', 'insert-headers-and-footers' ),
							'description' => __( 'The key of the custom field.', 'insert-headers-and-footers' ),
							'id'          => 'key',
							'name'        => 'key[]',
							'default'     => '',
							'repeater'    => 'meta_query',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Meta Value', 'insert-headers-and-footers' ),
							'description' => __( 'Value to query the meta by.', 'insert-headers-and-footers' ),
							'id'          => 'value',
							'name'        => 'value[]',
							'default'     => '',
							'repeater'    => 'meta_query',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Compare', 'insert-headers-and-footers' ),
							'description' => __( 'How to compare the value for querying by meta.', 'insert-headers-and-footers' ),
							'id'          => 'compare',
							'name'        => 'compare[]',
							'repeater'    => 'meta_query',
							'default'     => '=',
							'options'     => array(
								'='           => '=',
								'!='          => '!=',
								'>'           => '>',
								'>='          => '>=',
								'<'           => '<',
								'<='          => '<=',
								'LIKE'        => 'LIKE',
								'NOT LIKE'    => 'NOT LIKE',
								'IN'          => 'IN',
								'NOT IN'      => 'NOT IN',
								'BETWEEN'     => 'BETWEEN',
								'NOT BETWEEN' => 'NOT BETWEEN',
								'EXISTS'      => 'EXISTS',
								'NOT EXISTS'  => 'NOT EXISTS',
								'REGEXP'      => 'REGEXP',
								'NOT REGEXP'  => 'NOT REGEXP',
								'RLIKE'       => 'RLIKE',
							),
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Type', 'insert-headers-and-footers' ),
							'description' => __( 'Type of custom field.', 'insert-headers-and-footers' ),
							'id'          => 'meta_type',
							'name'        => 'meta_type[]',
							'repeater'    => 'meta_query',
							'default'     => 'CHAR',
							'options'     => array(
								'NUMERIC'  => 'NUMERIC',
								'BINARY'   => 'BINARY',
								'CHAR'     => 'CHAR',
								'DATE'     => 'DATE',
								'DATETIME' => 'DATETIME',
								'DECIMAL'  => 'DECIMAL',
								'SIGNED'   => 'SIGNED',
								'TIME'     => 'TIME',
								'UNSIGNED' => 'UNSIGNED',
							),
						),
					),
					// Column 3.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Add another meta query', 'insert-headers-and-footers' ),
							'content' => __( 'Use the "Add Meta" button below to use multiple meta queries.', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'repeater_button',
							'button_text' => __( 'Add Meta', 'insert-headers-and-footers' ),
							'id'          => 'meta_query', // Repeater to repeat when clicked.
						),
						array(
							'type'    => 'select',
							'label'   => __( 'Relation', 'insert-headers-and-footers' ),
							'id'      => 'meta_relation',
							'default' => 'AND',
							'options' => array(
								'AND' => __( 'AND (default)', 'insert-headers-and-footers' ),
								'OR'  => __( 'OR', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
		);
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {

		$query_variable = '$' . str_replace( '$', '', $this->get_value( 'var_name' ) );
		$loop_code      = '';
		if ( 'true' === $this->get_value( 'loop' ) ) {
			$loop_code = "
if ( {$query_variable}->have_posts() ) {
	while ( {$query_variable}->have_posts() ) {
		{$query_variable}->the_post();
		// Add you post code here.
	}
} else {
	// Display a no posts found message here.
}

// Reset post data.
wp_reset_postdata();
			";
		}

		$optional_values = array(
			'post__in'            => false,
			'post__not_in'        => false,  // phpcs:ignore WordPressVIPMinimum.Performance.WPQueryParams.PostNotIn_post__not_in
			'post_parent__in'     => false,
			'post_parent__not_in' => false,
			'post_name__in'       => true,
			'post_type'           => true,
			'post_status'         => true,
			'author'              => true,
			'author__not_in'      => false,
			'author_name'         => true,
			's'                   => true,
			'order'               => true,
			'orderby'             => true,
			//phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
			'meta_key'            => true,
			'nopaging'            => false,
			'paged'               => false,
			'posts_per_page'      => false,
			'offset'              => false,
			'ignore_sticky_posts' => false,
		);

		$args = '';
		foreach ( $optional_values as $optional_value => $quotes ) {
			$args .= $this->get_optional_value( $optional_value, $quotes );
		}

		$tax_query        = '';
		$taxonomies       = $this->get_value( 'taxonomy' );
		$fields           = $this->get_value( 'field' );
		$terms            = $this->get_value( 'terms' );
		$include_children = $this->get_value( 'include_children' );
		$operator         = $this->get_value( 'operator' );

		if ( ! empty( $taxonomies ) ) {
			$tax_query_arrays = array();
			foreach ( $taxonomies as $key => $taxonomy ) {
				if ( empty( $taxonomy ) ) {
					continue;
				}
				$params = array(
					$this->get_optional_value_code( $fields[ $key ], $this->get_default_value( 'field' ), 'field', true ),
					$this->get_optional_value_code( $terms[ $key ], $this->get_default_value( 'terms' ), 'terms', true, true ),
					$this->get_optional_value_code( $include_children[ $key ], $this->get_default_value( 'include_children' ), 'include_children' ),
					$this->get_optional_value_code( $operator[ $key ], $this->get_default_value( 'operator' ), 'operator', true ),
				);
				$params = array_filter( $params );
				$params = str_replace( "\n", '', $params );
				$params = implode( "\n\t\t", $params );
				if ( ! empty( $params ) ) {
					$params = "\n\t\t" . $params;
				}
				$tax_query_arrays[] = "\n\t\t\tarray(
				'taxonomy'              => '$taxonomy',$params
			),";
			}
			if ( ! empty( $tax_query_arrays ) ) {
				$tax_query = "\t\t'tax_query' => array(";
				if ( count( $tax_query_arrays ) > 1 ) {
					$optional_relation = $this->get_optional_value( 'relation', true );
					if ( ! empty( $optional_relation ) ) {
						$tax_query .= "\n\t" . str_replace( "\n", '', $optional_relation );
					}
				}

				$tax_query .= implode( '', $tax_query_arrays );
				$tax_query .= '
		),';
			}
		}

		$meta_query    = '';
		$meta_keys     = $this->get_value( 'key' );
		$meta_values   = $this->get_value( 'value' );
		$meta_compares = $this->get_value( 'compare' );
		$meta_types    = $this->get_value( 'meta_type' );

		if ( ! empty( $meta_keys ) ) {
			$meta_query_arrays = array();
			foreach ( $meta_keys as $key => $meta_key ) {
				if ( empty( $meta_key ) ) {
					continue;
				}
				$params = array(
					$this->get_optional_value_code( $meta_values[ $key ], $this->get_default_value( 'value' ), 'value', true ),
					$this->get_optional_value_code( $meta_compares[ $key ], $this->get_default_value( 'compare' ), 'compare', true ),
					$this->get_optional_value_code( $meta_types[ $key ], $this->get_default_value( 'meta_type' ), 'type', true ),
				);
				$params = array_filter( $params );
				$params = str_replace( "\n", '', $params );
				$params = implode( "\n\t\t", $params );
				if ( ! empty( $params ) ) {
					$params = "\n\t\t" . $params;
				}
				$meta_query_arrays[] = "\n\t\t\tarray(
				'key'                   => '$meta_key',$params
			),";
			}

			if ( ! empty( $meta_query_arrays ) ) {
				$meta_query = "\n\t\t'meta_query' => array(";
				if ( count( $meta_query_arrays ) > 1 ) {
					$optional_relation = $this->get_optional_value( 'meta_relation', true, 'relation' );
					if ( ! empty( $optional_relation ) ) {
						$meta_query .= "\n\t" . str_replace( "\n", '', $optional_relation );
					}
				}

				$meta_query .= implode( '', $meta_query_arrays );
				$meta_query .= '
		),';
			}
		}

		$args = "\n" . $args;

		return '// Query Posts.

// Query arguments.
$query_args = array(' . $args . $tax_query . $meta_query . '
);

// Run the query.
' . $query_variable . ' = new WP_Query( $query_args );
' . $loop_code . '
';
	}

}
PK     €‰U]z‚ŽYÁa  Áa  6  includes/generator/class-wpcode-generator-taxonomy.phpnu „[µü¤        <?php
/**
 * Generate a snippet to register a new taxonomy.
 *
 * @package WPCode
 */

/**
 * The Taxonomy generator class.
 */
class WPCode_Generator_Taxonomy extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'taxonomy';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'content',
	);

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Taxonomy', 'insert-headers-and-footers' );
		$this->description = __( 'Create a custom taxonomy for your posts using this generator.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'         => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'Use this generator to create custom taxonomies for your WordPress site.', 'insert-headers-and-footers' ),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => __( 'Use this to add more taxonomies to posts or custom post types. For example, if you used the Post Type generator to create an Artist post type you can use this one to create a Genre taxonomy.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'general'      => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Function name', 'insert-headers-and-footers' ),
							'description' => __( 'Make this unique to avoid conflicts with other snippets', 'insert-headers-and-footers' ),
							'id'          => 'function_name',
							'placeholder' => 'register_custom_taxonomy',
							'default'     => 'register_custom_taxonomy' . time(),
							// This makes it unique for people who don't want to customize.
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Text Domain', 'insert-headers-and-footers' ),
							'description' => __( 'Optional text domain for translations.', 'insert-headers-and-footers' ),
							'id'          => 'text_domain',
							'placeholder' => 'text_domain',
							'default'     => 'text_domain',
						),
					),
				),
			),
			'taxonomy'     => array(
				'label'   => __( 'Taxonomy', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Taxonomy Key', 'insert-headers-and-footers' ),
							'description' => __( 'Name of taxonomy used in the code, lowercase maximum 20 characters.', 'insert-headers-and-footers' ),
							'id'          => 'taxonomy',
							'placeholder' => 'taxonomy',
							'default'     => 'taxonomy',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Name (Singular)', 'insert-headers-and-footers' ),
							'description' => __( 'The singular taxonomy name (e.g. Genre, Year).', 'insert-headers-and-footers' ),
							'id'          => 'label',
							'placeholder' => 'Taxonomy',
							'default'     => 'Taxonomy',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Name (Plural)', 'insert-headers-and-footers' ),
							'description' => __( 'The taxonomy plural name (e.g. Genres, Years).', 'insert-headers-and-footers' ),
							'id'          => 'label_count',
							'placeholder' => 'Taxonomies',
							'default'     => 'Taxonomies',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Link To Post Type(s)', 'insert-headers-and-footers' ),
							'description' => __( 'Comma-separated list of Post Types (e.g. post, page)', 'insert-headers-and-footers' ),
							'id'          => 'post_types',
							'placeholder' => 'post',
							'default'     => 'post',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Hierarchical', 'insert-headers-and-footers' ),
							'description' => __( 'Hierarchical taxonomies can have descendants.', 'insert-headers-and-footers' ),
							'id'          => 'hierarchical',
							'default'     => 'false',
							'options'     => array(
								'false' => __( 'No, like tags', 'insert-headers-and-footers' ),
								'true'  => __( 'Yes, like categories', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
			'labels'       => array(
				'label'   => __( 'Labels', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Menu Name', 'insert-headers-and-footers' ),
							'id'          => 'label_menu_name',
							'placeholder' => 'Taxonomy',
							'default'     => 'Taxonomy',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'All Items', 'insert-headers-and-footers' ),
							'id'          => 'label_all_items',
							'placeholder' => 'All Items',
							'default'     => 'All Items',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Parent Item', 'insert-headers-and-footers' ),
							'id'          => 'label_parent_item',
							'placeholder' => 'Parent Item',
							'default'     => 'Item Archives',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Parent Item colon', 'insert-headers-and-footers' ),
							'id'          => 'label_parent_item_colon',
							'placeholder' => 'Parent Item:',
							'default'     => 'Parent Item:',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'New Item Name', 'insert-headers-and-footers' ),
							'id'          => 'label_new_item',
							'placeholder' => 'New Item Name',
							'default'     => 'New Item Name',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Add New Item', 'insert-headers-and-footers' ),
							'id'          => 'label_add_new_item',
							'placeholder' => 'Add New Item',
							'default'     => 'Add New Item',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Edit Item', 'insert-headers-and-footers' ),
							'id'          => 'label_edit_item',
							'placeholder' => 'Edit Item',
							'default'     => 'Edit Item',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Update Item', 'insert-headers-and-footers' ),
							'id'          => 'label_update_item',
							'placeholder' => 'Update Item',
							'default'     => 'Update Item',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'View Item', 'insert-headers-and-footers' ),
							'id'          => 'label_view_item',
							'placeholder' => 'View Item',
							'default'     => 'View Item',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Separate Items with commas', 'insert-headers-and-footers' ),
							'id'          => 'label_separate_items_with_commas',
							'placeholder' => 'Separate Items with commas',
							'default'     => 'Separate Items with commas',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Add or Remove Items', 'insert-headers-and-footers' ),
							'id'          => 'label_add_or_remove_items',
							'placeholder' => 'Add or remove items',
							'default'     => 'Add or remove items',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Choose From Most Used', 'insert-headers-and-footers' ),
							'id'          => 'label_choose_from_most_used',
							'placeholder' => 'Choose from the most used',
							'default'     => 'Choose from the most used',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Popular Items', 'insert-headers-and-footers' ),
							'id'          => 'label_popular_items',
							'placeholder' => 'Popular Items',
							'default'     => 'Popular Items',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Search Items', 'insert-headers-and-footers' ),
							'id'          => 'label_search_items',
							'placeholder' => 'Search Items',
							'default'     => 'Search Items',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Not Found', 'insert-headers-and-footers' ),
							'id'          => 'label_not_found',
							'placeholder' => 'Not Found',
							'default'     => 'Not Found',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'No items', 'insert-headers-and-footers' ),
							'id'          => 'label_no_items',
							'placeholder' => 'No items',
							'default'     => 'No items',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Items list', 'insert-headers-and-footers' ),
							'id'          => 'label_items_list',
							'placeholder' => 'Items list',
							'default'     => 'Items list',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Items list navigation', 'insert-headers-and-footers' ),
							'id'          => 'label_items_list_navigation',
							'placeholder' => 'Items list navigation',
							'default'     => 'Items list navigation',
						),
					),
				),
			),
			'visibility'   => array(
				'label'   => __( 'Visibility', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Public', 'insert-headers-and-footers' ),
							// Translators: Placeholders add a link to the wp.org documentation page.
							'description' => sprintf( __( 'Should this taxonomy be %1$svisible to authors%2$s?', 'insert-headers-and-footers' ), '<a href="https://developer.wordpress.org/reference/functions/register_taxonomy/#additional-parameter-information" target="_blank">', '</a>' ),
							'id'          => 'public',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Show UI', 'insert-headers-and-footers' ),
							'description' => __( 'Should this taxonomy have an User Interface for managing?', 'insert-headers-and-footers' ),
							'id'          => 'show_ui',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Show Admin Column', 'insert-headers-and-footers' ),
							'description' => __( 'Should this taxonomy add a column in the list of associated post types?', 'insert-headers-and-footers' ),
							'id'          => 'show_admin_column',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Show Tag Cloud', 'insert-headers-and-footers' ),
							'description' => __( 'Should this taxonomy be visible in the tag cloud widget?', 'insert-headers-and-footers' ),
							'id'          => 'show_tagcloud',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Show in Navigation Menus', 'insert-headers-and-footers' ),
							'description' => __( 'Should this taxonomy be available in menus (Appearance > Menus).', 'insert-headers-and-footers' ),
							'id'          => 'show_in_nav_menus',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
			'permalinks'   => array(
				'label'   => __( 'Permalinks', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Permalink Rewrite', 'insert-headers-and-footers' ),
							'description' => __( 'Use Default Permalinks, disable automatic rewriting or use custom permalinks.', 'insert-headers-and-footers' ),
							'id'          => 'rewrite',
							'default'     => 'true',
							'options'     => array(
								'true'   => __( 'Default (taxonomy key)', 'insert-headers-and-footers' ),
								'false'  => __( 'Disable permalink rewrites', 'insert-headers-and-footers' ),
								'custom' => __( 'Custom permalink structure', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'URL Slug', 'insert-headers-and-footers' ),
							'description' => __( 'If you selected custom permalinks use this field for the rewrite base, e.g. taxonomy in https://yoursite.com/taxonomy', 'insert-headers-and-footers' ),
							'id'          => 'rewrite_slug',
							'default'     => '',
							'placeholder' => '',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Prepend permastruct', 'insert-headers-and-footers' ),
							'description' => __( 'Should the permastruct be prepended to the url (with_front parameter).', 'insert-headers-and-footers' ),
							'id'          => 'rewrite_with_front',
							'default'     => 'true',
							'options'     => array(
								'true'  => __( 'Yes - default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Hierarchical URL Slug', 'insert-headers-and-footers' ),
							'description' => __( 'For hierarchical taxonomies use the whole hierarchy in the URL?', 'insert-headers-and-footers' ),
							'id'          => 'rewrite_hierarchical',
							'default'     => 'false',
							'options'     => array(
								'false' => __( 'No - default', 'insert-headers-and-footers' ),
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
							),
						),
					),
				),
			),
			'capabilities' => array(
				'label'   => __( 'Capabilities', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Capabilities', 'insert-headers-and-footers' ),
							// Translators: Placeholders add link to wp.org docs.
							'description' => sprintf( __( 'User capabilities in relation to this taxonomy. %1$sSee Documentation.%2$s', 'insert-headers-and-footers' ), '<a href="https://developer.wordpress.org/reference/functions/register_taxonomy/#additional-parameter-information" target="_blank">', '</a>' ),
							'id'          => 'capabilities',
							'default'     => 'true',
							'options'     => array(
								'true'   => __( 'Base capabilities - default', 'insert-headers-and-footers' ),
								'custom' => __( 'Custom Capabilities', 'insert-headers-and-footers' ),
							),
						),
						array(
							'type'    => 'description',
							'label'   => __( 'Custom Capabilities', 'insert-headers-and-footers' ),
							'content' => __( 'Use the fields on the right to assign custom capabilities for this taxonomy.', 'insert-headers-and-footers' ),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Edit Terms', 'insert-headers-and-footers' ),
							'id'          => 'edit_terms',
							'default'     => 'manage_categories',
							'placeholder' => 'manage_categories',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Delete Terms', 'insert-headers-and-footers' ),
							'id'          => 'delete_terms',
							'default'     => 'manage_categories',
							'placeholder' => 'manage_categories',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Manage Terms', 'insert-headers-and-footers' ),
							'id'          => 'manage_terms',
							'default'     => 'manage_categories',
							'placeholder' => 'manage_categories',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Assign Terms', 'insert-headers-and-footers' ),
							'id'          => 'assign_terms',
							'default'     => 'edit_posts',
							'placeholder' => 'edit_posts',
						),
					),
				),
			),
			'rest_api'     => array(
				'label'   => __( 'Rest API', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Show in Rest API?', 'insert-headers-and-footers' ),
							'description' => __( 'Add the taxonomy to the WordPress wp-json API.', 'insert-headers-and-footers' ),
							'id'          => 'show_in_rest',
							'default'     => 'false',
							'options'     => array(
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
								'false' => __( 'No - default', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Rest Base', 'insert-headers-and-footers' ),
							'description' => __( 'The base slug that this taxonomy will use in the REST API.', 'insert-headers-and-footers' ),
							'id'          => 'rest_base',
							'default'     => '',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Rest Controller Class', 'insert-headers-and-footers' ),
							'description' => __( 'The name of a custom Rest Controller class instead of WP_REST_Terms_Controller.', 'insert-headers-and-footers' ),
							'id'          => 'rest_controller_class',
							'default'     => '',
						),
					),
				),
			),
		);
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {

		$rewrite         = $this->get_value( 'rewrite' );
		$rewrite_options = '';
		if ( 'true' === $rewrite ) {
			$rewrite = '';
		} elseif ( 'custom' === $rewrite ) {
			$rewrite         = "\t\t'rewrite'                    => \$rewrite_options,";
			$rewrite_options = "
	\$rewrite_options = array(
		'slug'         => '{$this->get_value('rewrite_slug')}',
		'with_front'   => {$this->get_value( 'rewrite_with_front')},
		'hierarchical' => {$this->get_value( 'rewrite_hierarchical')},
 	); 
			";
		} else {
			$rewrite = "\t\t'rewrite'               => $rewrite,";
		}

		$custom_capabilities = '';
		$capabilities        = $this->get_value( 'capabilities' );

		if ( 'custom' === $capabilities ) {
			$custom_capabilities = "
	\$capabilities = array(
		'edit_terms'   => '{$this->get_value( 'edit_terms')}',
		'delete_terms' => '{$this->get_value( 'delete_terms')}',
		'manage_terms' => '{$this->get_value( 'manage_terms')}',
		'assign_terms' => '{$this->get_value( 'assign_terms')}',
	);
			";
			$capabilities        = "        'capabilities'          => \$capabilities,";
		} else {
			$capabilities = '';
		}

		return '// Register Custom Taxonomy
function ' . $this->get_value( 'function_name' ) . '() {

    $labels = array(
        \'name\'                       => _x( \'' . $this->get_value( 'label_count' ) . '\', \'Taxonomy General Name\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'singular_name\'              => _x( \'' . $this->get_value( 'label' ) . '\', \'Taxonomy Singular Name\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'menu_name\'                  => __( \'' . $this->get_value( 'label_menu_name' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'all_items\'                  => __( \'' . $this->get_value( 'label_all_items' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'parent_item\'                => __( \'' . $this->get_value( 'label_parent_item' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'parent_item_colon\'          => __( \'' . $this->get_value( 'label_parent_item_colon' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'new_item_name\'              => __( \'' . $this->get_value( 'label_new_item' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'add_new_item\'               => __( \'' . $this->get_value( 'label_add_new_item' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'edit_item\'                  => __( \'' . $this->get_value( 'label_edit_item' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'update_item\'                => __( \'' . $this->get_value( 'label_update_item' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'view_item\'                  => __( \'' . $this->get_value( 'label_view_item' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'separate_items_with_commas\' => __( \'' . $this->get_value( 'label_separate_items_with_commas' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'add_or_remove_items\'        => __( \'' . $this->get_value( 'label_add_or_remove_items' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'choose_from_most_used\'      => __( \'' . $this->get_value( 'label_choose_from_most_used' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'popular_items\'              => __( \'' . $this->get_value( 'label_popular_items' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'search_items\'               => __( \'' . $this->get_value( 'label_search_items' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'not_found\'                  => __( \'' . $this->get_value( 'label_not_found' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'no_terms\'                   => __( \'' . $this->get_value( 'label_no_items' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'items_list\'                 => __( \'' . $this->get_value( 'label_items_list' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
        \'items_list_navigation\'      => __( \'' . $this->get_value( 'label_items_list_navigation' ) . '\', \'' . $this->get_value( 'text_domain' ) . '\' ),
    );
    ' . $rewrite_options . '
    ' . $custom_capabilities . '
    $args = array(
        \'labels\'                => $labels,
        \'hierarchical\'          => ' . $this->get_value( 'hierarchical' ) . ',
        \'public\'                => ' . $this->get_value( 'public' ) . ',
        \'show_ui\'               => ' . $this->get_value( 'show_ui' ) . ',
        \'show_admin_column\'     => ' . $this->get_value( 'show_admin_column' ) . ',
        \'show_in_nav_menus\'     => ' . $this->get_value( 'show_in_nav_menus' ) . ',
        \'show_tagcloud\'         => ' . $this->get_value( 'show_tagcloud' ) . ',
        \'show_in_rest\'          => ' . $this->get_value( 'show_in_rest' ) . ',
' . $rewrite . '
' . $capabilities . '
' . $this->get_optional_value( 'show_in_rest' ) . $this->get_optional_value( 'rest_base', true ) . $this->get_optional_value( 'rest_controller_class', true ) . '
    );
    register_taxonomy( \'' . $this->get_value( 'taxonomy' ) . '\', ' . $this->get_value_comma_separated( 'post_types' ) . ', $args );

}
add_action( \'init\', \'' . $this->get_value( 'function_name' ) . '\', 5 );';
	}

}
PK     €‰U]yíá0È  È  9  includes/generator/class-wpcode-generator-post-status.phpnu „[µü¤        <?php
/**
 * Generate a snippet to register a new post status.
 *
 * @package WPCode
 */

/**
 * The Post Status generator.
 */
class WPCode_Generator_Post_Status extends WPCode_Generator_Type {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'post-status';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'content',
	);

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Post Status', 'insert-headers-and-footers' );
		$this->description = __( 'Use this tool to generate a custom post status for your posts.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'       => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						// Column 1 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'Generate custom post statuses for your posts to improve the way you manage content.', 'insert-headers-and-footers' ),
						),
					),
					// Column 2.
					array(
						// Column 2 fields.
						array(
							'type'    => 'list',
							'label'   => __( 'Usage', 'insert-headers-and-footers' ),
							'content' => array(
								__( 'Fill in the forms using the menu on the left.', 'insert-headers-and-footers' ),
								__( 'Click the "Update Code" button.', 'insert-headers-and-footers' ),
								__( 'Click on "Use Snippet" to create a new snippet with the generated code.', 'insert-headers-and-footers' ),
								__( 'Activate and save the snippet and you\'re ready to go', 'insert-headers-and-footers' ),
							),
						),
					),
					// Column 3.
					array(
						// Column 3 fields.
						array(
							'type'    => 'description',
							'label'   => __( 'Examples', 'insert-headers-and-footers' ),
							'content' => __( 'You could add a new status called "Pending Review" that your authors can use before the content will be published', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'general'    => array(
				'label'   => __( 'General', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Function name', 'insert-headers-and-footers' ),
							'description' => __( 'Make this unique to avoid conflicts with other snippets', 'insert-headers-and-footers' ),
							'id'          => 'function_name',
							'placeholder' => 'custom_post_status',
							'default'     => 'custom_post_status' . time(),
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Text Domain', 'insert-headers-and-footers' ),
							'description' => __( 'Optional text domain for translations.', 'insert-headers-and-footers' ),
							'id'          => 'text_domain',
							'placeholder' => 'text_domain',
							'default'     => 'text_domain',
						),
					),
				),
			),
			'status'     => array(
				'label'   => __( 'Status', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Post Status', 'insert-headers-and-footers' ),
							'description' => __( 'Name of status used in the code, lowercase maximum 32 characters.', 'insert-headers-and-footers' ),
							'id'          => 'post_status',
							'placeholder' => 'pending',
							'default'     => 'pending',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Name', 'insert-headers-and-footers' ),
							'description' => __( 'The singular name that will be displayed in the admin. ', 'insert-headers-and-footers' ),
							'id'          => 'label',
							'placeholder' => 'Pending',
							'default'     => 'Pending',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Name (Plural)', 'insert-headers-and-footers' ),
							'description' => __( 'The post status plural name. For example: Drafts.', 'insert-headers-and-footers' ),
							'id'          => 'label_count',
							'placeholder' => 'Pending',
							'default'     => 'Pending',
						),
					),
				),
			),
			'visibility' => array(
				'label'   => __( 'Visibility', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Public', 'insert-headers-and-footers' ),
							'description' => __( 'Should the posts with this status be visible in the frontend?', 'insert-headers-and-footers' ),
							'id'          => 'public',
							'options'     => array(
								'true'  => __( 'Yes - Default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
							'default'     => 'true',
						),
					),
					// Column 2.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Exclude from search results', 'insert-headers-and-footers' ),
							'description' => __( 'Should the posts with this status be visible in the frontend?', 'insert-headers-and-footers' ),
							'id'          => 'exclude_from_search',
							'options'     => array(
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
								'false' => __( 'No - Default', 'insert-headers-and-footers' ),
							),
							'default'     => 'false',
						),
					),
					// Column 3.
					array(
						array(
							'type'        => 'select',
							'label'       => __( 'Show in admin all list', 'insert-headers-and-footers' ),
							'description' => __( 'Show statuses in the edit listing of the post.', 'insert-headers-and-footers' ),
							'id'          => 'show_in_admin_all_list',
							'options'     => array(
								'true'  => __( 'Yes - Default', 'insert-headers-and-footers' ),
								'false' => __( 'No', 'insert-headers-and-footers' ),
							),
							'default'     => 'true',
						),
						array(
							'type'        => 'select',
							'label'       => __( 'Show in admin status list', 'insert-headers-and-footers' ),
							'description' => __( 'Show statuses list at the top of the edit listings. e.g. Published (12) Custom Status (2)', 'insert-headers-and-footers' ),
							'id'          => 'show_in_admin_status_list',
							'options'     => array(
								'true'  => __( 'Yes', 'insert-headers-and-footers' ),
								'false' => __( 'No - Default', 'insert-headers-and-footers' ),
							),
							'default'     => 'false',
						),
					),
				),
			),
		);
	}

	/**
	 * Get the snippet code with dynamic values applied.
	 *
	 * @return string
	 */
	public function get_snippet_code() {
		return '// Register Custom Status
function '. $this->get_value( 'function_name' ) . '() {

	$args = array(
		\'label\'                     => _x( \'' . $this->get_value( 'label' ) . '\', \'Post Status Name\', \'' . $this->get_value( 'text_domain' ) . '\' ),
		\'label_count\'               => _n_noop( \'' . $this->get_value( 'label' ) . ' (%s)\',  \'' . $this->get_value( 'label_count' ) . ' (%s)\', \'' . $this->get_value( 'text_domain' ) . '\' ), 
		\'public\'                    => ' . $this->get_value( 'public' ) . ',
		\'show_in_admin_all_list\'    => ' . $this->get_value( 'show_in_admin_all_list' ) . ',
		\'show_in_admin_status_list\' => ' . $this->get_value( 'show_in_admin_status_list' ) . ',
		\'exclude_from_search\'       => ' . $this->get_value( 'exclude_from_search' ) . ',
	);
	register_post_status( \'' . $this->get_value( 'post_status' ) . '\', $args );

}
add_action( \'init\', \'' . $this->get_value( 'function_name' ) . '\', 5 );';
	}

}
PK     €‰U]îiý�ª  ª  ;  includes/generator/class-wpcode-generator-schema-person.phpnu „[µü¤        <?php
/**
 * Generate a snippet for Person schema markup.
 *
 * @package WPCode
 */

/**
 * WPCode_Generator_Schema_Person class.
 */
class WPCode_Generator_Schema_Person extends WPCode_Generator_Schema_Base {

	/**
	 * The generator slug.
	 *
	 * @var string
	 */
	public $name = 'schema-person';

	/**
	 * The categories for this generator.
	 *
	 * @var string[]
	 */
	public $categories = array(
		'schema',
	);

	/**
	 * Snippet code type for when it will be saved.
	 *
	 * @var string
	 */
	public $code_type = 'html';

	/**
	 * Set the translatable strings.
	 *
	 * @return void
	 */
	protected function set_strings() {
		$this->title       = __( 'Person Schema', 'insert-headers-and-footers' );
		$this->description = __( 'Generate schema markup for people to enhance search results.', 'insert-headers-and-footers' );
	}

	/**
	 * Load the generator tabs.
	 *
	 * @return void
	 */
	protected function load_tabs() {
		$this->tabs = array(
			'info'   => array(
				'label'   => __( 'Info', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1.
					array(
						array(
							'type'    => 'description',
							'label'   => __( 'Overview', 'insert-headers-and-footers' ),
							'content' => __( 'This generator creates Person schema.org markup for improved SEO and rich search results.', 'insert-headers-and-footers' ),
						),
					),
				),
			),
			'person' => array(
				'label'   => __( 'Person Details', 'insert-headers-and-footers' ),
				'columns' => array(
					// Column 1 - Basic Person information.
					array(
						array(
							'type'            => 'text',
							'label'           => __( 'Name', 'insert-headers-and-footers' ),
							'description'     => __( 'The full name of the person.', 'insert-headers-and-footers' ),
							'id'              => 'name',
							'default'         => '',
							'placeholder'     => __( 'Enter the person\'s name...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'title' ),
						),
						array(
							'type'            => 'textarea',
							'label'           => __( 'Description', 'insert-headers-and-footers' ),
							'description'     => __( 'A detailed description of the person.', 'insert-headers-and-footers' ),
							'id'              => 'description',
							'default'         => '',
							'placeholder'     => __( 'Describe the person...', 'insert-headers-and-footers' ),
							'smart_tags'      => true,
							'predefined_tags' => array( 'custom_field' ),
						),
						array(
							'type'            => 'text',
							'label'           => __( 'URL', 'insert-headers-and-footers' ),
							'description'     => __( 'The URL of the person\'s page.', 'insert-headers-and-footers' ),
							'id'              => 'url',
							'default'         => '',
							'placeholder'     => 'https://example.com/person',
							'smart_tags'      => true,
							'predefined_tags' => array( 'permalink' ),
						),
					),
					array(
						array(
							'type'         => 'text',
							'label'        => __( 'Image URL', 'insert-headers-and-footers' ),
							'description'  => __( 'The URL of the person\'s photo.', 'insert-headers-and-footers' ),
							'id'           => 'image_url',
							'default'      => '',
							'placeholder'  => 'https://example.com/photo.jpg',
							'is_image_url' => true,
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Job Title', 'insert-headers-and-footers' ),
							'description' => __( 'The person\'s job title or role.', 'insert-headers-and-footers' ),
							'id'          => 'job_title',
							'default'     => '',
							'placeholder' => __( 'Enter job title...', 'insert-headers-and-footers' ),
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Works For', 'insert-headers-and-footers' ),
							'description' => __( 'The organization the person works for.', 'insert-headers-and-footers' ),
							'id'          => 'works_for',
							'default'     => '',
							'placeholder' => __( 'Enter organization name...', 'insert-headers-and-footers' ),
						),
					),
					array(
						array(
							'type'        => 'text',
							'label'       => __( 'Email', 'insert-headers-and-footers' ),
							'description' => __( 'The person\'s email address.', 'insert-headers-and-footers' ),
							'id'          => 'email',
							'default'     => '',
							'placeholder' => 'person@example.com',
						),
						array(
							'type'        => 'text',
							'label'       => __( 'Telephone', 'insert-headers-and-footers' ),
							'description' => __( 'The person\'s telephone number.', 'insert-headers-and-footers' ),
							'id'          => 'telephone',
							'default'     => '',
							'placeholder' => '+1-234-567-8900',
						),
						array(
							'type'        => 'textarea',
							'label'       => __( 'Same As', 'insert-headers-and-footers' ),
							'description' => __( 'URLs of the person\'s social media profiles (comma-separated).', 'insert-headers-and-footers' ),
							'id'          => 'same_as',
							'default'     => '',
							'placeholder' => 'https://twitter.com/username, https://linkedin.com/in/username',
						),
					),
				),
			),
		);
	}

	/**
	 * Generate the snippet code without processing smart tags.
	 *
	 * @return string
	 */
	protected function generate_snippet_code(): string {
		$schema = array(
			'@context' => 'https://schema.org',
			'@type'    => 'Person',
		);

		// Add basic information.
		$name = $this->get_value( 'name' );
		if ( ! empty( $name ) ) {
			$schema['name'] = $name;
		}

		$description = $this->get_value( 'description' );
		if ( ! empty( $description ) ) {
			$schema['description'] = $description;
		}

		$url = $this->get_value( 'url' );
		if ( ! empty( $url ) ) {
			$schema['url'] = $url;
		}

		// Add image.
		$image_url = $this->get_value( 'image_url' );
		if ( ! empty( $image_url ) ) {
			$schema['image'] = array(
				'@type' => 'ImageObject',
				'url'   => $image_url,
			);
		}

		// Add job title.
		$job_title = $this->get_value( 'job_title' );
		if ( ! empty( $job_title ) ) {
			$schema['jobTitle'] = $job_title;
		}

		// Add works for.
		$works_for = $this->get_value( 'works_for' );
		if ( ! empty( $works_for ) ) {
			$schema['worksFor'] = array(
				'@type' => 'Organization',
				'name'  => $works_for,
			);
		}

		// Add contact information.
		$email = $this->get_value( 'email' );
		if ( ! empty( $email ) ) {
			$schema['email'] = $email;
		}

		$telephone = $this->get_value( 'telephone' );
		if ( ! empty( $telephone ) ) {
			$schema['telephone'] = $telephone;
		}

		// Add social media profiles.
		$same_as = $this->get_value( 'same_as' );
		if ( ! empty( $same_as ) ) {
			$schema['sameAs'] = array_map( 'trim', explode( ',', $same_as ) );
		}

		// Encode the schema to JSON with pretty print.
		$json = wp_json_encode( $schema, JSON_PRETTY_PRINT | JSON_UNESCAPED_SLASHES );

		// Return the properly formatted schema JSON-LD with script tags.
		return '<script type="application/ld+json">' . "\n" . $json . "\n" . '</script>';
	}
}
PK     €‰U]\;çÁ  Á  7  includes/auto-insert/class-wpcode-auto-insert-admin.phpnu „[µü¤        <?php
/**
 * Class to auto-insert snippets in the Admin area.
 *
 * @package wpcode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class WPCode_Auto_Insert_Admin.
 */
class WPCode_Auto_Insert_Admin extends WPCode_Auto_Insert_Type {

	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category = 'global';

	/**
	 * Load the available options and labels.
	 *
	 * @return void
	 */
	public function init() {
		$this->locations = array(
			'admin_head'   => array(),
			'admin_footer' => array(),
		);
	}

	/**
	 * Load the label.
	 *
	 * @return void
	 */
	public function load_label() {
		$this->label = __( 'Admin Area', 'insert-headers-and-footers' );
	}

	/**
	 * Load the available locations.
	 *
	 * @return void
	 */
	public function load_locations() {
		$this->locations = array(
			'admin_head'   => array(
				'label'       => esc_html__( 'Admin header', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet in the wp-admin header area.', 'insert-headers-and-footers' ),
			),
			'admin_footer' => array(
				'label'       => esc_html__( 'Admin footer', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet in the wp-admin footer.', 'insert-headers-and-footers' ),
			),
		);
	}

	/**
	 * Checks if we are on an archive page and we should be executing hooks.
	 *
	 * @return bool
	 */
	public function conditions() {
		return is_admin();
	}

	/**
	 * Add hooks specific to single posts.
	 *
	 * @return void
	 */
	public function hooks() {
		add_action( 'admin_head', array( $this, 'insert_admin_head' ), 9 );
		add_action( 'admin_footer', array( $this, 'insert_admin_footer' ), 9 );
	}

	/**
	 * Output snippet in the admin head.
	 *
	 * @return void
	 */
	public function insert_admin_head() {
		$this->output_location( 'admin_head' );
	}

	/**
	 * Output snippet in the admin footer.
	 *
	 * @return void
	 */
	public function insert_admin_footer() {
		$this->output_location( 'admin_footer' );
	}

	/**
	 * Override the parent method to add the start hook specific to the admin.
	 *
	 * @return void
	 */
	protected function add_start_hook() {
		add_action( 'admin_init', array( $this, 'maybe_run_hooks' ) );
	}
}

new WPCode_Auto_Insert_Admin();
PK     €‰U]ÈÍ•%  %  6  includes/auto-insert/class-wpcode-auto-insert-type.phpnu „[µü¤        <?php
/**
 * Base class for of auto-insert options.
 *
 * @package wpcode
 */

/**
 * Abstract class WPCode_Auto_Insert_Type.
 */
abstract class WPCode_Auto_Insert_Type {
	/**
	 * The auto-insert label.
	 *
	 * @var string
	 */
	public $label;

	/**
	 * A unique name for this type.
	 *
	 * @var string
	 */
	public $name;

	/**
	 * An array of locations.
	 * This is an array of unique locations where snippets can be executed in the form
	 * of key => label where the keys should be unique for all the options across
	 * all child classes as those will be used as taxonomy terms to store the
	 * relationship between snippets and their location.
	 *
	 * @var array
	 */
	public $locations;

	/**
	 * Terms of the locations for this type.
	 *
	 * @var array
	 */
	public $locations_terms;

	/**
	 * All the snippets for this location.
	 *
	 * @var array
	 */
	public $snippets;

	/**
	 * For which code type this insert is available.
	 * By default, all.
	 *
	 * @var string
	 */
	public $code_type = 'all';

	/**
	 * If we should skip the cache set this to false.
	 *
	 * @var bool
	 */
	protected $use_cache = true;

	/**
	 * Display a label next to the optgroup title.
	 *
	 * @var string
	 */
	public $label_pill = '';

	/**
	 * Title of the upgrade prompt.
	 *
	 * @var string
	 */
	public $upgrade_title = '';

	/**
	 * Text of the upgrade prompt.
	 *
	 * @var string
	 */
	public $upgrade_text = '';

	/**
	 * URL of the upgrade prompt (CTA) with UTM.
	 *
	 * @var string
	 */
	public $upgrade_link = '';

	/**
	 * Text for the CTA Button.
	 *
	 * @var string
	 */
	public $upgrade_button = '';

	/**
	 * Category used for displaying this type in the admin.
	 *
	 * @var string
	 */
	public $category = '';

	/**
	 * Start the auto insertion.
	 */
	public function __construct() {
		$this->init();
		$this->register_type();
		/**
		 * Constant to enable safe mode.
		 * Filter to allow disabling auto insert.
		 */
		if ( defined( 'WPCODE_SAFE_MODE' ) && WPCODE_SAFE_MODE ) {
			return;
		}
		if ( ! apply_filters( 'wpcode_do_auto_insert', true ) ) {
			return;
		}
		// If we're in headers & footers mode prevent execution of any type of snippet.
		if ( WPCode()->settings->get_option( 'headers_footers_mode' ) ) {
			return;
		}

		add_action( 'admin_init', array( $this, 'load_upgrade_strings' ), 140 );

		$this->add_start_hook();
	}

	/**
	 * Register this instance to the global auto-insert types.
	 *
	 * @return void
	 */
	private function register_type() {
		wpcode()->auto_insert->register_type( $this );
	}

	/**
	 * Init function that is specific to each auto-insert type.
	 *
	 * @return void
	 */
	abstract public function init();

	/**
	 * Give child classes a chance to load on a different hook.
	 *
	 * @return void
	 */
	protected function add_start_hook() {
		add_action( 'wp', array( $this, 'maybe_run_hooks' ) );
	}

	/**
	 * Check if conditions are met before calling the hooks.
	 *
	 * @return void
	 */
	public function maybe_run_hooks() {
		if ( ! $this->conditions() ) {
			return;
		}
		// Go through relevant hooks and output based on settings.
		$this->hooks();
	}

	/**
	 * Conditions that have to be met for the class to do its thing.
	 * For example, in the single post class we'll check if is_single
	 * and only then will we change the_content.
	 *
	 * @return bool
	 */
	public function conditions() {
		// Most types only run on the frontend.
		return ! is_admin();
	}

	/**
	 * Hooks specific to this type of auto-insertion.
	 *
	 * @return void
	 */
	public function hooks() {
	}

	/**
	 * Get an array of options for the admin.
	 * Check if the insert type is compatible with the code type.
	 *
	 * @return array
	 */
	public function get_locations() {
		$this->load_locations();

		return isset( $this->locations ) ? $this->locations : array();
	}

	/**
	 * Load the locations for this type.
	 *
	 * @return void
	 */
	abstract public function load_locations();

	/**
	 * Load the label for this type.
	 *
	 * @return void
	 */
	abstract public function load_label();

	/**
	 * Query snippets by location.
	 *
	 * @param string $location The location slug.
	 *
	 * @return WPCode_Snippet[]
	 */
	public function get_snippets_for_location( $location ) {
		$snippets = $this->get_snippets();

		$snippets_for_location = isset( $snippets[ $location ] ) ? $snippets[ $location ] : array();

		return apply_filters(
			'wpcode_get_snippets_for_location',
			wpcode()->conditional_logic->check_snippets_conditions( $snippets_for_location ),
			$location
		);
	}

	/**
	 * Get the snippets for this type and query on demand.
	 *
	 * @return array
	 */
	public function get_snippets() {
		if ( ! isset( $this->snippets ) ) {
			$this->load_all_snippets_for_type();
		}

		return $this->snippets;
	}

	/**
	 * Load all the snippets for this type and group them by location.
	 * This can be further improved by separating the snippet loading and loading
	 * all the relevant snippets for a screen at once (regardless of type) or just loading all the
	 * active snippets in 1 query.
	 *
	 * @return void
	 */
	public function load_all_snippets_for_type() {

		if ( $this->use_cache() ) {
			$this->snippets = $this->get_snippets_from_cache();

			return;
		}

		$this->snippets = array();
		$args           = array(
			'post_type'        => wpcode_get_post_type(),
			'posts_per_page'   => - 1,
			'post_status'      => 'publish',
			// We don't want to cache this query ever as it should only run when snippets are preloaded in case of an error it will provide false values if cached.
			'cache_results'    => false,
			// We don't want to allow any filters to be applied to this query.
			'suppress_filters' => true,
		);
		$snippets_query = new WP_Query( $args );
		$snippets       = $snippets_query->posts;

		foreach ( $snippets as $snippet ) {
			$snippet_locations = wp_get_post_terms( $snippet->ID, 'wpcode_location', array( 'fields' => 'slugs' ) );
			if ( empty( $snippet_locations ) || is_wp_error( $snippet_locations ) ) {
				continue;
			}
			$location_key                      = $snippet_locations[0];
			$this->snippets[ $location_key ][] = wpcode_get_snippet( $snippet );
		}
	}

	/**
	 * Get snippets from cache split by relevant locations for this type.
	 *
	 * @return array
	 */
	public function get_snippets_from_cache() {
		$cached_snippets = wpcode()->cache->get_cached_snippets();
		$type_snippets   = array();
		foreach ( $this->locations as $location => $label ) {
			if ( array_key_exists( $location, $cached_snippets ) ) {
				$type_snippets[ $location ] = $cached_snippets[ $location ];
			} else {
				$type_snippets[ $location ] = array();
			}
		}

		return $type_snippets;
	}

	/**
	 * Get the ids of the loaded location terms.
	 *
	 * @return int[]
	 */
	public function get_locations_ids() {
		$terms = $this->get_location_terms();
		$ids   = array();
		foreach ( $terms as $term ) {
			$ids[] = $term->term_id;
		}

		return $ids;
	}

	/**
	 * Get the location terms.
	 *
	 * @return WP_Term[]
	 */
	public function get_location_terms() {
		if ( ! isset( $this->locations_terms ) ) {
			$this->load_locations_terms();
		}

		return $this->locations_terms;
	}

	/**
	 * Query the location terms using get_terms and store them in the instance.
	 *
	 * @return void
	 */
	public function load_locations_terms() {
		$terms = get_terms(
			array(
				'taxonomy' => 'wpcode_location',
				'slug'     => array_keys( $this->locations ),
			)
		);

		$this->locations_terms = array();

		if ( is_wp_error( $terms ) ) {
			// If the terms don't exist, bail early.
			return;
		}

		foreach ( $terms as $term ) {
			$this->locations_terms[ $term->slug ] = $term;
		}
	}

	/**
	 * Change the clauses for our specific query to include the term id in the resulting
	 * WP_Post object so that we can group the results by the type locations.
	 *
	 * @param array $clauses Array of clauses for the SQL query.
	 *
	 * @return mixed
	 */
	public function include_term_in_post( $clauses ) {
		global $wpdb;

		$clauses['fields']  .= ", {$wpdb->term_relationships}.term_taxonomy_id";
		$clauses['groupby'] = '';

		return $clauses;
	}

	/**
	 * Return the type label.
	 *
	 * @return string
	 */
	public function get_label() {
		if ( ! isset( $this->label ) ) {
			$this->load_label();
		}

		return $this->label;
	}

	/**
	 * Grab the use cache value allowing filtering.
	 *
	 * @return bool
	 */
	public function use_cache() {
		return boolval( apply_filters( 'wpcode_use_auto_insert_cache', $this->use_cache ) );
	}

	/**
	 * Get the snippets for a location and echo them executed.
	 *
	 * @param string $location_name The location to grab snippets for.
	 *
	 * @return void
	 */
	public function output_location( $location_name ) {
		$snippets = $this->get_snippets_for_location( $location_name );
		foreach ( $snippets as $snippet ) {
			echo wpcode()->execute->get_snippet_output( $snippet ); //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		}
	}

	/**
	 * Get the snippets for a location and return them executed.
	 *
	 * @param string $location_name The location to grab snippets for.
	 *
	 * @return string
	 */
	public function get_location( $location_name ) {
		$content  = '';
		$snippets = $this->get_snippets_for_location( $location_name );
		foreach ( $snippets as $snippet ) {
			$content .= wpcode()->execute->get_snippet_output( $snippet );
		}

		return $content;
	}

	/**
	 * Load the strings for the upgrade prompt, if any.
	 *
	 * @return void
	 */
	public function load_upgrade_strings() {

	}
}
PK     �‰U]1Šå«b!  b!  8  includes/auto-insert/class-wpcode-auto-insert-single.phpnu „[µü¤        <?php
/**
 * Class to auto-insert snippets on single posts.
 *
 * @package wpcode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class WPCode_Auto_Insert_Single.
 */
class WPCode_Auto_Insert_Single extends WPCode_Auto_Insert_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'single';

	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category = 'page';

	/**
	 * Used to make sure we only output the before post code once.
	 *
	 * @var bool
	 */
	private $did_before_post_output = false;

	/**
	 * Load the available options and labels.
	 *
	 * @return void
	 */
	public function init() {
		$this->locations = array(
			'before_post'      => array(),
			'after_post'       => array(),
			'before_content'   => array(),
			'after_content'    => array(),
			'before_paragraph' => array(),
			'after_paragraph'  => array(),
		);
	}

	/**
	 * Load the label.
	 *
	 * @return void
	 */
	public function load_label() {
		$this->label = __( 'Page, Post, Custom Post Type', 'insert-headers-and-footers' );
	}

	/**
	 * Load the available locations.
	 *
	 * @return void
	 */
	public function load_locations() {
		$this->locations = array(
			'before_post'      => array(
				'label'       => esc_html__( 'Insert Before Post', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet at the beginning of a post.', 'insert-headers-and-footers' ),
			),
			'after_post'       => array(
				'label'       => esc_html__( 'Insert After Post', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet at the end of a post.', 'insert-headers-and-footers' ),
			),
			'before_content'   => array(
				'label'       => esc_html__( 'Insert Before Content', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet at the beginning of the post content.', 'insert-headers-and-footers' ),
			),
			'after_content'    => array(
				'label'       => esc_html__( 'Insert After Content', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet at the end of the post content.', 'insert-headers-and-footers' ),
			),
			'before_paragraph' => array(
				'label'       => esc_html__( 'Insert Before Paragraph', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet before paragraph # of the post content.', 'insert-headers-and-footers' ),
			),
			'after_paragraph'  => array(
				'label'       => esc_html__( 'Insert After Paragraph', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet after paragraph # of the post content.', 'insert-headers-and-footers' ),
			),
		);
	}

	/**
	 * Checks if we are on a singular page and we should be executing hooks.
	 *
	 * @return bool
	 */
	public function conditions() {
		return is_singular();
	}

	/**
	 * Add hooks specific to single posts.
	 *
	 * @return void
	 */
	public function hooks() {
		add_action( 'the_post', array( $this, 'insert_before_post' ) );
		add_filter( 'render_block_core/template-part', array( $this, 'insert_before_post_fse' ), 15, 2 );
		add_action( 'the_content', array( $this, 'insert_after_post' ) );
		add_filter( 'the_content', array( $this, 'insert_before_content' ) );
		add_filter( 'the_content', array( $this, 'insert_after_content' ) );
		add_filter( 'the_content', array( $this, 'insert_after_before_paragraph' ) );
	}

	/**
	 * Insert snippet before the post.
	 *
	 * @param WP_Post $post_object The post object being loaded.
	 *
	 * @return void
	 */
	public function insert_before_post( $post_object ) {
		if ( ! did_action( 'get_header' ) || get_the_ID() !== $post_object->ID || $this->did_before_post_output ) {
			return;
		}
		$this->output_location( 'before_post' );
		$this->did_before_post_output = true;
	}

	/**
	 * In FSE themes there's no "get_header" action to check for, so we hook after the core template-part header block.
	 *
	 * @param string $block_content The normal block HTML that would be sent to the screen.
	 * @param array  $block An array of data about the block, and the way the user configured it.
	 *
	 * @return string
	 */
	public function insert_before_post_fse( $block_content, $block ) {
		// If the get_header action ran we use the classic output method above.
		if ( did_action( 'get_header' ) ) {
			return $block_content;
		}
		if ( ! isset( $block['attrs']['slug'] ) || 'header' !== $block['attrs']['slug'] ) {
			return $block_content;
		}
		$before_post = '';
		$snippets    = $this->get_snippets_for_location( 'before_post' );
		foreach ( $snippets as $snippet ) {
			$before_post .= wpcode()->execute->get_snippet_output( $snippet );
		}

		return $block_content . $before_post;
	}

	/**
	 * Insert snippet output after the content.
	 *
	 * @param string $content The content of the post.
	 *
	 * @return string
	 */
	public function insert_after_content( $content ) {
		$snippets = $this->get_snippets_for_location( 'after_content' );
		foreach ( $snippets as $snippet ) {
			$content .= wpcode()->execute->get_snippet_output( $snippet );
		}

		return $content;
	}

	/**
	 * Insert snippet after the post
	 *
	 * @param string $content The post content.
	 *
	 * @return string
	 */
	public function insert_after_post( $content ) {
		$snippets = $this->get_snippets_for_location( 'after_post' );
		foreach ( $snippets as $snippet ) {
			$content .= wpcode()->execute->get_snippet_output( $snippet );
		}

		return $content;
	}

	/**
	 * Insert snippets before the content.
	 *
	 * @param string $content The post content.
	 *
	 * @return string
	 */
	public function insert_before_content( $content ) {
		$snippets        = $this->get_snippets_for_location( 'before_content' );
		$snippets_output = '';
		foreach ( $snippets as $snippet ) {
			$snippets_output .= wpcode()->execute->get_snippet_output( $snippet );
		}

		return $snippets_output . $content;
	}

	/**
	 * Insert content before or after paragraphs based on settings.
	 *
	 * @param string $content The post content.
	 *
	 * @return string
	 */
	public function insert_after_before_paragraph( $content ) {

		$snippets = $this->get_snippets_for_location( 'before_paragraph' );
		foreach ( $snippets as $snippet ) {
			$auto_insert_number = $snippet->get_auto_insert_number();
			$auto_insert_number = empty( $auto_insert_number ) ? 1 : absint( $auto_insert_number );
			$snippet_output     = wpcode()->execute->get_snippet_output( $snippet );
			$content            = $this->insert_between_paragraphs( $snippet_output, $auto_insert_number, $content, 'before' );
		}

		$snippets = $this->get_snippets_for_location( 'after_paragraph' );
		foreach ( $snippets as $snippet ) {
			$auto_insert_number = $snippet->get_auto_insert_number();
			$auto_insert_number = empty( $auto_insert_number ) ? 1 : absint( $auto_insert_number );
			$snippet_output     = wpcode()->execute->get_snippet_output( $snippet );
			$content            = $this->insert_between_paragraphs( $snippet_output, $auto_insert_number, $content, 'after' );
		}

		return $content;
	}


	/**
	 * Insert snippet code before or after paragraphs in a post.
	 *
	 * @param string $content_to_insert The content to insert (snippet code output).
	 * @param int    $p_number The paragraph number.
	 * @param string $content_to_add_to The content in which the content should be added.
	 * @param string $before_or_after Add it before or after the paragraph.
	 *
	 * @return string
	 */
	public function insert_between_paragraphs( $content_to_insert, $p_number, $content_to_add_to, $before_or_after = 'after' ) {
		if ( 'before' === $before_or_after ) {
			preg_match_all( '/<p(.*?)>/', $content_to_add_to, $matches );
		} else {
			preg_match_all( '/<\/p>/', $content_to_add_to, $matches );
		}
		$paragraphs = $matches[0];

		// We don't have enough paragraphs to add the snippet.
		if ( count( $paragraphs ) < $p_number ) {
			return $content_to_add_to;
		}

		$p_number = -- $p_number;
		$offset   = 0;
		foreach ( $paragraphs as $p_index => $p ) {
			$position = strpos( $content_to_add_to, $p, $offset );
			if ( $p_index === $p_number ) {
				if ( 'before' === $before_or_after ) {
					$content_to_add_to = substr( $content_to_add_to, 0, $position ) . $content_to_insert . substr( $content_to_add_to, $position );
				} else {
					$content_to_add_to = substr( $content_to_add_to, 0, $position + 4 ) . $content_to_insert . substr( $content_to_add_to, $position + 4 );
				}
				break;
			} else {
				$offset = $position + 1;
			}
		}

		return $content_to_add_to;
	}
}

new WPCode_Auto_Insert_Single();
PK     �‰U]þ©³    9  includes/auto-insert/class-wpcode-auto-insert-archive.phpnu „[µü¤        <?php
/**
 * Class to auto-insert snippets on archive pages, taxonomies, etc.
 *
 * @package wpcode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class WPCode_Auto_Insert_Archive.
 */
class WPCode_Auto_Insert_Archive extends WPCode_Auto_Insert_Type {
	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'archive';
	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category = 'page';

	/**
	 * Load the available options and labels.
	 *
	 * @return void
	 */
	public function init() {
		$this->locations = array(
			'before_excerpt'      => array(),
			'after_excerpt'       => array(),
			'between_posts'       => array(),
			'archive_before_post' => array(),
			'archive_after_post'  => array(),
		);
	}

	/**
	 * Load the label.
	 *
	 * @return void
	 */
	public function load_label() {
		$this->label = __( 'Categories, Archives, Tags, Taxonomies', 'insert-headers-and-footers' );
	}

	/**
	 * Load the available locations.
	 *
	 * @return void
	 */
	public function load_locations() {
		$this->locations = array(
			'before_excerpt'      => array(
				'label'       => __( 'Insert Before Excerpt', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet above post summary.', 'insert-headers-and-footers' ),
			),
			'after_excerpt'       => array(
				'label'       => __( 'Insert After Excerpt', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet below post summary.', 'insert-headers-and-footers' ),
			),
			'between_posts'       => array(
				'label'       => __( 'Between Posts', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet between multiple posts.', 'insert-headers-and-footers' ),
			),
			'archive_before_post' => array(
				'label'       => __( 'Before Post', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet at the beginning of a post.', 'insert-headers-and-footers' ),
			),
			'archive_after_post'  => array(
				'label'       => __( 'After Post', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet at the end of a post.', 'insert-headers-and-footers' ),
			),
		);
	}

	/**
	 * Checks if we are on an archive page and we should be executing hooks.
	 *
	 * @return bool
	 */
	public function conditions() {
		return is_archive() || is_home();
	}

	/**
	 * Add hooks specific to single posts.
	 *
	 * @return void
	 */
	public function hooks() {
		add_filter( 'the_excerpt', array( $this, 'insert_before_excerpt' ) );
		add_filter( 'the_excerpt', array( $this, 'insert_after_excerpt' ) );
		add_action( 'the_post', array( $this, 'insert_between_posts' ), 10, 2 );
		add_action( 'the_post', array( $this, 'insert_before_after_post' ), 10, 2 );
	}

	/**
	 * Output snippet before excerpt on archive pages.
	 *
	 * @param string $excerpt The excerpt text.
	 *
	 * @return string
	 */
	public function insert_before_excerpt( $excerpt ) {
		$snippets = $this->get_snippets_for_location( 'before_excerpt' );

		foreach ( $snippets as $snippet ) {
			$excerpt = wpcode()->execute->get_snippet_output( $snippet ) . $excerpt;
		}

		return $excerpt;
	}

	/**
	 * Output snippet after excerpt on archive pages.
	 *
	 * @param string $excerpt The excerpt text.
	 *
	 * @return string
	 */
	public function insert_after_excerpt( $excerpt ) {
		$snippets = $this->get_snippets_for_location( 'after_excerpt' );

		foreach ( $snippets as $snippet ) {
			$excerpt .= wpcode()->execute->get_snippet_output( $snippet );
		}

		return $excerpt;
	}

	/**
	 * Output snippets between posts in a list of posts.
	 *
	 * @param WP_Post  $post_data The post.
	 * @param WP_Query $query The query.
	 *
	 * @return void
	 */
	public function insert_between_posts( $post_data, $query ) {
		// If the query has at least two posts to display snippets between.
		if ( $query->post_count < 2 ) {
			return;
		}
		// If the current post is not the first one in the list.
		if ( $query->current_post < 1 ) {
			return;
		}
		// If the current post is not the last one in the list.
		if ( $query->post_count <= $query->current_post ) {
			return;
		}
		$this->output_location( 'between_posts' );
	}

	/**
	 * Output snippets before or after posts.
	 *
	 * @param WP_Post  $post_data The post.
	 * @param WP_Query $query The query.
	 *
	 * @return void
	 */
	public function insert_before_after_post( $post_data, $query ) {
		$snippets = $this->get_snippets_for_location( 'archive_before_post' );

		foreach ( $snippets as $snippet ) {
			$insert_number = $snippet->get_auto_insert_number();
			if ( $query->current_post === $insert_number - 1 ) {
				echo wpcode()->execute->get_snippet_output( $snippet ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			}
		}

		$snippets = $this->get_snippets_for_location( 'archive_after_post' );

		foreach ( $snippets as $snippet ) {
			$insert_number = $snippet->get_auto_insert_number();
			if ( $query->current_post === $insert_number ) {
				echo wpcode()->execute->get_snippet_output( $snippet ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			}
		}
	}
}

new WPCode_Auto_Insert_Archive();
PK     �‰U]}¦ˆÍ	  Í	  ;  includes/auto-insert/class-wpcode-auto-insert-site-wide.phpnu „[µü¤        <?php
/**
 * Class to auto-insert snippets site-wide.
 *
 * @package wpcode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class WPCode_Auto_Insert_Single.
 */
class WPCode_Auto_Insert_Site_Wide extends WPCode_Auto_Insert_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'site_wide';
	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category = 'global';

	/**
	 * Load the available options and labels.
	 *
	 * @return void
	 */
	public function init() {
		$this->locations = array(
			'site_wide_header' => array(),
			'site_wide_body'   => array(),
			'site_wide_footer' => array(),
		);
	}

	/**
	 * Load the label.
	 *
	 * @return void
	 */
	public function load_label() {
		$this->label = __( 'Site Wide (Frontend)', 'insert-headers-and-footers' );
	}

	/**
	 * Load the available locations.
	 *
	 * @return void
	 */
	public function load_locations() {
		$this->locations = array(
			'site_wide_header' => array(
				'label'       => esc_html__( 'Site Wide Header', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet between the head tags of your website on all pages.', 'insert-headers-and-footers' ),
			),
			'site_wide_body'   => array(
				'label'       => esc_html__( 'Site Wide Body', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert the snippet just after the opening body tag.', 'insert-headers-and-footers' ),
			),
			'site_wide_footer' => array(
				'label'       => esc_html__( 'Site Wide Footer', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert the snippet in the footer just before the closing body tag.', 'insert-headers-and-footers' ),
			),
		);
	}

	/**
	 * Add hooks specific to this type.
	 *
	 * @return void
	 */
	public function hooks() {
		add_action( 'wp_head', array( $this, 'insert_header' ) );
		add_action( 'wp_footer', array( $this, 'insert_footer' ) );
		add_action( 'wp_body_open', array( $this, 'insert_body' ) );
	}

	/**
	 * Insert snippets in the header.
	 *
	 * @return void
	 */
	public function insert_header() {
		$this->output_location( 'site_wide_header' );
	}

	/**
	 * Insert snippets in the footer.
	 *
	 * @return void
	 */
	public function insert_footer() {
		$this->output_location( 'site_wide_footer' );
	}

	/**
	 * Insert snippets after the opening body tag.
	 *
	 * @return void
	 */
	public function insert_body() {
		$this->output_location( 'site_wide_body' );
	}
}

new WPCode_Auto_Insert_Site_Wide();
PK     �‰U]x„º  º  <  includes/auto-insert/class-wpcode-auto-insert-everywhere.phpnu „[µü¤        <?php
/**
 * Class to auto-insert snippets site-wide.
 *
 * @package wpcode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class WPCode_Auto_Insert_Single.
 */
class WPCode_Auto_Insert_Everywhere extends WPCode_Auto_Insert_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'everywhere';

	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category = 'global';

	/**
	 * This should is only available for PHP scripts.
	 *
	 * @var string
	 */
	public $code_type = 'php';

	/**
	 * Load the available options and labels.
	 *
	 * @return void
	 */
	public function init() {
		$this->locations = array(
			'everywhere'    => array(),
			'frontend_only' => array(),
			'admin_only'    => array(),
			'frontend_cl'   => array(),
			'on_demand'     => array(),
		);
	}

	/**
	 * Load the label.
	 *
	 * @return void
	 */
	public function load_label() {
		$this->label = __( 'PHP Snippets Only', 'insert-headers-and-footers' );
	}

	/**
	 * Load the available locations.
	 *
	 * @return void
	 */
	public function load_locations() {
		$this->locations = array(
			'everywhere'    => array(
				'label'       => esc_html__( 'Run Everywhere', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Snippet gets executed everywhere on your website.', 'insert-headers-and-footers' ),
			),
			'frontend_only' => array(
				'label'       => esc_html__( 'Frontend Only', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Snippet gets executed only in the frontend of the website.', 'insert-headers-and-footers' ),
			),
			'admin_only'    => array(
				'label'       => esc_html__( 'Admin Only', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'The snippet only gets executed in the wp-admin area.', 'insert-headers-and-footers' ),
			),
			'frontend_cl'   => array(
				'label'       => esc_html__( 'Frontend Conditional Logic', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Ideal for running the snippet later with conditional logic rules in the frontend.', 'insert-headers-and-footers' ),
			),
			'on_demand'     => array(
				'label'       => esc_html__( 'On Demand', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Execute this snippet on demand or programmatically just when you need it.', 'insert-headers-and-footers' ),
			),
		);
	}

	/**
	 * Execute snippets.
	 *
	 * @return void
	 */
	public function run_snippets() {
		$snippets       = $this->get_snippets_for_location( 'everywhere' );
		$line_reference = array();
		$code           = array();
		$last_line      = 0;
		$last_snippet   = null;

		if ( is_admin() ) {
			$snippets = array_merge( $snippets, $this->get_snippets_for_location( 'admin_only' ) );
		}

		// Merge all the code into 1, so we can track on which line the error occurs, if any.
		foreach ( $snippets as $snippet ) {
			// Use the WPCode_Snippet_Execute_Type filters here for compatibility with class even thought we're skipping it for these particular locations.
			$snippet_code = apply_filters( 'wpcode_snippet_output_php', $snippet->get_code(), $snippet );
			$snippet_code = apply_filters( 'wpcode_snippet_output', $snippet_code, $snippet );
			// Let's see how many lines the code has.
			$lines = substr_count( $snippet_code, PHP_EOL );
			// Let's keep a record of the start and end line of each snippet.
			$last_line ++;
			$line_reference[ $snippet->get_id() ] = array(
				'start' => $last_line,
				'end'   => $last_line + $lines,
			);
			$last_line                            = $last_line + $lines;
			$code[]                               = $snippet_code;
			$last_snippet                         = $snippet;
		}
		if ( ! empty( $code ) ) {
			// Implode all the code and execute it.
			$code = implode( PHP_EOL, $code );
			// Execute the code.
			wpcode()->execute->safe_execute_php( $code, $last_snippet, $line_reference );
		}

		if ( ! is_admin() ) {
			$snippets = $this->get_snippets_for_location( 'frontend_only' );
			foreach ( $snippets as $snippet ) {
				wpcode()->execute->get_snippet_output( $snippet );
			}
		}
	}

	/**
	 * Execute snippets on the init hook to allow using more Conditional Logic options.
	 *
	 * @return void
	 */
	public function run_init_snippets() {
		$snippets = $this->get_snippets_for_location( 'frontend_cl' );
		foreach ( $snippets as $snippet ) {
			wpcode()->execute->get_snippet_output( $snippet );
		}
	}

	/**
	 * Override the default hook and short-circuit any other conditions
	 * checks as these snippets will run everywhere.
	 *
	 * @return void
	 */
	protected function add_start_hook() {
		add_action( 'plugins_loaded', array( $this, 'run_snippets' ), 5 );
		add_action( 'wp', array( $this, 'run_init_snippets' ) );
	}
}

new WPCode_Auto_Insert_Everywhere();
PK     �‰U]¿]t  t    includes/compat.phpnu „[µü¤        <?php

defined( 'ABSPATH' ) || exit;

if ( ! function_exists( 'str_contains' ) ) {
	/**
	 * Polyfill for str_contains() function added in PHP 8.0.
	 *
	 * @param string $haystack The string to search in.
	 * @param string $needle The substring to search for in the haystack.
	 *
	 * @return bool True if $needle is in $haystack, otherwise false.
	 */
	function str_contains( $haystack, $needle ) {
		return ( '' === $needle || false !== strpos( $haystack, $needle ) );
	}
}

if ( ! function_exists( 'wp_doing_ajax' ) ) {
	/**
	 * Determines whether the current request is a WordPress Ajax request.
	 *
	 * @return bool True if it's a WordPress Ajax request, false otherwise.
	 * @since 4.7.0
	 *
	 */
	function wp_doing_ajax() {
		/**
		 * Filters whether the current request is a WordPress Ajax request.
		 *
		 * @param bool $wp_doing_ajax Whether the current request is a WordPress Ajax request.
		 *
		 * @since 4.7.0
		 *
		 */
		return apply_filters( 'wp_doing_ajax', defined( 'DOING_AJAX' ) && DOING_AJAX );
	}
}

if ( ! function_exists( 'wp_doing_cron' ) ) {
	/**
	 * Determines whether the current request is a WordPress cron request.
	 *
	 * @return bool True if it's a WordPress cron request, false otherwise.
	 * @since 4.8.0
	 *
	 */
	function wp_doing_cron() {
		/**
		 * Filters whether the current request is a WordPress cron request.
		 *
		 * @param bool $wp_doing_cron Whether the current request is a WordPress cron request.
		 *
		 * @since 4.8.0
		 *
		 */
		return apply_filters( 'wp_doing_cron', defined( 'DOING_CRON' ) && DOING_CRON );
	}
}

if ( ! function_exists( 'sanitize_textarea_field' ) ) {
	/**
	 * Sanitizes a multiline string from user input or from the database.
	 *
	 * The function is like sanitize_text_field(), but preserves
	 * new lines (\n) and other whitespace, which are legitimate
	 * input in textarea elements.
	 *
	 * @param string $str String to sanitize.
	 *
	 * @return string Sanitized string.
	 * @see sanitize_text_field()
	 *
	 * @since 4.7.0
	 *
	 */
	function sanitize_textarea_field( $str ) {
		$filtered = _sanitize_text_fields( $str, true );

		/**
		 * Filters a sanitized textarea field string.
		 *
		 * @param string $filtered The sanitized string.
		 * @param string $str The string prior to being sanitized.
		 *
		 * @since 4.7.0
		 *
		 */
		return apply_filters( 'sanitize_textarea_field', $filtered, $str );
	}
}

if ( ! function_exists( '_sanitize_text_fields' ) ) {
	/**
	 * Internal helper function to sanitize a string from user input or from the database.
	 *
	 * @param string $str String to sanitize.
	 * @param bool   $keep_newlines Optional. Whether to keep newlines. Default: false.
	 *
	 * @return string Sanitized string.
	 * @since 4.7.0
	 * @access private
	 *
	 */
	function _sanitize_text_fields( $str, $keep_newlines = false ) {
		if ( is_object( $str ) || is_array( $str ) ) {
			return '';
		}

		$str = (string) $str;

		$filtered = wp_check_invalid_utf8( $str );

		if ( strpos( $filtered, '<' ) !== false ) {
			$filtered = wp_pre_kses_less_than( $filtered );
			// This will strip extra whitespace for us.
			$filtered = wp_strip_all_tags( $filtered, false );

			/*
			 * Use HTML entities in a special case to make sure that
			 * later newline stripping stages cannot lead to a functional tag.
			 */
			$filtered = str_replace( "<\n", "&lt;\n", $filtered );
		}

		if ( ! $keep_newlines ) {
			$filtered = preg_replace( '/[\r\n\t ]+/', ' ', $filtered );
		}
		$filtered = trim( $filtered );

		// Remove percent-encoded characters.
		$found = false;
		while ( preg_match( '/%[a-f0-9]{2}/i', $filtered, $match ) ) {
			$filtered = str_replace( $match[0], '', $filtered );
			$found    = true;
		}

		if ( $found ) {
			// Strip out the whitespace that may now exist after removing percent-encoded characters.
			$filtered = trim( preg_replace( '/ +/', ' ', $filtered ) );
		}

		return $filtered;
	}
}

add_filter( 'pto/posts_orderby/ignore', 'wpcode_exclude_post_types_order', 15, 3 );

/**
 * Exclude the wpcode post type from the Post Types Order plugin.
 *
 * @param bool     $ignore Whether to ignore the post type.
 * @param string   $order_by The order by param.
 * @param WP_Query $query The WP_Query instance.
 *
 * @return bool
 */
function wpcode_exclude_post_types_order( $ignore, $order_by, $query ) {
	if ( ! method_exists( $query, 'get' ) ) {
		return $ignore;
	}

	if ( 'wpcode' === $query->get( 'post_type' ) ) {
		$ignore = true;
	}

	return $ignore;
}
PK     �‰U]>/–a'  '  "  includes/class-wpcode-settings.phpnu „[µü¤        <?php
/**
 * Handles all the WPCode settings.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Settings.
 */
class WPCode_Settings {

	/**
	 * The key used for storing settings in the db.
	 *
	 * @var string
	 */
	protected $settings_key = 'wpcode_settings';

	/**
	 * Options as they are loaded from the db.
	 *
	 * @var array
	 * @see WPCode_Settings::get_options
	 */
	protected $options;

	/**
	 * Get an option by name with an optional default value.
	 *
	 * @param string $option_name The option name.
	 * @param mixed  $default The default value (optional).
	 *
	 * @return mixed
	 * @see get_option
	 */
	public function get_option( $option_name, $default = false ) {
		$options = $this->get_options();
		$value   = $default;
		if ( isset( $options[ $option_name ] ) ) {
			$value = $options[ $option_name ];
		}

		$value = apply_filters( 'wpcode_get_option', $value, $option_name );

		return apply_filters( "wpcode_get_option_{$option_name}", $value, $option_name );
	}

	/**
	 * Get all the options as they are stored in the db.
	 *
	 * @return array
	 */
	public function get_options() {
		if ( ! isset( $this->options ) ) {
			$this->options = $this->load_options();
		}

		return $this->options;
	}

	/**
	 * Load the options from the db.
	 *
	 * @return array
	 */
	protected function load_options() {
		return get_option(
			$this->settings_key,
			array(
				'facebook_pixel_events'  => array(
					'page_view'      => 1,
					'add_to_cart'    => 1,
					'view_content'   => 1,
					'begin_checkout' => 1,
					'purchase'       => 1,
				),
				'google_pixel_events'    => array(
					'page_view'      => 1,
					'add_to_cart'    => 1,
					'view_item'      => 1,
					'begin_checkout' => 1,
					'purchase'       => 1,
					'conversion'     => 1,
				),
				'pinterest_pixel_events' => array(
					'pagevisit_product' => 1,
					'begin_checkout'    => 1,
					'add_to_cart'       => 1,
					'purchase'          => 1,
				),
				'tiktok_pixel_events'    => array(
					'view_content'   => 1,
					'add_to_cart'    => 1,
					'begin_checkout' => 1,
					'purchase'       => 1,
				),
			)
		);
	}

	/**
	 * Update an option in the settings object.
	 *
	 * @param string $option The option name.
	 * @param mixed  $value The new value.
	 *
	 * @return void
	 */
	public function update_option( $option, $value ) {
		if ( empty( $value ) ) {
			$this->delete_option( $option );

			return;
		}
		if ( isset( $this->options[ $option ] ) && $this->options[ $option ] === $value ) {
			return;
		}
		$this->options[ $option ] = $value;

		$this->save_options();
	}

	/**
	 * Delete an option by its name.
	 *
	 * @param string $option The option name.
	 *
	 * @return void
	 */
	public function delete_option( $option ) {
		// If there's nothing to delete, do nothing.
		if ( isset( $this->options[ $option ] ) ) {
			unset( $this->options[ $option ] );
			$this->save_options();
		}
	}

	/**
	 * Save the current options object to the db.
	 *
	 * @return void
	 */
	protected function save_options() {
		update_option( $this->settings_key, (array) $this->options );
	}

	/**
	 * Use an array to update multiple settings at once.
	 *
	 * @param array $options The new options array.
	 *
	 * @return void
	 */
	public function bulk_update_options( $options ) {
		$this->options = array_merge( $this->get_options(), $options );

		$this->save_options();
	}
}
PK     �‰U]*>–5[  [  #  includes/class-wpcode-generator.phpnu „[µü¤        <?php
/**
 * Load all generator types and expose them to the admin.
 *
 * @package WPCode
 */

/**
 * The WPCode_Generator class.
 */
class WPCode_Generator {

	/**
	 * The type of generators available.
	 *
	 * @var array
	 */
	public $types = array();

	/**
	 * The available categories.
	 *
	 * @var array
	 */
	public $categories;

	/**
	 * Constructor.
	 */
	public function __construct() {
		$this->load_types();
	}

	/**
	 * Require and load all the generators.
	 *
	 * @return void
	 */
	public function load_types() {
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-type.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-post-status.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-post-type.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-admin-bar.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-contact-methods.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-taxonomy.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-script.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-style.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-hooks.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-cronjob.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-menu.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-sidebar.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-query.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-widget.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-base.php';

		// Schema generators.
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-article.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-book.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-car.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-course.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-dataset.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-event.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-faq.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-fact-check.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-how-to.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-job-posting.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-movie.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-music.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-person.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-product.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-product-review.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-recipe.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-service.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-software.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/generator/class-wpcode-generator-schema-video.php';

		$generators = array(
			'WPCode_Generator_Admin_Bar',
			'WPCode_Generator_Contact_Methods',
			'WPCode_Generator_Cronjob',
			'WPCode_Generator_Hooks',
			'WPCode_Generator_Menu',
			'WPCode_Generator_Post_Status',
			'WPCode_Generator_Post_Type',
			'WPCode_Generator_Script',
			'WPCode_Generator_Sidebar',
			'WPCode_Generator_Style',
			'WPCode_Generator_Taxonomy',
			'WPCode_Generator_Widget',
			'WPCode_Generator_Query',
			'WPCode_Generator_Schema',
			// Schema generators.
			'WPCode_Generator_Schema_Article',
			'WPCode_Generator_Schema_Book',
			'WPCode_Generator_Schema_Car',
			'WPCode_Generator_Schema_Course',
			'WPCode_Generator_Schema_Dataset',
			'WPCode_Generator_Schema_Event',
			'WPCode_Generator_Schema_FAQ',
			'WPCode_Generator_Schema_Fact_Check',
			'WPCode_Generator_Schema_How_To',
			'WPCode_Generator_Schema_Job_Posting',
			'WPCode_Generator_Schema_Movie',
			'WPCode_Generator_Schema_Music',
			'WPCode_Generator_Schema_Person',
			'WPCode_Generator_Schema_Product',
			'WPCode_Generator_Schema_Product_Review',
			'WPCode_Generator_Schema_Recipe',
			'WPCode_Generator_Schema_Service',
			'WPCode_Generator_Schema_Software',
			'WPCode_Generator_Schema_Video',
		);

		foreach ( $generators as $generator_class ) {
			if ( ! class_exists( $generator_class ) ) {
				continue;
			}
			$instance = new $generator_class();

			$this->types[ $instance->name ] = $instance;
		}
		// Sort by displayed title.
		uasort(
			$this->types,
			function ( $a, $b ) {
				return strcmp( $a->title, $b->title );
			}
		);
	}

	/**
	 * Load all the categories with their labels.
	 *
	 * @return void
	 */
	private function load_categories() {
		$categories       = array(
			'admin'   => __( 'Admin', 'insert-headers-and-footers' ),
			'content' => __( 'Content', 'insert-headers-and-footers' ),
			'core'    => __( 'Core', 'insert-headers-and-footers' ),
			'design'  => __( 'Design', 'insert-headers-and-footers' ),
			'query'   => __( 'Query', 'insert-headers-and-footers' ),
			'schema'  => __( 'Schema', 'insert-headers-and-footers' ),
		);
		$this->categories = array();
		foreach ( $categories as $slug => $name ) {
			$this->categories[] = array(
				'slug' => $slug,
				'name' => $name,
			);
		}
	}

	/**
	 * Get categories.
	 *
	 * @return array
	 */
	public function get_categories() {
		if ( ! isset( $this->categories ) ) {
			$this->load_categories();
		}

		return $this->categories;
	}

	/**
	 * Get all the generator instances.
	 *
	 * @return WPCode_Generator_Type[]
	 */
	public function get_all_generators() {
		return $this->types;
	}

	/**
	 * Get a generator by its name. If not found it returns false.
	 *
	 * @param string $name The name of the generator.
	 *
	 * @return WPCode_Generator_Type|false
	 */
	public function get_type( $name ) {
		$types = $this->get_all_generators();

		return isset( $types[ $name ] ) ? $types[ $name ] : false;
	}
}
PK     �‰U]]¤%î  î  +  includes/class-wpcode-conditional-logic.phpnu „[µü¤        <?php
/**
 * Handle logic for the conditional loading of snippets.
 * You'll find here the available logic options and how they apply to snippets.
 *
 * @package WPCode
 */

/**
 * The main conditional logic class that loads all the types.
 */
class WPCode_Conditional_Logic {

	/**
	 * Types of conditional logic.
	 *
	 * @var WPCode_Conditional_Type[]
	 */
	private $types = array();

	/**
	 * Constructor.
	 */
	public function __construct() {
		add_action( 'plugins_loaded', array( $this, 'load_types' ), 0 );
	}

	/**
	 * Load the different conditional logic types.
	 *
	 * @return void
	 */
	public function load_types() {
		require_once WPCODE_PLUGIN_PATH . 'includes/conditional-logic/class-wpcode-conditional-type.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/conditional-logic/class-wpcode-conditional-user.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/conditional-logic/class-wpcode-conditional-page.php';
	}

	/**
	 * Register an auto-insert type.
	 *
	 * @param WPCode_Conditional_Type $type The type to add to the available types.
	 *
	 * @return void
	 */
	public function register_type( $type ) {
		$this->types[ $type->name ] = $type;
	}

	/**
	 * Get all the admin options for the conditional logic form.
	 *
	 * @param bool $for_js Whether to return the options for JS or not.
	 *
	 * @return array
	 */
	public function get_all_admin_options( $for_js = false ) {
		$options = array();
		foreach ( $this->types as $type ) {
			$type->load_type_options(); // Reload the options in case a global snippet made them get loaded before some post types were registered, for example.
			$options[ $type->get_name() ] = array(
				'label'    => $type->get_label(),
				'name'     => $type->get_name(),
				'category' => $type->get_category(),
				'options'  => $type->get_type_options(),
			);
		}

		// Sort options so the unavailable ones are at the end.
		$available_options   = array();
		$unavailable_options = array();
		foreach ( $options as $key => $option ) {
			if ( empty( $option['options'] ) ) {
				continue;
			}
			$first_option = reset( $option['options'] );
			if ( ! empty( $first_option['upgrade'] ) ) {
				$unavailable_options[ $key ] = $option;
			} else {
				$available_options[ $key ] = $option;
			}
		}

		// For the user logged_in option let's run esc_attr on the option values to save the values correctly.
		if ( $for_js && isset( $available_options['user']['options']['logged_in']['options'] ) ) {
			foreach ( $available_options['user']['options']['logged_in']['options'] as $key => $option ) {
				$available_options['user']['options']['logged_in']['options'][ $key ]['value'] = esc_attr( $option['value'] );
			}
		}

		return apply_filters( 'wpcode_conditional_logic_admin_options', array_merge( $available_options, $unavailable_options ) );
	}

	/**
	 * Goes through a list of snippets and filters out the ones
	 * that don't match the conditional logic rules.
	 *
	 * @param WPCode_Snippet[] $snippets An array of snippets.
	 *
	 * @return WPCode_Snippet[]
	 */
	public function check_snippets_conditions( $snippets ) {
		// If there's nothing to evaluate just return an empty array.
		if ( empty( $snippets ) ) {
			return array();
		}

		$filtered_snippets = array();
		foreach ( $snippets as $snippet ) {
			if ( ! $snippet->conditional_rules_enabled() ) {
				// If rules are disabled, ignore.
				$filtered_snippets[] = $snippet;
				continue;
			}
			$rules = $snippet->get_conditional_rules();
			if ( ! isset( $rules['show'] ) ) {
				continue;
			}
			$show          = 'show' === $rules['show'];
			$rules_are_met = $this->are_snippet_rules_met( $snippet );
			if ( $show && ! $rules_are_met ) {
				// If we should show based on conditions, and conditions
				// are not met, skip.
				continue;
			}
			if ( ! $show && $rules_are_met ) {
				// If we should hide based on conditions, and conditions
				// are met, skip.
				continue;
			}

			$filtered_snippets[] = $snippet;
		}

		return $filtered_snippets;
	}

	/**
	 * Takes a snippet and evaluates if conditional logic rules
	 * are met.
	 *
	 * @param WPCode_Snippet $snippet The snippet instance.
	 *
	 * @return bool
	 */
	public function are_snippet_rules_met( $snippet ) {
		$rules = $snippet->get_conditional_rules();
		if ( empty( $rules ) || ! is_array( $rules ) || empty( $rules['groups'] ) ) {
			return true;
		}

		// Go through all rule groups.
		foreach ( $rules['groups'] as $rule_group ) {
			// If any of the groups are met return true.
			if ( $this->are_group_rules_met( $rule_group, $snippet ) ) {
				return true;
			}
		}

		// If no group rules satisfy the conditions, return false.
		return false;
	}

	/**
	 * Evaluate all the rows of rules in a group.
	 *
	 * @param array          $rule_group An array of rows.
	 * @param WPCode_Snippet $snippet The snippet we are evaluating the rules for.
	 *
	 * @return bool
	 */
	public function are_group_rules_met( $rule_group, $snippet ) {
		foreach ( $rule_group as $rule_row ) {
			if ( ! isset( $rule_row['type'] ) || ! isset( $this->types[ $rule_row['type'] ] ) ) {
				continue;
			}
			$rule_type = $this->types[ $rule_row['type'] ];
			if ( ! $rule_type->evaluate_rule_row( $rule_row, $snippet ) ) {
				// If this row doesn't match, the whole group fails.
				return false;
			}
		}

		// If none of the rows failed the group matches.
		return true;
	}
}
PK     �‰U]L’$2  2    includes/class-wpcode-error.phpnu „[µü¤        <?php
/**
 * This class handles PHP errors, keeping tabs of errors thrown
 * and the messages displayed back to the user.
 *
 * @package wpcode
 */

/**
 * WPCode_Error class.
 */
class WPCode_Error {

	/**
	 * An array of errors already caught.
	 *
	 * @var array
	 */
	private $errors = array();

	/**
	 * The error count.
	 *
	 * @var int
	 */
	private $error_count;

	/**
	 * The snippets that have errors.
	 *
	 * @var int[]
	 */
	private $snippets_with_errors;

	/**
	 * The previous exception handler.
	 *
	 * @var callable
	 */
	private $previous_exception_handler;

	/**
	 * WPCode_Error constructor.
	 */
	public function __construct() {
		// When the admin is loaded let's check if there were any errors recorded.
		add_action( 'admin_init', array( $this, 'gather_errors' ) );

		$this->previous_exception_handler = set_exception_handler( array( $this, 'track_errors' ) );
	}

	/**
	 * The error object caught when running the code.
	 *
	 * @param ParseError|Exception|Error|array $error The caught error.
	 *
	 * @return void
	 */
	public function add_error( $error ) {
		$this->errors[] = $error;
		$this->write_error_to_log( $error );
	}

	/**
	 * Check if an error has been recorded.
	 *
	 * @return bool
	 */
	public function has_error() {
		return ! empty( $this->errors );
	}

	/**
	 * Empty the errors record, useful if you want to
	 * make sure the last error was thrown by your code.
	 *
	 * @return void
	 */
	public function clear_errors() {
		$this->errors = array();
	}

	/**
	 * Store the error in the logs.
	 *
	 * @param array|Exception $error The error object.
	 *
	 * @return void
	 */
	private function write_error_to_log( $error ) {
		$handle = 'error';
		if ( is_array( $error ) && isset( $error['snippet'] ) ) {
			$this->track_snippet_error( $error );
		}

		wpcode()->logger->handle( time(), $this->get_error_message( $error ), $handle );
	}

	/**
	 * Log the error in the snippet specific log and mark the snippet as having an error.
	 *
	 * @param array $error The error object.
	 *
	 * @return void
	 */
	private function track_snippet_error( $error ) {
		if ( ! isset( $error['snippet'] ) ) {
			return;
		}
		if ( is_int( $error['snippet'] ) ) {
			$snippet = new WPCode_Snippet( absint( $error['snippet'] ) );
		} else {
			$snippet = $error['snippet'];
		}
		// Let's see if the snippet is currently marked as having an error.
		if ( ! isset( $snippet->id ) ) {
			return;
		}
		if ( empty( $error['wpc_type'] ) ) {
			$error['wpc_type'] = 'error';
		}
		$last_error = $snippet->get_last_error();
		// If we already have an error and the type of the current error is not deactivated let's not log it.
		if ( ! empty( $last_error ) && 'deactivated' === $last_error['wpc_type'] || ! empty( $last_error ) && $last_error['wpc_type'] === $error['wpc_type'] ) {
			return;
		}

		if ( ! isset( $error['time'] ) ) {
			$error['time'] = time();
		}

		$handle = 'snippet-' . $snippet->get_id();

		// Log to snippet specific log.
		wpcode()->logger->handle( time(), $this->get_error_message( $error ), $handle );
		// Store the error details in the snippet meta.
		$snippet->set_last_error( $error );

		do_action( 'wpcode_snippet_error_tracked', $error, $snippet );

		// Reset the error count.
		$this->clear_snippets_errors();
	}

	/**
	 * Get the last error message.
	 *
	 * @return string
	 */
	public function get_last_error_message() {
		if ( empty( $this->errors ) ) {
			return '';
		}
		$last_error = end( $this->errors );

		return $this->get_error_message( $last_error );
	}

	/**
	 * Get the error message from the error object, either an array or an Exception object.
	 *
	 * @param array|Exception $error The error object.
	 *
	 * @return string
	 */
	public function get_error_message( $error ) {
		if ( is_array( $error ) && isset( $error['message'] ) ) {
			return $error['message'];
		}

		if ( ! is_array( $error ) && method_exists( $error, 'getMessage' ) ) {
			return $error->getMessage();
		}

		return '';
	}

	/**
	 * Get the short version of the error message without the file and line number.
	 *
	 * @param string $message The error message.
	 *
	 * @return string
	 */
	public function get_error_message_short( $message ) {
		$pattern = '/^([^:]+: .+?) in/';

		if ( preg_match( $pattern, $message, $matches ) ) {
			$message = $matches[1];
		}

		return $message;
	}

	/**
	 * Set the error count.
	 *
	 * @param int $count The error count.
	 *
	 * @return void
	 */
	private function set_error_count( $count ) {
		$this->error_count = $count;
	}

	/**
	 * Set the snippets that have errors.
	 *
	 * @param int[] $snippets Ids of the snippets with errors.
	 *
	 * @return void
	 */
	private function set_snippets_with_errors( $snippets ) {
		update_option( 'wpcode_snippets_errors', $snippets );
	}

	/**
	 * Clear the persistent error count.
	 *
	 * @return void
	 */
	public function clear_snippets_errors() {
		unset( $this->error_count );
		delete_option( 'wpcode_snippets_errors' );
		$this->snippets_with_errors = false;
		$this->gather_errors();
	}

	/**
	 * Get the error count.
	 *
	 * @return int
	 */
	public function get_error_count() {
		if ( ! isset( $this->error_count ) ) {
			$snippets_with_errors = $this->get_snippets_with_errors();
			$this->error_count    = is_array( $snippets_with_errors ) ? count( $snippets_with_errors ) : 0;
		}

		return $this->error_count;
	}

	/**
	 * Get the snippets that have errors.
	 *
	 * @return int[]
	 */
	public function get_snippets_with_errors() {
		if ( ! isset( $this->snippets_with_errors ) ) {
			$this->snippets_with_errors = get_option( 'wpcode_snippets_errors' );
		}

		return $this->snippets_with_errors;
	}

	/**
	 * Let's query all the snippets that have an error set to them.
	 *
	 * @return void
	 */
	public function gather_errors() {

		// If we already have an error count, no need to query the db.
		if ( false !== $this->get_snippets_with_errors() ) {
			return;
		}

		$snippets = get_posts(
			array(
				'post_type'      => 'wpcode',
				'posts_per_page' => - 1,
				'post_status'    => 'any',
				'meta_query'     => array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
					'relation' => 'OR',
					array(
						'key'     => '_wpcode_last_error',
						'compare' => 'EXISTS',
					),
				),
				'fields'         => 'ids',
			)
		);

		$this->set_snippets_with_errors( $snippets );
		$this->set_error_count( count( $snippets ) );
	}

	/**
	 * Track errors thrown by PHP.
	 *
	 * @param Throwable $e The error or exception object.
	 *
	 * @return void
	 */
	public function track_errors( $e ) {
		$error = array(
			'line'    => $e->getLine(),
			'file'    => $e->getFile(),
			'message' => $e->getMessage(),
			'type'    => 'error',
		);

		if ( wpcode()->execute->is_error_from_wpcode( $error ) && ! empty( $error['line'] ) ) {
			$snippet = wpcode()->execute->snippet_executed;
			if ( ! empty( $snippet ) && ! wpcode()->execute->snippet_location_disable( $snippet ) ) {
				$error['snippet']    = $snippet;
				$error['error_line'] = $error['line'];
				// Let's try to determine on which page we are and potentially save that URL in the error details.
				global $wp;
				if ( isset( $wp->request ) ) {
					$error['url'] = home_url( $wp->request );
				}

				wpcode()->error->add_error( $error );
			}
		}

		$this->call_previous_exception_handler( $e );
	}

	/**
	 * Call the previous exception handler.
	 *
	 * @param Throwable $e The error or exception object.
	 *
	 * @return void
	 * @throws Throwable The error or exception object.
	 */
	private function call_previous_exception_handler( $e ) {
		if ( isset( $this->previous_exception_handler ) ) {
			call_user_func( $this->previous_exception_handler, $e );
		} else {
			throw $e;
		}

		exit();
	}
}
PK     �‰U]™Ø¡n®  ®  &  includes/class-wpcode-library-auth.phpnu „[µü¤        <?php
/**
 * Class for handling the WPCode library authentication.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Library_Auth.
 */
class WPCode_Library_Auth {
	/**
	 * The base api URL.
	 *
	 * @var string
	 */
	public $library_url = 'https://library.wpcode.com';

	/**
	 * Is the current plugin authenticated with the WPCode Library?
	 *
	 * @var bool
	 */
	private $has_auth;

	/**
	 * The api key used for authenticated requests to the library.
	 *
	 * @var string
	 */
	private $auth_key;

	/**
	 * The auth data from the db.
	 *
	 * @var array
	 */
	private $auth_data;

	/**
	 * Library auth constructor.
	 */
	public function __construct() {
		add_action( 'wp_ajax_wpcode_library_store_auth', array( $this, 'store_auth_key' ) );
		add_action( 'wp_ajax_wpcode_library_delete_auth', array( $this, 'delete_auth' ) );
	}

	/**
	 * Ajax handler that returns the auth url used to start the Connect process.
	 *
	 * @return string
	 */
	public function auth_url() {

		if ( $this->has_auth() ) {
			return '';
		}

		$site_name = get_bloginfo( 'name' );
		if ( empty( $site_name ) ) {
			$site_name = __( 'Your WordPress Site', 'insert-headers-and-footers' );
		}

		// This is needed, so we don't run into issues with special characters.
		// Base64 encode without padding for better compatibility between PHP versions.
		$site_name = rtrim( strtr( base64_encode( $site_name ), '+/', '-_' ), '=' );
		$ajax_url  = rtrim( strtr( base64_encode( admin_url( 'admin-ajax.php' ) ), '+/', '-_' ), '=' );

		$auth_url = add_query_arg(
			array(
				'site'    => $site_name,
				'version' => WPCODE_VERSION,
				'ajax'    => $ajax_url,
			),
			$this->get_api_url( 'connect' )
		);

		return $auth_url;
	}

	/**
	 * Get the full URL to an API endpoint by passing the path.
	 *
	 * @param string $path The path for the API endpoint.
	 *
	 * @return string
	 */
	public function get_api_url( $path ) {
		return trailingslashit( $this->library_url ) . 'api/' . $path;
	}

	/**
	 * Ajax handler to save the auth API key.
	 *
	 * @return void
	 */
	public function store_auth_key() {
		check_ajax_referer( 'wpcode_admin' );

		if ( ! current_user_can( 'wpcode_activate_snippets' ) ) {
			wp_send_json_error( esc_html__( 'You do not have permissions to connect WPCode to the library.', 'insert-headers-and-footers' ) );
		}

		$key               = ! empty( $_POST['key'] ) ? sanitize_key( $_POST['key'] ) : false;
		$username          = ! empty( $_POST['username'] ) ? sanitize_user( wp_unslash( $_POST['username'] ) ) : false;
		$origin            = ! empty( $_POST['origin'] ) ? esc_url_raw( wp_unslash( $_POST['origin'] ) ) : false;
		$deploy_snippet_id = ! empty( $_POST['deploy_snippet_id'] ) ? sanitize_key( $_POST['deploy_snippet_id'] ) : false;
		$webhook_secret    = ! empty( $_POST['webhook_secret'] ) ? sanitize_key( $_POST['webhook_secret'] ) : '';
		$client_id         = ! empty( $_POST['client_id'] ) ? sanitize_key( $_POST['client_id'] ) : false;

		if ( ! $key || $this->library_url !== $origin ) {
			wp_send_json_error();
		}

		$this->save_auth_data( $key, $username, $webhook_secret, $client_id );

		if ( ! empty( $deploy_snippet_id ) ) {
			// If we have a snippet id from the deployment process, set that as a transient to show a notice, so they can pick up where they started.
			set_transient( 'wpcode_deploy_snippet_id', $deploy_snippet_id, HOUR_IN_SECONDS );
		}

		// Reset the auth data.
		unset( $this->auth_data );
		unset( $this->auth_key );
		unset( $this->has_auth );

		do_action( 'wpcode_library_api_auth_connected' );

		wp_send_json_success(
			array(
				'title' => __( 'Authentication successfully completed', 'insert-headers-and-footers' ),
				'text'  => __( 'Reloading page, please wait.', 'insert-headers-and-footers' ),
			)
		);
	}

	/**
	 * Save the auth data to the db.
	 *
	 * @param string $key The auth key.
	 * @param string $username The username.
	 * @param string $webhook_secret The webhook secret.
	 * @param string $client_id The client id.
	 *
	 * @return void
	 */
	public function save_auth_data( $key, $username, $webhook_secret, $client_id ) {
		// Don't autoload this as we'll only need it on some pages and in specific requests.
		update_option(
			'wpcode_library_api_auth',
			array(
				'key'            => $key,
				'username'       => $username,
				'webhook_secret' => $webhook_secret,
				'client_id'      => $client_id,
				'connected_at'   => time(),
			),
			false
		);
	}

	/**
	 * Ajax handler to delete the auth data and disconnect the site from the WPCode Library.
	 *
	 * @return void
	 */
	public function delete_auth() {
		check_ajax_referer( 'wpcode_admin' );

		if ( ! current_user_can( 'wpcode_activate_snippets' ) ) {
			wp_send_json_error( esc_html__( 'You do not have permissions to connect WPCode to the library.', 'insert-headers-and-footers' ) );
		}

		if ( $this->delete_auth_data() ) {
			do_action( 'wpcode_library_api_auth_deleted' );
			wp_send_json_success();
		}

		wp_send_json_error();
	}

	/**
	 * Delete the auth data from the db.
	 *
	 * @return bool
	 */
	public function delete_auth_data() {
		return delete_option( 'wpcode_library_api_auth' );
	}

	/**
	 * Check if the site is authenticated.
	 *
	 * @return bool
	 */
	public function has_auth() {
		if ( ! isset( $this->has_auth ) ) {
			$auth_key = $this->get_auth_key();

			$this->has_auth = ! empty( $auth_key );
		}

		return $this->has_auth;
	}

	/**
	 * The auth key.
	 *
	 * @return bool|string
	 */
	public function get_auth_key() {
		if ( ! isset( $this->auth_key ) ) {
			$data           = $this->get_auth_data();
			$this->auth_key = isset( $data['key'] ) ? $data['key'] : false;
		}

		return $this->auth_key;
	}

	/**
	 * The webhook secret.
	 *
	 * @return bool|string
	 */
	public function get_webhook_secret() {
		$data = $this->get_auth_data();

		return isset( $data['webhook_secret'] ) ? $data['webhook_secret'] : false;
	}

	/**
	 * The client id.
	 *
	 * @return bool|string
	 */
	public function get_client_id() {
		$data = $this->get_auth_data();

		return isset( $data['client_id'] ) ? $data['client_id'] : false;
	}

	/**
	 * Get the auth data from the db.
	 *
	 * @return array|bool
	 */
	public function get_auth_data() {
		if ( ! isset( $this->auth_data ) ) {
			$this->auth_data = $this->load_auth_data();
		}

		return $this->auth_data;
	}

	/**
	 * Get the auth data from the db.
	 *
	 * @return array|bool
	 */
	public function load_auth_data() {
		return get_option( 'wpcode_library_api_auth', false );
	}

	/**
	 * The auth username.
	 *
	 * @return bool|string
	 */
	public function get_auth_username() {
		$data = $this->get_auth_data();

		return isset( $data['username'] ) ? $data['username'] : false;
	}

	/**
	 * Use the API key saved in the db to sign a value, used for authenticating requests from the library to the plugin.
	 *
	 * @param string $string The string to sign.
	 *
	 * @return string
	 */
	public function sign( $string ) {
		$api_key = $this->get_webhook_secret();

		if ( empty( $api_key ) ) {
			return false;
		}

		return hash_hmac( 'sha256', (string) $string, $api_key );
	}
}
PK     �‰U]R¿·ÖQ  ÖQ  )  includes/class-wpcode-snippet-execute.phpnu „[µü¤        <?php
/**
 * Global class used to execute code across the plugin.
 *
 * @package WPCode
 */

/**
 * WPCode_Snippet_Execute class.
 */
class WPCode_Snippet_Execute {

	/**
	 * Simply mark this as true when activating a snippet
	 * to display the proper custom error message.
	 *
	 * @var bool
	 */
	private $doing_activation = false;

	/**
	 *  The type of executors.
	 *
	 * @var array
	 */
	public $types;

	/**
	 * The snippet types info with labels and descriptions.
	 *
	 * @var array
	 */
	public $types_labels;

	/**
	 * The snippet executed right now, for error handling.
	 *
	 * @var WPCode_Snippet
	 */
	public $snippet_executed;
	/**
	 * Store snippet types by id for already looked-up snippets
	 * to reduce the number of queries.
	 *
	 * @var array
	 */
	private $snippet_types = array();

	/**
	 * Store the line reference for each snippet.
	 *
	 * @var array
	 */
	private $line_reference = array();

	/**
	 * Constructor.
	 */
	public function __construct() {
		$this->add_error_handling();
		$this->load_types();
	}

	/**
	 * Register custom error handling functions.
	 *
	 * @return void
	 */
	public function add_error_handling() {
		// Register our custom error catcher.
		register_shutdown_function( array( $this, 'maybe_disable_snippet' ) );
		// Customize WP error message.
		add_filter( 'wp_php_error_message', array( $this, 'custom_error_message' ), 15, 2 );
		add_filter( 'wpcode_snippet_output_php', array( $this, 'dont_load_edited_snippet' ), 10, 2 );
	}

	/**
	 * Load the classes and options available for executing code.
	 *
	 * @return void
	 */
	public function load_types() {
		require_once WPCODE_PLUGIN_PATH . 'includes/execute/class-wpcode-snippet-execute-type.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/execute/class-wpcode-snippet-execute-html.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/execute/class-wpcode-snippet-execute-text.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/execute/class-wpcode-snippet-execute-js.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/execute/class-wpcode-snippet-execute-php.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/execute/class-wpcode-snippet-execute-universal.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/execute/class-wpcode-snippet-execute-css.php';

		$this->types = array(
			'html'      => array(
				'class' => 'WPCode_Snippet_Execute_HTML',
			),
			'text'      => array(
				'class' => 'WPCode_Snippet_Execute_Text',
			),
			'blocks'    => array(
				'class'  => 'WPCode_Snippet_Execute_Blocks',
				'is_pro' => true,
			),
			'css'       => array(
				'class' => 'WPCode_Snippet_Execute_CSS',
			),
			'scss'      => array(
				'class'  => 'WPCode_Snippet_Execute_SCSS',
				'is_pro' => true,
			),
			'js'        => array(
				'class' => 'WPCode_Snippet_Execute_JS',
			),
			'php'       => array(
				'class' => 'WPCode_Snippet_Execute_PHP',
			),
			'universal' => array(
				'class' => 'WPCode_Snippet_Execute_Universal',
			),
		);
	}

	/**
	 * Load the snippet types on demand.
	 *
	 * @return void
	 */
	public function load_snippet_types_on_demand() {
		$this->types = array(
			'html'      => array(
				'class'        => 'WPCode_Snippet_Execute_HTML',
				'filter_label' => 'HTML',
				'label'        => __( 'HTML Snippet', 'insert-headers-and-footers' ),
				'description'  => __( 'Easily insert scripts from other sites or build custom elements using HTML.', 'insert-headers-and-footers' ),
				// Don't want to instantiate the class until it's needed and we need this to be translatable.
			),
			'text'      => array(
				'class'        => 'WPCode_Snippet_Execute_Text',
				'filter_label' => 'Text',
				'label'        => __( 'Text Snippet', 'insert-headers-and-footers' ),
				'description'  => __( 'Create reusable text snippets that you can visually format in a familiar editor.', 'insert-headers-and-footers' ),
			),
			'blocks'    => array(
				'class'        => 'WPCode_Snippet_Execute_Blocks',
				'filter_label' => 'Blocks',
				'label'        => __( 'Blocks Snippet (PRO)', 'insert-headers-and-footers' ),
				'is_pro'       => true,
				'description'  => __( 'Use the Block Editor to create components that you can insert anywhere in your site.', 'insert-headers-and-footers' ),
			),
			'css'       => array(
				'class'        => 'WPCode_Snippet_Execute_CSS',
				'filter_label' => 'CSS',
				'label'        => __( 'CSS Snippet', 'insert-headers-and-footers' ),
				'description'  => __( 'Write CSS styles directly in WPCode and easily customize how your website looks.', 'insert-headers-and-footers' ),
			),
			'scss'      => array(
				'class'        => 'WPCode_Snippet_Execute_SCSS',
				'filter_label' => 'SCSS',
				'label'        => __( 'SCSS Snippet (PRO)', 'insert-headers-and-footers' ),
				'is_pro'       => true,
				'description'  => __( 'Write SCSS styles directly in WPCode and easily customize how your website looks.', 'insert-headers-and-footers' ),
			),
			'js'        => array(
				'class'        => 'WPCode_Snippet_Execute_JS',
				'filter_label' => 'JavaScript',
				'label'        => __( 'JavaScript Snippet', 'insert-headers-and-footers' ),
				'description'  => __( 'Add custom JavaScript code to your site to add interactivity or integrate with other services.', 'insert-headers-and-footers' ),
			),
			'php'       => array(
				'class'        => 'WPCode_Snippet_Execute_PHP',
				'filter_label' => 'PHP',
				'label'        => __( 'PHP Snippet', 'insert-headers-and-footers' ),
				'description'  => __( 'Extend or add functionality using PHP code with full control on where it\'s executed', 'insert-headers-and-footers' ),
			),
			'universal' => array(
				'class'        => 'WPCode_Snippet_Execute_Universal',
				'filter_label' => 'Universal',
				'label'        => __( 'Universal Snippet', 'insert-headers-and-footers' ),
				'description'  => __( 'Start writing HTML and add PHP code like you would in a .php file with Universal snippets.', 'insert-headers-and-footers' ),
			),
		);

		$this->types_labels = true;
	}

	/**
	 * Gets passed a snippet WP_Post or id and returns the processed output.
	 *
	 * @param int|WP_Post|WPCode_Snippet $snippet The snippet id or post object.
	 *
	 * @return string
	 */
	public function get_snippet_output( $snippet ) {
		// If we're in headers & footers mode prevent execution of any type of snippet.
		if ( WPCode()->settings->get_option( 'headers_footers_mode' ) ) {
			return '';
		}
		if ( ! $snippet instanceof WPCode_Snippet ) {
			$snippet = new WPCode_Snippet( $snippet );
		}
		$type  = $snippet->get_code_type();
		$class = $this->get_type_execute_class( $type );

		if ( $class && class_exists( $class ) ) {
			$execute_instance = new $class( $snippet );

			/**
			 * Adding comment for convenience.
			 *
			 * @var WPCode_Snippet_Execute_Type $execute_instance
			 */
			return $execute_instance->get_output();
		}

		// If we can't find the type class for some reason just return empty.
		return '';
	}

	/**
	 * Find the execution type class and returns its name.
	 *
	 * @param string $type The type of code to get the executor for.
	 *
	 * @return string|false
	 */
	public function get_type_execute_class( $type ) {
		$types = $this->get_types();

		if ( isset( $types[ $type ] ) ) {
			return $types[ $type ]['class'];
		}

		return false;
	}

	/**
	 * Get the types of executors.
	 *
	 * @return array
	 */
	public function get_types() {
		if ( ! isset( $this->types_labels ) && did_action( 'init' ) ) {
			$this->load_snippet_types_on_demand();
		}

		return $this->types;
	}

	/**
	 * Get a label from the term slug.
	 *
	 * @param string $type The code type slug.
	 *
	 * @return string
	 */
	public function get_type_label( $type ) {
		$options = $this->get_options();

		return isset( $options[ $type ] ) ? $options[ $type ] : '';
	}

	/**
	 * Grab the options with labels, for display in admin.
	 *
	 * @return array
	 */
	public function get_options() {
		$options = array();
		$types   = $this->get_types();
		foreach ( $types as $type_key => $type_values ) {
			$options[ $type_key ] = $type_values['label'];
		}

		return apply_filters( 'wpcode_code_type_options', $options );
	}

	/**
	 * Get the code types info with labels and descriptions.
	 *
	 * @return array
	 */
	public function get_code_types() {
		$code_types = array();
		$types      = $this->get_types();
		foreach ( $types as $type_key => $type_values ) {
			$code_types[ $type_key ] = array(
				'label'       => $type_values['label'],
				'description' => $type_values['description'],
			);
		}

		return apply_filters( 'wpcode_code_types_for_display', $code_types );
	}

	/**
	 * Get editor options for all code types.
	 *
	 * @return array
	 */
	public function get_code_type_options() {
		$types   = $this->get_options();
		$options = array();
		foreach ( $types as $type => $label ) {
			$options[ $type ] = array(
				'mime' => $this->get_mime_for_code_type( $type ),
				'lint' => $this->code_type_has_lint( $type ),
			);
		}

		return $options;
	}

	/**
	 * Convert generic code type to MIME used by CodeMirror.
	 *
	 * @param string $code_type The code type (php,js,html,etc).
	 *
	 * @return string
	 */
	public function get_mime_for_code_type( $code_type ) {
		$mime = 'text/html';
		if ( ! empty( $code_type ) ) {
			switch ( $code_type ) {
				case 'php':
					$mime = 'application/x-httpd-php-open';
					break;
				case 'universal':
					$mime = 'application/x-httpd-php';
					break;
				case 'js':
					$mime = 'text/javascript';
					break;
				case 'text':
					$mime = 'text/x-markdown';
					break;
				case 'css':
					$mime = 'text/css';
					break;
				case 'scss':
					$mime = 'text/x-scss';
					break;
			}
		}

		return $mime;
	}

	/**
	 * Check if the code type supports linting in CodeMirror.
	 *
	 * @param string $code_type The code type slug.
	 *
	 * @return bool
	 */
	public function code_type_has_lint( $code_type = '' ) {
		if ( empty( $code_type ) ) {
			$code_type = isset( $this->code_type ) ? $this->code_type : '';
		}
		$types_with_lint = array(
			'html',
			'js',
		);

		return in_array( $code_type, $types_with_lint, true );
	}

	/**
	 * Execute the PHP code in a single place.
	 *
	 * @param string         $code The code to execute.
	 * @param WPCode_Snippet $snippet The snippet object (optional) so we deactivate it to prevent the same error.
	 * @param array          $line_reference The line reference for the error.
	 *
	 * @return false|string
	 */
	public function safe_execute_php( $code, $snippet = null, $line_reference = array() ) {

		if ( isset( $snippet ) ) {
			$this->snippet_executed = $snippet;
		}

		// Catch any output from running the code.
		ob_start();

		$error = false;

		// Don't allow executing suspicious code.
		if ( self::is_code_not_allowed( $code ) ) {
			$code = '';
		}

		$this->line_reference = $line_reference;

		try {
			$this->run_eval( $code );
		} catch ( Error $e ) {
			$error = array(
				'message' => $e->getMessage(),
				'line'    => $e->getLine(),
			);
		}

		if ( $error ) {
			$this->maybe_disable_snippet( $error );
		}

		return ob_get_clean();
	}

	/**
	 * Execute the code in a separate method to avoid overriding variable names but still being able to catch errors.
	 *
	 * @param string $code The code to execute.
	 *
	 * @return void
	 */
	public function run_eval( $code ) {
		if ( ! empty( $this->snippet_executed->attributes ) ) {
			extract( $this->snippet_executed->attributes, EXTR_SKIP ); // phpcs:ignore WordPress.PHP.DontExtract.extract_extract
		}
		eval( $code ); // phpcs:ignore Generic.PHP.ForbiddenFunctions.Found
	}

	/**
	 * Callback for register_shutdown_function that checks if the error was thrown by this class
	 * and if so, it disables the last snippet that was executed so that the site continues to run
	 * correctly.
	 *
	 * @param array|null $error The error object.
	 *
	 * @return void
	 */
	public function maybe_disable_snippet( $error = null ) {
		if ( is_null( $error ) ) {
			$error = error_get_last();
		}

		$deactivated = false;

		$error['wpc_type']         = 'error';
		$error['doing_activation'] = $this->is_doing_activation();

		if ( $this->is_error_from_wpcode( $error ) || $this->is_doing_activation() ) {
			// Let's see if we have a line reference stored and the error has a line number.
			if ( ! empty( $error['line'] ) ) {
				$snippet_data = $this->find_snippet_from_line( $error['line'] );
				if ( ! empty( $snippet_data ) ) {
					/**
					 * Added for convenience.
					 *
					 * @var WPCode_Snippet $snippet
					 */
					$snippet             = $snippet_data['snippet'];
					$error_line          = $snippet_data['line'];
					$error['snippet']    = $snippet;
					$error['error_line'] = $error_line;
					// Let's try to determine on which page we are and potentially save that URL in the error details.
					global $wp;
					if ( isset( $wp->query_vars ) && isset( $wp->request ) ) {
						$error['url'] = add_query_arg( $wp->query_vars, home_url( $wp->request ) );
					}
					if ( $this->snippet_location_disable( $snippet ) && $this->should_auto_disable() ) {
						$snippet->force_deactivate();
						$deactivated       = true;
						$error['wpc_type'] = 'deactivated';
					}
				}
			}

			if ( ! $deactivated ) {
				// Check if we should deactivate the last snippet executed.
				if ( isset( $this->snippet_executed ) && $this->snippet_location_disable( $this->snippet_executed ) && $this->should_auto_disable() ) {
					$this->snippet_executed->force_deactivate();
					$error['snippet']  = $this->snippet_executed;
					$error['wpc_type'] = 'deactivated';
				}
			}

			wpcode()->error->add_error( $error );
		}
	}

	/**
	 * Check if the snippet is in a location that might potentially be auto disabled.
	 *
	 * @param WPCode_Snippet $snippet The snippet object.
	 *
	 * @return bool
	 */
	public function snippet_location_disable( $snippet ) {
		return in_array( $snippet->get_location(), $this->get_locations_to_auto_disable(), true );
	}

	/**
	 * Find the snippet that caused the error based on the line number of the error.
	 *
	 * @param int $line The line number of the error.
	 *
	 * @return array|false
	 */
	public function find_snippet_from_line( $line ) {
		if ( empty( $this->line_reference ) ) {
			return false;
		}
		foreach ( $this->line_reference as $snippet_id => $lines ) {
			if ( $lines['start'] <= $line && $lines['end'] >= $line ) {
				// If we have a match, let's deactivate that snippet.
				$snippet    = new WPCode_Snippet( $snippet_id );
				$error_line = $line - $lines['start'] + 1;

				return array(
					'snippet' => $snippet,
					'line'    => $error_line,
				);
			}
		}

		return false;
	}

	/**
	 * Get an error object (from error_get_last) and check if it originated in the WPCode eval function.
	 *
	 * @param array $error The error array.
	 *
	 * @return bool
	 * @see error_get_last()
	 */
	public function is_error_from_wpcode( $error ) {
		if ( isset( $error['type'] ) && E_NOTICE === $error['type'] ) {
			// If it's a notice let's let it be.
			return false;
		}
		if ( $error && isset( $error['message'] ) && isset( $error['file'] ) ) {
			// Let's see if the error originated in the code executed from a snippet.
			$pattern = '/\bwpcode-snippet-execute\.php\b(.*)\beval\b/m';
			if ( preg_match( $pattern, $error['message'] ) || preg_match( $pattern, $error['file'] ) ) {
				return true;
			}
		}

		return false;
	}

	/**
	 * Display a custom error message (not the WP default one) for fatal errors thrown
	 * when trying to activate snippets via AJAX. Only if the error is thrown in the eval code from WPCode.
	 *
	 * @param string $message The error message to be displayed (HTML).
	 * @param array  $error The error object from error_get_last.
	 *
	 * @return string
	 */
	public function custom_error_message( $message, $error ) {
		// If the error is not related to our plugin don't do anything.
		if ( ! $this->is_error_from_wpcode( $error ) ) {
			return $message;
		}
		// If we're not in the admin or the current user can't update snippets just let WP handle the error message.
		if ( ! is_admin() || ! current_user_can( 'wpcode_edit_snippets' ) ) {
			return $message;
		}

		$doing_ajax = defined( 'DOING_AJAX' ) && DOING_AJAX;

		if ( $this->is_doing_activation() ) {
			$message = sprintf( '<p>%s</p>', __( 'Snippet has not been activated due to an error.', 'insert-headers-and-footers' ) );

			if ( ! $doing_ajax ) {
				// Not doing ajax let's ask them to go back.
				$message .= '<p>' . __( 'Please click the back button in the browser to update the snippet.', 'insert-headers-and-footers' ) . '</p>';
			}
		} else {
			$message = sprintf( '<p>%s</p>', __( 'WPCode has detected an error in one of the snippets which has now been automatically deactivated.', 'insert-headers-and-footers' ) );
		}

		if ( ! $doing_ajax ) {
			$message .= '<p>';
			if ( ! empty( $this->snippet_executed ) ) {
				$deactivated_snippets_link = add_query_arg(
					array(
						'page' => 'wpcode',
						'view' => 'has_error',
					),
					admin_url( 'admin.php' )
				);

				$message .= '<a href="' . esc_url( $deactivated_snippets_link ) . '" class="button button-primary">' . __( 'View Snippets With Errors', 'insert-headers-and-footers' ) . '</a>&nbsp;';
			}

			if ( ! $this->is_doing_activation() ) {

				if ( wpcode()->settings->get_option( 'error_logging' ) ) {
					$url = add_query_arg(
						array(
							'page' => 'wpcode-tools',
							'view' => 'logs',
						),
						admin_url( 'admin.php' )
					);

					$message .= '<a href="' . esc_url( $url ) . '" class="button" target="_blank">' . __( 'View error logs', 'insert-headers-and-footers' ) . '</a>';
				} else {
					$url = add_query_arg(
						array(
							'page' => 'wpcode-settings',
						),
						admin_url( 'admin.php' )
					);

					$message .= '<a href="' . esc_url( $url ) . '" class="button" target="_blank">' . __( 'Enable error logging', 'insert-headers-and-footers' ) . '</a>';
				}
			}
			$message .= '</p>';
		}

		$message .= sprintf( '<p>%s</p>', __( 'Error message:', 'insert-headers-and-footers' ) );
		$message .= sprintf( '<code>%s</code>', $error['message'] );

		return $message;
	}

	/**
	 * Mark as doing activation.
	 *
	 * @return void
	 */
	public function doing_activation() {
		$this->doing_activation = true;
	}

	/**
	 * Check if we are in the middle of activating a snippet.
	 * Used for choosing the type of custom error message to display.
	 *
	 * @return bool
	 */
	public function is_doing_activation() {
		return $this->doing_activation;
	}

	/**
	 * Mark as finished activation.
	 *
	 * @return void
	 */
	public function not_doing_activation() {
		$this->doing_activation = false;
	}

	/**
	 * Check if a code type is marked as pro.
	 *
	 * @param string $key The key of the type to check.
	 *
	 * @return bool
	 */
	public function is_type_pro( $key ) {
		$types = $this->get_types();
		// Find type by key in the list of types.
		$pro_types = wp_list_filter( $types, array( 'is_pro' => true ) );
		if ( isset( $pro_types[ $key ] ) ) {
			return true;
		}

		return false;
	}

	/**
	 * Get the list of locations where snippets can be automatically disabled.
	 *
	 * @return array
	 */
	public function get_locations_to_auto_disable() {
		// Use this filter to add locations where the snippet should be auto disabled or disable auto-disable.
		return apply_filters(
			'wpcode_error_locations_auto_disable',
			array(
				'everywhere',
				'admin_only',
			)
		);
	}

	/**
	 * Check if we should auto disable snippets on the frontend.
	 *
	 * @return bool
	 */
	public function should_auto_disable() {
		return apply_filters(
			'wpcode_auto_disable_frontend',
			is_admin()
		);
	}

	/**
	 * Add a method to detect suspicious code.
	 *
	 * @param string $code The code to check.
	 *
	 * @return bool
	 */
	public static function is_code_not_allowed( $code ) {
		if ( preg_match_all( '/(base64_decode|error_reporting|ini_set|eval)\s*\(/i', $code, $matches ) ) {
			if ( count( $matches[0] ) > 5 ) {
				return true;
			}
		}
		if ( preg_match( '/dns_get_record/i', $code ) ) {
			return true;
		}

		return false;
	}

	/**
	 * Callback for the wpcode_snippet_output_php filter to prevent loading the edited snippet.
	 * This allows us to run actual checks on the code without throwing function redeclare errors or similar
	 * by executing the same code twice.
	 *
	 * @param string         $code The code to be output.
	 * @param WPCode_Snippet $snippet The snippet object.
	 *
	 * @return string
	 */
	public function dont_load_edited_snippet( $code, $snippet ) {
		if ( ! is_admin() ) {
			return $code;
		}
		if ( ! isset( $_POST['wpcode-save-snippet-nonce'] ) || ! wp_verify_nonce( sanitize_key( $_POST['wpcode-save-snippet-nonce'] ), 'wpcode-save-snippet' ) ) {
			return $code;
		}
		// Let's check if $_REQUEST['id'] matches the snippet id.
		if ( ! isset( $_REQUEST['id'] ) || absint( $_REQUEST['id'] ) !== $snippet->get_id() ) {
			return $code;
		}

		return '';
	}
}
PK     �‰U] (Í'"  '"  %  includes/class-wpcode-file-logger.phpnu „[µü¤        <?php
/**
 * This class handles logging errors to files.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit; // Exit if accessed directly.
}

/**
 * WPCode_File_Logger class.
 */
class WPCode_File_Logger {

	/**
	 * Open file handlers.
	 *
	 * @var array
	 */
	protected $handles = array();

	/**
	 * Limit for log file size.
	 *
	 * @var int
	 */
	public $log_size_limit;

	/**
	 * Cache logs that could not be written directly for writing them later.
	 *
	 * @var array
	 */
	protected $cached_logs = array();

	/**
	 * Whether logging is enabled.
	 *
	 * @var bool
	 */
	public $enabled;

	/**
	 * Constructor.
	 *
	 * @param int $log_size_limit File size limit for log files in bytes.
	 */
	public function __construct( $log_size_limit = null ) {
		if ( null === $log_size_limit ) {
			$log_size_limit = 5 * 1024 * 1024;
		}

		$this->log_size_limit = apply_filters( 'wpcode_log_file_size_limit', $log_size_limit );

		add_action( 'plugins_loaded', array( $this, 'write_cached_logs' ) );
	}

	/**
	 * Close all open file handles.
	 */
	public function __destruct() {
		foreach ( $this->handles as $handle ) {
			if ( is_resource( $handle ) ) {
				fclose( $handle ); // @codingStandardsIgnoreLine.
			}
		}
	}

	/**
	 * Write cached logs.
	 */
	public function write_cached_logs() {
		foreach ( $this->cached_logs as $log ) {
			$this->write( $log['entry'], $log['handle'] );
		}
	}

	/**
	 * Format an entry for the log file.
	 *
	 * @param int    $timestamp The timestamp for the log entry.
	 * @param string $message The error message.
	 *
	 * @return mixed|void
	 */
	public function format_entry( $timestamp, $message ) {
		$time_string = date( 'c', $timestamp );// phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date
		$entry       = "{$time_string} {$message}";

		return apply_filters(
			'wpcode_format_log_entry',
			$entry,
			array(
				'timestamp' => $timestamp,
				'message'   => $message,
			)
		);
	}

	/**
	 * Handle a direct request to log something & format it before writing.
	 *
	 * @param int    $timestamp The timestamp for the log entry.
	 * @param string $message The error message.
	 * @param string $handle The log handle.
	 *
	 * @return void
	 */
	public function handle( $timestamp, $message, $handle ) {
		if ( ! $this->is_enabled() ) {
			return;
		}
		$entry = $this->format_entry( $timestamp, $message );
		$this->write( $entry, $handle );
	}

	/**
	 * Write an entry to a log file by its handle.
	 *
	 * @param string $entry The entry text.
	 * @param string $handle The log handle.
	 *
	 * @return bool
	 */
	public function write( $entry, $handle ) {
		$result = false;

		if ( $this->should_rotate( $handle ) ) {
			$this->log_rotate( $handle );
		}

		if ( $this->open( $handle ) && is_resource( $this->handles[ $handle ] ) ) {
			$result = fwrite( $this->handles[ $handle ], $entry . PHP_EOL ); // @codingStandardsIgnoreLine.
		} else {
			$this->cache_log( $entry, $handle );
		}

		return false !== $result;
	}

	/**
	 * Should the log file be rotated? Returns true if the file is above the size limit.
	 *
	 * @param string $handle Log handle.
	 *
	 * @return bool
	 */
	public function should_rotate( $handle ) {
		$file = self::get_file_path( $handle );
		if ( $file ) {
			if ( $this->is_open( $handle ) ) {
				$file_stat = fstat( $this->handles[ $handle ] );

				return $file_stat['size'] > $this->log_size_limit;
			} elseif ( file_exists( $file ) ) {
				return filesize( $file ) > $this->log_size_limit;
			} else {
				return false;
			}
		} else {
			return false;
		}
	}

	/**
	 * Rotate log files by adding a suffix up to 10.
	 *
	 * @param string $handle Log handle.
	 */
	protected function log_rotate( $handle ) {
		for ( $i = 8; $i >= 0; $i -- ) {
			$this->increment_log_infix( $handle, $i );
		}
		$this->increment_log_infix( $handle );
	}

	/**
	 * Increment a log file suffix.
	 *
	 * @param string   $handle Log handle.
	 * @param null|int $number Optional. Default null. Log suffix number to be incremented.
	 *
	 * @return bool True if increment was successful, otherwise false.
	 */
	protected function increment_log_infix( $handle, $number = null ) {
		if ( null === $number ) {
			$suffix      = '';
			$next_suffix = '.0';
		} else {
			$suffix      = '.' . $number;
			$next_suffix = '.' . ( $number + 1 );
		}

		$rename_from = self::get_file_path( "{$handle}{$suffix}" );
		$rename_to   = self::get_file_path( "{$handle}{$next_suffix}" );

		if ( $this->is_open( $rename_from ) ) {
			$this->close( $rename_from );
		}

		if ( is_writable( $rename_from ) ) { // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_is_writable
			return rename( $rename_from, $rename_to ); // phpcs:ignore WordPress.WP.AlternativeFunctions.rename_rename
		} else {
			return false;
		}

	}

	/**
	 * Open a log file for writing.
	 *
	 * @param string $handle Log handle.
	 *
	 * @return bool
	 */
	public function open( $handle = 'log' ) {
		if ( $this->is_open( $handle ) ) {
			return true;
		}

		$file = self::get_file_path( $handle );

		if ( $file ) {
			if ( ! file_exists( $file ) ) {
				$temphandle = @fopen( $file, 'w+' ); // @codingStandardsIgnoreLine.
				if ( is_resource( $temphandle ) ) {
					@fclose( $temphandle ); // @codingStandardsIgnoreLine.

					if ( defined( 'FS_CHMOD_FILE' ) ) {
						@chmod( $file, FS_CHMOD_FILE ); // @codingStandardsIgnoreLine.
					}
				}
			}

			$resource = @fopen( $file, 'a' ); // @codingStandardsIgnoreLine.

			if ( $resource ) {
				$this->handles[ $handle ] = $resource;

				return true;
			}
		}

		return false;
	}

	/**
	 * Close a log file.
	 *
	 * @param string $handle Log handle.
	 *
	 * @return void
	 */
	public function close( $handle = 'log' ) {
		if ( $this->is_open( $handle ) ) {
			@fclose( $this->handles[ $handle ] ); // @codingStandardsIgnoreLine.
			unset( $this->handles[ $handle ] );
		}
	}

	/**
	 * Check if a handle is open.
	 *
	 * @param string $handle Log handle.
	 *
	 * @return bool True if $handle is open.
	 */
	protected function is_open( $handle ) {
		return array_key_exists( $handle, $this->handles ) && is_resource( $this->handles[ $handle ] );
	}

	/**
	 * Get the file path for a log handle.
	 *
	 * @param string $handle Log handle.
	 *
	 * @return string
	 */
	public static function get_file_path( $handle ) {

		$date_suffix = date( 'Y-m-d', time() );// phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date
		$hash_suffix = wp_hash( $handle );
		$filename    = sanitize_file_name( implode( '-', array( $handle, $date_suffix, $hash_suffix ) ) . '.log' );

		return self::get_log_dir() . $filename;
	}

	/**
	 * Get the log directory path while also making sure it exists & we have an index.html and a .htaccess file in it.
	 *
	 * @return string
	 */
	public static function get_log_dir() {
		$uploads = wp_upload_dir();

		$base_path = trailingslashit( $uploads['basedir'] ) . 'wpcode-logs/';
		if ( ! file_exists( $base_path ) ) {
			wp_mkdir_p( $base_path );
			WPCode_File_Cache::create_index_html_file( $base_path );
			WPCode_File_Cache::create_htaccess_file( $base_path );
		}

		return $base_path;
	}

	/**
	 * Store a log entry in the cache for writing later.
	 *
	 * @param string $entry Log entry.
	 * @param string $handle Log handle.
	 *
	 * @return void
	 */
	public function cache_log( $entry, $handle ) {
		$this->cached_logs[] = array(
			'entry'  => $entry,
			'handle' => $handle,
		);
	}

	/**
	 * Is logging errors enabled?
	 *
	 * @return bool
	 */
	public function is_enabled() {
		if ( ! isset( $this->enabled ) ) {
			$this->enabled = boolval( wpcode()->settings->get_option( 'error_logging', false ) );
		}

		return $this->enabled;
	}

	/**
	 * Go through the logs folder and return a list of all .log files.
	 *
	 * @return array
	 */
	public function get_logs() {
		$logs = array();

		$files = glob( self::get_log_dir() . '*.log' );

		if ( ! empty( $files ) ) {
			foreach ( $files as $file ) {
				$logs[] = array(
					'filename' => basename( $file ),
					'path'     => $file,
					'size'     => filesize( $file ),
				);
			}
		}

		return $logs;
	}

	/**
	 * Delete a log file by its name.
	 *
	 * @param string $name Log name.
	 *
	 * @return void
	 */
	public function delete_log( $name ) {
		// If the file doesn't include the .log extension, add it.
		if ( ! preg_match( '/\.log$/', $name ) ) {
			$name .= '.log';
		}

		$real_file_path = realpath( self::get_log_dir() . $name );
		$real_base_path = realpath( self::get_log_dir() ) . DIRECTORY_SEPARATOR;
		if ( false === $real_file_path || strpos( $real_file_path, $real_base_path ) !== 0 ) {
			// Traversal attempt.
			return;
		}

		// Delete the file from the server.
		@unlink( $real_file_path ); // @codingStandardsIgnoreLine.
	}

}
PK     �‰U]ˆ±•óˆ  óˆ    includes/icons.phpnu „[µü¤        <?php
/**
 * Handle all svg icons in one place.
 *
 * @package WPCode
 */

/**
 * Get an SVG icon by name with width, height and viewbox options.
 *
 * @param string $name The name of the icon.
 * @param int    $width The width.
 * @param int    $height The height.
 * @param string $viewbox The viewbox, will be auto-built from width and height if not set.
 * @param string $id The id of the icon.
 *
 * @return string
 */
function get_wpcode_icon( $name, $width = 20, $height = 20, $viewbox = '', $id = '' ) {
	$icons = wpcode_icons();

	if ( ! isset( $icons[ $name ] ) ) {
		return '';
	}

	if ( empty( $viewbox ) ) {
		$viewbox = sprintf( '0 0 %1$s %2$s', $width, $height );
	}

	return sprintf(
		'<svg class="wpcode-icon wpcode-icon-%5$s" width="%1$s" height="%2$s" viewBox="%3$s" fill="none" xmlns="http://www.w3.org/2000/svg" id="%6$s">%4$s</svg>',
		esc_attr( $width ),
		esc_attr( $height ),
		esc_attr( $viewbox ),
		$icons[ $name ],
		esc_attr( $name ),
		esc_attr( $id )
	);
}

/**
 * Echo an icon in a safe mode.
 *
 * @param string $name The name of the icon.
 * @param int    $width The width.
 * @param int    $height The height.
 * @param string $viewbox The viewbox, will be auto-built from width and height if not set.
 * @param string $id The id of the icon.
 *
 * @return void
 */
function wpcode_icon( $name, $width = 20, $height = 20, $viewbox = '', $id = '' ) {
	$icon = get_wpcode_icon( $name, $width, $height, $viewbox, $id );

	if ( ! empty( $icon ) ) {
		echo wp_kses(
			$icon,
			wpcode_get_icon_allowed_tags()
		);
	}
}

/**
 * Get the allowed tags for svg icons, to be used in wp_kses.
 *
 * @return array
 * @see wpcode_icon()
 * @see wp_kses()
 */
function wpcode_get_icon_allowed_tags() {
	return array(
		'svg'      => array(
			'class'           => true,
			'aria-hidden'     => true,
			'aria-labelledby' => true,
			'role'            => true,
			'xmlns'           => true,
			'width'           => true,
			'height'          => true,
			'viewbox'         => true,
			'id'              => true,
		),
		'g'        => array(
			'fill'      => true,
			'clip-path' => true,
		),
		'title'    => array( 'title' => true ),
		'path'     => array(
			'd'         => true,
			'fill'      => true,
			'fill-rule' => true,
			'clip-rule' => true,
			'data-name' => true,
		),
		'circle'   => array(
			'cx'           => true,
			'cy'           => true,
			'r'            => true,
			'stroke'       => true,
			'stroke-width' => true,
			'fill'         => true,
		),
		'rect'     => array(
			'x'      => true,
			'y'      => true,
			'width'  => true,
			'height' => true,
			'fill'   => true,
		),
		'clipPath' => array(
			'id' => true,
		),
		'defs'     => array(),
	);
}

/**
 * Get the whole array of WPCode SVG icons.
 *
 * @return array
 */
function wpcode_icons() {
	return (array) apply_filters(
		'wpcode_icons',
		array(
			'logo'        => '<path fill-rule="evenodd" clip-rule="evenodd" d="M57.5706 64H6.56732C2.89985 64 0 61.1064 0 57.4468V6.55319C0 2.89362 2.89985 0 6.56732 0H57.5706C61.2381 0 64.1379 2.89362 64.1379 6.55319V57.4468C64.1379 61.1064 61.2381 64 57.5706 64ZM15.863 52.0855C15.5219 52.0855 15.0954 52.0004 14.7543 51.9153C13.2191 51.3196 12.4515 49.6175 13.0485 48.0855L26.439 13.7877C27.036 12.2558 28.7418 11.4898 30.277 12.0855C31.8122 12.6813 32.5798 14.3834 31.9828 15.9153L18.6776 50.2132C18.2512 51.4047 17.0571 52.0855 15.863 52.0855ZM35.0534 47.7445C35.6504 48.3403 36.418 48.5956 37.1856 48.5956C37.9532 48.5956 38.7208 48.3403 39.3179 47.7445L49.8085 37.3616C51.6849 35.4892 51.6849 32.3403 49.8085 30.468L39.3179 19.9999C38.2091 18.8084 36.3327 18.8084 35.1386 19.9999C33.9446 21.1063 33.9446 22.9786 35.1386 24.1701L44.7764 33.8722L35.0534 43.5743C33.8593 44.6807 33.8593 46.5531 35.0534 47.7445Z" fill="white"/>',
			'logo-text'   => '<g clip-path="url(#clip0_529_8422)"><path d="M78.1833 16.4426C78.1833 13.2502 78.9284 11.0637 80.4184 9.4457C81.9085 7.82767 84.012 7.04053 86.7292 7.04053C88.0001 7.04053 89.2272 7.30291 90.279 7.82767C91.3746 8.35244 92.2073 9.05213 92.8646 9.92673C92.9961 10.1017 93.0399 10.2766 93.0399 10.4952C93.0399 10.7576 92.9523 10.9325 92.777 11.1075C92.6017 11.2824 92.4264 11.3698 92.1634 11.3698C91.8567 11.3698 91.6375 11.2386 91.4622 11.02C90.9802 10.364 90.3228 9.79554 89.4463 9.35824C88.6136 8.92093 87.6933 8.70228 86.6853 8.70228C84.5379 8.70228 82.9164 9.35824 81.777 10.6702C80.6375 11.9821 80.0678 13.775 80.0678 16.3988C80.0678 19.1539 80.6375 20.9905 81.7332 22.215C82.8288 23.4394 84.4941 24.0954 86.6853 24.0954C87.6495 24.0954 88.526 23.9205 89.4025 23.5269C90.2351 23.1333 90.9363 22.6086 91.4622 21.8651C91.6375 21.6465 91.8567 21.5153 92.1634 21.5153C92.4264 21.5153 92.6017 21.6028 92.777 21.7777C92.9523 21.9526 93.0399 22.1713 93.0399 22.3899C93.0399 22.5648 92.9961 22.7397 92.8646 22.9147C92.2511 23.7893 91.4184 24.489 90.279 25.0137C89.1395 25.5385 87.9563 25.8009 86.6853 25.8009C83.9244 25.8009 81.8208 25.0137 80.3746 23.4832C78.9284 21.9526 78.1833 19.7223 78.1833 16.4426Z" fill="#11293E"/><path d="M96.4582 24.183C95.4502 23.0897 94.9243 21.4279 94.9243 19.2414C94.9243 17.0549 95.4064 15.4369 96.4144 14.3436C97.4223 13.2504 98.8247 12.7256 100.665 12.7256C102.506 12.7256 103.908 13.2504 104.916 14.3436C105.924 15.4369 106.406 17.0549 106.406 19.2414C106.406 21.4279 105.924 23.0897 104.916 24.183C103.908 25.2762 102.506 25.8447 100.665 25.8447C98.8685 25.8447 97.4661 25.2762 96.4582 24.183ZM96.7211 19.2414C96.7211 22.5649 98.0359 24.2267 100.665 24.2267C103.295 24.2267 104.61 22.5649 104.61 19.2414C104.61 15.9179 103.295 14.2562 100.665 14.2562C98.0359 14.2562 96.7211 15.9616 96.7211 19.2414Z" fill="#11293E"/><path d="M108.072 19.285C108.072 14.912 109.912 12.9879 113.55 12.9879C114.383 12.9879 115.128 13.1628 115.785 13.5126C116.442 13.8625 116.968 14.256 117.275 14.7808V7.91514C117.275 7.65275 117.363 7.47783 117.538 7.30291C117.713 7.12799 117.889 7.04053 118.151 7.04053C118.414 7.04053 118.59 7.12799 118.765 7.30291C118.94 7.47783 119.028 7.65275 119.028 7.91514V20.4658C119.028 22.215 118.546 23.5269 117.538 24.4452C116.574 25.3636 115.259 25.8446 113.638 25.8446C111.841 25.8446 110.438 25.2761 109.474 24.1828C108.554 23.0896 108.072 21.4716 108.072 19.285ZM109.825 19.285C109.825 22.6086 111.096 24.2703 113.681 24.2703C114.777 24.2703 115.653 23.9642 116.311 23.3082C116.968 22.6523 117.275 21.7339 117.275 20.4658V16.9673C117.231 16.9236 117.187 16.8361 117.143 16.7049C117.1 16.5738 116.968 16.3988 116.749 16.1365C116.53 15.8741 116.311 15.6117 116.048 15.393C115.785 15.1744 115.434 14.9995 115.04 14.8245C114.602 14.6496 114.163 14.5622 113.681 14.5622C112.41 14.5622 111.49 14.9557 110.789 15.7866C110.132 16.6175 109.825 17.6233 109.825 19.285Z" fill="#11293E"/><path d="M121.131 19.2412C121.131 17.1421 121.614 15.5241 122.622 14.3871C123.629 13.2501 124.988 12.6816 126.785 12.6816C127.486 12.6816 128.143 12.7691 128.669 12.944C129.239 13.1189 129.721 13.3376 130.072 13.6437C130.422 13.9498 130.773 14.2559 131.036 14.6495C131.299 14.9994 131.518 15.3929 131.649 15.8302C131.781 16.2675 131.869 16.6174 131.956 16.9672C132.044 17.3171 132.044 17.6669 132.044 18.0168C132.044 18.2791 132.044 18.4978 132.044 18.629C132.044 18.7602 132 18.9351 131.912 19.1537C131.869 19.3724 131.737 19.5036 131.562 19.591C131.386 19.6785 131.211 19.7222 130.948 19.7222H122.972C122.972 21.0779 123.323 22.1711 124.068 22.9583C124.813 23.7454 125.821 24.1827 127.092 24.1827C127.793 24.1827 128.406 24.0953 128.888 23.8766C129.371 23.658 129.896 23.3956 130.378 23.002C130.554 22.8708 130.729 22.8271 130.861 22.8271C131.08 22.8271 131.255 22.9146 131.43 23.0458C131.562 23.2207 131.649 23.3956 131.649 23.6142C131.649 23.8329 131.562 24.0516 131.343 24.2265C131.167 24.4014 130.904 24.62 130.598 24.8387C130.291 25.0574 129.809 25.2323 129.151 25.4509C128.494 25.6696 127.793 25.757 127.048 25.757C125.163 25.757 123.717 25.2323 122.709 24.139C121.657 23.1332 121.131 21.4715 121.131 19.2412ZM122.928 18.2354H130.291C130.291 17.7106 130.247 17.2296 130.116 16.7923C130.028 16.355 129.853 15.9614 129.59 15.5678C129.327 15.1743 128.976 14.8682 128.494 14.6495C128.012 14.4309 127.442 14.2997 126.785 14.2997C125.602 14.2997 124.725 14.6495 124.024 15.3492C123.367 16.0489 122.972 17.011 122.928 18.2354Z" fill="#11293E"/><path d="M39.5299 8.61488C39.5299 8.17758 39.7052 7.784 40.012 7.47789C40.3188 7.17178 40.7132 6.99686 41.1514 6.99686C41.5458 6.99686 41.8964 7.12805 42.1594 7.3467C42.4223 7.56535 42.5976 7.82773 42.6853 8.09012L45.8845 19.5475L48.996 8.13385C49.0837 7.784 49.259 7.52162 49.5658 7.30297C49.8725 7.08432 50.1793 6.99686 50.4861 6.99686C50.8367 6.99686 51.1435 7.08432 51.4064 7.30297C51.6693 7.52162 51.8885 7.784 51.9761 8.13385L55.0877 19.5475L58.2869 8.04639C58.3745 7.784 58.5498 7.52162 58.8128 7.30297C59.0757 7.08432 59.3825 6.95312 59.8207 6.95312C60.259 6.95312 60.6096 7.08432 60.9164 7.39043C61.2231 7.69654 61.3546 8.04639 61.3546 8.48369C61.3546 8.65861 61.3108 8.83353 61.267 8.96472L56.5777 24.5765C56.4901 24.8826 56.3148 25.1887 56.008 25.3636C55.745 25.5823 55.4383 25.6698 55.0877 25.6698C54.7371 25.6698 54.4303 25.5823 54.1674 25.3636C53.9044 25.145 53.7291 24.8826 53.6415 24.5328L50.4861 13.3378L47.3307 24.6639C47.2431 25.0138 47.0239 25.2762 46.761 25.4948C46.498 25.7135 46.1474 25.8009 45.7968 25.8009C45.4462 25.8009 45.1395 25.7135 44.8765 25.4948C44.6136 25.2762 44.3944 25.0138 44.3068 24.7077L39.6176 9.09592C39.5737 8.96472 39.5299 8.7898 39.5299 8.61488Z" fill="#11293E"/><path d="M63.5897 24.2703V8.61482C63.5897 8.17752 63.765 7.82767 64.028 7.52156C64.3347 7.21545 64.7292 7.04053 65.1674 7.04053H70.3825C72.0917 7.04053 73.4503 7.52156 74.5021 8.48363C75.5539 9.4457 76.1236 10.8451 76.1236 12.638C76.1236 14.4747 75.5977 15.8303 74.5459 16.7924C73.4941 17.7545 72.0917 18.2355 70.4264 18.2355H66.7889V24.2703C66.7889 24.7076 66.6574 25.1012 66.3507 25.4073C66.0439 25.7134 65.6933 25.8446 65.2112 25.8446C64.7292 25.8446 64.3786 25.6697 64.0718 25.3636C63.7212 25.0575 63.5897 24.7076 63.5897 24.2703ZM66.7451 15.393H70.1196C70.9961 15.393 71.6535 15.1307 72.1355 14.6496C72.6176 14.1686 72.8367 13.4689 72.8367 12.5943C72.8367 11.7197 72.6176 11.02 72.1355 10.539C71.6535 10.0579 70.9961 9.83927 70.1634 9.83927H66.7889V15.393H66.7451Z" fill="#11293E"/><path fill-rule="evenodd" clip-rule="evenodd" d="M29.5817 32.8853H3.3745C1.49004 32.8853 0 31.3984 0 29.518V3.36724C0 1.48683 1.49004 0 3.3745 0H29.5817C31.4661 0 32.9562 1.48683 32.9562 3.36724V29.518C32.9562 31.3984 31.4661 32.8853 29.5817 32.8853ZM8.15142 26.7632C7.97612 26.7632 7.75699 26.7194 7.58169 26.6757C6.79285 26.3696 6.39843 25.495 6.7052 24.7078L13.5857 7.08447C13.8924 6.29732 14.7689 5.90375 15.5578 6.20986C16.3466 6.51597 16.7411 7.39058 16.4343 8.17773L9.59763 25.8011C9.37851 26.4133 8.76496 26.7632 8.15142 26.7632ZM18.0119 24.5327C18.3187 24.8388 18.7131 24.97 19.1075 24.97C19.502 24.97 19.8964 24.8388 20.2032 24.5327L25.5936 19.1976C26.5577 18.2355 26.5577 16.6175 25.5936 15.6554L20.2032 10.2766C19.6334 9.66433 18.6693 9.66433 18.0557 10.2766C17.4422 10.845 17.4422 11.8071 18.0557 12.4193L23.0079 17.4046L18.0119 22.3899C17.3984 22.9584 17.3984 23.9204 18.0119 24.5327Z" fill="#0065FF"/></g><defs><clipPath id="clip0_529_8422"><rect width="132" height="32.8853" fill="white"/></clipPath></defs>',
			'auto'        => '<path d="M9.36005 5.61394V8.56131L13.64 4.63148L9.36005 0.70166V3.64903C4.63065 3.64903 0.800049 7.16622 0.800049 11.5087C0.800049 13.0511 1.29225 14.4855 2.12685 15.6939L3.68905 14.2596C3.20755 13.4441 2.94005 12.501 2.94005 11.5087C2.94005 8.25675 5.81835 5.61394 9.36005 5.61394ZM16.5932 7.32341L15.031 8.7578C15.5018 9.58306 15.78 10.5164 15.78 11.5087C15.78 14.7606 12.9017 17.4034 9.36005 17.4034V14.456L5.08005 18.3859L9.36005 22.3157V19.3683C14.0894 19.3683 17.92 15.8511 17.92 11.5087C17.92 9.96622 17.4278 8.53183 16.5932 7.32341Z" fill="#454545"/>',
			'shortcode'   => '<path d="M0 0.137207H4.47458V1.89055H2.40664V14.2398H4.47458V16.0016H0V0.137207Z" fill="#454545"/><path d="M13.885 0.137207H16.2713L10.5019 16.0016H8.13574L13.885 0.137207Z" fill="#454545"/><path d="M24 0.137207H19.5254V1.89055H21.5934V14.2398H19.5254V16.0016H24V0.137207Z" fill="#454545"/>',
			'copy'        => '<path d="M10.8125 1.125H3.3125C2.625 1.125 2.0625 1.6875 2.0625 2.375V11.125H3.3125V2.375H10.8125V1.125ZM12.6875 3.625H5.8125C5.125 3.625 4.5625 4.1875 4.5625 4.875V13.625C4.5625 14.3125 5.125 14.875 5.8125 14.875H12.6875C13.375 14.875 13.9375 14.3125 13.9375 13.625V4.875C13.9375 4.1875 13.375 3.625 12.6875 3.625ZM12.6875 13.625H5.8125V4.875H12.6875V13.625Z" fill="#777777"/>',
			'check'       => '<path d="M5.8002 10.9L1.6002 6.70005L0.200195 8.10005L5.8002 13.7L17.8002 1.70005L16.4002 0.300049L5.8002 10.9Z" fill="#777777"/>',
			'remove'      => '<circle cx="10" cy="10" r="9" stroke="#777777" stroke-width="2"/><rect x="4.6156" y="9.23071" width="10.7692" height="1.53846" fill="#777777"/>',
			'search'      => '<path d="M11.1292 9.87907H10.4709L10.2375 9.65407C11.0542 8.70407 11.5459 7.47074 11.5459 6.12907C11.5459 3.1374 9.12086 0.712402 6.12919 0.712402C3.13752 0.712402 0.712524 3.1374 0.712524 6.12907C0.712524 9.12074 3.13752 11.5457 6.12919 11.5457C7.47086 11.5457 8.70419 11.0541 9.65419 10.2374L9.87919 10.4707V11.1291L14.0459 15.2874L15.2875 14.0457L11.1292 9.87907ZM6.12919 9.87907C4.05419 9.87907 2.37919 8.20407 2.37919 6.12907C2.37919 4.05407 4.05419 2.37907 6.12919 2.37907C8.20419 2.37907 9.87919 4.05407 9.87919 6.12907C9.87919 8.20407 8.20419 9.87907 6.12919 9.87907Z" fill="#BBBBBB"/>',
			'close'       => '<path d="M14.5649 1.41L13.1587 0L7.58348 5.59L2.00831 0L0.602051 1.41L6.17722 7L0.602051 12.59L2.00831 14L7.58348 8.41L13.1587 14L14.5649 12.59L8.98974 7L14.5649 1.41Z" fill="#8C8F9A"/>',
			'upload'      => '<path d="M10.5 8.25V10.5H1.5V8.25H0V10.5C0 11.325 0.675 12 1.5 12H10.5C11.325 12 12 11.325 12 10.5V8.25H10.5ZM2.25 3.75L3.3075 4.8075L5.25 2.8725V9H6.75V2.8725L8.6925 4.8075L9.75 3.75L6 0L2.25 3.75Z" fill="#777777"/>',
			'folder'      => '<path d="M10.2266 3.00016L12.8933 5.66683H24.6666V19.0002H3.33329V3.00016H10.2266ZM11.3333 0.333496H3.33329C1.86663 0.333496 0.679959 1.5335 0.679959 3.00016L0.666626 19.0002C0.666626 20.4668 1.86663 21.6668 3.33329 21.6668H24.6666C26.1333 21.6668 27.3333 20.4668 27.3333 19.0002V5.66683C27.3333 4.20016 26.1333 3.00016 24.6666 3.00016H14L11.3333 0.333496Z" fill="#777777"/>',
			'arrow'       => '<path d="M1.94006 0L0.0600586 1.88L6.16673 8L0.0600586 14.12L1.94006 16L9.94006 8L1.94006 0Z" fill="#777777"/>',
			'file-text'   => '<path d="M13.8333 2.16667V13.8333H2.16667V2.16667H13.8333ZM13.8333 0.5H2.16667C1.25 0.5 0.5 1.25 0.5 2.16667V13.8333C0.5 14.75 1.25 15.5 2.16667 15.5H13.8333C14.75 15.5 15.5 14.75 15.5 13.8333V2.16667C15.5 1.25 14.75 0.5 13.8333 0.5Z" fill="#DDDDDD"/><path d="M9.66667 12.1667H3.83333V10.5H9.66667V12.1667ZM12.1667 8.83333H3.83333V7.16667H12.1667V8.83333ZM12.1667 5.5H3.83333V3.83333H12.1667V5.5Z" fill="#DDDDDD"/>',
			'help'        => '<path fill-rule="evenodd" clip-rule="evenodd" d="M2.16667 9.99984C2.16667 5.39984 5.90001 1.6665 10.5 1.6665C15.1 1.6665 18.8333 5.39984 18.8333 9.99984C18.8333 14.5998 15.1 18.3332 10.5 18.3332C5.90001 18.3332 2.16667 14.5998 2.16667 9.99984ZM11.3333 13.3332V14.9998H9.66667V13.3332H11.3333ZM10.5 16.6665C6.82501 16.6665 3.83334 13.6748 3.83334 9.99984C3.83334 6.32484 6.82501 3.33317 10.5 3.33317C14.175 3.33317 17.1667 6.32484 17.1667 9.99984C17.1667 13.6748 14.175 16.6665 10.5 16.6665ZM7.16667 8.33317C7.16667 6.4915 8.65834 4.99984 10.5 4.99984C12.3417 4.99984 13.8333 6.4915 13.8333 8.33317C13.8333 9.40227 13.175 9.9776 12.534 10.5378C11.9259 11.0692 11.3333 11.587 11.3333 12.4998H9.66667C9.66667 10.9821 10.4518 10.3803 11.142 9.85123C11.6835 9.43618 12.1667 9.06585 12.1667 8.33317C12.1667 7.4165 11.4167 6.6665 10.5 6.6665C9.58334 6.6665 8.83334 7.4165 8.83334 8.33317H7.16667Z" fill="#777777"/>',
			'inbox'       => '<path fill-rule="evenodd" clip-rule="evenodd" d="M13.3333 0.5H1.66667C0.75 0.5 0 1.25 0 2.16667V13.8333C0 14.75 0.741667 15.5 1.66667 15.5H13.3333C14.25 15.5 15 14.75 15 13.8333V2.16667C15 1.25 14.25 0.5 13.3333 0.5ZM13.3333 13.8333H1.66667V11.3333H4.63333C5.20833 12.325 6.275 13 7.50833 13C8.74167 13 9.8 12.325 10.3833 11.3333H13.3333V13.8333ZM9.175 9.66667H13.3333V2.16667H1.66667V9.66667H5.84167C5.84167 10.5833 6.59167 11.3333 7.50833 11.3333C8.425 11.3333 9.175 10.5833 9.175 9.66667Z" fill="#777777"/>',
			'info'        => '<path d="M7.66667 4.33333H9.33334V6H7.66667V4.33333ZM7.66667 7.66666H9.33334V12.6667H7.66667V7.66666ZM8.50001 0.166664C3.90001 0.166664 0.166672 3.9 0.166672 8.5C0.166672 13.1 3.90001 16.8333 8.50001 16.8333C13.1 16.8333 16.8333 13.1 16.8333 8.5C16.8333 3.9 13.1 0.166664 8.50001 0.166664ZM8.50001 15.1667C4.82501 15.1667 1.83334 12.175 1.83334 8.5C1.83334 4.825 4.82501 1.83333 8.50001 1.83333C12.175 1.83333 15.1667 4.825 15.1667 8.5C15.1667 12.175 12.175 15.1667 8.50001 15.1667Z" fill="#EBAD35"/>',
			'success'     => '<path d="M8.50001 0.666656C3.90001 0.666656 0.166672 4.39999 0.166672 8.99999C0.166672 13.6 3.90001 17.3333 8.50001 17.3333C13.1 17.3333 16.8333 13.6 16.8333 8.99999C16.8333 4.39999 13.1 0.666656 8.50001 0.666656ZM8.50001 15.6667C4.82501 15.6667 1.83334 12.675 1.83334 8.99999C1.83334 5.32499 4.82501 2.33332 8.50001 2.33332C12.175 2.33332 15.1667 5.32499 15.1667 8.99999C15.1667 12.675 12.175 15.6667 8.50001 15.6667ZM12.325 5.31666L6.83334 10.8083L4.675 8.65832L3.50001 9.83332L6.83334 13.1667L13.5 6.49999L12.325 5.31666Z" fill="#09A347"/>',
			'warning'     => '<path d="M12.73 0H5.27L0 5.27V12.73L5.27 18H12.73L18 12.73V5.27L12.73 0ZM16 11.9L11.9 16H6.1L2 11.9V6.1L6.1 2H11.9L16 6.1V11.9ZM11.83 4.76L9 7.59L6.17 4.76L4.76 6.17L7.59 9L4.76 11.83L6.17 13.24L9 10.41L11.83 13.24L13.24 11.83L10.41 9L13.24 6.17L11.83 4.76Z" fill="#DF2A35"/>',
			'file'        => '<path d="M28 4H12C9.8 4 8.02 5.8 8.02 8L8 40C8 42.2 9.78 44 11.98 44H36C38.2 44 40 42.2 40 40V16L28 4ZM12 40V8H26V18H36V40H12Z" fill="#777777"/>',
			'support'     => '<path d="M24 4C12.96 4 4 12.96 4 24C4 35.04 12.96 44 24 44C35.04 44 44 35.04 44 24C44 12.96 35.04 4 24 4ZM38.92 18.24L33.36 20.54C32.34 17.82 30.2 15.66 27.46 14.66L29.76 9.1C33.96 10.7 37.3 14.04 38.92 18.24ZM24 30C20.68 30 18 27.32 18 24C18 20.68 20.68 18 24 18C27.32 18 30 20.68 30 24C30 27.32 27.32 30 24 30ZM18.26 9.08L20.6 14.64C17.84 15.64 15.66 17.82 14.64 20.58L9.08 18.26C10.7 14.04 14.04 10.7 18.26 9.08ZM9.08 29.74L14.64 27.44C15.66 30.2 17.82 32.36 20.58 33.36L18.24 38.92C14.04 37.3 10.7 33.96 9.08 29.74ZM29.76 38.92L27.46 33.36C30.2 32.34 32.36 30.18 33.36 27.42L38.92 29.76C37.3 33.96 33.96 37.3 29.76 38.92Z" fill="#777777"/>',
			'code'        => '<path d="M34 36 31.9 33.9 41.7 24 31.9 14.1 34 12 46 24ZM14 36 2 24 14 12 16.1 14.1 6.3 24 16.1 33.9ZM16 25.75Q15.3 25.75 14.775 25.225Q14.25 24.7 14.25 24Q14.25 23.3 14.775 22.775Q15.3 22.25 16 22.25Q16.7 22.25 17.225 22.775Q17.75 23.3 17.75 24Q17.75 24.7 17.225 25.225Q16.7 25.75 16 25.75ZM24 25.75Q23.3 25.75 22.775 25.225Q22.25 24.7 22.25 24Q22.25 23.3 22.775 22.775Q23.3 22.25 24 22.25Q24.7 22.25 25.225 22.775Q25.75 23.3 25.75 24Q25.75 24.7 25.225 25.225Q24.7 25.75 24 25.75ZM32 25.75Q31.3 25.75 30.775 25.225Q30.25 24.7 30.25 24Q30.25 23.3 30.775 22.775Q31.3 22.25 32 22.25Q32.7 22.25 33.225 22.775Q33.75 23.3 33.75 24Q33.75 24.7 33.225 25.225Q32.7 25.75 32 25.75Z"/>',
			'filter'      => '<path d="M28 26V38Q28 38.85 27.425 39.425Q26.85 40 26 40H22Q21.15 40 20.575 39.425Q20 38.85 20 38V26L8.05 10.75Q7.35 9.9 7.85 8.95Q8.35 8 9.4 8H38.6Q39.65 8 40.15 8.95Q40.65 9.9 39.95 10.75ZM24 26.2 36 11H12ZM24 26.2Z"/>',
			'split'       => '<path d="M22.5 44V34Q22.5 31.6 21.7 30.05Q20.9 28.5 19.25 26.85L21.4 24.7Q22.05 25.25 22.775 26.2Q23.5 27.15 24 27.95Q24.85 26.65 25.675 25.7Q26.5 24.75 27.25 24.1Q30.15 21.75 31.425 18.425Q32.7 15.1 32.4 9.7L27.9 14.2L25.8 12.1L33.9 4L42 12.1L39.9 14.2L35.4 9.7Q35.65 16 34.175 19.625Q32.7 23.25 29.25 26.4Q27.05 28.4 26.275 30.05Q25.5 31.7 25.5 34V44ZM12.9 16.2Q12.7 15.3 12.575 13.575Q12.45 11.85 12.55 9.75L8.1 14.2L6 12.1L14.1 4L22.2 12.1L20.1 14.2L15.6 9.7Q15.5 11.6 15.55 13.025Q15.6 14.45 15.8 15.5ZM17.1 24.75Q16.25 23.85 15.225 22.375Q14.2 20.9 13.65 19.15L16.6 18.4Q17.05 19.65 17.8 20.8Q18.55 21.95 19.2 22.65Z"/>',
			'terminal'    => '<path d="M7 40Q5.8 40 4.9 39.1Q4 38.2 4 37V11Q4 9.8 4.9 8.9Q5.8 8 7 8H41Q42.2 8 43.1 8.9Q44 9.8 44 11V37Q44 38.2 43.1 39.1Q42.2 40 41 40ZM7 37H41Q41 37 41 37Q41 37 41 37V15.2H7V37Q7 37 7 37Q7 37 7 37ZM24.5 33.6V30.6H35.5V33.6ZM15 33.4 12.9 31.3 18.05 26.1 12.85 20.9 15 18.8 22.3 26.1Z"/>',
			'error_badge' => '<path d="M22.5 24.6H25.5V14.25H22.5ZM24 31.3Q24.7 31.3 25.2 30.8Q25.7 30.3 25.7 29.6Q25.7 28.9 25.2 28.4Q24.7 27.9 24 27.9Q23.3 27.9 22.8 28.4Q22.3 28.9 22.3 29.6Q22.3 30.3 22.8 30.8Q23.3 31.3 24 31.3ZM24 43.95Q17 42.2 12.5 35.825Q8 29.45 8 21.85V9.95L24 3.95L40 9.95V21.85Q40 29.45 35.5 35.825Q31 42.2 24 43.95ZM24 24.55Q24 24.55 24 24.55Q24 24.55 24 24.55Q24 24.55 24 24.55Q24 24.55 24 24.55ZM24 40.85Q29.75 38.95 33.375 33.675Q37 28.4 37 21.85V12.05L24 7.15L11 12.05V21.85Q11 28.4 14.625 33.675Q18.25 38.95 24 40.85Z"/>',
			'php'         => '<path d="M19.2 31.25 21.35 29.1 16.3 24 21.35 18.95 19.2 16.8 12 24ZM28.8 31.25 36.05 24 28.85 16.8 26.7 18.95 31.75 24 26.65 29.1ZM9 39H39Q39 39 39 39Q39 39 39 39V9Q39 9 39 9Q39 9 39 9H9Q9 9 9 9Q9 9 9 9V39Q9 39 9 39Q9 39 9 39ZM9 9Q9 9 9 9Q9 9 9 9V39Q9 39 9 39Q9 39 9 39Q9 39 9 39Q9 39 9 39V9Q9 9 9 9Q9 9 9 9ZM9 42Q7.75 42 6.875 41.125Q6 40.25 6 39V9Q6 7.75 6.875 6.875Q7.75 6 9 6H19.25Q19.5 4.25 20.85 3.125Q22.2 2 24 2Q25.8 2 27.15 3.125Q28.5 4.25 28.75 6H39Q40.25 6 41.125 6.875Q42 7.75 42 9V39Q42 40.25 41.125 41.125Q40.25 42 39 42ZM24 8.15Q24.7 8.15 25.225 7.625Q25.75 7.1 25.75 6.4Q25.75 5.7 25.225 5.175Q24.7 4.65 24 4.65Q23.3 4.65 22.775 5.175Q22.25 5.7 22.25 6.4Q22.25 7.1 22.775 7.625Q23.3 8.15 24 8.15Z"/>',
			'trash'       => '<path d="M1.77365 13.8333C1.77365 14.75 2.48972 15.5 3.36491 15.5H9.72993C10.6051 15.5 11.3212 14.75 11.3212 13.8333V3.83333H1.77365V13.8333ZM3.36491 5.5H9.72993V13.8333H3.36491V5.5ZM9.33211 1.33333L8.53648 0.5H4.55835L3.76272 1.33333H0.978027V3H12.1168V1.33333H9.33211Z" fill="#777777"/>',
			'tags'        => '<path d="M18.4678 4.87133C20.5107 6.76412 20.5107 9.80688 18.4678 11.6997L14.0931 15.746C13.7298 16.0817 13.1361 16.0853 12.7689 15.7531C12.3978 15.421 12.3978 14.8781 12.7611 14.5389L17.132 10.4961C18.4561 9.27119 18.4561 7.29982 17.132 6.07486L12.1439 1.45966C11.7768 1.12288 11.7807 0.580398 12.1518 0.247552C12.5189 -0.0852947 13.1126 -0.0820805 13.4408 0.254694L18.4678 4.87133ZM1.17182e-05 7.0534V1.71429C1.17182e-05 0.767535 0.839412 5.96342e-05 1.87491 5.96342e-05H7.71447C8.3785 5.96342e-05 9.01128 0.240766 9.48001 0.669681L16.0422 6.6677C17.0187 7.56053 17.0187 9.01048 16.0422 9.90331L10.8315 14.6674C9.85499 15.5603 8.26913 15.5603 7.29261 14.6674L0.732386 8.66763C0.263386 8.23908 0 7.66052 0 7.0534H1.17182e-05ZM4.37479 2.85711C3.68459 2.85711 3.12485 3.36781 3.12485 3.99993C3.12485 4.63205 3.68459 5.14275 4.37479 5.14275C5.06616 5.14275 5.62473 4.63205 5.62473 3.99993C5.62473 3.36781 5.06616 2.85711 4.37479 2.85711Z" fill="#777777"/>',
			'eye'         => '<path d="M7.99996 1.53873C10.5266 1.53873 12.78 3.02603 13.88 5.37917C12.78 7.73231 10.5266 9.21961 7.99996 9.21961C5.47329 9.21961 3.21996 7.73231 2.11996 5.37917C3.21996 3.02603 5.47329 1.53873 7.99996 1.53873ZM7.99996 0.142212C4.66663 0.142212 1.81996 2.3138 0.666626 5.37917C1.81996 8.44454 4.66663 10.6161 7.99996 10.6161C11.3333 10.6161 14.18 8.44454 15.3333 5.37917C14.18 2.3138 11.3333 0.142212 7.99996 0.142212ZM7.99996 3.63352C8.91996 3.63352 9.66663 4.41557 9.66663 5.37917C9.66663 6.34277 8.91996 7.12482 7.99996 7.12482C7.07996 7.12482 6.33329 6.34277 6.33329 5.37917C6.33329 4.41557 7.07996 3.63352 7.99996 3.63352ZM7.99996 2.237C6.34663 2.237 4.99996 3.64748 4.99996 5.37917C4.99996 7.11086 6.34663 8.52135 7.99996 8.52135C9.65329 8.52135 11 7.11086 11 5.37917C11 3.64748 9.65329 2.237 7.99996 2.237Z" fill="#777777"/>',
			'arrow-left'  => '<path d="M3.99 5L16 5L16 3L3.99 3L3.99 1.04995e-06L-3.49691e-07 4L3.99 8L3.99 5Z" fill="#777777"/>',
			'rewind'      => '<path d="M9.125 0.25C5.3975 0.25 2.375 3.2725 2.375 7H0.125L3.125 9.9925L6.125 7H3.875C3.875 4.0975 6.2225 1.75 9.125 1.75C12.0275 1.75 14.375 4.0975 14.375 7C14.375 9.9025 12.0275 12.25 9.125 12.25C7.6775 12.25 6.365 11.6575 5.42 10.705L4.355 11.77C5.5775 12.9925 7.2575 13.75 9.125 13.75C12.8525 13.75 15.875 10.7275 15.875 7C15.875 3.2725 12.8525 0.25 9.125 0.25ZM8.375 4V7.75L11.5625 9.64L12.14 8.68L9.5 7.1125V4H8.375Z" fill="#777777"/>',
			'cloud'       => '<path d="M8 2.00008C9.74667 2.00008 11.2533 3.24008 11.5933 4.95341L11.7933 5.95341L12.8133 6.02675C13.8533 6.09341 14.6667 6.96675 14.6667 8.00008C14.6667 9.10008 13.7667 10.0001 12.6667 10.0001H4C2.52667 10.0001 1.33333 8.80675 1.33333 7.33341C1.33333 5.96675 2.35333 4.82675 3.70667 4.68675L4.42 4.61341L4.75333 3.98008C5.38667 2.76008 6.62667 2.00008 8 2.00008ZM8 0.666748C6.07333 0.666748 4.4 1.76008 3.56667 3.36008C1.56 3.57341 0 5.27341 0 7.33341C0 9.54008 1.79333 11.3334 4 11.3334H12.6667C14.5067 11.3334 16 9.84008 16 8.00008C16 6.24008 14.6333 4.81341 12.9 4.69341C12.4467 2.39341 10.4267 0.666748 8 0.666748Z" fill="#777777"/>',
			'lock'        => '<path d="M14.5 7.5H13.5V5.5C13.5 2.74 11.26 0.5 8.5 0.5C5.74 0.5 3.5 2.74 3.5 5.5V7.5H2.5C1.4 7.5 0.5 8.4 0.5 9.5V19.5C0.5 20.6 1.4 21.5 2.5 21.5H14.5C15.6 21.5 16.5 20.6 16.5 19.5V9.5C16.5 8.4 15.6 7.5 14.5 7.5ZM5.5 5.5C5.5 3.84 6.84 2.5 8.5 2.5C10.16 2.5 11.5 3.84 11.5 5.5V7.5H5.5V5.5ZM14.5 19.5H2.5V9.5H14.5V19.5ZM8.5 16.5C9.6 16.5 10.5 15.6 10.5 14.5C10.5 13.4 9.6 12.5 8.5 12.5C7.4 12.5 6.5 13.4 6.5 14.5C6.5 15.6 7.4 16.5 8.5 16.5Z" fill="white"/>',
			'exclamation' => '<defs><style>.b{fill:#231f20}</style></defs><g transform="translate(-.066)"><path d="M1.6 24a1.338 1.338 0 01-1.3-2.1L11 .9c.6-1.2 1.6-1.2 2.2 0l10.7 21c.6 1.2 0 2.1-1.3 2.1z" fill="#ffce31"/><path class="b" d="M10.3 8.6l1.1 7.4a.605.605 0 001.2 0l1.1-7.4a1.738 1.738 0 10-3.4 0z"/><circle class="b" cx="1.7" cy="1.7" r="1.7" transform="translate(10.3 17.3)"/></g>',
			'devices'     => '<path d="M4 40v-4.5h4.3V11q0-1.25.875-2.125T11.3 8h31v3h-31v24.5H23V40Zm23.95 0q-.85 0-1.4-.675Q26 38.65 26 37.8V15.95q0-.85.55-1.4.55-.55 1.4-.55h13.6q.95 0 1.7.525T44 15.95V37.8q0 .95-.725 1.575T41.55 40ZM29 35.5h12V17H29Z" fill="#777777"/>',
			'desktop'     => '<path d="M16.7 42v-3H21v-5H7q-1.2 0-2.1-.9Q4 32.2 4 31V9q0-1.2.9-2.1Q5.8 6 7 6h34q1.2 0 2.1.9.9.9.9 2.1v22q0 1.2-.9 2.1-.9.9-2.1.9H27v5h4.3v3ZM7 31h34V9H7v22Zm0 0V9v22Z" fill="#777777"/>',
			'mobile'      => '<path d="M13 46q-1.2 0-2.1-.9-.9-.9-.9-2.1V5q0-1.2.9-2.1.9-.9 2.1-.9h22q1.2 0 2.1.9.9.9.9 2.1v38q0 1.2-.9 2.1-.9.9-2.1.9Zm0-4.5V43h22v-1.5Zm0-3h22v-29H13Zm0-32h22V5H13Zm0 0V5v1.5Zm0 35V43Z" fill="#777777"/>',
			'scheduled'   => '<path d="m31.35 33.65 2.25-2.25-7.95-8V13.35h-3V24.6ZM24 44q-4.1 0-7.75-1.575-3.65-1.575-6.375-4.3-2.725-2.725-4.3-6.375Q4 28.1 4 24t1.575-7.75q1.575-3.65 4.3-6.375 2.725-2.725 6.375-4.3Q19.9 4 24 4t7.75 1.575q3.65 1.575 6.375 4.3 2.725 2.725 4.3 6.375Q44 19.9 44 24t-1.575 7.75q-1.575 3.65-4.3 6.375-2.725 2.725-6.375 4.3Q28.1 44 24 44Zm0-20Zm0 17q7 0 12-5t5-12q0-7-5-12T24 7q-7 0-12 5T7 24q0 7 5 12t12 5Z"/>',
			'plus'        => '<path d="M450 856V606H200v-60h250V296h60v250h250v60H510v250h-60Z" fill="#777777"/>',
			'duplicator'  => '<g><path transform="scale(0.18)" class="st1" d="M430.9,218H420c-0.9,0-1.9-0.3-3.4-0.3c-4.3-0.9-8.4-2.8-12.4-4.7c-0.9-0.6-1.9-0.9-2.8-1.6c-0.3-0.3-0.9-0.6-1.2-0.9c-0.6-0.3-0.9-0.6-1.6-1.2c-1.6-1.2-3.1-2.8-4.7-4.3c0,0,0,0-0.3-0.3c-0.9-0.9-1.6-1.9-2.2-3.1c-0.9-1.2-1.6-2.8-2.8-4c-0.9-1.9-1.9-4-3.1-6.2c-0.3-1.2-0.9-2.8-1.2-4c-0.3-0.9-0.3-1.9-0.6-2.8c0.3-0.9,0-2.2,0-3.7c0-0.3,0-0.6,0-0.9c0-4,0.3-7.8,1.2-11.2c1.6-5.6,4.3-10.9,7.5-15.8c0.6-0.6,1.2-1.2,1.6-2.2l5.9-6.2c5-5,5.3-13.4,0.6-18.6c-5.9-7.5-12.7-14.3-19.9-20.5L179.3,303.7c-3.4,3.1-8.7,0.9-8.7-3.7c0.3-34.8,0.9-94.4,1.2-124.2c0-5,6.5-6.5,9.3-2.2l20.8,36.6c1.6,3.1,5.6,3.4,8.1,0.9l93.1-93.1c0,0-0.3,0-0.3-0.3c-1.2-0.6-2.2-1.2-3.7-1.9c-0.6-0.6-1.6-0.9-2.2-1.6c-0.9-0.6-1.9-1.6-3.1-2.2c-0.3-0.3-0.3-0.3-0.6-0.6c-3.1-3.1-5-5.9-6.8-9.3c-3.1-5.6-5-11.5-5.9-17.7c-0.3-0.9-0.3-2.2-0.6-3.4c0-0.6,0-1.2,0-1.9v-8.7c0-7.8-5.6-13.7-13-14.3c-5.6-0.3-11.2-0.6-17.1-0.6c-5.3,0-10.9,0.3-16.1,0.6c-7.5,0.6-13,6.5-13,14c0,4.3-0.3,9.3-1.2,14.3c-0.9,5.9-3.1,11.8-5.9,17.7c-1.6,3.4-4,6.2-6.8,9c-0.3,0.3-0.3,0.3-0.6,0.6c-0.9,0.9-1.9,1.6-3.1,2.2c-0.6,0.6-1.6,0.9-2.2,1.6c-1.2,0.6-2.2,1.2-3.7,1.9c-1.9,0.9-4.3,1.9-6.2,2.2c-1.6,0.6-3.1,0.9-4.7,0.9c-1.2,0.3-2.2,0.3-3.7,0.3h-0.3c-1.9,0-4.3,0-6.2,0c-0.6,0-1.2,0-1.9-0.3c-0.6,0-1.2-0.3-1.6-0.3c-0.9-0.3-1.9-0.3-3.1-0.6c-4.3-1.2-8.4-3.1-11.8-5c-1.9-0.9-3.7-2.2-5.3-3.7c-0.6-0.6-1.2-0.9-1.9-1.6l-6.5-6.8c-5-5.3-13.7-5.9-19.3-1.2c-9,7.8-17.4,15.8-24.5,24.8c-4.7,5.6-4,13.7,0.6,18.6l5.9,6.2c0.6,0.6,1.2,1.2,1.6,2.2c3.1,4.7,5.9,10.2,7.5,15.8c0.9,3.7,1.2,7.5,1.2,11.2c0,0.3,0,0.6,0,0.9c0,1.2-0.3,2.2-0.3,3.7c0,0.9-0.3,1.9-0.6,2.8c-0.3,1.2-0.6,2.8-1.2,4c-0.6,2.2-1.6,4.3-3.1,6.2c-0.6,1.2-1.6,2.8-2.8,4c-0.6,0.9-1.6,1.9-2.2,3.1c0,0,0,0-0.3,0.3c-1.2,1.6-3.1,3.1-4.7,4.3c-0.6,0.3-0.9,0.9-1.6,1.2c-0.3,0.3-0.9,0.6-1.2,0.9c-0.9,0.6-1.9,0.9-2.8,1.6c-4,1.9-8.1,3.7-12.4,4.7c-0.9,0-1.9,0.3-3.4,0.3H69.1c-6.8,0-13.4,5.3-14,12.7c0.3,6.2,0,13,0,19.3c0,5.3,0.3,10.6,0.6,15.8c0.6,7.5,6.2,13,13.7,13l9.9,0.3c0.9,0,1.9,0,3.1,0.3c4,0.9,7.8,2.2,11.2,4c3.4,1.6,6.2,4,9.3,6.5c0.3,0.3,0.3,0.3,0.6,0.6c0.9,0.9,1.6,1.9,2.2,2.8c0.6,0.6,1.2,1.2,1.6,2.2c0.6,1.2,1.6,2.2,2.2,3.7c0.9,1.9,1.9,4,2.8,6.2c0.6,1.6,0.9,3.1,1.2,4.7c0.3,1.2,0.3,2.2,0.6,3.7v0.3c0.3,1.9,0.3,4.3,0,6.2c0,0.6,0,1.2,0,1.9s0,1.2-0.3,1.6c-0.3,0.9-0.3,1.9-0.6,3.1c-0.9,4.3-2.8,8.4-4.7,11.8c-0.6,1.2-1.2,2.8-2.2,3.7c-0.6,0.6-0.9,1.6-1.9,2.2l-6.2,6.8c-5,5-5.6,13-1.2,18.6c6.8,9,14.9,17.4,23.3,24.5l204.3-200.9c3.4-3.1,8.7-0.9,8.7,3.7c-0.3,34.8-0.9,94.4-1.2,124.2c0,5-6.5,6.5-9.3,2.2L302,287.5c-1.6-3.1-5.6-3.4-8.1-0.9l-97.5,97.8c0,0,0.3,0,0.3,0.3c0.9,0.6,1.9,1.2,3.1,2.2c0,0,0,0,0.3,0.3c1.6,1.2,3.1,2.8,4.3,4.3c0.3,0.6,0.9,0.9,1.2,1.6c0.3,0.3,0.6,0.9,0.9,1.2c0.6,0.9,0.9,1.6,1.6,2.8c2.2,3.7,4,7.8,5,11.8c1.9,7.5,2.8,14.6,2.8,20.8c0,7.5,5.6,13.4,12.7,14c6.8,0.6,14.3,1.2,21.4,1.2c7.1,0,14.3-0.3,21.4-1.2c6.8-0.6,12.7-6.5,12.7-14c0-6.2,0.6-14,2.8-20.8c0.9-4,2.8-8.1,5-11.8c0.6-0.9,0.9-1.6,1.6-2.8c0.3-0.3,0.6-0.9,0.9-1.2c0.3-0.6,0.9-0.9,1.2-1.6c1.2-1.6,2.8-3.1,4.3-4.3c0,0,0,0,0.3-0.3c0.9-0.6,1.9-1.6,3.1-2.2c1.2-0.9,2.8-1.6,4.3-2.2c1.9-0.9,4-1.9,6.2-2.8c1.2-0.3,2.8-0.6,4-0.9c0.9-0.3,1.9-0.3,3.1-0.3s2.2-0.3,3.7-0.3c0.3,0,0.6,0,0.9,0c4,0,7.8,0.6,11.2,1.6c5,1.6,9.6,4,14,6.8c0.6,0.6,1.6,1.2,2.2,1.9l6.8,7.5c5.3,5.3,13.7,5.6,19.3,0.9c9-8.1,17.1-16.1,24.2-25.5c4.3-5.6,3.7-13.7-1.2-18.6l-6.2-6.2c-0.6-0.6-1.2-1.2-1.9-2.2c-0.6-1.2-1.6-2.2-2.2-3.7c-1.9-3.7-3.7-7.8-4.7-11.8c-0.3-0.9-0.6-1.9-0.6-3.1c0-0.6-0.3-1.2-0.3-1.6c0-0.6,0-1.2,0-1.9c0-1.9,0-4,0-6.2v-0.3c0-1.2,0.3-2.2,0.6-3.7c0.3-1.6,0.6-3.1,1.2-4.7c0.6-1.9,1.6-4.3,2.8-6.2c0.6-1.2,1.2-2.2,2.2-3.7c0.6-0.6,0.9-1.6,1.6-2.2c0.6-0.9,1.6-1.9,2.2-2.8c0.3-0.3,0.3-0.3,0.6-0.6c2.8-2.8,5.9-5,9.3-6.5c3.7-1.9,7.5-3.4,11.2-4c0.9-0.3,1.9-0.3,3.1-0.3l9.9-0.3c7.5-0.3,13-5.9,13.7-13c0.3-5.3,0.6-10.6,0.6-15.8c0-6.5-0.3-13-0.9-19.3C443.6,223.6,437.7,218.3,430.9,218z" fill="#FE4715"/></g>',
			'robot'       => '<path d="M160-360q-50 0-85-35t-35-85q0-50 35-85t85-35v-80q0-33 23.5-56.5T240-760h120q0-50 35-85t85-35q50 0 85 35t35 85h120q33 0 56.5 23.5T800-680v80q50 0 85 35t35 85q0 50-35 85t-85 35v160q0 33-23.5 56.5T720-120H240q-33 0-56.5-23.5T160-200v-160Zm200-80q25 0 42.5-17.5T420-500q0-25-17.5-42.5T360-560q-25 0-42.5 17.5T300-500q0 25 17.5 42.5T360-440Zm240 0q25 0 42.5-17.5T660-500q0-25-17.5-42.5T600-560q-25 0-42.5 17.5T540-500q0 25 17.5 42.5T600-440ZM320-280h320v-80H320v80Zm-80 80h480v-480H240v480Zm240-240Z" fill="#777777" />',
			'aisparks'    => '<g id="star-2--reward-rating-rate-social-star-media-favorite-like-stars-spark"><path id="Union" class="cls-1" d="m21.9 12.1-3.38-7.67-3.38 7.67-7.67 3.38 7.67 3.38 3.38 7.67 3.38-7.67 7.67-3.38-7.67-3.38Z"/></g><g id="star-2--reward-rating-rate-social-star-media-favorite-like-stars-spark-2"><path id="Union-2" class="cls-1" d="M8.5 4.5 6.52 0 4.54 4.5.04 6.48l4.5 1.98 1.98 4.5 1.98-4.5L13 6.48 8.5 4.5Z"/></g><g id="star-2--reward-rating-rate-social-star-media-favorite-like-stars-spark-3"><path id="Union-3" class="cls-1" d="m5.91 24.09-1.38-3.14-1.38 3.14-3.14 1.38 3.14 1.38 1.38 3.14 1.38-3.14 3.14-1.38-3.14-1.38Z"/></g>',
			'logo-sr'     => '<path class="cls-1" d="M58,64H7c-3.7,0-6.6-2.9-6.6-6.6V6.6C.5,2.9,3.4,0,7,0h51c3.7,0,6.6,2.9,6.6,6.6v50.9c0,3.7-2.9,6.6-6.6,6.6ZM38.5,47.7c.6.6,1.4.9,2.1.9s1.5-.3,2.1-.9l10.5-10.4c1.9-1.9,1.9-5,0-6.9l-10.5-10.5c-1.1-1.2-3-1.2-4.2,0-1.2,1.1-1.2,3,0,4.2l9.6,9.7-9.7,9.7c-1.2,1.1-1.2,3,0,4.2h0ZM9.1,52c-.8,0-1.5-.3-2.1-.9-.6-.6-.9-1.3-.9-2.1s.3-1.5.9-2.1l7.1-7.1c.4-.4.5-.9.2-1.4-.2-.4-.4-.8-.5-1.3-.4-1.1-.6-2.4-.6-3.7,0-3.2,1.1-5.9,3.3-8.1,2.2-2.2,4.9-3.3,8.1-3.3s5.9,1.1,8.1,3.3c2.2,2.2,3.3,4.9,3.3,8.1s-1.1,5.9-3.3,8.1c-2.2,2.2-4.9,3.3-8.1,3.3s-2.5-.2-3.7-.6c-.4-.2-.9-.3-1.3-.5-.2,0-.3-.1-.5-.1-.3,0-.6.1-.9.4l-7.1,7.1c-.6.6-1.3.9-2.1.9ZM24.5,28.2c-1.6,0-2.8.5-3.9,1.6-1.1,1.1-1.6,2.3-1.6,3.9s.5,2.8,1.6,3.9c1.1,1.1,2.3,1.6,3.9,1.6s2.8-.5,3.9-1.6c1.1-1.1,1.6-2.3,1.6-3.9s-.5-2.8-1.6-3.9-2.3-1.6-3.9-1.6Z" fill="#0065FF" fill-rule="evenodd" stroke="0"/>',
			'step-1'      => '<path data-name="1" d="M47.48 67.35v-22.7h-8.8V39.3a16.779 16.779 0 003.57-.27 9.344 9.344 0 003.1-1.15 7.565 7.565 0 002.33-2.18 7.737 7.737 0 001.25-3.35h5.65v35h-7.1z" fill="#fff" fill-rule="evenodd"/>',
			'step-2'      => '<circle cx="50" cy="50" r="50" fill="#ccc"/><path data-name="2" d="M38.53 41.23a12.807 12.807 0 012.4-4.5 10.792 10.792 0 014.02-3 13.616 13.616 0 015.58-1.08 13.905 13.905 0 014.57.75 11.871 11.871 0 013.83 2.15A10.329 10.329 0 0161.55 39a10.589 10.589 0 01.98 4.6 11 11 0 01-.85 4.55 12.168 12.168 0 01-2.25 3.38 18.894 18.894 0 01-3.18 2.67c-1.18.8-2.37 1.59-3.57 2.38s-2.37 1.62-3.5 2.52a16.035 16.035 0 00-3 3.15h16.55v6.1h-25.7a14.681 14.681 0 01.87-5.3 14.2 14.2 0 012.38-4.02 20.5 20.5 0 013.52-3.28c1.35-1 2.78-2.01 4.28-3.05.77-.53 1.58-1.07 2.45-1.62a15.537 15.537 0 002.37-1.83A9.286 9.286 0 0054.7 47a5.5 5.5 0 00.73-2.85 5.006 5.006 0 00-5.25-5.4 4.569 4.569 0 00-2.63.73 5.345 5.345 0 00-1.72 1.9 9.023 9.023 0 00-.93 2.6 15.122 15.122 0 00-.27 2.82h-6.8a16.741 16.741 0 01.7-5.57z" fill="#fff" fill-rule="evenodd"/>',
			'menu'        => '<path d="M120-240v-80h720v80H120Zm0-200v-80h720v80H120Zm0-200v-80h720v80H120Z" fill="#777777"/>',
			'sync'        => '<path d="M9.36005 5.61394V8.56131L13.64 4.63148L9.36005 0.70166V3.64903C4.63065 3.64903 0.800049 7.16622 0.800049 11.5087C0.800049 13.0511 1.29225 14.4855 2.12685 15.6939L3.68905 14.2596C3.20755 13.4441 2.94005 12.501 2.94005 11.5087C2.94005 8.25675 5.81835 5.61394 9.36005 5.61394ZM16.5932 7.32341L15.031 8.7578C15.5018 9.58306 15.78 10.5164 15.78 11.5087C15.78 14.7606 12.9017 17.4034 9.36005 17.4034V14.456L5.08005 18.3859L9.36005 22.3157V19.3683C14.0894 19.3683 17.92 15.8511 17.92 11.5087C17.92 9.96622 17.4278 8.53183 16.5932 7.32341Z" fill="#777777"/>',
		)
	);
}
PK     ‚‰U]­,Êœ  œ    includes/safe-mode.phpnu „[µü¤        <?php
/**
 * Safe mode query var logic.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

add_action( 'plugins_loaded', 'wpcode_maybe_enable_safe_mode' );
add_filter( 'wpcode_do_auto_insert', 'wpcode_maybe_prevent_execution' );

/**
 * Simple check to see if we should be adding safe-mode logic.
 *
 * @return void
 */
function wpcode_maybe_enable_safe_mode() {
	if ( ! isset( $_GET['wpcode-safe-mode'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
		return;
	}

	// Only modify URLs if the user is on the login page or has the capability to manage snippets.
	if ( wpcode_is_wplogin() || current_user_can( 'wpcode_activate_snippets' ) ) {
		// If we're in safe mode, let's make sure all URLs keep the param until we are safe to get out.
		add_filter( 'home_url', 'wpcode_keep_safe_mode' );
		add_filter( 'admin_url', 'wpcode_keep_safe_mode' );
		add_filter( 'site_url', 'wpcode_keep_safe_mode_login', 10, 3 );
		// The admin menu doesn't offer a hook to change all the menu links so we do it with JS.
		add_action( 'admin_footer', 'wpcode_keep_safe_mode_admin_menu' );
		// Show a notice informing the user we're in safe mode and offer a way to get out.
		add_action( 'admin_notices', 'wpcode_safe_mode_notice' );
		add_action( 'wpcode_admin_notices', 'wpcode_safe_mode_notice' );
	}
}

/**
 * Make sure the URL keeps the safe mode variable.
 *
 * @param string $url The home or admin base URL.
 *
 * @return string
 */
function wpcode_keep_safe_mode( $url ) {
	return add_query_arg( 'wpcode-safe-mode', 1, $url );
}

/**
 * Force safe mode to all URLs displayed in the admin so we can keep navigating
 * using safe mode as there's no hook in WP to change the main admin menu.
 *
 * @return void
 */
function wpcode_keep_safe_mode_admin_menu() {
	// There's no reliable way to filter all the admin menu links so we have to force them via JS.
	// There's also a notice being added to allow users to "exit" safe mode.
	?>
	<script type="text/javascript">
		[...document.querySelectorAll( 'a:not(.wpcode-safe-mode)' )].forEach( e => {
			const url = new URL( e.href );
			url.searchParams.set( 'wpcode-safe-mode', '1' );
			e.href = url.toString();
		} );
	</script>
	<?php
}

/**
 * Show a notice informing the user we're in safe mode and offer a way to get out.
 *
 * @return void
 */
function wpcode_safe_mode_notice() {
	?>
	<div class="notice notice-warning">
		<p><?php esc_html_e( 'WPCode is in Safe Mode which means no snippets are getting executed. Please disable any snippets that have caused errors and when done click the button below to exit safe mode.', 'insert-headers-and-footers' ); ?></p>
		<p><?php esc_html_e( 'The link will open in a new window so if you are still encountering issues you safely can return to this tab and make further adjustments', 'insert-headers-and-footers' ); ?></p>
		<p>
			<a class="button button-secondary wpcode-safe-mode" href="<?php echo esc_url( remove_query_arg( 'wpcode-safe-mode' ) ); ?>" target="_blank"><?php esc_html_e( 'Exit safe mode', 'insert-headers-and-footers' ); ?></a>
		</p>
	</div>
	<?php
}

/**
 * Let's check if we're in the admin or if the current user can manage
 * snippets before allowing them to see the site with snippets disabled.
 *
 * @param bool $execute Execute snippets or not.
 *
 * @return mixed
 */
function wpcode_maybe_prevent_execution( $execute ) {
	if ( ! isset( $_GET['wpcode-safe-mode'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
		return $execute;
	}

	if ( wpcode_is_wplogin() || current_user_can( 'wpcode_activate_snippets' ) ) {
		return false;
	}

	return $execute;
}

/**
 * Checks schema passed to site_url and adds the safe mode query param
 * so we can login using safe mode.
 *
 * @param string $url The site_url already processed.
 * @param string $path The path that was added to the URL.
 * @param string $scheme The scheme that was requested.
 *
 * @return string
 */
function wpcode_keep_safe_mode_login( $url, $path, $scheme ) {
	if ( 'login_post' !== $scheme ) {
		return $url;
	}

	return add_query_arg( 'wpcode-safe-mode', 1, $url );
}

/**
 * Helper function that checks if we are on the login screen
 * to allow admins to attempt to log in and disable snippets
 * without having to edit code.
 *
 * @return bool
 */
function wpcode_is_wplogin() {
	if ( empty( $_SERVER['REQUEST_URI'] ) ) {
		return false;
	}

	return false !== stripos( esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ), strrchr( wp_login_url(), '/' ) );
}
PK     ‚‰U]É¨.û>W  >W  !  includes/class-wpcode-library.phpnu „[µü¤        <?php
/**
 * Load snippets from the wpcode.com snippet library.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Library.
 */
class WPCode_Library {

	/**
	 * Key for storing snippets in the cache.
	 *
	 * @var string
	 */
	protected $cache_key = 'snippets';

	/**
	 * Library endpoint for loading all data.
	 *
	 * @var string
	 */
	protected $all_snippets_endpoint = 'get';

	/**
	 * The key for storing individual snippets.
	 *
	 * @var string
	 */
	protected $snippet_key = 'snippets/snippet';

	/**
	 * The base cache folder for this class.
	 *
	 * @var string
	 */
	protected $cache_folder = 'library';

	/**
	 * The data.
	 *
	 * @var array
	 */
	protected $data;

	/**
	 * The default time to live for libary items that are cached.
	 *
	 * @var int
	 */
	protected $ttl = DAY_IN_SECONDS;

	/**
	 * Key for transient used to store already installed snippets.
	 *
	 * @var string
	 */
	protected $used_snippets_transient_key = 'wpcode_used_library_snippets';

	/**
	 * Array of snippet ids that were already loaded from the library.
	 *
	 * @var array
	 */
	protected $library_snippets;

	/**
	 * Meta Key used for storing the library id.
	 *
	 * @var string
	 */
	protected $snippet_library_id_meta_key = '_wpcode_library_id';

	/**
	 * Total number of snippets in the library atm.
	 *
	 * @var int
	 */
	protected $snippets_count;

	/**
	 * Snippets grouped by library username.
	 *
	 * @var array
	 */
	protected $snippets_by_username = array();

	/**
	 * Array of library usernames.
	 *
	 * @var array
	 */
	protected $library_usernames = array();

	/**
	 * Constructor.
	 */
	public function __construct() {
		$this->hooks();
	}

	/**
	 * Class-specific hooks.
	 *
	 * @return void
	 */
	protected function hooks() {
		add_action( 'trash_wpcode', array( $this, 'clear_used_snippets' ) );
		add_action( 'transition_post_status', array( $this, 'clear_used_snippets_untrash' ), 10, 3 );
		add_action( 'wpcode_library_api_auth_connected', array( $this, 'delete_cache' ) );
		add_action( 'wpcode_library_api_auth_connected', array( $this, 'get_data_delayed' ), 15 );
		add_action( 'wpcode_library_api_auth_deleted', array( $this, 'delete_cache' ) );
	}

	/**
	 * Wait for the file cache to be cleared before loading the data.
	 *
	 * @return void
	 */
	public function get_data_delayed() {

		// Wait for the cache to be cleared.
		add_action( 'shutdown', array( $this, 'get_data' ) );
	}

	/**
	 * Grab all the available categories from the library.
	 *
	 * @return array
	 */
	public function get_data() {
		if ( ! isset( $this->data ) ) {
			$this->data = $this->load_data();
		}

		return $this->data;
	}

	/**
	 * Get the number of snippets in the library.
	 *
	 * @return int
	 */
	public function get_snippets_count() {
		if ( ! isset( $this->snippets_count ) ) {
			$this->snippets_count = 0;
			$data                 = $this->get_data();
			if ( ! empty( $data['snippets'] ) ) {
				$this->snippets_count = count( $data['snippets'] );
			}
		}

		return $this->snippets_count;
	}

	/**
	 * Grab data from the cache.
	 *
	 * @param string $key The key used to grab from cache.
	 * @param int    $ttl The time to live for cached data, defaults to class ttl.
	 *
	 * @return array|false
	 */
	public function get_from_cache( $key, $ttl = 0 ) {
		if ( empty( $ttl ) ) {
			$ttl = $this->ttl;
		}

		$data = wpcode()->file_cache->get( $this->cache_folder . '/' . $key, $ttl );

		if ( isset( $data['error'] ) && isset( $data['time'] ) ) {
			if ( $data['time'] + 10 * MINUTE_IN_SECONDS < time() ) {
				return false;
			} else {
				return $this->get_empty_array();
			}
		}

		return $data;
	}

	/**
	 * Load the library data either from the server or from cache.
	 *
	 * @return array
	 */
	public function load_data() {
		$this->data = $this->get_from_cache( $this->cache_key );

		if ( false === $this->data ) {
			$this->data = $this->get_from_server();
		}

		$this->maybe_add_usernames_data();

		return $this->data;
	}


	/**
	 * Get data from the server.
	 *
	 * @return array
	 */
	protected function get_from_server() {
		$data = $this->process_response( $this->make_request( $this->all_snippets_endpoint ) );

		if ( empty( $data['snippets'] ) ) {
			return $this->save_temporary_response_fail( $this->cache_key );
		}

		$this->save_to_cache( $this->cache_key, $data );

		return $data;
	}

	/**
	 * Generic request handler with support for authentication.
	 *
	 * @param string $endpoint The API endpoint to load data from.
	 * @param string $method The method used for the request (GET, POST, etc).
	 * @param array  $data The data to pass in the body for POST-like requests.
	 *
	 * @return string
	 */
	public function make_request( $endpoint = '', $method = 'GET', $data = array() ) {
		$args = array(
			'method'  => $method,
			'timeout' => 10,
		);
		if ( wpcode()->library_auth->has_auth() ) {
			$args['headers'] = $this->get_authenticated_headers();
		}
		if ( ! empty( $data ) ) {
			$args['body'] = $data;
		}

		$url = add_query_arg(
			array(
				'site'    => rawurlencode( site_url() ),
				'version' => WPCODE_VERSION,
			),
			wpcode()->library_auth->get_api_url( $endpoint )
		);

		$response = wp_remote_request( $url, $args );

		$response_code = wp_remote_retrieve_response_code( $response );
		if ( $response_code > 299 ) {
			// Temporary error so cache for just 10 minutes and then try again.
			return '';
		}

		return wp_remote_retrieve_body( $response );
	}

	/**
	 * Get the headers for making an authenticated request.
	 *
	 * @return array
	 */
	public function get_authenticated_headers() {
		// Build the headers of the request.
		return array(
			'Content-Type'     => 'application/x-www-form-urlencoded',
			'Cache-Control'    => 'no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0',
			'Pragma'           => 'no-cache',
			'Expires'          => 0,
			'Origin'           => site_url(),
			'WPCode-Referer'   => site_url(),
			'WPCode-Sender'    => 'WordPress',
			'WPCode-Site'      => esc_attr( get_option( 'blogname' ) ),
			'WPCode-Version'   => esc_attr( WPCODE_VERSION ),
			'WPCode-Client-Id' => wpcode()->library_auth->get_client_id(),
			'X-WPCode-ApiKey'  => wpcode()->library_auth->get_auth_key(),
		);
	}

	/**
	 * When we can't fetch from the server we save a temporary error => true file to avoid
	 * subsequent requests for a while. Returns a properly formatted array for frontend output.
	 *
	 * @param string $key The key used for storing the data in the cache.
	 *
	 * @return array
	 */
	public function save_temporary_response_fail( $key ) {
		$data = array(
			'error' => true,
			'time'  => time(),
		);
		$this->save_to_cache( $key, $data );

		return $this->get_empty_array();
	}

	/**
	 * Get an empty array for a consistent response.
	 *
	 * @return array[]
	 */
	public function get_empty_array() {
		return array(
			'categories' => array(),
			'snippets'   => array(),
		);
	}

	/**
	 * Save to cache.
	 *
	 * @param string      $key The key used to store the data in the cache.
	 * @param array|mixed $data The data that will be stored.
	 *
	 * @return void
	 */
	public function save_to_cache( $key, $data ) {
		wpcode()->file_cache->set( $this->cache_folder . '/' . $key, $data );
	}

	/**
	 * Generic handler for grabbing data by slug. Either all categories or the category slug.
	 *
	 * @param string $data Response body from server.
	 *
	 * @return array
	 */
	public function process_response( $data ) {
		$response = json_decode( $data, true );
		if ( ! isset( $response['status'] ) || 'success' !== $response['status'] ) {
			return $this->get_empty_array();
		}

		return $response['data'];
	}

	/**
	 * Get a cache key for a specific snippet id.
	 *
	 * @param int $id The snippet id.
	 *
	 * @return string
	 */
	public function get_snippet_cache_key( $id ) {
		return $this->snippet_key . '_' . $id;
	}

	/**
	 * Create a new snippet by the library id.
	 * This grabs the snippet by its id from the snippet library site and creates
	 * a new snippet on the current site using the response.
	 *
	 * @param int $library_id The id of the snippet on the library site.
	 *
	 * @return false|WPCode_Snippet
	 */
	public function create_new_snippet( $library_id ) {

		$snippet_data = $this->grab_snippet_from_api( $library_id );

		if ( ! $snippet_data ) {
			return false;
		}

		$snippet_data = apply_filters( 'wpcode_library_import_snippet_data', $snippet_data );

		$snippet = wpcode_get_snippet( $snippet_data );

		$snippet_id = $snippet->save();

		// Save the version information if available in the API response.
		if ( ! empty( $snippet_data['version'] ) ) {
			update_post_meta( $snippet_id, '_wpcode_snippet_version', $snippet_data['version'] );
		}

		delete_transient( $this->used_snippets_transient_key );

		return $snippet;
	}

	/**
	 * Grab a snippet data from the API.
	 *
	 * @param int $library_id The id of the snippet in the Library api.
	 *
	 * @return array|array[]|false
	 */
	public function grab_snippet_from_api( $library_id ) {
		$snippet_request = $this->make_request( 'get/' . $library_id );
		$snippet_data    = $this->process_response( $snippet_request );

		if ( empty( $snippet_data ) ) {
			return false;
		}

		return $snippet_data;
	}

	/**
	 * Get all the snippets that were created from the library, by library ID.
	 * Results are cached in a transient.
	 *
	 * @return array
	 */
	public function get_used_library_snippets() {

		if ( isset( $this->library_snippets ) ) {
			return $this->library_snippets;
		}

		$snippets_from_library = get_transient( $this->used_snippets_transient_key );

		if ( false === $snippets_from_library ) {
			$snippets_from_library = array();

			$args     = array(
				'post_type'   => wpcode_get_post_type(),
				'meta_query'  => array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
					array(
						'key'     => $this->snippet_library_id_meta_key,
						'compare' => 'EXISTS',
					),
				),
				'fields'      => 'ids',
				'post_status' => 'any',
				'nopaging'    => true,
			);
			$snippets = get_posts( $args );

			foreach ( $snippets as $snippet_id ) {
				$snippets_from_library[ $this->get_snippet_library_id( $snippet_id ) ] = $snippet_id;
			}

			set_transient( $this->used_snippets_transient_key, $snippets_from_library );
		}

		$this->library_snippets = $snippets_from_library;

		return $this->library_snippets;
	}

	/**
	 * Grab the library id from the snippet by snippet id.
	 *
	 * @param int $snippet_id The snippet id.
	 *
	 * @return int
	 */
	public function get_snippet_library_id( $snippet_id ) {
		return absint( get_post_meta( $snippet_id, '_wpcode_library_id', true ) );
	}

	/**
	 * When a snippet is trashed, clear the used snippets transients
	 * for this class instance to avoid confusion in the library.
	 *
	 * @return void
	 */
	public function clear_used_snippets() {
		delete_transient( $this->used_snippets_transient_key );
	}

	/**
	 * Clear used snippets also when a snippet is un-trashed.
	 *
	 * @param string  $new_status The new post status.
	 * @param string  $old_status The old post status.
	 * @param WP_Post $post The post object.
	 *
	 * @return void
	 */
	public function clear_used_snippets_untrash( $new_status, $old_status, $post ) {
		if ( 'wpcode' !== $post->post_type || 'trash' !== $old_status ) {
			return;
		}

		$this->clear_used_snippets();
	}

	/**
	 * Delete the file cache for the snippets library.
	 *
	 * @return void
	 */
	public function delete_cache() {
		wpcode()->file_cache->delete( $this->cache_folder . '/' . $this->cache_key );
		if ( isset( $this->data ) ) {
			unset( $this->data );
		}
	}

	/**
	 * Makes a request to the snippet library API to grab a public snippet by its hash.
	 *
	 * @param string $hash The hash used to identify the snippet on the library server.
	 * @param string $auth The unique user hash used to authenticate the request on the library.
	 *
	 * @return array
	 */
	public function get_public_snippet( $hash, $auth ) {
		// Let's use transients for hashes to avoid unnecessary requests.
		$transient_key = 'wpcode_public_snippet_' . $hash . '_' . $auth;
		$snippet_data  = get_transient( $transient_key );
		if ( false === $snippet_data ) {
			$snippet_request = $this->make_request(
				'public/' . $hash,
				'POST',
				array(
					'auth' => $auth,
				)
			);
			$snippet_data    = json_decode( $snippet_request, true );
			// Transient for 1 minute if error otherwise 30 minutes.
			$timeout = ! isset( $snippet_data['status'] ) || 'error' === $snippet_data['status'] ? 60 : 30 * 60;
			set_transient( $transient_key, $snippet_data, $timeout );
		}

		return $snippet_data;
	}

	/**
	 * Get snippets by username.
	 *
	 * @param string $username The username to grab data for.
	 * @param string $version The version of the library to grab data for.
	 *
	 * @return array
	 */
	public function get_snippets_by_username( $username, $version = '' ) {

		$username = sanitize_key( $username );

		if ( empty( $version ) ) {
			// Let's grab the version from the registered username if no version is explicitly passed.
			$version = $this->get_version_by_username( $username );
		}

		if ( ! isset( $this->snippets_by_username[ $username ] ) ) {
			$this->load_snippets_by_username( $username, $version );
		}

		return $this->snippets_by_username[ $username ];
	}

	/**
	 * Grab the version from the registered username array.
	 *
	 * @param string $username The username to grab version for.
	 *
	 * @return string
	 */
	public function get_version_by_username( $username ) {
		return isset( $this->library_usernames[ $username ] ) ? $this->library_usernames[ $username ]['version'] : '';
	}

	/**
	 * Load snippets in the current instance, either from cache or from the server.
	 *
	 * @param string $username The username to grab data for.
	 * @param string $version The version of the plugin/theme to grab data for.
	 *
	 * @return array
	 */
	private function load_snippets_by_username( $username, $version ) {

		$this->snippets_by_username[ $username ] = $this->get_from_cache( 'profile_' . $username );

		if ( false === $this->snippets_by_username[ $username ] ) {
			$this->snippets_by_username[ $username ] = $this->get_from_server_by_username( $username );
		}

		// Let's filter the loaded data to make sure no snippets aimed at older versions are loaded.
		$this->snippets_by_username[ $username ] = $this->filter_snippets_by_version( $this->snippets_by_username[ $username ], $version );

		return $this->data;
	}

	/**
	 * Go through all the snippets and if they have a maximum version set, remove them if the current version is higher.
	 *
	 * @param array  $profile_data The snippets to filter.
	 * @param string $version The version to filter by.
	 *
	 * @return array
	 */
	public function filter_snippets_by_version( $profile_data, $version ) {
		// If we have no version, we can't filter anything.
		if ( empty( $version ) || empty( $profile_data['snippets'] ) ) {
			return $profile_data;
		}

		$filtered_snippets = array();
		foreach ( $profile_data['snippets'] as $snippet ) {
			if ( empty( $snippet['max_version'] ) || version_compare( $version, $snippet['max_version'], '<=' ) ) {
				$filtered_snippets[] = $snippet;
			}
		}

		$profile_data['snippets'] = $filtered_snippets;

		return $profile_data;
	}

	/**
	 * Grab data from the WPCode library by username.
	 *
	 * @param string $username The username to grab data for.
	 *
	 * @return array|array[]
	 */
	private function get_from_server_by_username( $username ) {
		$data = $this->process_response( $this->make_request( 'profile/' . $username ) );

		if ( empty( $data['snippets'] ) ) {
			return $this->save_temporary_response_fail( 'profile_' . $username );
		}

		$this->save_to_cache( 'profile_' . $username, $data );

		return $data;
	}

	/**
	 * Get a list of usernames that we should attempt to load data from the library for.
	 *
	 * @return array
	 */
	public function get_library_usernames() {
		return $this->library_usernames;
	}

	/**
	 * Add a method to allow other plugins to register usernames to load data for.
	 *
	 * @param string $username The public username on the WPCode Library.
	 * @param string $label The label to display in the WPCode library view.
	 * @param string $max_version The plugin/theme version, used for excluding snippets aimed at older plugin/theme versions.
	 *
	 * @return void
	 */
	public function register_library_username( $username, $label = '', $max_version = '' ) {
		$username = sanitize_key( $username );
		if ( empty( $label ) ) {
			$label = $username;
		}

		$this->library_usernames[ $username ] = array(
			'label'   => $label,
			'version' => $max_version,
		);
	}

	/**
	 * If there are usernames to load data for, add them to the data array.
	 *
	 * @return void
	 */
	public function maybe_add_usernames_data() {
		$usernames = $this->get_library_usernames();
		if ( empty( $usernames ) ) {
			return;
		}

		foreach ( $usernames as $username => $data ) {
			$snippets = $this->get_snippets_by_username( $username, $data['version'] );
			if ( ! empty( $snippets['snippets'] ) ) {
				$this->data['categories'][] = array(
					'slug'  => $username,
					'name'  => $data['label'],
					'count' => count( $snippets['snippets'] ),
				);
				// Append snippets to the $this->data['snippets'] array.
				$this->data['snippets'] = array_merge( $this->data['snippets'], $snippets['snippets'] );
			}
		}
	}

	/**
	 * Get the URL to edit a snippet.
	 *
	 * @param int $snippet_id The snippet id.
	 *
	 * @return string
	 */
	public function get_edit_snippet_url( $snippet_id ) {
		return add_query_arg(
			array(
				'page'       => 'wpcode-snippet-manager',
				'snippet_id' => absint( $snippet_id ),
			),
			admin_url( 'admin.php' )
		);
	}

	/**
	 * Get a direct link to install a snippet by its library URL.
	 *
	 * @param int $snippet_library_id The snippet ID on the WPCode library.
	 *
	 * @return string
	 */
	public function get_install_snippet_url( $snippet_library_id ) {
		return wp_nonce_url(
			add_query_arg(
				array(
					'snippet_library_id' => absint( $snippet_library_id ),
					'page'               => 'wpcode-library',
				),
				admin_url( 'admin.php' )
			),
			'wpcode_add_from_library'
		);
	}

	/**
	 * Get just the snippets from usernames.
	 *
	 * @return array
	 */
	public function get_username_snippets() {
		$usernames = $this->get_library_usernames();

		$snippets   = array();
		$categories = array();

		foreach ( $usernames as $username => $data ) {
			$username_snippets = $this->get_snippets_by_username( $username, $data['version'] );
			if ( ! empty( $username_snippets['snippets'] ) ) {
				$categories[] = array(
					'slug'  => $username,
					'name'  => $data['label'],
					'count' => count( $username_snippets['snippets'] ),
				);
				// Append snippets to the $this->data['snippets'] array.
				$snippets = array_merge( $snippets, $username_snippets['snippets'] );
			}
		}

		return array(
			'categories' => $categories,
			'snippets'   => $snippets,
		);
	}

	/**
	 * Check if a snippet has an update available by comparing with cached data.
	 *
	 * @param int    $snippet_id The snippet ID.
	 * @param string $library_id The library ID.
	 *
	 * @return bool|array False if no update, array with version info if update available.
	 */
	public function check_snippet_update( $snippet_id, $library_id ) {
		// Get current version from post meta.
		$current_version = get_post_meta( $snippet_id, '_wpcode_snippet_version', true );

		// For library snippets, get from library cache.
		$cached_data     = $this->get_data();
		$library_snippet = null;
		if ( ! empty( $cached_data['snippets'] ) ) {
			foreach ( $cached_data['snippets'] as $snippet ) {
				if ( isset( $snippet['library_id'] ) && absint( $snippet['library_id'] ) === absint( $library_id ) ) {
					$library_snippet = $snippet;
					break;
				}
			}
		}

		if ( ! $library_snippet || empty( $library_snippet['version'] ) ) {
			return false;
		}

		$latest_version = $library_snippet['version'];

		// If either version is empty, set it to 1.0.0.
		if ( empty( $current_version ) ) {
			$current_version = '1.0.0';
		}

		if ( empty( $latest_version ) ) {
			$latest_version = '1.0.0';
		}

		// If latest version is greater than current version, update is available.
		if ( version_compare( $latest_version, $current_version, '>' ) ) {
			return array(
				'current_version' => $current_version,
				'latest_version'  => $latest_version,
			);
		}

		return false;
	}


	/**
	 * Update a snippet from the library.
	 *
	 * @param int $snippet_id The ID of the snippet to update.
	 * @param int $library_id The ID of the library snippet to fetch.
	 *
	 * @return array|false Array with success data or false on failure.
	 */
	public function update_snippet_from_library( $snippet_id, $library_id ) {
		// Get snippet data from library.
		$library_snippet = $this->grab_snippet_from_api( $library_id );

		if ( ! $library_snippet ) {
			return false;
		}

		// Update snippet.
		$library_snippet['id'] = $snippet_id;
		$snippet               = wpcode_get_snippet( $library_snippet );
		$result                = $snippet->save();

		if ( ! $result ) {
			return false;
		}

		// Update local version metadata.
		if ( ! empty( $library_snippet['version'] ) ) {
			update_post_meta( $snippet_id, '_wpcode_snippet_version', $library_snippet['version'] );
		}

		return array(
			'success' => true,
			'version' => ! empty( $library_snippet['version'] ) ? $library_snippet['version'] : '',
		);
	}

	/**
	 * Get the list of snippets that have updates available.
	 * Checks on the fly using cached data.
	 *
	 * @return array
	 */
	public function get_snippets_with_updates() {
		// Get all snippets with library IDs.
		$library_snippets = $this->get_used_library_snippets();

		$snippets_with_updates = array();

		// Check library snippets.
		foreach ( $library_snippets as $library_id => $snippet_id ) {
			$update_info = $this->check_snippet_update( $snippet_id, $library_id );
			if ( $update_info ) {
				$snippets_with_updates[] = $snippet_id;
			}
		}

		/**
		 * Filter the list of snippets with updates.
		 * This allows other classes to add their snippets with updates to the results.
		 *
		 * @param array $snippets_with_updates The list of snippets with updates.
		 */
		return apply_filters( 'wpcode_snippets_with_updates', $snippets_with_updates );
	}
}
PK     ‚‰U]&–º`    0  includes/admin/class-wpcode-metabox-snippets.phpnu „[µü¤        <?php
/**
 * Base class for the WPCode snippets metabox.
 *
 * @package WPCode
 */

/**
 * WPCode metabox snippets.
 */
abstract class WPCode_Metabox_Snippets {

	/**
	 * Id used for registering the metabox using add_meta_box.
	 *
	 * @var string
	 */
	public $id = 'wpcode-metabox-snippets';

	/**
	 * Title of the metabox.
	 *
	 * @var string
	 */
	public $title;

	/**
	 * Tabs for this metabox.
	 *
	 * @var array
	 */
	public $tabs;

	/**
	 * If true, the metabox will scroll into view when the page loads.
	 *
	 * @var bool
	 */
	protected $scroll_into_view = false;

	/**
	 * Register the metabox.
	 */
	public function __construct() {
		$this->hooks();
	}

	/**
	 * Load the translatable strings.
	 *
	 * @return void
	 */
	public function load_strings() {
		$this->title = __( 'WPCode Page Scripts', 'insert-headers-and-footers' );
		$this->tabs  = array(
			'header' => __( 'Header', 'insert-headers-and-footers' ),
			'footer' => __( 'Footer', 'insert-headers-and-footers' ),
		);

		$body_supported = function_exists( 'wp_body_open' ) && version_compare( get_bloginfo( 'version' ), '5.2', '>=' );

		if ( $body_supported ) {
			$this->tabs['body'] = __( 'Body', 'insert-headers-and-footers' );
		}

		$this->tabs['code']      = __( 'Custom Code Snippet', 'insert-headers-and-footers' );
		$this->tabs['revisions'] = __( 'Revisions', 'insert-headers-and-footers' );

	}

	/**
	 * Add hooks.
	 *
	 * @return void
	 */
	public function hooks() {
		add_action( 'admin_init', array( $this, 'load_strings' ) );
		add_action( 'add_meta_boxes', array( $this, 'register_metabox' ) );
		add_action( 'admin_head', array( $this, 'close_metabox_for_current_screen' ) );
	}

	/**
	 * Make sure the metabox is closed by default.
	 *
	 * @return void
	 */
	public function close_metabox_for_current_screen() {
		// Close the metabox by default.
		$screen = get_current_screen();
		if ( ! isset( $screen->id ) ) {
			return;
		}
		if ( apply_filters( 'wpcode_metabox_scripts_force_collapse', true, $screen ) ) {
			add_filter(
				'get_user_option_closedpostboxes_' . $screen->id,
				array(
					$this,
					'add_metabox_to_user_closed',
				)
			);
		}
	}

	/**
	 * Add our metabox id to the array of closed metaboxes when the page loads.
	 *
	 * @param mixed $closed The array of closed metaboxes.
	 *
	 * @return array
	 */
	public function add_metabox_to_user_closed( $closed ) {
		// Make sure it's an array.
		if ( ! is_array( $closed ) ) {
			$closed = array();
		}
		$closed[] = $this->id;

		return $closed;
	}

	/**
	 * Use `add_meta_box` to register the metabox for this class.
	 *
	 * @param string $post_type The post type of the screen where metaboxes are loaded.
	 *
	 * @return void
	 */
	public function register_metabox( $post_type ) {
		// Don't show the metabox to users who aren't allowed to manage snippets.
		if ( ! current_user_can( 'wpcode_edit_html_snippets' ) ) {
			return;
		}

		if ( wpcode()->settings->get_option( 'headers_footers_mode' ) ) {
			// Don't load the metabox when headers & footers mode is enabled.
			return;
		}

		$post_type_details = get_post_type_object( $post_type );

		// Add metabox only on public post types.
		if ( empty( $post_type_details->public ) ) {
			return;
		}

		add_meta_box(
			$this->id,
			$this->title,
			array(
				$this,
				'output_metabox_content',
			),
			$post_type,
			'normal',
			apply_filters( 'wpcode_post_metabox_priority', 'default' )
		);
	}

	/**
	 * Metabox content output callback.
	 *
	 * @param WP_Post $post The post object.
	 *
	 * @return void
	 */
	public function output_metabox_content( $post ) {
		$this->metabox_start();
		echo '<div class="wpcode-content">';
		$this->tabs_navigation();
		$this->tabs_content( $post );
		echo '</div>';
		$this->metabox_end();
	}

	/**
	 * Output the menu for switching between tabs.
	 *
	 * @return void
	 */
	public function tabs_navigation() {
		if ( empty( $this->tabs ) ) {
			return;
		}
		?>
		<div class="wpcode-admin-tabs-navigation">
			<ul class="wpcode-admin-tabs">
				<?php
				$class = '';
				foreach ( $this->tabs as $tab_id => $tab_name ) {
					if ( $this->get_active_tab() === $tab_id ) {
						$class = 'active';
					}
					?>
					<li>
						<button type="button" data-target="<?php echo esc_attr( $this->get_tab_html_id( $tab_id ) ); ?>" class="<?php echo esc_attr( $class ); ?>"><?php echo esc_html( $tab_name ); ?></button>
					</li>
					<?php
					$class = '';
				}
				do_action( 'wpcode_metabox_admin_tabs' )
				?>
			</ul>
		</div>
		<?php
	}

	/**
	 * Output the tabs content using tab-specific methods by their ids.
	 *
	 * @param WP_Post $post The post object.
	 *
	 * @return void
	 */
	public function tabs_content( $post ) {
		$tab_ids = array_keys( $this->tabs );

		foreach ( $tab_ids as $tab_id ) {
			$class = 'wpcode-admin-tab-content';

			$class .= $this->get_active_tab() === $tab_id ? ' active' : '';
			printf(
				'<div class="%1$s" id="%2$s">',
				esc_attr( $class ),
				esc_attr( $this->get_tab_html_id( $tab_id ) )
			);
			if ( method_exists( $this, 'output_tab_' . $tab_id ) ) {
				call_user_func( array( $this, 'output_tab_' . $tab_id ), $post );
			} else {
				$this->output_tab( $tab_id, $post );
			}
			echo '</div>';
		}
	}

	/**
	 * Generic tab content output method.
	 *
	 * @param string  $tab_id The tab id.
	 * @param WP_Post $post The post object.
	 *
	 * @return void
	 */
	public function output_tab( $tab_id, $post ) {
	}

	/**
	 * Get the active tab id.
	 *
	 * @return string
	 */
	public function get_active_tab() {
		$active_tab = 'header';
		if ( isset( $_GET['wpcode-show'] ) && array_key_exists( sanitize_key( $_GET['wpcode-show'] ), $this->tabs ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			$active_tab             = sanitize_key( $_GET['wpcode-show'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			$this->scroll_into_view = true;
		}

		return $active_tab;
	}

	/**
	 * Get a standard tab id from the array key.
	 *
	 * @param string $tab_id The tab id.
	 *
	 * @return string
	 */
	public function get_tab_html_id( $tab_id ) {
		return 'wpcode-tab-' . $tab_id;
	}

	/**
	 * Method for running logic at the start of the metabox.
	 *
	 * @return void
	 */
	public function metabox_start() {
	}

	/**
	 * Method for running logic at the end of the metabox, loading scripts, for example.
	 *
	 * @return void
	 */
	public function metabox_end() {
	}
}
PK     ‚‰U]8‚è*o  o  +  includes/admin/class-wpcode-code-editor.phpnu „[µü¤        <?php
/**
 * Central place to load the Code Editor used throughout the plugin with
 * similar settings.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Code_Editor.
 */
class WPCode_Code_Editor {


	/**
	 * Array of settings used to instantiate the editor.
	 *
	 * @var array
	 */
	private $settings;

	/**
	 * Array of ids of textareas to init as code editors.
	 *
	 * @var array
	 */
	private $editors;

	/**
	 * WPCode_Code_Editor Constructor.
	 *
	 * @param string $code_type The code type that will be converted to the mime type for the editor.
	 */
	public function __construct( $code_type = 'html' ) {
		$this->load_code_mirror( $code_type );
	}

	/**
	 * If called, this loads CodeMirror on the current admin page with checks.
	 *
	 * @param string $code_type The code type that will be converted to the mime type for the editor.
	 *
	 * @return array|false
	 */
	public function load_code_mirror( $code_type ) {
		if ( ! function_exists( 'wp_enqueue_code_editor' ) ) {
			return false;
		}
		$editor_args = array(
			'type'       => wpcode()->execute->get_mime_for_code_type( $code_type ),
			'showHint'   => true,
			'codemirror' => array(
				'matchBrackets'             => true,
				'gutters'                   => array( 'CodeMirror-lint-markers', 'CodeMirror-foldgutter' ),
				'foldGutter'                => true,
				'autoCloseBrackets'         => true,
				'highlightSelectionMatches' => true,
			),
		);
		if ( ! current_user_can( 'wpcode_edit_snippets' ) ) {
			$editor_args['codemirror']['readOnly'] = true;
		}

		// Check if the DISALLOW_UNFILTERED_HTML is defined and print the warning message
		if ( defined( 'DISALLOW_UNFILTERED_HTML' ) && DISALLOW_UNFILTERED_HTML ) {
			WPCode_Notice::warning(
				esc_html__( 'The PHP constant DISALLOW_UNFILTERED_HTML is currently defined, which is preventing WPCode from saving code accurately. Please contact your webmaster for assistance in disabling this restriction.', 'insert-headers-and-footers' )
			);
		}

		// Allow filtering of the editor args.
		$editor_args = apply_filters( 'wpcode_editor_config', $editor_args );

		// Add filter to override the current user meta for syntax highlighting.
		add_filter( 'get_user_metadata', array( $this, 'override_user_meta' ), 10, 4 );
		// Enqueue code editor and settings for manipulating HTML.
		$this->settings = wp_enqueue_code_editor( $editor_args );
		// Remove the filter.
		remove_filter( 'get_user_metadata', array( $this, 'override_user_meta' ) );

		return $this->settings;
	}

	/**
	 * When using the WPCode editor always load syntax highlighting.
	 *
	 * @param mixed  $value The meta value.
	 * @param int    $object_id The user ID.
	 * @param string $meta_key The meta key being looked up.
	 * @param bool   $single True if only the first value should be returned.
	 *
	 * @return bool|mixed
	 */
	public function override_user_meta( $value, $object_id, $meta_key, $single ) {
		if ( 'syntax_highlighting' !== $meta_key || ! apply_filters( 'wpcode_override_syntax_highlighting', true ) ) {
			return $value;
		}

		return true;
	}

	/**
	 * Load hint scripts if needed.
	 *
	 * @return void
	 */
	public function load_hint_scripts() {
		wp_enqueue_script( 'htmlhint' );
		wp_enqueue_script( 'csslint' );
		wp_enqueue_script( 'jshint' );
	}

	/**
	 * Update a setting for the editor instance.
	 *
	 * @param string $key Key of setting to update.
	 * @param mixed  $value Value to set the setting to, can be string, integer, array.
	 *
	 * @return void
	 */
	public function set_setting( $key, $value ) {
		if ( ! isset( $this->settings ) ) {
			return;
		}
		if ( ! isset( $this->settings['codemirror'] ) ) {
			$this->settings['codemirror'] = array();
		}

		$this->settings['codemirror'][ $key ] = $value;
	}

	/**
	 * Load the inline script needed to initiate the code editor using the current settings.
	 *
	 * @param string $id The textarea ID to init the editor for.
	 *
	 * @return void
	 */
	public function register_editor( $id ) {
		$this->editors[] = $id;
	}

	/**
	 * Load the inline script needed to initiate the code editor using the current settings.
	 *
	 * @return void
	 */
	public function init_editor() {
		wp_add_inline_script(
			'code-editor',
			sprintf(
				'
				jQuery( function() {
							window.wpcode_editor = window.wpcode_editor ? window.wpcode_editor : {};
							var ids = %1$s;
							var settings = %2$s;
							for ( var i in ids ) {
								window.wpcode_editor[ids[i]] = wp.codeEditor.initialize( ids[i], settings );
							}
						} );',
				wp_json_encode( $this->editors ),
				wp_json_encode( $this->get_settings() )
			)
		);
	}

	/**
	 * Get the settings.
	 *
	 * @return array
	 */
	public function get_settings() {
		return $this->settings;
	}
}
PK     ‚‰U]<’{¦  ¦     includes/admin/admin-scripts.phpnu „[µü¤        <?php
/**
 * Load scripts for the admin area.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

add_action( 'admin_enqueue_scripts', 'wpcode_admin_scripts' );
add_filter( 'admin_body_class', 'wpcode_admin_body_class' );

/**
 * Load admin scripts here.
 *
 * @return void
 */
function wpcode_admin_scripts() {

	$current_screen = get_current_screen();

	if ( ! isset( $current_screen->id ) || false === strpos( $current_screen->id, 'wpcode' ) ) {
		return;
	}

	$admin_asset_file = WPCODE_PLUGIN_PATH . 'build/admin.asset.php';

	if ( ! file_exists( $admin_asset_file ) ) {
		return;
	}

	$asset = require $admin_asset_file;

	wp_enqueue_style( 'wpcode-admin-css', WPCODE_PLUGIN_URL . 'build/admin.css', null, $asset['version'] );

	wp_enqueue_script( 'wpcode-admin-js', WPCODE_PLUGIN_URL . 'build/admin.js', $asset['dependencies'], $asset['version'], true );

	wp_localize_script(
		'wpcode-admin-js',
		'wpcode',
		apply_filters(
			'wpcode_admin_js_data',
			array(
				'nonce'                    => wp_create_nonce( 'wpcode_admin' ),
				'code_type_options'        => wpcode()->execute->get_code_type_options(),
				'please_wait'              => __( 'Please wait.', 'insert-headers-and-footers' ),
				'ok'                       => __( 'OK', 'insert-headers-and-footers' ),
				'purchased'                => __( 'Already Purchased?', 'insert-headers-and-footers' ),
				'upgrade_link'             => wpcode_utm_url( 'https://wpcode.com/docs/how-to-upgrade-your-wpcode-license/', 'upsell-alert', $current_screen->id ),
				'bonus'                    => __( 'Bonus', 'insert-headers-and-footers' ),
				'price'                    => __( '$50 off', 'insert-headers-and-footers' ),
				'regular_price'            => __( 'regular price, automatically applied at checkout.', 'insert-headers-and-footers' ),
				'wpcode_lite_users'        => __( 'WPCode Lite users get', 'insert-headers-and-footers' ),
				'upgrade_button'           => __( 'Upgrade to PRO', 'insert-headers-and-footers' ),
				'smart_tags_upgrade_title' => __( 'Smart Tags are a Premium feature', 'insert-headers-and-footers' ),
				'smart_tags_upgrade_text'  => __( 'Upgrade to PRO today and simplify the way you write advanced snippets using smart tags without having to write any PHP code.', 'insert-headers-and-footers' ),
				'testing_mode'             => array(
					'title'           => __( 'Testing Mode is a Premium Feature', 'insert-headers-and-footers' ),
					'text'            => __( 'Upgrade to PRO today and make changes to your snippets, Header & Footer scripts or Page Scripts without affecting your live site. You choose when and what to publish to your visitors.', 'insert-headers-and-footers' ),
					'button_text'     => __( 'Upgrade to PRO', 'insert-headers-and-footers' ),
					'link'            => wpcode_utm_url( 'https://wpcode.com/lite/', 'testing-mode', $current_screen->id ),
					'learn_more_text' => __( 'Learn more about Testing Mode', 'insert-headers-and-footers' ),
					'learn_more_link' => wpcode_utm_url( 'https://wpcode.com/docs/testing-mode/', 'testing-mode-learn-more', $current_screen->id ),
				),
				'auth_needed_title_sync'   => __( 'Connect with WPCode Library to Sync Snippets', 'insert-headers-and-footers' ),
				'auth_needed_text_sync'    => __( 'Before syncing your snippets, you must connect to WPCode Library, so we can securely access and update them.', 'insert-headers-and-footers' ),
				'auth_needed_confirm'      => __( 'Connect with WPCode Library', 'insert-headers-and-footers' ),
				'confirm_sync_title'       => __( 'Confirm Update', 'insert-headers-and-footers' ),
				'confirm_sync_text'        => __( 'Updating this snippet will overwrite your current local changes with the latest version from the library.', 'insert-headers-and-footers' ),
				'confirm_sync_button'      => __( 'Yes, Update Now', 'insert-headers-and-footers' ),
				'cancel'                   => __( 'Cancel', 'insert-headers-and-footers' ),
				'check_for_updates_title'  => __( 'The Private Snippet Library is a Premium Feature', 'insert-headers-and-footers' ),
				'check_for_updates_text'   => __( 'Upgrade today and get access to a private snippet library that you can use to manage snippets on multiple sites.', 'insert-headers-and-footers' ),
				'learn_more_text'          => __( 'Learn more about WPCode Pro', 'insert-headers-and-footers' ),
				'learn_more_link'          => wpcode_utm_url( 'https://wpcode.com/docs/wpcode-pro-features/', 'check-updates-learn-more', $current_screen->id ),
				'upgrade_url'              => wpcode_utm_url( 'https://wpcode.com/lite/', 'check-updates', $current_screen->id ),
				'multisite'                => false,
				'connect_url'              => wpcode()->library_auth->auth_url(),
				'your_version'             => __( 'Your version:', 'insert-headers-and-footers' ),
				'library_version'          => __( 'Library version:', 'insert-headers-and-footers' ),
				'old_version'              => __( 'Old version:', 'insert-headers-and-footers' ),
				'new_version'              => __( 'New version:', 'insert-headers-and-footers' ),
				'ok_button'                => __( 'OK', 'insert-headers-and-footers' ),
			)
		)
	);

	// Dequeue debug bar console styles on WPCode pages.
	wp_dequeue_style( 'debug-bar-codemirror' );
	wp_dequeue_style( 'debug-bar-console' );
}

/**
 * Scripts needed outside the WPCode admin area (e.g. metabox).
 *
 * @param string $version The version of the scripts to load. Default is 'lite'.
 *
 * @return void
 */
function wpcode_admin_scripts_global( $version = 'lite' ) {

	// Load "globally" but still only on certain screens.
	$current_screen = get_current_screen();

	$dont_load = ! isset( $current_screen->base ) || 'post' !== $current_screen->base;

	// Allow other plugins to modify the screens where the global scripts are loaded.
	if ( apply_filters( 'wpcode_load_global_scripts', $dont_load ) ) {
		return;
	}

	$admin_asset_file = WPCODE_PLUGIN_PATH . "build/admin-global-{$version}.asset.php";

	if ( ! file_exists( $admin_asset_file ) ) {
		return;
	}

	$asset = require $admin_asset_file;

	wp_enqueue_style( 'wpcode-admin-global-css', WPCODE_PLUGIN_URL . "build/admin-global-{$version}.css", null, $asset['version'] );

	wp_enqueue_script( 'wpcode-admin-global-js', WPCODE_PLUGIN_URL . "build/admin-global-{$version}.js", $asset['dependencies'], $asset['version'], true );
}

/**
 * Add stable body class that doesn't change with the translation.
 *
 * @param string $classes The body classes.
 *
 * @return string
 */
function wpcode_admin_body_class( $classes ) {

	$page_parent = get_admin_page_parent();

	if ( 'wpcode' === $page_parent ) {
		$classes .= ' wpcode-admin-page';

		if ( ! empty( wpcode()->settings->get_option( 'dark_mode' ) ) ) {
			$classes .= ' wpcode-dark-mode';
		}
	}

	return $classes;
}
PK     „‰U]Ùô�,¡  ¡  .  includes/admin/class-wpcode-usage-tracking.phpnu „[µü¤        <?php
/**
 * Class WPCode_Usage_Tracking - The abstract class for the usage tracking.
 *
 * @package WPCode
 */

/**
 * The abstract class for the usage tracking.
 */
abstract class WPCode_Usage_Tracking {
	/**
	 * Returns the current plugin version type ("lite" or "pro").
	 *
	 * @return string The version type.
	 * @since 2.0.10
	 */
	abstract public function get_type();

	/**
	 * Is the usage tracking enabled?
	 *
	 * @return bool
	 * @since 2.0.10
	 */
	abstract public function is_enabled();

	/**
	 * Usage Tracking endpoint.
	 *
	 * @since 2.0.10
	 *
	 * @var string
	 */
	private $url = 'https://wpcodeusage.com/v1/track';

	/**
	 * Option name to store the timestamp of the last run.
	 *
	 * @since 2.0.10
	 */
	const LAST_RUN = 'wpcode_send_usage_last_run';

	/**
	 * Class Constructor.
	 *
	 * @since 2.0.10
	 */
	public function __construct() {
		add_action( 'init', array( $this, 'init' ), 2 );
		add_action( 'wpcode_usage_tracking_cron', array( $this, 'process' ) );
		add_action( 'wpcode_library_api_auth_connected', array( $this, 'usage_tracking_auth' ) );
	}

	/**
	 * Initiate the usage tracking cron.
	 *
	 * @return void
	 * @since 2.0.10
	 */
	public function init() {
		if ( ! wp_next_scheduled( 'wpcode_usage_tracking_cron' ) ) {
			$tracking             = array();
			$tracking['day']      = wp_rand( 0, 6 );
			$tracking['hour']     = wp_rand( 0, 23 );
			$tracking['minute']   = wp_rand( 0, 59 );
			$tracking['second']   = wp_rand( 0, 59 );
			$tracking['offset']   = ( $tracking['day'] * DAY_IN_SECONDS ) + ( $tracking['hour'] * HOUR_IN_SECONDS ) + ( $tracking['minute'] * MINUTE_IN_SECONDS ) + $tracking['second'];
			$tracking['initsend'] = strtotime( 'next sunday' ) + $tracking['offset'];

			wp_schedule_event( $tracking['initsend'], 'weekly', 'wpcode_usage_tracking_cron' );
			update_option( 'wpcode_usage_tracking_config', $tracking, false );
		}
	}

	/**
	 * Processes the usage tracking.
	 *
	 * @return void
	 * @since 2.0.10
	 */
	public function process() {
		if ( ! $this->is_enabled() ) {
			return;
		}

		$last_run = get_option( self::LAST_RUN );

		// Make sure we do not run it more than once a day.
		if ( false !== $last_run && ( time() - $last_run ) < DAY_IN_SECONDS ) {
			return;
		}

		wp_remote_post(
			$this->get_url(),
			array(
				'timeout'    => 10,
				'headers'    => array(
					'Content-Type' => 'application/json; charset=utf-8',
				),
				'user-agent' => $this->get_user_agent(),
				'body'       => wp_json_encode( $this->get_data() ),
			)
		);

		// If we have completed successfully, recheck in 1 week.
		update_option( self::LAST_RUN, time() );
	}

	/**
	 * Gets the URL for the notifications api.
	 *
	 * @return string The URL to use for the api requests.
	 * @since 2.0.10
	 */
	private function get_url() {
		if ( defined( 'WPCODE_USAGE_TRACKING_URL' ) ) {
			return WPCODE_USAGE_TRACKING_URL;
		}

		return $this->url;
	}

	/**
	 * Rtrieve the data to send to the usage tracking api.
	 *
	 * @return array
	 * @since 2.0.10
	 */
	public function get_data() {
		global $wpdb;

		$theme_data     = wp_get_theme();
		$activated      = get_option( 'ihaf_activated', array() );
		$installed_date = isset( $activated['wpcode'] ) ? $activated['wpcode'] : null;

		$data = array(
			// Generic data (environment).
			'url'                        => home_url(),
			'php_version'                => PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION,
			'wp_version'                 => get_bloginfo( 'version' ),
			'mysql_version'              => $wpdb->db_version(),
			'server_version'             => isset( $_SERVER['SERVER_SOFTWARE'] ) ? sanitize_text_field( wp_unslash( $_SERVER['SERVER_SOFTWARE'] ) ) : '',
			'is_ssl'                     => is_ssl(),
			'is_multisite'               => is_multisite(),
			'sites_count'                => function_exists( 'get_blog_count' ) ? (int) get_blog_count() : 1,
			'active_plugins'             => $this->get_active_plugins(),
			'theme_name'                 => $theme_data->name,
			'theme_version'              => $theme_data->version,
			'user_count'                 => function_exists( 'get_user_count' ) ? get_user_count() : null,
			'locale'                     => get_locale(),
			'timezone_offset'            => wpcode_wp_timezone_string(),
			// WPCode specific data.
			'wpcode_version'             => WPCODE_VERSION,
			'wpcode_license_key'         => null,
			'wpcode_license_type'        => null,
			'wpcode_is_pro'              => false,
			'wpcode_lite_installed_date' => $installed_date,
			'wpcode_settings'            => $this->get_settings(),
		);

		// Add snippets data.
		$data = array_merge( $data, $this->get_snippets_data() );

		return $data;
	}

	/**
	 * Return a list of active plugins.
	 *
	 * @return array An array of active plugin data.
	 * @since 2.0.10
	 */
	private function get_active_plugins() {
		if ( ! function_exists( 'get_plugins' ) ) {
			include ABSPATH . '/wp-admin/includes/plugin.php';
		}
		$active  = get_option( 'active_plugins', array() );
		$plugins = array_intersect_key( get_plugins(), array_flip( $active ) );

		return array_map(
			static function ( $plugin ) {
				if ( isset( $plugin['Version'] ) ) {
					return $plugin['Version'];
				}

				return 'Not Set';
			},
			$plugins
		);
	}

	/**
	 * Get the User Agent string that will be sent to the API.
	 *
	 * @return string
	 * @since 2.0.10
	 */
	public function get_user_agent() {
		return 'WPCode/' . WPCODE_VERSION . '; ' . get_bloginfo( 'url' );
	}

	/**
	 * Get the WPCode settings but anonymize some data.
	 *
	 * @return array
	 */
	public function get_settings() {
		$settings = wpcode()->settings->get_options();

		// By default, don't send the API tokens.
		$settings_to_ignore = apply_filters(
			'wpcode_usage_tracking_excluded_settings',
			array(
				'facebook_pixel_api_token',
				'pinterest_conversion_token',
				'tiktok_access_token',
			)
		);

		foreach ( $settings_to_ignore as $setting ) {
			if ( isset( $settings[ $setting ] ) ) {
				$settings[ $setting ] = '***';
			}
		}

		return $settings;
	}

	/**
	 * After the user has successfully authenticated with the API, we can start sending data.
	 *
	 * @return void
	 */
	public function usage_tracking_auth() {
		// If already enabled, don't do anything.
		if ( $this->is_enabled() ) {
			return;
		}
		wpcode()->settings->update_option( 'usage_tracking', true );
	}

	/**
	 * Track snippet-specific data.
	 *
	 * @return array
	 */
	public function get_snippets_data() {
		$counts        = wp_count_posts( 'wpcode' );
		$snippets_data = array(
			'wpcode_total_snippets'     => array_sum( array( $counts->publish, $counts->draft ) ),
			'wpcode_active_snippets'    => $counts->publish,
			'wpcode_trashed_snippets'   => $counts->trash,
			'wpcode_generated_snippets' => 0,
			'wpcode_generators'         => array(),
		);

		if ( empty( $snippets_data['wpcode_total_snippets'] ) ) {
			// If there are no snippets to look at then we can return early.
			return $snippets_data;
		}
		// Let's see how many snippets were generated with a WPCode Generator.
		$generated_snippets = get_posts(
			array(
				'post_type' => 'wpcode',
				'meta_key'  => '_wpcode_generator', // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
				'fields'    => 'ids',
			)
		);

		if ( ! empty( $generated_snippets ) ) {
			$snippets_data['wpcode_generated_snippets'] = count( $generated_snippets );
			foreach ( $generated_snippets as $snippet_id ) {
				$snippets_data['wpcode_generators'][] = get_post_meta( $snippet_id, '_wpcode_generator', true );
			}
		}

		return $snippets_data;
	}
}
PK     †‰U]—Ay�\  \  )  includes/admin/class-wpcode-importers.phpnu „[µü¤        <?php
/**
 * Load classes used for importing data from other plugins.
 *
 * @package WPCode
 */

/**
 * WPCode_Importers class.
 */
class WPCode_Importers {

	/**
	 * Available importers.
	 *
	 * @var WPCode_Importer_Type[]
	 */
	public $importers = array();

	/**
	 * Constructor.
	 */
	public function __construct() {
		$this->require_files();
		$this->load_importers();
	}

	/**
	 * Require the importer classes.
	 *
	 * @return void
	 */
	private function require_files() {
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/importers/class-wpcode-importer-type.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/importers/class-wpcode-importer-code-snippets.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/importers/class-wpcode-importer-code-snippets-premium.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/importers/class-wpcode-importer-woody.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/importers/class-wpcode-importer-simple-custom-css-and-js.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/importers/class-wpcode-importer-header-footer-code-manager.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/importers/class-wpcode-importer-post-snippets.php';
	}

	/**
	 * Load the available importers instances.
	 *
	 * @return void
	 */
	private function load_importers() {
		if ( empty( $this->importers ) ) {
			$this->importers = array(
				'code-snippets'              => new WPCode_Importer_Code_Snippets(),
				'code-snippets-pro'          => new WPCode_Importer_Code_Snippets_Pro(),
				'woody'                      => new WPCode_Importer_Woody(),
				'simple-custom-css-js'       => new WPCode_Importer_Simple_Custom_CSS_and_JS(),
				'header-footer-code-manager' => new WPCode_Importer_Header_Footer_Code_Manager(),
				'post-snippets'              => new WPCode_Importer_Post_Snippets(),
			);
		}
	}

	/**
	 * Get the importers with registered data.
	 *
	 * @return array
	 */
	public function get_importers() {

		$importers = array();

		foreach ( $this->importers as $importer ) {
			$importers = $importer->register( $importers );
		}

		return $importers;
	}
}
PK     ˆ‰U]_Ù<^æ  æ  H  includes/admin/importers/class-wpcode-importer-code-snippets-premium.phpnu „[µü¤        <?php
/**
 * Importer for Code Snippets Pro.
 *
 * @package WPCode.
 */

/**
 * Class WPCode_Importer_Code_Snippets_Pro.
 */
class WPCode_Importer_Code_Snippets_Pro extends WPCode_Importer_Code_Snippets {

	/**
	 * The plugin name.
	 *
	 * @var string
	 */
	public $name = 'Code Snippets Pro';

	/**
	 * Importer slug.
	 *
	 * @var string
	 */
	public $slug = 'code-snippets-pro';

	/**
	 * Plugin path.
	 *
	 * @var string
	 */
	public $path = 'code-snippets-pro/code-snippets.php';
}
PK     Š‰U]Nh¿£–  –  @  includes/admin/importers/class-wpcode-importer-code-snippets.phpnu „[µü¤        <?php
/**
 * Importer for Code Snippets.
 *
 * @package WPCode.
 */

/**
 * Class WPCode_Importer_Code_Snippets.
 */
class WPCode_Importer_Code_Snippets extends WPCode_Importer_Type {

	/**
	 * The plugin name.
	 *
	 * @var string
	 */
	public $name = 'Code Snippets';

	/**
	 * Importer slug.
	 *
	 * @var string
	 */
	public $slug = 'code-snippets';

	/**
	 * Plugin path.
	 *
	 * @var string
	 */
	public $path = 'code-snippets/code-snippets.php';

	/**
	 * Get an array of snippets for this plugin.
	 *
	 * @return array
	 */
	public function get_snippets() {

		$snippets = array();

		if ( ! $this->is_active() ) {
			return $snippets;
		}

		if ( ! function_exists( '\Code_Snippets\get_snippets' ) ) {
			return $snippets;
		}

		$code_snippets = \Code_Snippets\get_snippets();

		foreach ( $code_snippets as $code_snippet ) {
			/**
			 * The Code Snippets Snippet object.
			 *
			 * @var \Code_Snippets\Snippet $code_snippet
			 */
			if ( '' === $code_snippet->name ) {
				$code_snippet->name = '(no title)';
			}
			$snippets[ $code_snippet->id ] = $code_snippet->name;
		}

		return $snippets;
	}

	/**
	 * Import the snippet data.
	 *
	 * @return void
	 */
	public function import_snippet() {
		// Run a security check.
		check_ajax_referer( 'wpcode_admin' );

		if ( ! current_user_can( 'wpcode_edit_snippets' ) ) {
			wp_send_json_error();
		}

		if ( ! function_exists( '\Code_Snippets\get_snippets' ) ) {
			wp_send_json_error();
		}

		$id = isset( $_POST['snippet_id'] ) ? absint( $_POST['snippet_id'] ) : 0;

		// Grab a snippet from Code Snippets.
		$snippets = \Code_Snippets\get_snippets( array( $id ) );

		if ( empty( $snippets ) || empty( $snippets[0] ) ) {
			wp_send_json_error(
				array(
					'error' => true,
					'name'  => esc_html__( 'Unknown Snippet', 'insert-headers-and-footers' ),
					'msg'   => esc_html__( 'The snippet you are trying to import does not exist.', 'insert-headers-and-footers' ),
				)
			);
		}

		// If we got so far we have a snippet to process.
		$snippet = $snippets[0];

		// Create a new snippet from the snippet data array.
		$new_snippet = new WPCode_Snippet( $this->get_snippet_data( $snippet ) );

		$new_snippet->save();

		if ( ! empty( $new_snippet->get_id() ) ) {
			$title = $new_snippet->get_title();
			wp_send_json_success(
				array(
					'name' => '' !== $title ? $title : '(no title)',
					'edit' => esc_url_raw(
						add_query_arg(
							array(
								'page'       => 'wpcode-snippet-manager',
								'snippet_id' => $new_snippet->get_id(),
							),
							admin_url( 'admin.php' )
						)
					),
				)
			);
		}
	}

	/**
	 * Convert a "Code Snippets" snippet to the format for a WPCode snippet.
	 *
	 * @param \Code_Snippets\Snippet $snippet The snippet object.
	 *
	 * @return array
	 */
	public function get_snippet_data( $snippet ) {

		$code_type   = $this->get_snippet_type( $snippet );
		$auto_insert = 1;
		switch ( $snippet->scope ) {
			case 'admin':
				$location = 'admin_only';
				break;
			case 'front-end':
				$location = 'frontend_only';
				break;
			default:
				$location = 'everywhere';
		}
		if ( 'php' !== $code_type ) {
			$location    = '';
			$auto_insert = 0;
		}

		$tags   = is_array( $snippet->tags ) ? $snippet->tags : explode( ',', $snippet->tags );
		$tags[] = $this->add_imported_tag();

		return array(
			'code'        => wp_slash( $snippet->code ),
			'note'        => $snippet->desc,
			'title'       => $snippet->name,
			'tags'        => implode( ',', $tags ), // Combine all tags into a single string.
			'code_type'   => $code_type,
			'priority'    => $snippet->priority,
			'location'    => $location,
			'auto_insert' => $auto_insert,
		);
	}

	/**
	 * Get the snippet type from the scope as the method in \Code_Snippets\Snippet is private.
	 *
	 * @param \Code_Snippets\Snippet $snippet The snippet to check the scope for.
	 *
	 * @return string
	 */
	public function get_snippet_type( $snippet ) {
		if ( ! isset( $snippet->scope ) ) {
			return 'php';
		}

		if ( '-css' === substr( $snippet->scope, - 4 ) ) {
			return 'css';
		}

		if ( '-js' === substr( $snippet->scope, - 3 ) ) {
			return 'js';
		}

		if ( 'content' === substr( $snippet->scope, - 7 ) ) {
			return 'universal';
		}

		return 'php';
	}
}
PK     Œ‰U]
ü[íµ  µ  K  includes/admin/importers/class-wpcode-importer-simple-custom-css-and-js.phpnu „[µü¤        <?php
/**
 * Importer for Simple Custom CSS and JS.
 *
 * @package WPCode.
 */

/**
 * Class WPCode_Importer_Simple_Custom_CSS_and_JS.
 */
class WPCode_Importer_Simple_Custom_CSS_and_JS extends WPCode_Importer_Type {
	/**
	 * The plugin name.
	 *
	 * @var string
	 */
	public $name = 'Simple Custom CSS and JS';

	/**
	 * Importer slug.
	 *
	 * @var string
	 */
	public $slug = 'simple-custom-css-js';

	/**
	 * Plugin path.
	 *
	 * @var string
	 */
	public $path = 'custom-css-js/custom-css-js.php';

	/**
	 * Get an array of snippets for this plugin.
	 *
	 * @return array
	 */
	public function get_snippets() {
		$snippets = array();

		if ( ! $this->is_active() ) {
			return $snippets;
		}

		// Retrieve all 'custom-css-js' posts.
		$args = array(
			'post_type'      => 'custom-css-js',
			'posts_per_page' => -1,
			'post_status'    => array( 'publish', 'draft' ),
		);

		$posts = get_posts( $args );

		foreach ( $posts as $post ) {
			$status = $post->post_status;
			$label  = $post->post_title ? $post->post_title : '(no title)';
			if ( 'publish' !== $status ) {
				$label .= ' (' . $status . ')';
			}
			$snippets[ $post->ID ] = $label;
		}

		return $snippets;
	}

	/**
	 * Import the snippet data.
	 *
	 * @return void
	 */
	public function import_snippet() {
		// Run a security check.
		check_ajax_referer( 'wpcode_admin' );

		if ( ! current_user_can( 'wpcode_edit_snippets' ) ) {
			wp_send_json_error();
		}

		$id = isset( $_POST['snippet_id'] ) ? absint( $_POST['snippet_id'] ) : 0;

		if ( ! $id ) {
			wp_send_json_error(
				array(
					'error' => true,
					'name'  => esc_html__( 'Unknown Snippet', 'insert-headers-and-footers' ),
					'msg'   => esc_html__( 'The snippet you are trying to import does not exist.', 'insert-headers-and-footers' ),
				)
			);
		}

		$post = get_post( $id );

		if ( ! $post || 'custom-css-js' !== $post->post_type ) {
			wp_send_json_error(
				array(
					'error' => true,
					'name'  => esc_html__( 'Unknown Snippet', 'insert-headers-and-footers' ),
					'msg'   => esc_html__( 'The snippet you are trying to import does not exist.', 'insert-headers-and-footers' ),
				)
			);
		}

		// Now get the snippet data.
		$snippet_data = $this->get_snippet_data( $post );

		// Create new WPCode snippet.
		$new_snippet = new WPCode_Snippet( $snippet_data );

		// Save the snippet.
		$new_snippet->save();

		if ( ! empty( $new_snippet->get_id() ) ) {
			$title = $new_snippet->get_title();
			wp_send_json_success(
				array(
					'name' => '' !== $title ? $title : '(no title)',
					'edit' => esc_url_raw(
						add_query_arg(
							array(
								'page'       => 'wpcode-snippet-manager',
								'snippet_id' => $new_snippet->get_id(),
							),
							admin_url( 'admin.php' )
						)
					),
				)
			);
		} else {
			wp_send_json_error(
				array(
					'error' => true,
					'name'  => $post->post_title,
					'msg'   => esc_html__( 'Failed to import the snippet.', 'insert-headers-and-footers' ),
				)
			);
		}
	}

	/**
	 * Convert a "Simple Custom CSS and JS" snippet to the format for a WPCode snippet.
	 *
	 * @param WP_Post $post The snippet post object.
	 *
	 * @return array
	 */
	public function get_snippet_data( $post ) {
		// Prepare the data.
		$code  = $post->post_content;
		$title = $post->post_title;

		// Get the options array.
		$options = get_post_meta( $post->ID, 'options', true );

		$code_type = 'css';
		if ( is_array( $options ) && isset( $options['language'] ) ) {
			$language = $options['language'];
			// Map language to code_type.
			switch ( $language ) {
				case 'js':
					$code_type = 'javascript';
					break;
				case 'html':
					$code_type = 'html';
					break;
			}
		}

		$type_location = isset( $options['type'] ) ? $options['type'] : '';

		if ( 'header' === $type_location ) {
			$location = 'site_wide_header';
		} elseif ( 'footer' === $type_location ) {
			$location = 'site_wide_footer';
		} else {
			$location = 'site_wide_body';
		}

		if ( ! empty( $options['side'] ) ) {
			$site_locations = explode( ',', $options['side'] );
			$site_locations = array_map( 'trim', $site_locations );

			if ( in_array( 'admin', $site_locations, true ) && in_array( 'frontend', $site_locations, true ) ) {
				$location = 'site_wide_header';
			} elseif ( 'header' === $type_location && in_array( 'admin', $site_locations, true ) ) {
					$location = 'admin_head';
			} elseif ( 'footer' === $type_location && in_array( 'admin', $site_locations, true ) ) {
				$location = 'admin_footer';
			}
		}

		$priority = 10;

		if ( is_array( $options ) && isset( $options['priority'] ) ) {
			$priority = intval( $options['priority'] );
		}

		$load_as_file = false;
		if ( is_array( $options ) && isset( $options['linking'] ) ) {
			$linking = $options['linking'];
			if ( 'external' === $linking ) {
				$load_as_file = true;
			}
		}

		// Prepare the data array.
		$snippet_data = array(
			'code'        => wp_slash( $code ),
			'title'       => $title,
			'code_type'   => $code_type,
			'location'    => $location,
			'auto_insert' => 1, // Set to 1 for auto-insert.
			'priority'    => $priority,
			'tags'        => $this->add_imported_tag(),
		);

		// Set 'load_as_file' if applicable.
		if ( $load_as_file ) {
			$snippet_data['load_as_file'] = true;
		}

		return $snippet_data;
	}
}
PK     Ž‰U]äþ+ÆÄ#  Ä#  M  includes/admin/importers/class-wpcode-importer-header-footer-code-manager.phpnu „[µü¤        <?php
/**
 * Importer for Header Footer Code Manager.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Importer_Header_Footer_Code_Manager
 */
class WPCode_Importer_Header_Footer_Code_Manager extends WPCode_Importer_Type {
	/**
	 * The plugin name.
	 *
	 * @var string
	 */
	public $name = 'Header Footer Code Manager';

	/**
	 * Importer slug.
	 *
	 * @var string
	 */
	public $slug = 'header-footer-code-manager';

	/**
	 * Plugin path.
	 *
	 * @var string
	 */
	public $path = 'header-footer-code-manager/99robots-header-footer-code-manager.php';

	/**
	 * Get an array of snippets from the Header Footer Code Manager table.
	 *
	 * Returns an associative array where keys are snippet IDs and values are snippet labels.
	 *
	 * @return array
	 */
	public function get_snippets() {
		$snippets = array();

		if ( ! class_exists( 'Hfcm_Snippets_List' ) ) {
			return $snippets;
		}

		$results = Hfcm_Snippets_List::get_snippets();

		if ( $results ) {
			foreach ( $results as $snippet ) {
				$label                             = ! empty( $snippet['name'] ) ? $snippet['name'] : __( '(no title)', 'insert-headers-and-footers' );
				$snippets[ $snippet['script_id'] ] = $label;
			}
		}

		return $snippets;
	}

	/**
	 * Import the selected snippet.
	 *
	 * Expects a POST parameter 'snippet_id' that contains the HFCM snippet ID.
	 *
	 * @return void
	 */
	public function import_snippet() {
		// Verify AJAX nonce.
		check_ajax_referer( 'wpcode_admin' );

		if ( ! current_user_can( 'wpcode_edit_snippets' ) ) {
			wp_send_json_error();
		}

		$id = isset( $_POST['snippet_id'] ) ? absint( $_POST['snippet_id'] ) : 0;
		if ( ! $id ) {
			wp_send_json_error(
				array(
					'error' => true,
					'msg'   => __( 'Invalid snippet ID.', 'insert-headers-and-footers' ),
				)
			);
		}

		global $wpdb;
		$table_name = $wpdb->prefix . 'hfcm_scripts';
		$snippet    = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$table_name} WHERE script_id = %d", $id ) ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared, WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.DirectQuery

		if ( ! $snippet ) {
			wp_send_json_error(
				array(
					'error' => true,
					'msg'   => __( 'Snippet not found.', 'insert-headers-and-footers' ),
				)
			);
		}

		// Convert the HFCM snippet data into the WPCode snippet format.
		$snippet_data = $this->get_snippet_data( $snippet );

		// Create a new snippet (assumes WPCode_Snippet is defined in your codebase).
		$new_snippet = new WPCode_Snippet( $snippet_data );
		$new_snippet->save();

		if ( $new_snippet->get_id() ) {
			$title = $new_snippet->get_title();
			wp_send_json_success(
				array(
					'name' => '' !== $title ? $title : '(no title)',
					'edit' => esc_url_raw(
						add_query_arg(
							array(
								'page'       => 'wpcode-snippet-manager',
								'snippet_id' => $new_snippet->get_id(),
							),
							admin_url( 'admin.php' )
						)
					),
				)
			);
		} else {
			wp_send_json_error(
				array(
					'error' => true,
					'msg'   => __( 'Failed to import snippet.', 'insert-headers-and-footers' ),
				)
			);
		}
	}

	/**
	 * Convert a Header Footer Code Manager snippet into a WPCode snippet data array.
	 *
	 * @param object $snippet The snippet row from the HFCM table.
	 * @return array The snippet data array.
	 */
	public function get_snippet_data( $snippet ) {

		// Decode snippet content that is stored with HTML entities.
		$code  = html_entity_decode( $snippet->snippet );
		$title = $snippet->name;

		$device_type = $snippet->device_type;
		if ( 'both' === $device_type ) {
			$device_type = 'any';
		}

		// Determine code type (default is 'html').
		$code_type = 'html';
		if ( 'js' === $snippet->snippet_type ) {
			$code_type = 'javascript';
		} elseif ( 'css' === $snippet->snippet_type ) {
			$code_type = 'css';
		}

		$location = '';

		if ( isset( $snippet->location ) ) {
			switch ( $snippet->location ) {
				case 'header':
					$location = 'site_wide_header';
					break;
				case 'footer':
					$location = 'site_wide_footer';
					break;
				case 'before_content':
				case 'after_content':
					$location = $snippet->location;
					break;
				default:
					$location = 'site_wide_header';
			}
		}
		// Prepare the snippet data array.
		$snippet_data = array(
			'code'        => wp_slash( $code ),
			'title'       => $title,
			'code_type'   => $code_type,
			'location'    => $location,
			'device_type' => $device_type,
			'tags'        => $this->add_imported_tag(),
			'auto_insert' => 1,
			'priority'    => 10,
		);

		$display_on = isset( $snippet->display_on ) ? $snippet->display_on : 'All';

		switch ( $display_on ) {
			case 's_pages':
				$pages = json_decode( $snippet->s_pages, true );
				if ( is_array( $pages ) && ! empty( $pages ) ) {
					$conditional_rules = array(
						'show'   => 'show',
						'groups' => array(
							array(
								array(
									'type'     => 'page',
									'option'   => 'post_id',
									'relation' => '=',
									'value'    => $pages,
								),
							),
						),
					);
				}
				break;

			case 's_posts':
				$posts = json_decode( $snippet->s_posts, true );
				if ( is_array( $posts ) && ! empty( $posts ) ) {
					$conditional_rules = array(
						'show'   => 'show',
						'groups' => array(
							array(
								array(
									'type'     => 'page',
									'option'   => 'post_id',
									'relation' => '=',
									'value'    => $posts,
								),
							),
						),
					);
				}
				break;

			case 's_categories':
				$cats = json_decode( $snippet->s_categories, true );
				if ( is_array( $cats ) && ! empty( $cats ) ) {
					$conditional_rules = array(
						'show'   => 'show',
						'groups' => array(
							array(
								array(
									'type'     => 'page',
									'option'   => 'taxonomy_term',
									'relation' => 'in',
									'value'    => $cats,
								),
							),
						),
					);
				}
				break;

			case 's_custom_posts':
				$custom = json_decode( $snippet->s_custom_posts, true );
				if ( is_array( $custom ) && ! empty( $custom ) ) {
					$groups = array();
					foreach ( $custom as $custom_post_type_value ) {
						$groups[] = array(
							'type'     => 'page',
							'option'   => 'post_type',
							'relation' => '=',
							'value'    => $custom_post_type_value,
						);
					}

					$conditional_rules = array(
						'show'   => 'show',
						'groups' => array( $groups ),
					);
				}
				break;

			case 's_tags':
				$tags = json_decode( $snippet->s_tags, true );
				if ( is_array( $tags ) && ! empty( $tags ) ) {
					$conditional_rules = array(
						'show'   => 'show',
						'groups' => array(
							array(
								array(
									'type'     => 'page',
									'option'   => 'taxonomy_term',
									'relation' => 'in',
									'value'    => $tags,
								),
							),
						),
					);
				}
				break;

			case 's_is_home':
				$conditional_rules = array(
					'show'   => 'show',
					'groups' => array(
						array(
							array(
								'type'     => 'page',
								'option'   => 'type_of_page',
								'relation' => '=',
								'value'    => 'is_front_page',
							),
						),
					),
				);
				break;

			case 's_is_search':
				$conditional_rules = array(
					'show'   => 'show',
					'groups' => array(
						array(
							array(
								'type'     => 'page',
								'option'   => 'type_of_page',
								'relation' => '=',
								'value'    => 'is_search',
							),
						),
					),
				);
				break;

			case 's_is_archive':
				$conditional_rules = array(
					'show'   => 'show',
					'groups' => array(
						array(
							array(
								'type'     => 'page',
								'option'   => 'type_of_page',
								'relation' => '=',
								'value'    => 'is_archive',
							),
						),
					),
				);
				break;

			case 'latest_posts':
				$conditional_rules = array(
					'show'   => 'show',
					'groups' => array(
						array(
							array(
								'type'     => 'page',
								'option'   => 'type_of_page',
								'relation' => '=',
								'value'    => 'is_single',
							),
						),
					),
				);
				break;

			case 'manual':
				$conditional_rules           = null;
				$snippet_data['auto_insert'] = 0;
				break;

			case 'All':
			default:
				$ex_pages = json_decode( $snippet->s_pages, true );
				$ex_posts = json_decode( $snippet->s_posts, true );
				$exclude  = array();
				if ( is_array( $ex_pages ) && ! empty( $ex_pages ) ) {
					$exclude = array_merge( $exclude, $ex_pages );
				}
				if ( is_array( $ex_posts ) && ! empty( $ex_posts ) ) {
					$exclude = array_merge( $exclude, $ex_posts );
				}
				if ( ! empty( $exclude ) ) {
					$conditional_rules = array(
						'show'   => 'hide',
						'groups' => array(
							array(
								array(
									'type'     => 'page',
									'option'   => 'post_id',
									'relation' => '=',
									'value'    => $exclude,
								),
							),
						),
					);
				} else {
					$conditional_rules = null;
				}
				break;
		}

		if ( ! empty( $conditional_rules ) ) {
			$snippet_data['use_rules'] = true;
			$snippet_data['rules']     = $conditional_rules;
		}

		return $snippet_data;
	}
}
PK     �‰U]#“¢<Ð  Ð  @  includes/admin/importers/class-wpcode-importer-post-snippets.phpnu „[µü¤        <?php
/**
 * Importer for Post Snippets.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Importer_Post_Snippets
 */
class WPCode_Importer_Post_Snippets extends WPCode_Importer_Type {

	/**
	 * The plugin name.
	 *
	 * @var string
	 */
	public $name = 'Post Snippets';

	/**
	 * Importer slug.
	 *
	 * @var string
	 */
	public $slug = 'post-snippets';

	/**
	 * Plugin path.
	 *
	 * @var string
	 */
	public $path = 'post-snippets/post-snippets.php';

	/**
	 * Get an array of snippets from the Post Snippets plugin.
	 *
	 * @return array
	 */
	public function get_snippets() {
		$snippets = array();

		if ( ! $this->is_active() ) {
			return $snippets;
		}

		global $wpdb;
		$table_name = $wpdb->prefix . 'pspro_snippets';

		// Check if the table exists.
		if ( $wpdb->get_var( "SHOW TABLES LIKE '{$table_name}'" ) !== $table_name ) { // phpcs:ignore
			return $snippets;
		}

		// Get all snippets.
		$results = $wpdb->get_results( "SELECT * FROM {$table_name}", ARRAY_A ); // phpcs:ignore

		if ( ! empty( $results ) ) {
			foreach ( $results as $snippet ) {
				$title                      = ! empty( $snippet['snippet_title'] ) ? $snippet['snippet_title'] : __( '(no title)', 'insert-headers-and-footers' );
				$snippets[ $snippet['ID'] ] = $title;
			}
		}

		return $snippets;
	}

	/**
	 * Import a single snippet.
	 *
	 * @return void
	 */
	public function import_snippet() {
		// Run a security check.
		check_ajax_referer( 'wpcode_admin' );

		if ( ! current_user_can( 'wpcode_edit_snippets' ) ) { // phpcs:ignore
			wp_send_json_error();
		}

		$id = isset( $_POST['snippet_id'] ) ? absint( $_POST['snippet_id'] ) : 0;

		if ( ! $id ) {
			wp_send_json_error(
				array(
					'error' => true,
					'msg'   => __( 'Invalid snippet ID.', 'insert-headers-and-footers' ),
				)
			);
		}

		global $wpdb;
		$table_name = $wpdb->prefix . 'pspro_snippets';
		$snippet    = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$table_name} WHERE ID = %d", $id ), ARRAY_A ); // phpcs:ignore

		if ( empty( $snippet ) ) {
			wp_send_json_error(
				array(
					'error' => true,
					'msg'   => __( 'Snippet not found.', 'insert-headers-and-footers' ),
				)
			);
		}

		// Convert the Post Snippets data into the WPCode snippet format.
		$snippet_data = $this->get_snippet_data( $snippet );

		// Create a new snippet.
		$new_snippet = new WPCode_Snippet( $snippet_data );
		$new_snippet->save();

		if ( ! empty( $new_snippet->get_id() ) ) {
			$title = $new_snippet->get_title();
			wp_send_json_success(
				array(
					'name' => '' !== $title ? $title : '(no title)',
					'edit' => esc_url_raw(
						add_query_arg(
							array(
								'page'       => 'wpcode-snippet-manager',
								'snippet_id' => $new_snippet->get_id(),
							),
							admin_url( 'admin.php' )
						)
					),
				)
			);
		} else {
			wp_send_json_error(
				array(
					'error' => true,
					'msg'   => __( 'Failed to import snippet.', 'insert-headers-and-footers' ),
				)
			);
		}
	}

	/**
	 * Convert a Post Snippets snippet to the format for a WPCode snippet.
	 *
	 * @param array $snippet The snippet data from Post Snippets.
	 *
	 * @return array
	 */
	public function get_snippet_data( $snippet ) {
		// Determine code type based on snippet_php value.
		$code_type = 'html';
		if ( isset( $snippet['snippet_php'] ) ) {
			if ( '1' === $snippet['snippet_php'] ) {
				$code_type = 'php';
			} elseif ( '2' === $snippet['snippet_php'] ) {
				$code_type = 'js';
			} elseif ( '3' === $snippet['snippet_php'] ) {
				$code_type = 'css';
			}
		}

		// Get group names for tags.
		$tags = array( $this->add_imported_tag() );
		if ( ! empty( $snippet['snippet_group'] ) ) {
			$group_ids = maybe_unserialize( $snippet['snippet_group'] );
			if ( is_array( $group_ids ) ) {
				global $wpdb;
				$group_table = $wpdb->prefix . 'pspro_groups';
				foreach ( $group_ids as $group_id ) {
					$group_name = $wpdb->get_var( $wpdb->prepare( "SELECT group_name FROM {$group_table} WHERE ID = %d", $group_id ) ); // phpcs:ignore
					if ( $group_name && __( 'ungrouped', 'insert-headers-and-footers' ) !== $group_name ) {
						$tags[] = sanitize_title( $group_name );
					}
				}
			}
		}

		// Determine if this is a shortcode.
		$is_shortcode = ! empty( $snippet['snippet_shortcode'] ) && '1' === $snippet['snippet_shortcode'];
		$auto_insert  = $is_shortcode ? 0 : 1;

		// Get custom shortcode name.
		$custom_shortcode = '';
		if ( $is_shortcode ) {
			$custom_shortcode = sanitize_title( $snippet['snippet_title'] );
		}

		// Determine location for PHP, CSS and JS snippets.
		$location = '';
		if ( 'php' === $code_type && $auto_insert ) {
			// For PHP snippets, set location to "run everywhere".
			$location = 'everywhere';
		} elseif ( ( 'css' === $code_type || 'js' === $code_type ) && $auto_insert ) {
			// Default locations.
			$location = 'site_wide_header';

			// Check snippet_vars for location information.
			if ( ! empty( $snippet['snippet_vars'] ) ) {
				$vars = explode( ',', $snippet['snippet_vars'] );

				// For JS snippets, check header/footer location (first variable).
				if ( 'js' === $code_type && isset( $vars[1] ) ) {
					$js_location = trim( $vars[1] );

					// The site location is the third variable in the snippet_vars field.
					$site_location = isset( $vars[2] ) ? trim( $vars[2] ) : 'frontend';

					// Map to appropriate WPCode location.
					if ( 'footer' === $js_location && 'admin' === $site_location ) {
						$location = 'admin_footer';
					} elseif ( 'header' === $js_location && 'admin' === $site_location ) {
						$location = 'admin_head';
					} elseif ( 'footer' === $js_location ) {
						$location = 'site_wide_footer';
					}
				}
				// For CSS snippets, check admin/frontend location.
				elseif ( 'css' === $code_type && isset( $vars[2] ) && 'admin' === trim( $vars[2] ) ) {
					$location = 'admin_head';
				}
			}
		}

		// Prepare the snippet data.
		$snippet_data = array(
			'title'            => $snippet['snippet_title'],
			'code'             => $snippet['snippet_content'],
			'code_type'        => $code_type,
			'tags'             => implode( ',', $tags ),
			'note'             => $snippet['snippet_desc'],
			'auto_insert'      => $auto_insert,
			'active'           => false,
			'custom_shortcode' => $custom_shortcode,
		);

		// Add location if set.
		if ( ! empty( $location ) ) {
			$snippet_data['location'] = $location;
		}

		// If there are variables in the snippet, add them as shortcode attributes.
		if ( ! empty( $snippet['snippet_vars'] ) && $is_shortcode ) {
			$variables            = explode( ',', $snippet['snippet_vars'] );
			$shortcode_attributes = array();

			foreach ( $variables as $variable ) {
				$variable = trim( $variable );
				// Check if variable has a default value (format: var=default).
				$parts         = explode( '=', $variable, 2 );
				$variable_name = $parts[0];

				if ( ! empty( $variable_name ) ) {
					$shortcode_attributes[] = $variable_name;
				}
			}

			if ( ! empty( $shortcode_attributes ) ) {
				$snippet_data['shortcode_attributes'] = $shortcode_attributes;
			}
		}

		return $snippet_data;
	}
}
PK     “‰U]·iBz5  5  7  includes/admin/importers/class-wpcode-importer-type.phpnu „[µü¤        <?php
/**
 * Abstract class for importing data from other plugins.
 *
 * @package WPCode
 */

/**
 * Abstract class WPCode_Importer_Type.
 */
abstract class WPCode_Importer_Type {

	/**
	 * The plugin name.
	 *
	 * @var string
	 */
	public $name = '';
	/**
	 * The plugin slug.
	 *
	 * @var string
	 */
	public $slug = '';
	/**
	 * The plugin path.
	 *
	 * @var string
	 */
	public $path = '';

	/**
	 * Constructor.
	 */
	public function __construct() {
		add_action( "wp_ajax_wpcode_import_snippet_{$this->slug}", array( $this, 'import_snippet' ) );
	}

	/**
	 * Add to list of registered importers.
	 *
	 * @param array $importers List of supported importers.
	 *
	 * @return array
	 */
	public function register( $importers = array() ) {

		$importers[ $this->slug ] = array(
			'name'      => $this->name,
			'slug'      => $this->slug,
			'path'      => $this->path,
			'installed' => file_exists( trailingslashit( WP_PLUGIN_DIR ) . $this->path ),
			'active'    => $this->is_active(),
		);

		return $importers;
	}

	/**
	 * Get all the snippets for this plugin.
	 *
	 * @return array
	 */
	abstract public function get_snippets();

	/**
	 * Check if the plugin is active.
	 *
	 * @return bool
	 */
	public function is_active() {
		return is_plugin_active( $this->path );
	}

	/**
	 * After a snippet has been successfully imported we track it, so that in the
	 * future we can alert users if they try to import a snippet that has already
	 * been imported.
	 *
	 * @param int $source_id Imported plugin snippet ID.
	 * @param int $wpcode_id WPCode snippet ID.
	 */
	public function track_import( $source_id, $wpcode_id ) {

		$imported = get_option( 'wpcode_imported', array() );

		$imported[ $this->slug ][ $wpcode_id ] = $source_id;

		update_option( 'wpcode_imported', $imported, false );
	}

    /**
     * Get the imported tag for this plugin.
     *
     * @return string
     */
    public function add_imported_tag(){
        return 'imported-' . $this->slug;
    }

	/**
	 * Import a single snippet using AJAX.
	 *
	 * @return void
	 */
	abstract public function import_snippet();
}
PK     •‰U]•«ùÀî  î  8  includes/admin/importers/class-wpcode-importer-woody.phpnu „[µü¤        <?php
/**
 * Importer for Woody.
 *
 * @package WPCode.
 */

/**
 * Class WPCode_Importer_Woody.
 */
class WPCode_Importer_Woody extends WPCode_Importer_Type {

	/**
	 * The plugin name.
	 *
	 * @var string
	 */
	public $name = 'Woody Code Snippets';

	/**
	 * Importer slug.
	 *
	 * @var string
	 */
	public $slug = 'woody';

	/**
	 * Plugin path.
	 *
	 * @var string
	 */
	public $path = 'insert-php/insert_php.php';

	/**
	 * Get an array of snippets for this plugin.
	 *
	 * @return array
	 */
	public function get_snippets() {

		$snippets = array();

		if ( ! $this->is_active() ) {
			return $snippets;
		}

		$snippets_posts = get_posts(
			array(
				'post_type'      => 'wbcr-snippets',
				'posts_per_page' => - 1,
				'post_status'    => 'any',
			)
		);

		foreach ( $snippets_posts as $post ) {
			if ( '' === $post->post_title ) {
				$post->post_title = '(no title)';
			}
			$snippets[ $post->ID ] = $post->post_title;
		}

		return $snippets;
	}

	/**
	 * Import the snippet data.
	 *
	 * @return void
	 */
	public function import_snippet() {
		// Run a security check.
		check_ajax_referer( 'wpcode_admin' );

		if ( ! current_user_can( 'wpcode_edit_snippets' ) ) {
			wp_send_json_error();
		}

		if ( ! class_exists( 'WINP_Helper' ) ) {
			wp_send_json_error();
		}

		$id = isset( $_POST['snippet_id'] ) ? absint( $_POST['snippet_id'] ) : 0;

		// Grab a snippet from Code Snippets.
		$snippet = get_post( $id );

		if ( null === $snippet ) {
			wp_send_json_error(
				array(
					'error' => true,
					'name'  => esc_html__( 'Unknown Snippet', 'insert-headers-and-footers' ),
					'msg'   => esc_html__( 'The snippet you are trying to import does not exist.', 'insert-headers-and-footers' ),
				)
			);
		}

		// If we got so far we have a snippet to process.

		// Create a new snippet from the snippet data array.
		$new_snippet = new WPCode_Snippet( $this->get_snippet_data( $snippet ) );

		$new_snippet->save();

		if ( ! empty( $new_snippet->get_id() ) ) {
			$title = $new_snippet->get_title();
			wp_send_json_success(
				array(
					'name' => '' !== $title ? $title : '(no title)',
					'edit' => esc_url_raw(
						add_query_arg(
							array(
								'page'       => 'wpcode-snippet-manager',
								'snippet_id' => $new_snippet->get_id(),
							),
							admin_url( 'admin.php' )
						)
					),
				)
			);
		}
	}


	/**
	 * Convert a "Woody" snippet to the format for a WPCode snippet.
	 *
	 * @param WP_Post $snippet The snippet post.
	 *
	 * @return array
	 */
	public function get_snippet_data( $snippet ) {

		$snippet_location = WINP_Helper::getMetaOption( $snippet->ID, 'snippet_location', '' );
		$scope            = WINP_Helper::getMetaOption( $snippet->ID, 'snippet_scope', '' );
		$auto_insert      = in_array(
			$scope,
			array(
				'auto',
				'evrywhere',
			),
			true
		) ? 1 : 0;

		switch ( $snippet_location ) {
			case 'header':
				$location = 'site_wide_header';
				break;
			case 'footer':
				$location = 'site_wide_footer';
				break;
			default:
				$location = $snippet_location;
		}

		$existing_tags   = wp_get_post_terms( $snippet->ID, WINP_SNIPPETS_TAXONOMY, array( 'fields' => 'slugs' ) );
		$existing_tags[] = $this->add_imported_tag(); // Add the import tag.

		$tags = ( is_array( $existing_tags ) ) ? implode( ',', $existing_tags ) : $existing_tags;

		return array(
			'code'        => wp_slash( WINP_Helper::get_snippet_code( $snippet ) ),
			'note'        => WINP_Helper::getMetaOption( $snippet->ID, 'snippet_description', '' ),
			'title'       => $snippet->post_title,
			'tags'        => $tags,
			'code_type'   => WINP_Helper::get_snippet_type( $snippet->ID ),
			'priority'    => intval( WINP_Helper::getMetaOption( $snippet->ID, 'snippet_priority', '' ) ),
			'location'    => $location,
			'auto_insert' => $auto_insert,
		);
	}
}
PK     ˜‰U]ëÖ÷é1  é1  -  includes/admin/class-wpcode-notifications.phpnu „[µü¤        <?php
/**
 * Notifications from remote source.
 *
 * @package WPCode
 */

/**
 * Notifications.
 */
class WPCode_Notifications {

	/**
	 * Source of notifications content.
	 *
	 * @var string
	 */
	const SOURCE_URL = 'https://plugin.wpcode.com/wp-content/notifications.json';

	/**
	 * Option value.
	 *
	 * @var bool|array
	 */
	public $option = false;

	/**
	 * The name of the option used to store the data.
	 *
	 * @var string
	 */
	public static $option_name = 'wpcode_notifications';

	/**
	 * WPCode_Notifications constructor.
	 */
	public function __construct() {
		$this->init();
	}

	/**
	 * Initialize class.
	 */
	public function init() {

		$this->hooks();
	}

	/**
	 * Register hooks.
	 */
	public function hooks() {
		add_action( 'wp_ajax_wpcode_notification_dismiss', array( $this, 'dismiss' ) );

		add_action( 'wpcode_admin_notifications_update', array( $this, 'update' ) );
	}

	/**
	 * Check if user has access and is enabled.
	 *
	 * @return bool
	 */
	public function has_access() {
		return apply_filters( 'wpcode_admin_notifications_has_access', ! wpcode()->settings->get_option( 'hide_am_notices', false ) );
	}

	/**
	 * Get option value.
	 *
	 * @param bool $cache Reference property cache if available.
	 *
	 * @return array
	 */
	public function get_option( $cache = true ) {

		if ( $this->option && $cache ) {
			return $this->option;
		}

		$option = get_option( self::$option_name, array() );

		$this->option = array(
			'update'    => ! empty( $option['update'] ) ? $option['update'] : 0,
			'events'    => ! empty( $option['events'] ) ? $option['events'] : array(),
			'feed'      => ! empty( $option['feed'] ) ? $option['feed'] : array(),
			'dismissed' => ! empty( $option['dismissed'] ) ? $option['dismissed'] : array(),
		);

		return $this->option;
	}

	/**
	 * Fetch notifications from feed.
	 *
	 * @return array
	 */
	public function fetch_feed() {

		$res = wp_remote_get( self::SOURCE_URL );

		if ( is_wp_error( $res ) ) {
			return array();
		}

		$body = wp_remote_retrieve_body( $res );

		if ( empty( $body ) ) {
			return array();
		}

		return $this->verify( json_decode( $body, true ) );
	}

	/**
	 * Verify notification data before it is saved.
	 *
	 * @param array $notifications Array of notifications items to verify.
	 *
	 * @return array
	 * @since {VERSION}
	 */
	public function verify( $notifications ) {

		$data = array();

		if ( ! is_array( $notifications ) || empty( $notifications ) ) {
			return $data;
		}

		$option = $this->get_option();

		foreach ( $notifications as $notification ) {

			// The message and license should never be empty, if they are, ignore.
			if ( empty( $notification['content'] ) || empty( $notification['type'] ) ) {
				continue;
			}

			// Ignore if notification is not ready to display(based on start time).
			if ( ! empty( $notification['start'] ) && time() < strtotime( $notification['start'] ) ) {
				continue;
			}

			// Ignore if expired.
			if ( ! empty( $notification['end'] ) && time() > strtotime( $notification['end'] ) ) {
				continue;
			}

			// Check that the license type matches.
			if ( ! in_array( $this->get_license_type(), (array) $notification['type'], true ) ) {
				continue;
			}

			// Ignore if notification has already been dismissed.
			$notification_already_dismissed = false;
			if ( is_array( $option['dismissed'] ) && ! empty( $option['dismissed'] ) ) {
				foreach ( $option['dismissed'] as $dismiss_notification ) {
					if ( $notification['id'] === $dismiss_notification['id'] ) {
						$notification_already_dismissed = true;
						break;
					}
				}
			}

			if ( true === $notification_already_dismissed ) {
				continue;
			}

			// Ignore if notification existed before installing WPCode.
			// Prevents bombarding the user with notifications after activation.
			$activated = get_option( 'ihaf_activated', array() );

			if (
				! empty( $activated['wpcode'] ) &&
				! empty( $notification['start'] ) &&
				$activated['wpcode'] > strtotime( $notification['start'] )
			) {
				continue;
			}

			$data[] = $notification;
		}

		return $data;
	}

	/**
	 * Verify saved notification data for active notifications.
	 *
	 * @param array $notifications Array of notifications items to verify.
	 *
	 * @return array
	 */
	public function verify_active( $notifications ) {

		if ( ! is_array( $notifications ) || empty( $notifications ) ) {
			return array();
		}

		// Remove notifications that are not active, or if the license type not exists.
		foreach ( $notifications as $key => $notification ) {
			if (
				( ! empty( $notification['start'] ) && time() < strtotime( $notification['start'] ) ) ||
				( ! empty( $notification['end'] ) && time() > strtotime( $notification['end'] ) )
			) {
				unset( $notifications[ $key ] );
			}
		}

		return $notifications;
	}

	/**
	 * Get notification data.
	 *
	 * @return array
	 */
	public function get() {

		if ( ! $this->has_access() ) {
			return array();
		}

		$option = $this->get_option();

		// Update notifications using async task.
		if ( empty( $option['update'] ) || time() > $option['update'] + DAY_IN_SECONDS ) {
			if ( false === wp_next_scheduled( 'wpcode_admin_notifications_update' ) ) {
				wp_schedule_single_event( time(), 'wpcode_admin_notifications_update' );
			}
		}

		$events = ! empty( $option['events'] ) ? $this->verify_active( $option['events'] ) : array();
		$feed   = ! empty( $option['feed'] ) ? $this->verify_active( $option['feed'] ) : array();

		$notifications              = array();
		$notifications['active']    = array_merge( $events, $feed );
		$notifications['active']    = $this->get_notifications_with_human_readeable_start_time( $notifications['active'] );
		$notifications['active']    = $this->get_notifications_with_formatted_content( $notifications['active'] );
		$notifications['dismissed'] = ! empty( $option['dismissed'] ) ? $option['dismissed'] : array();
		$notifications['dismissed'] = $this->get_notifications_with_human_readeable_start_time( $notifications['dismissed'] );
		$notifications['dismissed'] = $this->get_notifications_with_formatted_content( $notifications['dismissed'] );

		return $notifications;
	}

	/**
	 * Improve format of the content of notifications before display. By default, it just runs wpautop.
	 *
	 * @param array $notifications The notifications to be parsed.
	 *
	 * @return array
	 */
	public function get_notifications_with_formatted_content( $notifications ) {
		if ( ! is_array( $notifications ) || empty( $notifications ) ) {
			return $notifications;
		}

		foreach ( $notifications as $key => $notification ) {
			if ( ! empty( $notification['content'] ) ) {
				$notifications[ $key ]['content'] = wpautop( $notification['content'] );
				$notifications[ $key ]['content'] = apply_filters( 'wpcode_notification_content_display', $notifications[ $key ]['content'] );
			}
		}

		return $notifications;
	}

	/**
	 * Get notifications start time with human time difference
	 *
	 * @param array $notifications The array of notifications to convert.
	 *
	 * @return array
	 */
	public function get_notifications_with_human_readeable_start_time( $notifications ) {
		if ( ! is_array( $notifications ) || empty( $notifications ) ) {
			return array();
		}

		foreach ( $notifications as $key => $notification ) {
			if ( empty( $notification['start'] ) ) {
				continue;
			}

			// Translators: Human-Readable time to display.
			$modified_start_time            = sprintf( __( '%1$s ago', 'insert-headers-and-footers' ), human_time_diff( strtotime( $notification['start'] ), time() ) );
			$notifications[ $key ]['start'] = $modified_start_time;
		}

		return $notifications;
	}

	/**
	 * Get active notifications.
	 *
	 * @return array $notifications['active'] active notifications
	 */
	public function get_active_notifications() {
		$notifications = $this->get();

		// Show only 5 active notifications plus any that has a priority of 1.
		$all_active = isset( $notifications['active'] ) ? $notifications['active'] : array();
		$displayed  = array();

		foreach ( $all_active as $notification ) {
			if ( ( isset( $notification['priority'] ) && 1 === $notification['priority'] ) || count( $displayed ) < 5 ) {
				$displayed[] = $notification;
			}
		}

		return $displayed;
	}

	/**
	 * Get dismissed notifications.
	 *
	 * @return array $notifications['dismissed'] dismissed notifications
	 */
	public function get_dismissed_notifications() {
		$notifications = $this->get();

		return isset( $notifications['dismissed'] ) ? $notifications['dismissed'] : array();
	}

	/**
	 * Get notification count.
	 *
	 * @return int
	 */
	public function get_count() {
		return count( $this->get_active_notifications() );
	}

	/**
	 * Get the dismissed notifications count.
	 *
	 * @return int
	 */
	public function get_dismissed_count() {
		return count( $this->get_dismissed_notifications() );
	}

	/**
	 * Check if a notification has been dismissed before
	 *
	 * @param array $notification The notification to check if is dismissed.
	 *
	 * @return bool
	 */
	public function is_dismissed( $notification ) {
		if ( empty( $notification['id'] ) ) {
			return true;
		}

		$option = $this->get_option();

		foreach ( $option['dismissed'] as $item ) {
			if ( $item['id'] === $notification['id'] ) {
				return true;
			}
		}

		return false;
	}

	/**
	 * Add a manual notification event.
	 *
	 * @param array $notification Notification data.
	 */
	public function add( $notification ) {

		if ( empty( $notification['id'] ) || $this->is_dismissed( $notification ) ) {
			return false;
		}

		$option = $this->get_option();

		$current_notifications = $option['events'];

		foreach ( $current_notifications as $item ) {
			if ( $item['id'] === $notification['id'] ) {
				return false;
			}
		}

		$notification = $this->verify( array( $notification ) );

		$notifications = array_merge( $notification, $current_notifications );

		// Sort notifications by priority.
		usort(
			$notifications,
			function ( $a, $b ) {
				if ( ! isset( $a['priority'] ) || ! isset( $b['priority'] ) ) {
					return 0;
				}

				if ( $a['priority'] === $b['priority'] ) {
					return 0;
				}

				return $a['priority'] < $b['priority'] ? - 1 : 1;
			}
		);

		update_option(
			self::$option_name,
			array(
				'update'    => $option['update'],
				'feed'      => $option['feed'],
				'events'    => $notifications,
				'dismissed' => $option['dismissed'],
			),
			false
		);

		return true;
	}

	/**
	 * Update notification data from feed.
	 *
	 * @since {VERSION}
	 */
	public function update() {

		$feed   = $this->fetch_feed();
		$option = $this->get_option();

		update_option(
			self::$option_name,
			array(
				'update'    => time(),
				'feed'      => $feed,
				'events'    => $option['events'],
				'dismissed' => array_slice( $option['dismissed'], 0, 30 ), // Limit dismissed notifications to last 30.
			),
			false
		);
	}

	/**
	 * Dismiss notification via AJAX.
	 */
	public function dismiss() {
		// Run a security check.
		check_ajax_referer( 'wpcode_admin', 'nonce' );

		// Check for access and required param.
		if ( ! $this->has_access() || empty( $_POST['id'] ) ) {
			wp_send_json_error();
		}

		$id     = sanitize_text_field( wp_unslash( $_POST['id'] ) );
		$option = $this->get_option();

		// Dismiss all notifications and add them to dissmiss array.
		if ( 'all' === $id ) {
			if ( is_array( $option['feed'] ) && ! empty( $option['feed'] ) ) {
				foreach ( $option['feed'] as $key => $notification ) {
					array_unshift( $option['dismissed'], $notification );
					unset( $option['feed'][ $key ] );
				}
			}
			if ( is_array( $option['events'] ) && ! empty( $option['events'] ) ) {
				foreach ( $option['events'] as $key => $notification ) {
					array_unshift( $option['dismissed'], $notification );
					unset( $option['events'][ $key ] );
				}
			}
		}

		$type = is_numeric( $id ) ? 'feed' : 'events';

		// Remove notification and add in dismissed array.
		if ( is_array( $option[ $type ] ) && ! empty( $option[ $type ] ) ) {
			foreach ( $option[ $type ] as $key => $notification ) {
				if ( $notification['id'] == $id ) { // phpcs:ignore WordPress.PHP.StrictComparisons
					// Add notification to dismissed array.
					array_unshift( $option['dismissed'], $notification );
					// Remove notification from feed or events.
					unset( $option[ $type ][ $key ] );
					break;
				}
			}
		}

		update_option( self::$option_name, $option, false );

		wp_send_json_success();
	}

	/**
	 * Delete the notification options.
	 */
	public static function delete_notifications_data() {
		delete_option( self::$option_name );
	}

	/**
	 * Get the license type for the current plugin.
	 *
	 * @return string
	 */
	public function get_license_type() {
		return 'lite';
	}
}
PK     š‰U]áINšÔ  Ô  +  includes/admin/class-wpcode-skin-legacy.phpnu „[µü¤        <?php
/**
 * Legacy Skin class used for older versions of WordPress.
 *
 * @since 2.0.7
 *
 * @package WPCode
 */

// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class WPCode_Skin extends WP_Upgrader_Skin {

	/**
	 * Primary class constructor.
	 *
	 * @param array $args Empty array of args (we will use defaults).
	 *
	 * @since 2.0.7
	 *
	 */
	public function __construct( $args = array() ) {

		parent::__construct();

	}

	/**
	 * Set the upgrader object and store it as a property in the parent class.
	 *
	 * @param object $upgrader The upgrader object (passed by reference).
	 *
	 * @since 2.0.7
	 *
	 */
	public function set_upgrader( &$upgrader ) {

		if ( is_object( $upgrader ) ) {
			$this->upgrader =& $upgrader;
		}

	}

	/**
	 * Set the upgrader result and store it as a property in the parent class.
	 *
	 * @param object $result The result of the install process.
	 *
	 * @since 2.0.7
	 *
	 */
	public function set_result( $result ) {

		$this->result = $result;

	}

	/**
	 * Empty out the header of its HTML content and only check to see if it has
	 * been performed or not.
	 *
	 * @since 2.0.7
	 */
	public function header() {
	}

	/**
	 * Empty out the footer of its HTML contents.
	 *
	 * @since 2.0.7
	 */
	function footer() {
	}

	/**
	 * Instead of outputting HTML for errors, json_encode the errors and send them
	 * back to the Ajax script for processing.
	 *
	 * @param array $errors Array of errors with the install process.
	 *
	 * @since 2.0.7
	 *
	 */
	function error( $errors ) {

		if ( ! empty( $errors ) ) {
			$error_message = sprintf(
			// Translators: Support link tag starts with url and Support link tag ends.
				esc_html__( 'There was an error installing the addon. Please try again. If you are still having issues, please %1$scontact our support%2$s team.', 'insert-headers-and-footers' ),
				'<a target="_blank" href="' . wpcode_utm_url( 'https://library.wpcode.com/account/support/', 'notice', 'error-installing-addons' ) . '">',
				'</a>'
			);
			if ( is_wp_error( $errors ) ) {
				/**
				 * @var WP_Error $errors
				 */
				$message = $errors->get_error_message();

				if ( ! empty( $message ) ) {
					$error_message = sprintf(
					// Translators: The name of the addon that can't be installed, Support link tag starts with url and Support link tag ends.
						esc_html__( 'There was an error installing the addon, %1$s. Please try again. If you are still having issues, please %2$scontact our support%3$s team. ', 'insert-headers-and-footers' ),
						esc_html( $message ),
						'<a target="_blank" href="' . wpcode_utm_url( 'https://library.wpcode.com/account/support/', 'notice', 'error-installing-addons' ) . '">',
						'</a>'
					);
				}
			}

			wp_send_json( array( 'error' => $error_message ) );
		}

	}

	/**
	 * Empty out the feedback method to prevent outputting HTML strings as the install
	 * is progressing.
	 *
	 * @param string $string The feedback string.
	 *
	 * @since 2.0.7
	 *
	 */
	function feedback( $string ) {
	}

}
PK     �‰U]”’!Œ  Œ  0  includes/admin/class-wpcode-features-notices.phpnu „[µü¤        <?php
/**
 * Feature notices to highlight certain features in key areas of the plugin.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class WPCode_Features_Notices
 */
class WPCode_Features_Notices {

	/**
	 * WPCode_Features_Notices constructor.
	 */
	public function __construct() {
		$this->hooks();
	}

	/**
	 * Hooks for the class.
	 */
	public function hooks() {
		add_action( 'admin_init', array( $this, 'maybe_show_notices' ) );
	}

	/**
	 * Get all notices that we might display.
	 *
	 * The 'pages' key in each notice can be structured in multiple ways:
	 * 1. Legacy format: array( 'page-id-1', 'page-id-2' ) - Shows on all tabs of these pages
	 * 2. Page with specific tabs: array( 'page-id' => array( 'tab-1', 'tab-2' ) ) - Shows only when one of the specified tabs is active
	 * 3. Page with all tabs: array( 'page-id' => true ) - Shows on all tabs of this page
	 * 4. Multiple pages with different tabs: array( 'page-1' => array( 'tab-1' ), 'page-2' => array( 'tab-2', 'tab-3' ) )
	 *
	 * @return array
	 */
	public static function get_all_notices() {
		$notices = array(
			// Original example using the legacy format (still supported)
			'snippets_library_feature' => array(
				'pages'       => array(
					'wpcode-tools' => array(
						'export',
					)
				),
				'message'     => sprintf(
				// translators: %1$s and %2$s are strong HTML tags, %3$s and %4$s are links.
					esc_html__( '%1$sPro Tip:%2$s Did you know all WPCode premium plans include access to a private snippet library? Moving snippets from one site to another has never been easier. %3$sUpgrade today with a special discount%4$s.', 'insert-headers-and-footers' ),
					'<strong>',
					'</strong>',
					'<a href="' . esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'features-notices', 'tools-library', 'upgrade-now' ) ) . '" target="_blank" rel="noopener noreferrer">', '</a>'
				),
				'type'        => 'info',
				'dismissible' => true,
				'class'       => 'wpcode-feature-notice-library',
			),
		);

		return $notices;
	}

	/**
	 * Check if we should show notices and add the action to display them.
	 */
	public function maybe_show_notices() {
		// Only show notices to users who can edit snippets.
		if ( ! current_user_can( 'wpcode_edit_snippets' ) ) {
			return;
		}

		add_action( 'admin_notices', array( $this, 'display_notices' ) );
		add_action( 'wpcode_admin_notices', array( $this, 'display_notices' ) );
	}

	/**
	 * Display the notices.
	 *
	 * This method checks the current page and tab against the notices configuration
	 * and displays the appropriate notices. It supports both the legacy format
	 * (simple array of page IDs) and the new format (associative array of page IDs
	 * with tabs as values).
	 *
	 * Notices with specified tabs will only be displayed when one of those tabs is active.
	 * This ensures that tab-specific notices are not shown when no tab is specified.
	 *
	 * @since 1.x.x Updated to support tabs for pages
	 * @since 1.x.y Updated to ensure notices with tabs are only shown when a matching tab is active
	 */
	public function display_notices() {
		// Get the current screen to check if we should display notices.
		$screen = get_current_screen();
		if ( ! $screen ) {
			return;
		}

		// Get the current page ID.
		$page_id = $this->get_current_page_id( $screen );
		if ( empty( $page_id ) ) {
			return;
		}

		// Get the current tab.
		$current_tab = $this->get_current_tab();

		// Get all notices.
		$notices = self::get_all_notices();

		// Get dismissed notices.
		$dismissed_notices = $this->get_dismissed_notices();

		foreach ( $notices as $id => $notice ) {
			// Skip if this notice has been dismissed.
			if ( isset( $dismissed_notices[ $id ] ) && ! empty( $dismissed_notices[ $id ]['dismissed'] ) ) {
				continue;
			}

			// Skip if no pages are defined for this notice.
			if ( empty( $notice['pages'] ) ) {
				continue;
			}

			$show_notice = false;

			// Check if the notice should be displayed on the current page and tab.
			foreach ( $notice['pages'] as $notice_page => $notice_tabs ) {
				// Handle the legacy format where pages is a simple array of page IDs.
				if ( is_int( $notice_page ) && is_string( $notice_tabs ) ) {
					if ( $notice_tabs === $page_id ) {
						$show_notice = true;
						break;
					}
					continue;
				}

				// Skip if not on the current page.
				if ( $notice_page !== $page_id ) {
					continue;
				}

				// If tabs are specified for this page.
				if ( is_array( $notice_tabs ) ) {
					// Only show if the current tab is in the list of tabs for this notice.
					// This ensures notices with tabs are not shown when no tab is specified.
					if ( ! empty( $current_tab ) && in_array( $current_tab, $notice_tabs, true ) ) {
						$show_notice = true;
						break;
					}
				} elseif ( true === $notice_tabs ) {
					// If tabs is set to true, show on all tabs of this page.
					$show_notice = true;
					break;
				} else {
					// For any other value, show on all tabs of this page (backward compatibility).
					$show_notice = true;
					break;
				}
			}

			if ( ! $show_notice ) {
				continue;
			}

			// Display the notice.
			$this->display_notice( $id, $notice );
		}
	}

	/**
	 * Display a single notice.
	 *
	 * @param string $id The notice ID.
	 * @param array  $notice The notice data.
	 */
	public function display_notice( $id, $notice ) {
		$dismiss_type = $notice['dismissible'] ? WPCode_Notice::DISMISS_GLOBAL : WPCode_Notice::DISMISS_NONE;

		$args = array(
			'dismiss' => $dismiss_type,
			'slug'    => $id,
			'autop'   => true,
			'class'   => ! empty( $notice['class'] ) ? $notice['class'] : 'wpcode-feature-notice',
		);

		// Use the add method with the notice type.
		WPCode_Notice::add( $notice['message'], $notice['type'], $args );
	}

	/**
	 * Get the current page ID based on the screen.
	 *
	 * @param WP_Screen $screen The current screen.
	 *
	 * @return string The page ID or empty string if not on a WPCode page.
	 */
	public function get_current_page_id( $screen ) {
		// Check if we're on a WPCode page.
		if ( strpos( $screen->id, 'wpcode' ) === false ) {
			return '';
		}

		// Extract the page ID from the screen ID.
		$page_id = str_replace( 'toplevel_page_', '', $screen->id );

		// Handle sub-pages.
		if ( strpos( $screen->id, 'code-snippets_page_' ) !== false ) {
			$page_id = str_replace( 'code-snippets_page_', '', $screen->id );
		}

		return $page_id;
	}

	/**
	 * Get the current tab from the URL parameters.
	 *
	 * This method retrieves the 'tab' parameter from the URL query string.
	 * It's used to determine which tab is currently active on a page,
	 * which is then used to decide whether to display certain notices.
	 *
	 * @return string The current tab or empty string if no tab is specified.
	 * @since 1.x.x
	 *
	 */
	public function get_current_tab() {
		// phpcs:ignore WordPress.Security.NonceVerification.Recommended
		return isset( $_GET['view'] ) ? sanitize_text_field( wp_unslash( $_GET['view'] ) ) : '';
	}

	/**
	 * Get dismissed notices.
	 *
	 * @return array
	 */
	public function get_dismissed_notices() {
		$user_dismissed = get_user_meta( get_current_user_id(), 'wpcode_admin_notices', true );
		$user_dismissed = is_array( $user_dismissed ) ? $user_dismissed : array();

		$global_dismissed = get_option( 'wpcode_admin_notices', array() );
		$global_dismissed = is_array( $global_dismissed ) ? $global_dismissed : array();

		return array_merge( $user_dismissed, $global_dismissed );
	}
}

// Initialize the class.
new WPCode_Features_Notices();
PK     ¡‰U]*�Ò‹F  ‹F  >  includes/admin/pages/class-wpcode-admin-page-code-snippets.phpnu „[µü¤        <?php
/**
 * Code snippets admin main list page.
 *
 * @package WPCode
 */

/**
 * Class for the code snippets page.
 */
class WPCode_Admin_Page_Code_Snippets extends WPCode_Admin_Page {

	/**
	 * The page slug to be used when adding the submenu.
	 *
	 * @var string
	 */
	public $page_slug = 'wpcode';

	/**
	 * Instance of the code snippets table.
	 *
	 * @see WP_List_Table
	 * @var WPCode_Code_Snippets_Table
	 */
	protected $snippets_table;

	/**
	 * Call this just to set the page title translatable.
	 */
	public function __construct() {
		$this->page_title = __( 'Code Snippets', 'insert-headers-and-footers' );
		parent::__construct();
	}

	/**
	 * Page-specific hooks, init the custom WP_List_Table.
	 *
	 * @return void
	 */
	public function page_hooks() {
		$this->process_message();

		add_action( 'current_screen', array( $this, 'init_table' ) );
		add_action( 'admin_init', array( $this, 'maybe_capture_filter' ) );
		add_action( 'load-toplevel_page_wpcode', array( $this, 'maybe_process_bulk_action' ) );
		add_action( 'wpcode_admin_notices', array( $this, 'maybe_show_deactivated_notice' ) );

		// Register Screen options.
		add_action( 'load-toplevel_page_wpcode', array( $this, 'add_per_page_option' ) );
		// Hide some columns by default.
		add_filter( 'default_hidden_columns', array( $this, 'hide_columns' ), 10, 2 );
		add_filter( 'wpcode_admin_js_data', array( $this, 'prepare_admin_js_localization_data' ) );
		add_filter( 'screen_settings', array( $this, 'add_custom_screen_option' ), 10, 2 );
		// Hide the duplicated parameter from the URL.
		add_filter( 'removable_query_args', array( $this, 'remove_query_arg_from_url' ) );
	}

	/**
	 * If the referer is set, remove and redirect.
	 *
	 * @return void
	 */
	public function maybe_capture_filter() {
		if ( ! empty( $_REQUEST['_wp_http_referer'] ) && isset( $_SERVER['REQUEST_URI'] ) && isset( $_REQUEST['filter_action'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			wp_safe_redirect(
				remove_query_arg(
					array(
						'_wp_http_referer',
						'_wpnonce',
					),
					wp_unslash( $_SERVER['REQUEST_URI'] ) // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
				)
			);
			exit;
		}
		if ( ! empty( $_REQUEST['_wp_http_referer'] ) && isset( $_SERVER['REQUEST_URI'] ) && isset( $_REQUEST['filter_clear'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			wp_safe_redirect(
				add_query_arg(
					'page',
					'wpcode',
					$this->admin_url( 'admin.php' )
				)
			);

			exit;
		}
	}

	/**
	 * Listener for bulk actions.
	 *
	 * @return void
	 */
	public function maybe_process_bulk_action() {
		// phpcs:disable WordPress.Security.NonceVerification.Recommended
		$ids    = isset( $_GET['snippet_id'] ) ? array_map( 'absint', (array) $_GET['snippet_id'] ) : array();
		$action = isset( $_REQUEST['action'] ) ? sanitize_key( $_REQUEST['action'] ) : false;
		// phpcs:enable WordPress.Security.NonceVerification.Recommended
		if ( empty( $ids ) || empty( $action ) ) {
			return;
		}
		if ( empty( $_GET['_wpnonce'] ) ) {
			return;
		}

		if (
			! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'bulk-wpcode-snippets' ) &&
			! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'wpcode_' . $action . '_nonce' )
		) {
			return;
		}

		$update_status_actions = array( 'trash', 'untrash' );

		if ( in_array( $action, $update_status_actions, true ) ) {
			$newstatus = 'trash' === $action ? 'trash' : 'draft';
			foreach ( $ids as $id ) {
				wp_update_post(
					array(
						'ID'          => $id,
						'post_status' => $newstatus,
					)
				);
			}
			// Clear errors when a snippet is trashed.
			wpcode()->error->clear_snippets_errors();
		}
		if ( 'delete' === $action ) {
			foreach ( $ids as $id ) {
				wp_delete_post( $id );
			}
			// Clear errors when a snippet is deleted.
			wpcode()->error->clear_snippets_errors();
		}
		$failed = 0;
		if ( 'enable' === $action ) {
			foreach ( $ids as $key => $id ) {
				$snippet = wpcode_get_snippet( $id );
				$snippet->activate();
				if ( ! $snippet->active ) {
					// If failed to activate don't count it.
					unset( $ids[ $key ] );
					++ $failed;
				}
			}
		}
		if ( 'disable' === $action ) {
			foreach ( $ids as $id ) {
				$snippet = wpcode_get_snippet( $id );
				$snippet->deactivate();
			}
		}
		$message = array(
			rtrim( $action, 'e' ) . 'ed' => count( $ids ),
		);
		if ( $failed ) {
			$message['error'] = $failed;
		}

		if ( 'duplicate' === $action ) {
			foreach ( $ids as $id ) {
				// Load all the snippet data in the object.
				$snippet = wpcode_get_snippet( $id );
				$snippet->duplicate();
			}
		}

		wpcode()->cache->cache_all_loaded_snippets();

		// Clear used library snippets.
		delete_transient( 'wpcode_used_library_snippets' );

		wp_safe_redirect(
			add_query_arg(
				$message,
				remove_query_arg(
					array(
						'action',
						'action2',
						'_wpnonce',
						'snippet_id',
						'paged',
						'_wp_http_referer',
					)
				)
			)
		);
		exit;
	}

	/**
	 * Init the custom table for the snippets list.
	 *
	 * @return void
	 */
	public function init_table() {
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-code-snippets-table.php';

		$this->snippets_table = new WPCode_Code_Snippets_Table();
	}

	/**
	 * Output the custom table and page content.
	 *
	 * @return void
	 */
	public function output_content() {
		$this->snippets_table->prepare_items();

		?>
		<form id="wpcode-code-snippets-table" method="get" action="<?php echo esc_url( $this->admin_url( 'admin.php?page=wpcode' ) ); ?>">
			<input type="hidden" name="page" value="wpcode"/>
			<?php
			$this->snippets_table->search_box( esc_html__( 'Search Snippets', 'insert-headers-and-footers' ), 'wpcode_snippet_search' );
			$this->snippets_table->views();
			$this->snippets_table->display();
			?>

		</form>
		<?php
	}

	/**
	 * Custom Footer for this page.
	 *
	 * @return void
	 */
	public function output_footer() {
		parent::output_footer();
		?>
		<div id="wpcode-loader">
			<div class="wpcode-loader-overlay">
				<img src="<?php echo esc_url( WPCODE_PLUGIN_URL ) . 'admin/images/spinner.svg'; // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage?>" alt="">
			</div>
		</div>
		<?php
	}

	/**
	 * Get the snippet types for the filters in a normalized format.
	 *
	 * @return array
	 */
	public function get_snippet_types_for_filters() {
		$types        = wpcode()->execute->get_types();
		$snippet_type = isset( $_GET['type'] ) ? sanitize_text_field( wp_unslash( $_GET['type'] ) ) : false;  // phpcs:ignore WordPress.Security.NonceVerification.Recommended

		$type_buttons = array(
			array(
				'is_pro' => false,
				'label'  => esc_html__( 'All Snippets', 'insert-headers-and-footers' ),
				'class'  => ! $snippet_type ? 'active' : '',
				'type'   => '',
			)
		);

		foreach ( $types as $type_key => $type ) {
			$type_buttons[] = array(
				'is_pro' => isset( $type['is_pro'] ) ? $type['is_pro'] : false,
				'label'  => $type['filter_label'],
				'class'  => $snippet_type === $type_key ? 'active' : '',
				'type'   => $type_key,
			);
		}

		return $this->prepare_type_buttons( $type_buttons );
	}

	/**
	 * Reorder the buttons and add version-specific info.
	 *
	 * @param array $type_buttons The type buttons.
	 *
	 * @return array
	 */
	protected function prepare_type_buttons( $type_buttons ) {

		// Reorder items so pro items are always last.
		usort(
			$type_buttons,
			function ( $a, $b ) {
				if ( $a['is_pro'] === $b['is_pro'] ) {
					return 0;
				}

				return $a['is_pro'] ? 1 : - 1;
			}
		);

		// Let's go through the items and add the pro class and update the label.
		foreach ( $type_buttons as $key => $type ) {
			if ( ! $type['is_pro'] ) {
				continue;
			}
			$type_buttons[ $key ]['label'] = sprintf( '%s (PRO)', $type['label'] );
			$type_buttons[ $key ]['class'] .= ' wpcode_pro_type_lite';
		}

		return $type_buttons;
	}

	/**
	 * Generate buttons for available snippet types.
	 *
	 * @return string HTML for the buttons.
	 */
	public function get_snippet_type_buttons() {
		$buttons      = $this->get_snippet_types_for_filters();
		$buttons_html = '';

		foreach ( $buttons as $button ) {
			$buttons_html .= sprintf(
				'<li><a class="%1$s" href="#" data-type="%2$s">%3$s</a></li>',
				esc_attr( $button['class'] ),
				esc_attr( $button['type'] ),
				esc_attr( $button['label'] )
			);
		}

		return $buttons_html;
	}

	/**
	 * Content of the bottom row of the header.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
		$add_new_url = $this->admin_url( 'admin.php?page=wpcode-snippet-manager' );
		?>
		<div class="wpcode-column wpcode-title-button">
			<ul id="wpcode-snippet-type-buttons" class="wpcode-admin-tabs">
				<?php echo $this->get_snippet_type_buttons(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> 
			</ul>
			<button class="wpcode-mobile-dropdown-toggle wpcode-button wpcode-button-just-icon" data-target="#wpcode-snippet-type-buttons">
				<?php wpcode_icon( 'menu', '24', '24', '0 -960 960 960' ); ?>
			</button>
			<a class="wpcode-button" href="<?php echo esc_url( $add_new_url ); ?>">
				<?php esc_html_e( 'Add New', 'insert-headers-and-footers' ); ?>
			</a>
		</div>

		<?php
	}

	/**
	 * Capture screen-specific messages and add notices.
	 *
	 * @return void
	 */
	public function process_message() {

		// phpcs:disable WordPress.Security.NonceVerification
		if ( ! empty( $_GET['trashed'] ) ) {
			$count  = absint( $_GET['trashed'] );
			$notice = sprintf( /* Translators: %d - Trashed snippets count. */
				_n( '%d snippet was successfully moved to Trash.', '%d snippets were successfully moved to Trash.', $count, 'insert-headers-and-footers' ),
				$count
			);
		}

		if ( ! empty( $_GET['untrashed'] ) ) {
			$count  = absint( $_GET['untrashed'] );
			$notice = sprintf( /* translators: %d - Restored from trash snippets count. */
				_n( '%d snippet was successfully restored.', '%d snippet were successfully restored.', $count, 'insert-headers-and-footers' ),
				$count
			);
		}

		if ( ! empty( $_GET['deleted'] ) ) {
			$count  = absint( $_GET['deleted'] );
			$notice = sprintf( /* translators: %d - Deleted snippets count. */
				_n( '%d snippet was successfully permanently deleted.', '%d snippets were successfully permanently deleted.', $count, 'insert-headers-and-footers' ),
				$count
			);
		}

		if ( isset( $_GET['enabled'] ) ) {
			$count  = absint( $_GET['enabled'] );
			$notice = '';
			if ( $count > 0 ) {
				$notice = sprintf( /* translators: %d - Activated snippets count. */
					_n( '%d snippet was successfully activated.', '%d snippets were successfully activated.', $count, 'insert-headers-and-footers' ),
					$count
				);
			}
			if ( isset( $_GET['error'] ) ) {
				$error_count = absint( $_GET['error'] );

				$notice .= ' ';
				$notice .= sprintf( /* translators: %d - Failed to activate snippets count. */
					_n( '%d snippet was not activated due to an error.', '%d snippets were not activated due to errors.', $error_count, 'insert-headers-and-footers' ),
					$error_count
				);
			}
		}

		if ( ! empty( $_GET['disabled'] ) ) {
			$count  = absint( $_GET['disabled'] );
			$notice = sprintf( /* translators: %d - Deactivated snippets count. */
				_n( '%d snippet was successfully deactivated.', '%d snippets were successfully deactivated.', $count, 'insert-headers-and-footers' ),
				$count
			);
		}
		// phpcs:enable WordPress.Security.NonceVerification

		if ( isset( $error_count ) && isset( $notice ) ) {
			$this->set_error_message( $notice );
		} elseif ( isset( $notice ) ) {
			$this->set_success_message( $notice );
		}
	}

	/**
	 * On the deactivated snippets view, show a notice explaining that this view shows the snippets that have been
	 * automatically disabled due to throwing an error and highlight the error logging option, if disabled.
	 *
	 * @return void
	 */
	public function maybe_show_deactivated_notice() {
		if ( ! isset( $_GET['view'] ) || 'has_error' !== $_GET['view'] ) { // phpcs:ignore WordPress.Security.NonceVerification
			return;
		}
		// Let's see if error logging is enabled.
		$logging_enabled = wpcode()->settings->get_option( 'error_logging' );
		$button_text     = esc_html__( 'Enable Error Logging', 'insert-headers-and-footers' );
		$button_url      = add_query_arg(
			array(
				'page' => 'wpcode-settings',
				'view' => 'errors',
			),
			$this->admin_url( 'admin.php' )
		);

		?>
		<div class="info fade notice">
			<p>
				<?php esc_html_e( 'This view lists your snippets that threw errors. Some of the snippets may have also been automatically disabled due to potentially preventing you from accessing the admin.', 'insert-headers-and-footers' ); ?>
				<a href="<?php echo esc_url( wpcode_utm_url( 'https://wpcode.com/docs/php-error-handling-safe-mode/', 'snippet-deactivated-notice', 'deactivated-list' ) ); ?>" target="_blank" rel="noopener noreferrer">
					<?php esc_html_e( 'Learn More', 'insert-headers-and-footers' ); ?>
				</a>
			</p>
			<?php
			if ( ! $logging_enabled ) {
				?>
				<p>
					<?php esc_html_e( 'In order to get more info about the errors please consider enabling error logging.', 'insert-headers-and-footers' ); ?>
				</p>
				<p>
					<a href="<?php echo esc_url( $button_url ); ?>" class="button button-primary">
						<?php echo esc_html( $button_text ); ?>
					</a>
				</p>
			<?php } ?>
		</div>
		<?php
	}

	/**
	 * Add the per page option to the snippets list screen.
	 *
	 * @return void
	 */
	public function add_per_page_option() {
		add_screen_option(
			'per_page',
			array(
				'label'   => esc_html__( 'Number of snippets per page:', 'insert-headers-and-footers' ),
				'option'  => 'wpcode_snippets_per_page',
				'default' => 20,
			)
		);
	}

	/**
	 * Hide the last updated column by default.
	 *
	 * @param array     $hidden The hidden columns.
	 * @param WP_Screen $screen The current screen.
	 *
	 * @return mixed
	 */
	public function hide_columns( $hidden, $screen ) {
		$hidden[] = 'updated';
		$hidden[] = 'id';
		$hidden[] = 'shortcode';
		$hidden[] = 'code_type';

		return $hidden;
	}

	/**
	 * Prepare the data for the admin JS localization.
	 *
	 * @param array $data The data to be localized.
	 *
	 * @return array
	 */
	public function prepare_admin_js_localization_data( $data ) {

		$data['blocks_title']               = __( 'Blocks snippets is a Pro Feature', 'insert-headers-and-footers' );
		$data['blocks_description']         = __( 'Upgrade to PRO today and unlock building snippets using the Gutenberg Block Editor. Create templates using blocks and use the full power of WPCode to insert them in your site.', 'insert-headers-and-footers' );
		$data['blocks_snippet_upgrade_url'] = wpcode_utm_url( 'https://wpcode.com/lite/', 'code_type', 'blocks', 'modal' );
		$data['button_text']                = __( 'Upgrade to PRO', 'insert-headers-and-footers' );
		$data['scss_title']                 = __( 'SCSS snippets is a Pro Feature', 'insert-headers-and-footers' );
		$data['scss_description']           = __( 'Upgrade to PRO today and unlock editing snippets using SCSS code with optimized compiling directly in the WordPress admin.', 'insert-headers-and-footers' );
		$data['scss_snippet_upgrade_url']   = wpcode_utm_url( 'https://wpcode.com/lite/', 'code_type', 'scss', 'modal' );

		return $data;
	}

	/**
	 *
	 * @param string    $screen_settings Screen settings.
	 * @param WP_Screen $screen WP_Screen object.
	 *
	 * @return string
	 */
	public function add_custom_screen_option( $screen_settings, $screen ) {

		$order_by = get_user_option( 'wpcode_snippets_order_by' );
		$order    = get_user_option( 'wpcode_snippets_order' );
		if ( empty( $order_by ) ) {
			$order_by = 'ID';
		}
		if ( empty( $order ) ) {
			$order = 'desc';
		}

		// Pick which column to order by, title, date or last updated using a select.
		$screen_settings .= '<h5>' . esc_html__( 'Order Snippets By', 'insert-headers-and-footers' ) . '</h5>';
		$screen_settings .= '<fieldset>';
		$screen_settings .= '<legend class="screen-reader-text">' . esc_html__( 'Order snippets by', 'insert-headers-and-footers' ) . '</legend>';
		// Use dropdown to choose the column to order by.
		$screen_settings .= '<label for="wpcode_screen_order_by">';
		$screen_settings .= '<select name="wpcode_screen_order_by" id="wpcode_screen_order_by">';
		$screen_settings .= '<option value="title" ' . selected( $order_by, 'title', false ) . '>' . esc_html__( 'Name', 'insert-headers-and-footers' ) . '</option>';
		$screen_settings .= '<option value="ID" ' . selected( $order_by, 'ID', false ) . '>' . esc_html__( 'Created', 'insert-headers-and-footers' ) . '</option>';
		$screen_settings .= '<option value="last_updated" ' . selected( $order_by, 'last_updated', false ) . '>' . esc_html__( 'Last Updated', 'insert-headers-and-footers' ) . '</option>';
		$screen_settings .= '<option value="priority" ' . selected( $order_by, 'priority', false ) . '>' . esc_html__( 'Priority', 'insert-headers-and-footers' ) . '</option>';
		$screen_settings .= '</select>';
		$screen_settings .= '</label>';
		// Display a dropdown to choose the order.
		$screen_settings .= '<label for="wpcode_screen_order">';
		$screen_settings .= '<select name="wpcode_screen_order" id="wpcode_screen_order">';
		$screen_settings .= '<option value="asc" ' . selected( $order, 'asc', false ) . '>' . esc_html__( 'Ascending', 'insert-headers-and-footers' ) . '</option>';
		$screen_settings .= '<option value="desc" ' . selected( $order, 'desc', false ) . '>' . esc_html__( 'Descending', 'insert-headers-and-footers' ) . '</option>';
		$screen_settings .= '</select>';
		$screen_settings .= '</label>';
		$screen_settings .= '</fieldset>';

		return $screen_settings;
	}

	/**
	 * Remove the duplicated parameter from the URL.
	 *
	 * @param array $args The arguments that should be removed from the URL.
	 *
	 * @return array
	 */
	public function remove_query_arg_from_url( $args ) {
		$args[] = 'duplicated';

		return $args;
	}
}
PK     £‰U]¡Lx£  £  6  includes/admin/pages/trait-wpcode-wpconsent-notice.phpnu „[µü¤        <?php
/**
 * WPConsent Notice Trait
 *
 * @package WPCode
 */

trait WPCode_WPConsent_Notice {

	/**
	 * Display a notice to suggest WPConsent.
	 *
	 * @return void
	 */
	public function notice_wpconsent() {
		if ( function_exists( 'wpconsent' ) ) {
			return;
		}
		$dismissed_notices = get_option( 'wpcode_admin_notices', array() );
		$slug              = 'wpconsent_pixel';
		$smtp_url          = add_query_arg(
			array(
				'type' => 'term',
				's'    => 'wpconsent',
				'tab'  => 'search',
			),
			admin_url( 'plugin-install.php' )
		);
		if ( ! isset( $dismissed_notices[ $slug ] ) || empty( $dismissed_notices[ $slug ]['dismissed'] ) ) {
			?>
			<div class="notice wpcode-notice notice-success notice-global is-dismissible" id="wpcode-notice-global-<?php echo esc_attr( $slug ); ?>">
				<h3><?php echo esc_html__( 'Using tracking scripts? Make Sure Youâ€™re Covered with a Cookie Banner!', 'insert-headers-and-footers' ); ?></h3>
				<p>
					<?php esc_html_e( 'Easily customize your own cookie banner and let our tools block cookies until users give consent. Scan and set up automatically!', 'insert-headers-and-footers' ); ?>
				</p>
				<p>
					<button class="wpcode-button wpcode-button-secondary wpcode-button-install-plugin" data-slug="wpconsent">
						<?php esc_html_e( 'Install WPConsent for Free', 'insert-headers-and-footers' ); ?>
					</button>
				</p>
			</div>
			<?php
			wpcode()->notice->enqueues();
		}
	}
}
PK     £‰U]æ[Îˆâ.  â.  6  includes/admin/pages/class-wpcode-admin-page-click.phpnu „[µü¤        <?php
/**
 * Admin page for handling 1-click install of public snippets in the WPCode library.
 *
 * @package WPCode
 */

/**
 * Class for the 1-Click admin page.
 */
class WPCode_Admin_Page_Click extends WPCode_Admin_Page {

	/**
	 * The page slug to be used when adding the submenu.
	 *
	 * @var string
	 */
	public $page_slug = 'wpcode-click';

	/**
	 * The action used for the nonce.
	 *
	 * @var string
	 */
	protected $action = 'wpcode-click';

	/**
	 * The nonce name field.
	 *
	 * @var string
	 */
	protected $nonce_name = 'wpcode-click_nonce';

	/**
	 * Hide this page in the menu.
	 *
	 * @var bool
	 */
	public $hide_menu = true;

	/**
	 * Call this just to set the page title translatable.
	 */
	public function __construct() {
		$this->page_title = __( '1-Click', 'insert-headers-and-footers' );
		parent::__construct();
	}

	/**
	 * Register hook on admin init just for this page.
	 *
	 * @return void
	 */
	public function page_hooks() {
		add_action( 'admin_init', array( $this, 'submit_listener' ) );
	}

	/**
	 * Override to hide default header on this page.
	 *
	 * @return void
	 */
	public function output_header() {

	}

	/**
	 * Wrap this page in a form tag.
	 *
	 * @return void
	 */
	public function output() {
		?>
		<form action="<?php echo esc_url( $this->get_page_action_url() ); ?>" method="post">
			<?php parent::output(); ?>
		</form>
		<?php
	}

	/**
	 * The page output.
	 *
	 * @return void
	 */
	public function output_content() {
		?>
		<div class="wpcode-modal-area">
			<div class="wpcode-modal-header">
				<?php $this->logo_image(); ?>
			</div>
			<?php
			$snippet_hash = get_transient( 'wpcode_deploy_snippet_id' );
			// Let's see if we're in the middle of a fresh installation from the library.
			if ( isset( $_GET['message'] ) && 'wpcode-deploy' === $_GET['message'] ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
				if ( ! wpcode()->library_auth->has_auth() ) {
					?>
					<h3><?php esc_html_e( 'Connect your site to the WPCode Library', 'insert-headers-and-footers' ); ?></h3>
					<p><?php esc_html_e( 'You\'re almost there! To finish installing the snippet, you need to connect your site to your account on the WPCode Library. This will allow you to install snippets directly to your site in the future.', 'insert-headers-and-footers' ); ?></p>
					<p><?php esc_html_e( 'You\'ll also get access to tens of free expert-curated snippets that can be installed with 1-click from inside the plugin.', 'insert-headers-and-footers' ); ?></p>
					<div class="wpcode-buttons-row">
						<button class="wpcode-button wpcode-button-large wpcode-start-auth">
							<?php esc_html_e( 'Connect to Library', 'insert-headers-and-footers' ); ?>
						</button>
					</div>
					<?php
				} else {
					// The site is connected to the library but it must mean it's connected to another account in which case they should connect to their own account.
					?>
					<h3><?php esc_html_e( 'Your site is already connected to the  WPCode Library using another account', 'insert-headers-and-footers' ); ?></h3>
					<p>
						<?php esc_html_e( 'In order to continue installing the snippet from the WPCode library you have to either login to the Library with the same account used to connect this site to the WPCode library initially or disconnect this site from the WPCode library and connect using your own account.', 'insert-headers-and-footers' ); ?>
					</p>
					<div class="wpcode-buttons-row">
						<button class="wpcode-button wpcode-delete-auth">
							<?php esc_html_e( 'Disconnect Site From Library', 'insert-headers-and-footers' ); ?>
						</button>
						<a class="wpcode-button" href="<?php echo esc_url( wpcode()->library_auth->library_url ); ?>/account">
							<?php esc_html_e( 'Login with another user on the WPCode Library', 'insert-headers-and-footers' ); ?>
						</a>
					</div>
					<?php
				}
			} elseif ( false !== $snippet_hash && wpcode()->library_auth->has_auth() && ! isset( $_GET['snippet'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
				// We have a snippet hash so let's continue the snippet install process.
				$snippet_url = wpcode()->library_auth->library_url . '/snippet/' . $snippet_hash . '/?deploy=1';
				?>
				<h3><?php esc_html_e( 'Congratulations, your site is now connected!', 'insert-headers-and-footers' ); ?></h3>
				<p><?php esc_html_e( 'Your site is now connected to the WPCode Library and you can install snippets directly from the library. Please click the button below to resume installing the snippet you were viewing.', 'insert-headers-and-footers' ); ?></p>
				<div class="wpcode-buttons-row">
					<a href="<?php echo esc_url( $snippet_url ); ?>" class="wpcode-button wpcode-button-large">
						<?php esc_html_e( 'Resume Snippet Installation', 'insert-headers-and-footers' ); ?>
					</a>
				</div>
				<?php
				delete_transient( 'wpcode_deploy_snippet_id' );
			} elseif ( ! wpcode()->library_auth->has_auth() ) { // Let's make sure the site is authenticated with the library.
				?>
				<h3><?php esc_html_e( 'Your site is not connected to the WPCode library.', 'insert-headers-and-footers' ); ?></h3>
				<p><?php esc_html_e( 'Connect now to enable installing public snippets from the WPCode library with 1-click and also get access to tens of expert-curated snippets that you can install from inside the plugin.', 'insert-headers-and-footers' ); ?></p>
				<div class="wpcode-buttons-row">
					<button class="wpcode-button wpcode-button-large wpcode-start-auth">
						<?php esc_html_e( 'Connect to Library', 'insert-headers-and-footers' ); ?>
					</button>
				</div>
				<?php
				// Let's check that we have a snippet hash to load.
			} elseif ( empty( $_GET['snippet'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
				?>
				<div class="notice notice-error">
					<p><?php esc_html_e( 'No snippet provided.', 'insert-headers-and-footers' ); ?></p>
				</div>
				<?php
				// Let's check that the site is authenticated.
			} elseif ( empty( $_GET['auth'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
				?>
				<div class="notice notice-error">
					<p><?php esc_html_e( 'Missing authentication token, please click the link in the WPCode Library again.', 'insert-headers-and-footers' ); ?></p>
				</div>
				<?php
			} else {
				// Let's make sure they don't get redirect again if they reached this point.
				delete_transient( 'wpcode_deploy_snippet_id' );
				// Let's attempt to load the snippet data from the library.
				$auth            = sanitize_key( $_GET['auth'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
				$snippet_hash    = sanitize_key( $_GET['snippet'] ); // phpcs:ignore WordPress.Security.NonceVerification.Recommended
				$snippet_request = wpcode()->library->get_public_snippet( $snippet_hash, $auth );

				if ( ! isset( $snippet_request['status'] ) || 'success' !== $snippet_request['status'] ) {
					// We have an error. Let's default to a generic message.
					$error = __( 'We encountered an error loading your snippet, please try again in a few minutes', 'insert-headers-and-footers' );
					if ( isset( $snippet_request['message'] ) ) {
						// If there is a message, let's use that instead.
						$error = sprintf(
						/* translators: %s: The error message from the API. */
							__( 'We encountered the following error loading your snippet: %s', 'insert-headers-and-footers' ),
							$snippet_request['message']
						);
					}
					$go_back_url = wpcode()->library_auth->library_url . '/snippet/' . $snippet_hash;

					?>
					<div class="notice notice-error">
						<p><?php echo esc_html( $error ); ?></p>
					</div>
					<div class="wpcode-buttons-row">
						<a href="<?php echo esc_url( $go_back_url ); ?>" class="wpcode-button"><?php esc_html_e( 'Go back to the library', 'insert-headers-and-footers' ); ?></a>
					</div>
					<?php
				} else {
					$snippet       = $snippet_request['data'];
					$snippet_types = wpcode()->execute->get_options();
					// Let's show a preview of the snippet and ask the user to confirm.
					?>
					<h1><?php esc_html_e( 'Library Snippet Preview', 'insert-headers-and-footers' ); ?></h1>
					<p><?php esc_html_e( 'Please review the snippet below and confirm that you would like to install it.', 'insert-headers-and-footers' ); ?></p>
					<h3>
						<?php
						// Translators: %s: The snippet name.
						printf( esc_html__( 'Snippet title: %s', 'insert-headers-and-footers' ), esc_html( $snippet['title'] ) );
						?>
					</h3>
					<div class="wpcode-code-textarea">
						<div class="wpcode-flex">
							<div class="wpcode-column">
								<h3><?php esc_html_e( 'Code preview', 'insert-headers-and-footers' ); ?></h3>
							</div>
							<div class="wpcode-column">
								<div class="wpcode-input-select">
									<label for="wpcode_snippet_type"><?php esc_html_e( 'Code Type', 'insert-headers-and-footers' ); ?></label>
									<select disabled>
										<?php
										foreach ( $snippet_types as $key => $label ) {
											if ( $key !== $snippet['code_type'] ) {
												continue;
											}
											?>
											<option selected><?php echo esc_html( $label ); ?></option>
											<?php
										}
										?>
									</select>
								</div>
							</div>
						</div>
						<textarea id="wpcode-code-preview"><?php echo esc_textarea( $snippet['code'] ); ?></textarea>
					</div>
					<div class="wpcode-buttons-row">
						<input type="hidden" name="snippet" value="<?php echo esc_attr( $snippet['cloud_id'] ); ?>">
						<input type="hidden" name="auth" value="<?php echo esc_attr( $auth ); ?>">
						<button class="wpcode-button wpcode-button-large"><?php esc_html_e( 'Confirm & Install Snippet', 'insert-headers-and-footers' ); ?></button>
					</div>
					<?php

					$editor = new WPCode_Code_Editor( esc_js( $snippet['code_type'] ) );
					$editor->set_setting( 'readOnly', 'nocursor' );
					$editor->register_editor( 'wpcode-code-preview' );
					$editor->init_editor();
				}

				wp_nonce_field( $this->action, $this->nonce_name );
			}
			?>
		</div>
		<?php
	}

	/**
	 * For this page we output a title and the save button.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
		?>
		<div class="wpcode-column">
			<h1><?php esc_html_e( 'Confirm Snippet Installation', 'insert-headers-and-footers' ); ?></h1>
		</div>
		<?php
	}

	/**
	 * If the form is submitted attempt to save the values.
	 *
	 * @return void
	 */
	public function submit_listener() {
		if ( ! isset( $_REQUEST[ $this->nonce_name ] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST[ $this->nonce_name ] ), $this->action ) ) {
			// Nonce is missing, so we're not even going to try.
			return;
		}

		if ( ! current_user_can( 'wpcode_edit_snippets' ) ) {
			// Should not be able to load this page at all without that permission but let's check anyway.
			return;
		}

		$snippet_hash = isset( $_REQUEST['snippet'] ) ? sanitize_key( $_REQUEST['snippet'] ) : false;
		$auth         = isset( $_REQUEST['auth'] ) ? sanitize_key( $_REQUEST['auth'] ) : false;
		// Let's load the data reliably again - it's saved in a transient so it should be fast.
		$snippet_data = wpcode()->library->get_public_snippet( $snippet_hash, $auth );

		// You should not be able to submit this form if the hash is invalid but let's check anyway.
		if ( ! isset( $snippet_data['status'] ) || 'success' !== $snippet_data['status'] ) {
			// This should not happen if you did not manually change the hash, so we can just return.
			return;
		}

		// Let's create a new snippet.
		$snippet = new WPCode_Snippet( $snippet_data['data'] );
		// Let's save the snippet.
		if ( $snippet->save() ) {
			// If successfully saved let's redirect to the edit screen.
			wp_safe_redirect(
				add_query_arg(
					array(
						'page'       => 'wpcode-snippet-manager',
						'snippet_id' => $snippet->get_id(),
					),
					admin_url( 'admin.php' )
				)
			);
			exit;
		}
	}
}
PK     £‰U]	ó´+    ?  includes/admin/pages/class-wpcode-admin-page-search-replace.phpnu „[µü¤        <?php
/**
 * Admin page for the Search & Replace tool.
 *
 * @package WPCode
 */

/**
 * Class for the Search & Replace admin page.
 */
class WPCode_Admin_Page_Search_Replace extends WPCode_Admin_Page {

	/**
	 * The page slug to be used when adding the submenu.
	 *
	 * @var string
	 */
	public $page_slug = 'wpcode-search-replace';

	/**
	 * The action used for the nonce.
	 *
	 * @var string
	 */
	protected $action = 'wpcode-search-replace';

	/**
	 * The nonce name field.
	 *
	 * @var string
	 */
	protected $nonce_name = 'wpcode-search-replace_nonce';

	/**
	 * Call this just to set the page title translatable.
	 */
	public function __construct() {
		$this->page_title = 'Search & Replace Everything';
		$this->menu_title = 'Search & Replace';
		parent::__construct();
	}

	/**
	 * Register hook on admin init just for this page.
	 *
	 * @return void
	 */
	public function page_hooks() {
		add_action( 'admin_init', array( $this, 'maybe_redirect_to_search_replace' ) );
	}

	/**
	 * Override to hide default header on this page.
	 *
	 * @return void
	 */
	public function output_header() {

	}

	/**
	 * Redirect to the search replace page if the plugin is active.
	 *
	 * @return void
	 */
	public function maybe_redirect_to_search_replace() {
		if ( function_exists( 'wsrw_main' ) ) {
			wp_safe_redirect( admin_url( 'tools.php?page=wsrw-search-replace' ) );
			exit;
		}
	}

	/**
	 * The page output.
	 *
	 * @return void
	 */
	public function output_content() {
		?>
		<div class="wpcode-plugin-page wpcode-plugin-page-search-replace">
			<div class="wpcode-plugin-page-image">
				<?php wpcode_icon( 'logo-sr', 90, 90, '0 0 65 64' ); ?>
			</div>
			<div class="wpcode-plugin-page-title">
				<h1>Search & Replace Everything by WPCode</h1>
				<p>
					<?php esc_html_e( 'Confidently replace any text in your database and update images without duplicating uploads, all with a single plugin.', 'insert-headers-and-footers' ); ?>
				</p>
			</div>
			<section class="wpcode-plugin-screenshot">
				<div class="wpcode-plugin-screenshot-image">
					<img src="<?php echo esc_url( WPCODE_PLUGIN_URL ); // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage?>admin/images/sr-screenshot-thumb.jpg" alt="<?php esc_attr_e( 'Search & Replace Everything Screenshot', 'insert-headers-and-footers' ); ?>"/>
					<a href="<?php echo esc_url( WPCODE_PLUGIN_URL ); ?>admin/images/sr-screenshot.jpg" data-lity>
						<?php wpcode_icon( 'search', 16, 16 ); ?>
					</a>
				</div>
				<ul>
					<li><?php esc_html_e( 'Replace Text Across Your Whole Database.', 'insert-headers-and-footers' ); ?></li>
					<li><?php esc_html_e( 'Preview Changes Every Time.', 'insert-headers-and-footers' ); ?></li>
					<li><?php esc_html_e( 'Replace Image Sources to Clear Up Space.', 'insert-headers-and-footers' ); ?></li>
					<li><?php esc_html_e( 'Support for Serialized Data.', 'insert-headers-and-footers' ); ?></li>
				</ul>
			</section>
			<section class="wpcode-plugin-step wpcode-plugin-step-install">
				<aside class="wpcode-plugin-page-step-num">
					<?php wpcode_icon( 'step-1', 50, 50, '0 0 100 100' ); ?>
					<i class="wpcode-plugin-page-step-loader wpcode-plugin-page-step-loader-hidden"></i>
				</aside>
				<div>
					<h2>
						<?php
						printf(
						// translators: %s is the plugin name.
							esc_html__( 'Install and Activate %s', 'insert-headers-and-footers' ),
							'Search & Replace Everything'
						)
						?>
					</h2>
					<p>
						<?php
						printf(
						// translators: %s is the plugin name.
							esc_html__( 'Install %s from the WordPress.org plugin repository.', 'insert-headers-and-footers' ),
							'Search & Replace Everything'
						)
						?>
					</p>
					<?php
					// Let's check if you can install plugins on this site.
					if ( current_user_can( 'install_plugins' ) && wp_is_file_mod_allowed( 'install_plugins' ) ) {
						?>
						<button class="wpcode-button wpcode-button-install-plugin" data-slug="search-replace-wpcode">
							<?php
							printf(
							// translators: %s is the plugin name.
								esc_html__( 'Install %s', 'insert-headers-and-footers' ),
								'Search & Replace Everything'
							);
							?>
						</button>
						<?php
					} else {
						?>
						<p>
							<?php esc_html_e( 'Please ask your website administrator to install Search & Replace Everything.', 'insert-headers-and-footers' ); ?>
						</p>
						<?php
					}
					?>
				</div>
			</section>
		</div>
		<?php
	}

	/**
	 * For this page we output a title and the save button.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
	}
}
PK     £‰U]èïO‰�   �   :  includes/admin/pages/class-wpcode-admin-page-generator.phpnu „[µü¤        <?php
/**
 * The admin page for the snippet generator.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Admin_Page_Generator.
 */
class WPCode_Admin_Page_Generator extends WPCode_Admin_Page {

	/**
	 * The page slug.
	 *
	 * @var string
	 */
	public $page_slug = 'wpcode-generator';

	/**
	 * Generator to show, if any.
	 *
	 * @var bool|string
	 */
	public $generator = false;

	/**
	 * Available generators.
	 *
	 * @var WPCode_Generator_Type[]
	 */
	public $generators;

	/**
	 * Set the code type for the editor on this page.
	 *
	 * @var string
	 */
	public $code_type = 'php';

	/**
	 * Set the header title based on what is displayed.
	 *
	 * @var string
	 */
	public $header_title;

	/**
	 * Snippet if editing an existing, generated snippet.
	 *
	 * @var WPCode_Snippet
	 */
	public $snippet;

	/**
	 * The capability required to view this page.
	 *
	 * @var string
	 */
	protected $capability = 'wpcode_edit_php_snippets';

	/**
	 * Hide the generator menu item.
	 *
	 * @var bool
	 */
	public $hide_menu = true;

	/**
	 * Call this just to set the page title translatable.
	 */
	public function __construct() {
		$this->page_title   = __( 'Generator', 'insert-headers-and-footers' );
		$this->header_title = $this->page_title;
		parent::__construct();
	}

	/**
	 * Page-specific hooks & logic.
	 *
	 * @return void
	 */
	public function page_hooks() {
		$this->generators = wpcode()->generator()->get_all_generators();
		// phpcs:disable WordPress.Security.NonceVerification.Recommended
		// Let's see if we should display a generator.
		if ( isset( $_GET['generator'] ) ) {
			$generator = sanitize_text_field( wp_unslash( $_GET['generator'] ) );
			if ( array_key_exists( $generator, $this->generators ) ) {
				$this->generator = $generator;
				if ( isset( $this->generators[ $generator ]->code_type ) ) {
					$this->code_type = $this->generators[ $generator ]->code_type;
				}
			}
		}

		$snippet_id = isset( $_GET['snippet'] ) ? absint( $_GET['snippet'] ) : false;
		if ( $snippet_id ) {
			$this->snippet = new WPCode_Snippet( $snippet_id );
			if ( $this->snippet->get_post_data() ) {
				WPCode_Notice::add(
					sprintf(
							// Translators: gets replaced with the snippet title.
						__( 'You are now editing the generated snippet: "%s". Updating the snippet will override any edits you made to the code.', 'insert-headers-and-footers' ),
						$this->snippet->get_title()
					),
					'warning'
				);
			} else {
				unset( $this->snippet );
			}
		}

		// phpcs:enable WordPress.Security.NonceVerification.Recommended
		if ( $this->generator ) {
			// Translators: gets replaced with the generator name.
			$this->header_title = sprintf( __( '%s Generator', 'insert-headers-and-footers' ), $this->generators[ $this->generator ]->get_title() );
		}
	}

	/**
	 * Output the content of the page.
	 *
	 * @return void
	 */
	public function output_content() {
		if ( $this->generator ) {
			$this->show_generator();
		} else {
			$this->show_generators_list();
		}
	}

	/**
	 * Show the list of generators with categories.
	 *
	 * @return void
	 */
	public function show_generators_list() {
		$categories = wpcode()->generator()->get_categories();
		?>
		<div class="wpcode-items-metabox wpcode-metabox">
			<?php $this->get_items_list_sidebar( $categories, __( 'All Generators', 'insert-headers-and-footers' ), __( 'Search Generators', 'insert-headers-and-footers' ) ); ?>
			<div class="wpcode-items-list">
				<ul class="wpcode-items-list-category">
					<?php
					foreach ( $this->generators as $generator ) {
						$url      = add_query_arg(
							array(
								'page'      => $this->page_slug,
								'generator' => $generator->get_name(),
							),
							admin_url( 'admin.php' )
						);
						$button_1 = array(
							'tag'  => 'a',
							'url'  => $url,
							'text' => __( 'Generate', 'insert-headers-and-footers' ),
						);
						$this->get_list_item( $generator->get_name(), $generator->get_title(), $generator->get_description(), $button_1, array(), $generator->get_categories() );
					}
					?>
				</ul>
			</div>
		</div>
		<?php
	}

	/**
	 * Show the generator based on the param.
	 *
	 * @return void
	 */
	public function show_generator() {
		$generator    = $this->generators[ $this->generator ];
		$tabs         = $generator->get_tabs();
		$snippet_data = array();
		if ( isset( $this->snippet ) ) {
			$snippet_data = $this->snippet->get_generator_data();
		}
		?>
		<form id="wpcode_generator_form">
			<div class="wpcode-items-metabox wpcode-metabox">
				<div class="wpcode-items-sidebar">
					<ul class="wpcode-items-categories-list wpcode-items-tabs">
						<?php
						$selected = key( $tabs );
						foreach ( $tabs as $tab_id => $tab ) {
							$class = $tab_id === $selected ? 'wpcode-active' : '';
							?>
							<li>
								<button type="button" class="<?php echo esc_attr( $class ); ?>" data-category="<?php echo esc_attr( $tab_id ); ?>"><?php echo esc_html( $tab['label'] ); ?></button>
							</li>
						<?php } ?>
					</ul>
				</div>
				<div class="wpcode-items-list">
					<?php
					foreach ( $tabs as $tab_id => $tab ) {
						$style = $selected === $tab_id ? '' : 'display:none;';
						?>
						<div class="wpcode-form-tab" data-tab="<?php echo esc_attr( $tab_id ); ?>" style="<?php echo esc_attr( $style ); ?>">
							<?php $generator->render_tab( $tab_id, $snippet_data ); ?>
						</div>
					<?php } ?>
					<div class="wpcode-generator-actions">
						<?php wp_nonce_field( 'wpcode_generate', 'nonce', false ); ?>
						<input type="hidden" name="type" value="<?php echo esc_attr( $this->generator ); ?>"/>
						<input type="hidden" name="action" value="wpcode_generate_snippet"/>
						<button type="submit" class="wpcode-button wpcode-button-secondary" id="wpcode-generator-update-code"><?php esc_html_e( 'Update code', 'insert-headers-and-footers' ); ?></button>
						<?php if ( ! empty( $this->snippet ) ) { ?>
							<input type="hidden" name="snippet_id" value="<?php echo absint( $this->snippet->get_id() ); ?>"/>
						<?php } ?>
					</div>
				</div>
			</div>
		</form>
		<div class="wpcode-generator-preview">
			<div class="wpcode-generator-preview-header">
				<h2><?php esc_html_e( 'Code Preview', 'insert-headers-and-footers' ); ?></h2>
				<?php
				if ( ! empty( $this->snippet ) ) {
					?>
					<button type="button" class="wpcode-button" id="wpcode-generator-use-snippet"><?php esc_html_e( 'Update Snippet', 'insert-headers-and-footers' ); ?></button>
				<?php } else { ?>
					<button type="button" class="wpcode-button" id="wpcode-generator-use-snippet"><?php esc_html_e( 'Use Snippet', 'insert-headers-and-footers' ); ?></button>
				<?php } ?>
				<button class="wpcode-button wpcode-button-icon wpcode-button-secondary wpcode-copy-target" data-target="#wpcode_generator_code_preview" type="button">
					<span class="wpcode-default-icon"><?php wpcode_icon( 'copy', 16, 16 ); ?></span><span class="wpcode-success-icon"><?php wpcode_icon( 'check', 16, 13 ); ?></span> <?php echo esc_html_x( 'Copy Code', 'Copy to clipboard', 'insert-headers-and-footers' ); ?>
				</button>
			</div>
			<textarea id="wpcode_generator_code_preview"><?php echo esc_textarea( $generator->get_snippet_code() ); ?></textarea>
		</div>
		<script type="text/template" id="wpcode-generator-repeater-row">
			<?php $this->repeater_group_template(); ?>
		</script>
		<?php
	}

	/**
	 * The bottom part of the header.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
		?>
		<div class="wpcode-column">
			<h1><?php echo esc_html( $this->header_title ); ?></h1>
		</div>
		<?php
	}

	/**
	 * The template for the repeater row.
	 *
	 * @return void
	 */
	public function repeater_group_template() {
		?>
		<div class="wpcode-repeater-group">
			<button type="button" class="wpcode-button wpcode-button-secondary wpcode-remove-row"><?php esc_html_e( 'Remove Row', 'insert-headers-and-footers' ); ?></button>
		</div>
		<?php
	}

	/**
	 * Add page-specific scripts.
	 *
	 * @return void
	 */
	public function page_scripts() {
		if ( ! $this->generator ) {
			return;
		}
		$editor = new WPCode_Code_Editor( $this->code_type );
		$editor->set_setting( 'readOnly', 'nocursor' );
		$editor->register_editor( 'wpcode_generator_code_preview' );
		$editor->init_editor();

		wp_enqueue_script( 'jquery-ui-autocomplete' );
		wp_enqueue_media();
	}
}
PK     £‰U]17	ª/^  /^  9  includes/admin/pages/class-wpcode-admin-page-settings.phpnu „[µü¤        <?php
/**
 * Settings admin page.
 *
 * @package WPCode
 */

/**
 * Class for the Settings admin page.
 */
class WPCode_Admin_Page_Settings extends WPCode_Admin_Page {

	/**
	 * The page slug to be used when adding the submenu.
	 *
	 * @var string
	 */
	public $page_slug = 'wpcode-settings';

	/**
	 * The action used for the nonce.
	 *
	 * @var string
	 */
	protected $action = 'wpcode-settings';

	/**
	 * The nonce name field.
	 *
	 * @var string
	 */
	protected $nonce_name = 'wpcode-settings_nonce';

	/**
	 * The view to be loaded by default.
	 *
	 * @var string
	 */
	public $view = 'general';

	/**
	 * The capability required to view this page.
	 *
	 * @var string
	 */
	protected $capability = 'wpcode_manage_settings';

	/**
	 * Call this just to set the page title translatable.
	 */
	public function __construct() {
		$this->page_title = __( 'WPCode Settings', 'insert-headers-and-footers' );
		$this->menu_title = __( 'Settings', 'insert-headers-and-footers' );
		parent::__construct();
	}

	/**
	 * Setup page-specific views.
	 *
	 * @return void
	 */
	protected function setup_views() {
		$this->views = array(
			'general' => __( 'General Settings', 'insert-headers-and-footers' ),
			'errors'  => __( 'Error Handling', 'insert-headers-and-footers' ),
			'access'  => __( 'Access Control', 'insert-headers-and-footers' ),
		);
	}

	/**
	 * Register hook on admin init just for this page.
	 *
	 * @return void
	 */
	public function page_hooks() {
		$this->process_message();
		add_action( 'admin_init', array( $this, 'submit_listener' ) );
		add_filter( 'wpcode_admin_js_data', array( $this, 'add_connect_strings' ) );
	}

	/**
	 * Handle the message after the settings are saved with a redirect.
	 *
	 * @return void
	 */
	public function process_message() {
		if ( isset( $_GET['message'] ) && 1 === absint( $_GET['message'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			$this->set_success_message( __( 'Settings Saved.', 'insert-headers-and-footers' ) );
		}
	}

	/**
	 * Wrap this page in a form tag.
	 *
	 * @return void
	 */
	public function output() {
		?>
		<form action="<?php echo esc_url( $this->get_page_action_url() ); ?>" method="post">
			<?php parent::output(); ?>
		</form>
		<?php
	}

	/**
	 * The Settings page output.
	 *
	 * @return void
	 */
	public function output_content() {
		if ( method_exists( $this, 'output_view_' . $this->view ) ) {
			call_user_func( array( $this, 'output_view_' . $this->view ) );
		}
	}

	/**
	 * The Settings page output.
	 *
	 * @return void
	 */
	public function output_view_general() {
		$header_and_footers = wpcode()->settings->get_option( 'headers_footers_mode' );
		$usage_tracking     = wpcode()->settings->get_option( 'usage_tracking' );

		$description = __( 'This allows you to disable all Code Snippets functionality and have a single "Headers & Footers" item under the settings menu.', 'insert-headers-and-footers' );

		$description .= '<br />';
		$description .= sprintf(
		// Translators: Placeholders make the text bold.
			__( '%1$sNOTE:%2$s Please use this setting with caution. It will disable all custom snippets that you add using the new snippet management interface.', 'insert-headers-and-footers' ),
			'<strong>',
			'</strong>'
		);

		$this->metabox_row(
			__( 'License Key', 'insert-headers-and-footers' ),
			$this->get_license_key_input()
		);

		$this->metabox_row(
			__( 'Headers & Footers mode', 'insert-headers-and-footers' ),
			$this->get_checkbox_toggle(
				$header_and_footers,
				'headers_footers_mode',
				$description
			),
			'headers_footers_mode'
		);

		$this->common_settings();

		$this->metabox_row(
			__( 'Allow Usage Tracking', 'insert-headers-and-footers' ),
			$this->get_checkbox_toggle(
				$usage_tracking,
				'usage_tracking',
				esc_html__( 'By allowing us to track usage data, we can better help you, as we will know which WordPress configurations, themes, and plugins we should test.', 'insert-headers-and-footers' )
			),
			'usage_tracking'
		);

		$this->uninstall_setting();

		wp_nonce_field( $this->action, $this->nonce_name );

		?>
		<button class="wpcode-button" type="submit">
			<?php esc_html_e( 'Save Changes', 'insert-headers-and-footers' ); ?>
		</button>
		<?php
	}

	/**
	 * Output the uninstall setting.
	 *
	 * @return void
	 */
	public function uninstall_setting() {
		$uninstall_description = esc_html__( 'Remove ALL WPCode data upon plugin deletion.', 'insert-headers-and-footers' );

		$uninstall_description .= '<br />';
		$uninstall_description .= sprintf(
			'<strong style="color: #DF2A35">%s</strong>',
			esc_html__( 'All WPCode snippets & scripts will be unrecoverable.', 'insert-headers-and-footers' )
		);

		$this->metabox_row(
			__( 'Delete All Data on Uninstall', 'insert-headers-and-footers' ),
			$this->get_checkbox_toggle(
				wpcode()->settings->get_option( 'uninstall_data', false ),
				'wpcode-uninstall-data',
				$uninstall_description,
				1
			),
			'wpcode-admin-bar-info'
		);
	}

	/**
	 * Move common settings to a separate method so we can use it in other versions of this page.
	 *
	 * @return void
	 */
	public function common_settings() {
		$this->metabox_row(
			__( 'WPCode Library Connection', 'insert-headers-and-footers' ),
			$this->get_library_connection_input()
		);

		$this->metabox_row(
			__( 'Editor Height', 'insert-headers-and-footers' ),
			$this->get_editor_height_input(),
			'wpcode-editor-height'
		);

		$this->metabox_row(
			__( 'Dark Mode', 'insert-headers-and-footers' ),
			$this->get_checkbox_toggle(
				wpcode()->settings->get_option( 'dark_mode' ),
				'wpcode-dark-mode',
				esc_html__( 'Enable Dark Mode across WPCode.', 'insert-headers-and-footers' ),
				1
			),
			'wpcode-dark-mode'
		);

		$this->metabox_row(
			__( 'Admin Bar Info', 'insert-headers-and-footers' ),
			$this->get_checkbox_toggle(
				wpcode()->settings->get_option( 'admin_bar_info', true ),
				'wpcode-admin-bar-info',
				esc_html__( 'Enable the admin bar menu that shows info about which snippets & scripts are loaded on the current page.', 'insert-headers-and-footers' ),
				1
			),
			'wpcode-admin-bar-info'
		);
	}

	/**
	 * Get an input to connect or disconnect from the snippet library.
	 *
	 * @return string
	 */
	public function get_library_connection_input() {
		$button_classes = array(
			'wpcode-button',
		);
		$button_text    = __( 'Connect to the WPCode Library', 'insert-headers-and-footers' );
		if ( WPCode()->library_auth->has_auth() ) {
			$button_classes[] = 'wpcode-delete-auth';
			$button_text      = __( 'Disconnect from the WPCode Library', 'insert-headers-and-footers' );
		} else {
			$button_classes[] = 'wpcode-start-auth';
		}

		return sprintf(
			'<button type="button" class="%1$s">%2$s</button>',
			esc_attr( implode( ' ', $button_classes ) ),
			esc_html( $button_text )
		);
	}

	/**
	 * For this page we output a menu.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
		?>
		<div class="wpcode-column">
			<ul class="wpcode-admin-tabs">
				<?php
				foreach ( $this->views as $slug => $label ) {
					if ( 'importer' === $slug ) {
						continue;
					}
					$class = $this->view === $slug ? 'active' : '';
					?>
					<li>
						<a href="<?php echo esc_url( $this->get_view_link( $slug ) ); ?>" class="<?php echo esc_attr( $class ); ?>"><?php echo esc_html( $label ); ?></a>
					</li>
				<?php } ?>
			</ul>
		</div>
		<div class="wpcode-column">
		</div>
		<?php

	}

	/**
	 * If the form is submitted attempt to save the values.
	 *
	 * @return void
	 */
	public function submit_listener() {
		if ( ! isset( $_REQUEST[ $this->nonce_name ] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST[ $this->nonce_name ] ), $this->action ) ) {
			// Nonce is missing, so we're not even going to try.
			return;
		}

		if ( 'errors' === $this->view ) {
			$settings = array(
				'error_logging' => isset( $_POST['wpcode-error-logging'] ),
			);
		} else {
			$settings = array(
				'headers_footers_mode' => isset( $_POST['headers_footers_mode'] ),
				'editor_height_auto'   => isset( $_POST['editor_height_auto'] ),
				'editor_height'        => isset( $_POST['editor_height'] ) ? absint( $_POST['editor_height'] ) : 300,
				'usage_tracking'       => isset( $_POST['usage_tracking'] ),
				'admin_bar_info'       => isset( $_POST['wpcode-admin-bar-info'] ),
				'dark_mode'            => isset( $_POST['wpcode-dark-mode'] ),
				'uninstall_data'       => isset( $_POST['wpcode-uninstall-data'] ),
			);
		}

		$settings = $this->before_save( $settings );

		wpcode()->settings->bulk_update_options( $settings );

		if ( true === $settings['headers_footers_mode'] ) {
			wp_safe_redirect(
				add_query_arg(
					array(
						'page'    => 'wpcode-headers-footers',
						'message' => 1,
					),
					admin_url( 'options-general.php' )
				)
			);
			exit;
		}

		wp_safe_redirect(
			add_query_arg(
				array(
					'message' => 1,
				),
				$this->get_page_action_url()
			)
		);
		exit;
	}

	/**
	 * Give child classes a chance to update the settings object before saving.
	 *
	 * @param array $settings The settings to be saved.
	 *
	 * @return array
	 */
	public function before_save( $settings ) {
		return $settings;
	}

	/**
	 * Allow users to change the code editor height.
	 *
	 * @return string
	 */
	public function get_editor_height_input() {
		$editor_auto_height = boolval( wpcode()->settings->get_option( 'editor_height_auto' ) );
		$editor_height      = wpcode()->settings->get_option( 'editor_height', 300 );

		$html = sprintf(
			'<input type="number" min="100" value="%1$d" id="wpcode-editor-height" name="editor_height" %2$s />',
			absint( $editor_height ),
			disabled( $editor_auto_height, true, false )
		);

		$html .= $this->get_checkbox_toggle(
			$editor_auto_height,
			'editor_height_auto'
		);
		$html .= '<label for="editor_height_auto">' . __( 'Auto height', 'insert-headers-and-footers' ) . '</label>';

		$html .= '<p class="description">';
		$html .= esc_html__( 'Set the editor height in pixels or enable auto-grow so the code editor automatically grows in height with the code.', 'insert-headers-and-footers' );
		$html .= '</p>';

		return $html;
	}

	/**
	 * Get the license key input.
	 *
	 * @return string
	 */
	public function get_license_key_input() {
		ob_start();
		?>
		<div class="wpcode-metabox-form">
			<p><?php esc_html_e( 'You\'re using WPCode Lite - no license needed. Enjoy!', 'insert-headers-and-footers' ); ?>
				<img draggable="false" role="img" class="emoji" alt="ðŸ™‚" src="https://s.w.org/images/core/emoji/14.0.0/svg/1f642.svg"> <?php // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?>
			</p>
			<p>
				<?php
				printf(
				// Translators: %1$s - Opening anchor tag, do not translate. %2$s - Closing anchor tag, do not translate.
					esc_html__( 'To unlock more features consider %1$supgrading to PRO%2$s.', 'insert-headers-and-footers' ),
					'<strong><a href="' . esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'settings-license', 'upgrading-to-pro' ) ) . '" target="_blank" rel="noopener noreferrer">',
					'</a></strong>'
				)
				?>
			</p>
			<hr>
			<p><?php esc_html_e( 'Already purchased? Simply enter your license key below to enable WPCode PRO!', 'insert-headers-and-footers' ); ?></p>
			<p>
				<input type="password" class="wpcode-input-text" id="wpcode-settings-upgrade-license-key" placeholder="<?php esc_attr_e( 'Paste license key here', 'insert-headers-and-footers' ); ?>" value="">
				<button type="button" class="wpcode-button" id="wpcode-settings-connect-btn">
					<?php esc_html_e( 'Verify Key', 'insert-headers-and-footers' ); ?>
				</button>
			</p>
		</div>
		<?php

		return ob_get_clean();
	}

	/**
	 * Add the strings for the connect page to the JS object.
	 *
	 * @param array $data The localized data we already have.
	 *
	 * @return array
	 */
	public function add_connect_strings( $data ) {
		$data['oops']                = esc_html__( 'Oops!', 'insert-headers-and-footers' );
		$data['ok']                  = esc_html__( 'OK', 'insert-headers-and-footers' );
		$data['almost_done']         = esc_html__( 'Almost Done', 'insert-headers-and-footers' );
		$data['plugin_activate_btn'] = esc_html__( 'Activate', 'insert-headers-and-footers' );
		$data['server_error']        = esc_html__( 'Unfortunately there was a server connection error.', 'insert-headers-and-footers' );

		return $data;
	}

	/**
	 * Output the form for the access management tab.
	 *
	 * @return void
	 */
	public function output_view_access() {
		echo '<div class="wpcode-blur-area">';
		$this->access_view_content();
		echo '</div>';
		echo $this->get_access_overlay(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	/**
	 * Output the form for the access management tab.
	 *
	 * @return void
	 */
	public function output_view_errors() {

		$this->error_view_fields();

		wp_nonce_field( $this->action, $this->nonce_name );

		?>
		<button class="wpcode-button" type="submit">
			<?php esc_html_e( 'Save Changes', 'insert-headers-and-footers' ); ?>
		</button>
		<?php

	}

	/**
	 * The error handling tab fields.
	 *
	 * @return void
	 */
	public function error_view_fields() {
		$this->error_logging_field();

		?>
		<h2><?php esc_html_e( 'Email Notifications', 'insert-headers-and-footers' ); ?>
			&nbsp;<span class="wpcode-pro-pill">PRO</span></h2>
		<p>
			<?php esc_html_e( 'Receive email notifications when snippets throw errors or are automatically deactivated.', 'insert-headers-and-footers' ); ?>
		</p>
		<?php $this->wp_mail_smtp_notice(); ?>
		<hr/>
		<div style="position: relative">
			<div class="wpcode-blur-area">
				<?php
				$this->error_emails_fields();
				?>
			</div>
			<?php
			echo self::get_upsell_box( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				esc_html__( 'Email Notifications is a Pro Feature', 'insert-headers-and-footers' ),
				'<p>' . esc_html__( 'Do you want to get email notifications the moment your snippets throw an error or are automatically deactivated? Upgrade today and improve your workflow with WPCode Error Email Notifications.', 'insert-headers-and-footers' ) . '</p>',
				array(
					'text' => esc_html__( 'Upgrade to WPCode PRO', 'insert-headers-and-footers' ),
					'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'settings', 'tab-' . $this->view, 'email' ) ),
				)
			); 
			?>
		</div>
		<?php
	}

	/**
	 * The fields used for email settings.
	 *
	 * @return void
	 */
	public function error_emails_fields() {
		$this->metabox_row(
			__( 'Error Notifications', 'insert-headers-and-footers' ),
			$this->get_checkbox_toggle(
				wpcode()->settings->get_option( 'emails_errors' ),
				'wpcode-emails-errors',
				sprintf(
				// Translators: %1$s: opening anchor tag, %2$s: closing anchor tag. Link to docs about error notifications.
					esc_html__( 'Send email notifications when snippets throw errors? %1$sLearn more%2$s', 'insert-headers-and-footers' ),
					'<a href="' . esc_url( wpcode_utm_url( 'https://wpcode.com/docs/error-notifications/', 'settings', 'errors', 'errornotifications' ) ) . '" target="_blank" rel="noopener noreferrer">',
					'</a>'
				),
				1
			),
			'wpcode-error-notifications'
		);

		$this->metabox_row(
			__( 'Send To', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'wpcode-emails-errors-addresses',
				wpcode()->settings->get_option( 'emails_errors_addresses', get_option( 'admin_email' ) ),
				__( 'Enter a comma separated list of email addresses to receive error notifications. Defaults to the admin email address.', 'insert-headers-and-footers' ),
				true
			),
			'wpcode-emails-errors-addresses'
		);

		$preview_url = add_query_arg(
			array(
				'wpcode_email_template' => 'error',
				'wpcode_email_preview'  => '1',
			),
			admin_url()
		);

		$this->metabox_row(
			'',
			'<a href="' . esc_url( $preview_url ) . '" class="wpcode-button wpcode-button-secondary" target="_blank" rel="noopener noreferrer">' . esc_html__( 'Preview Email', 'insert-headers-and-footers' ) . '</a>',
			'wpcode-emails-errors-preview'
		);

		$this->metabox_row(
			__( 'Deactivation Notifications', 'insert-headers-and-footers' ),
			$this->get_checkbox_toggle(
				wpcode()->settings->get_option( 'emails_deactivated' ),
				'wpcode-emails-deactivated',
				sprintf(
				// Translators: %1$s: opening anchor tag, %2$s: closing anchor tag. Link to docs about error notifications.
					esc_html__( 'Send an email when a snippet gets automatically deactivated? %1$sLearn more%2$s', 'insert-headers-and-footers' ),
					'<a href="' . esc_url( wpcode_utm_url( 'https://wpcode.com/docs/error-notifications/', 'settings', 'errors', 'deactivated' ) ) . '" target="_blank" rel="noopener noreferrer">',
					'</a>'
				),
				1
			),
			'wpcode-emails-deactivated'
		);

		$this->metabox_row(
			__( 'Send To', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'wpcode-emails-deactivated-addresses',
				wpcode()->settings->get_option( 'emails_deactivated_addresses', get_option( 'admin_email' ) ),
				__( 'Enter a comma separated list of email addresses to receive deactivation notifications. Defaults to the admin email address.', 'insert-headers-and-footers' ),
				true
			),
			'wpcode-emails-deactivated-addresses'
		);

		$preview_url = add_query_arg(
			array(
				'wpcode_email_template' => 'deactivated',
				'wpcode_email_preview'  => '1',
			),
			admin_url()
		);

		$this->metabox_row(
			'',
			'<a href="' . esc_url( $preview_url ) . '" class="wpcode-button wpcode-button-secondary" target="_blank" rel="noopener noreferrer">' . esc_html__( 'Preview Email', 'insert-headers-and-footers' ) . '</a>',
			'wpcode-emails-deactivated-preview'
		);
	}

	/**
	 * The error logging field.
	 *
	 * @return void
	 */
	public function error_logging_field() {
		$this->metabox_row(
			__( 'Error Logging', 'insert-headers-and-footers' ),
			$this->get_checkbox_toggle(
				wpcode()->settings->get_option( 'error_logging' ),
				'wpcode-error-logging',
				sprintf(
				// Translators: %1$s: opening anchor tag, %2$s: closing anchor tag.
					esc_html__( 'Log errors thrown by snippets? %1$sView Logs%2$s', 'insert-headers-and-footers' ),
					'<a href="' . esc_url( admin_url( 'admin.php?page=wpcode-tools&view=logs' ) ) . '">',
					'</a>'
				),
				1
			),
			'wpcode-error-logging'
		);
	}

	/**
	 * The access management tab content.
	 *
	 * @return void
	 */
	public function access_view_content() {
		?>
		<h2><?php esc_html_e( 'Access Control', 'insert-headers-and-footers' ); ?></h2>
		<p>
			<?php
			printf(
			// Translators: %1$s - Opening anchor tag. %2$s - Closing anchor tag.
				esc_html__( 'Select the user roles that are allowed to manage different types of snippets or parts of WPCode. By default, all permissions are provided only to administrator users. Please see our %1$sAccess Control documentation%2$s for more details.', 'insert-headers-and-footers' ),
				'<a href="' . esc_url( wpcode_utm_url( 'https://wpcode.com/docs/access-control/', 'settings-access-controls', 'access-controls-documentation' ) ) . '" target="_blank" rel="noopener noreferrer">',
				'</a>'
			);
			?>
		</p>
		<hr/>
		<?php
		$capabilities = $this->get_capabilites();

		foreach ( $capabilities as $capability => $capability_data ) {
			$selected_roles = wpcode()->settings->get_option( $capability, array() );
			$this->metabox_row(
				$capability_data['label'],
				$this->get_roles_dropdown( $selected_roles, 'wpcode_capability_' . $capability ) .
				'<p class="description">' . esc_html( $capability_data['description'] ) . '</p>'
			);
		}

		$this->php_setting();

		?>
		<button class="wpcode-button" type="submit">
			<?php esc_html_e( 'Save Changes', 'insert-headers-and-footers' ); ?>
		</button>
		<?php
	}

	/**
	 * Access control overlay.
	 *
	 * @return string
	 */
	public function get_access_overlay() {
		$text = sprintf(
		// translators: %1$s and %2$s are <u> tags.
			'<p>' . esc_html__( 'Improve the way you and your team manage your snippets with the WPCode Access Control settings. Enable other users on your site to manage different types of snippets or configure Conversion Pixels settings and update configuration files. This feature is available on the %1$sWPCode Pro%2$s plan or higher.', 'insert-headers-and-footers' ) . '</p>',
			'<u>',
			'</u>'
		);

		return self::get_upsell_box(
			esc_html__( 'Access Control is a PRO Feature', 'insert-headers-and-footers' ),
			$text,
			array(
				'text' => esc_html__( 'Upgrade to WPCode PRO', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'settings', 'tab-' . $this->view, 'upgrade-to-pro' ) ),
			),
			array(),
			array(
				esc_html__( 'Save time and improve website management with your team', 'insert-headers-and-footers' ),
				esc_html__( 'Delegate snippet management to other users with full control', 'insert-headers-and-footers' ),
				esc_html__( 'Enable other users to set up ads & 3rd party services', 'insert-headers-and-footers' ),
				esc_html__( 'Choose if PHP snippets should be enabled on the site', 'insert-headers-and-footers' ),
			)
		);
	}

	/**
	 * Output the PHP disable setting.
	 *
	 * @return void
	 */
	public function php_setting() {
		?>
		<h2><?php esc_html_e( 'PHP Snippets', 'insert-headers-and-footers' ); ?></h2>
		<?php
		$this->metabox_row(
			esc_html__( 'Disable PHP snippets', 'insert-headers-and-footers' ),
			$this->get_checkbox_toggle(
				boolval( wpcode()->settings->get_option( 'completely_disable_php' ) ),
				'completely_disable_php',
				esc_html__( 'This option will completely disable PHP snippets execution and the option to edit or add new PHP snippets.', 'insert-headers-and-footers' )
			),
			'wpcode_disable_php'
		);
	}

	/**
	 * Get the custom capabilities.
	 *
	 * @return array[]
	 */
	public function get_capabilites() {
		return wpcode_custom_capabilities();
	}

	/**
	 * Get a dropdown with the user roles.
	 *
	 * @param array  $selected The roles that are selected.
	 * @param string $name The name of the select.
	 * @param string $id The ID of the select, defaults to the name.
	 *
	 * @return string
	 */
	public function get_roles_dropdown( $selected, $name, $id = '' ) {
		if ( empty( $id ) ) {
			$id = $name;
		}
		$user_roles = wp_roles()->roles;
		$dropdown   = '<select name="' . esc_attr( $name ) . '[]" id="' . esc_attr( $id ) . '" class="wpcode-select2" multiple>';
		foreach ( $user_roles as $key => $user_role ) {
			if ( ! isset( $user_role['name'] ) ) {
				continue;
			}
			$check_role = is_multisite() ? 'superadmin' : 'administrator';
			if ( $check_role === $key ) {
				continue;
			}
			$dropdown .= '<option value="' . esc_attr( $key ) . '" ' . selected( in_array( $key, $selected, true ), true, false ) . '>' . esc_html( $user_role['name'] ) . '</option>';
		}
		$dropdown .= '</select>';

		return $dropdown;
	}

	/**
	 * Display a notice to suggest installing WP Mail SMTP.
	 *
	 * @return void
	 */
	public function wp_mail_smtp_notice() {
		if ( function_exists( 'wp_mail_smtp' ) ) {
			return;
		}
		$dismissed_notices = get_option( 'wpcode_admin_notices', array() );
		$slug              = 'emailsmtp';
		$smtp_url          = add_query_arg(
			array(
				'type' => 'term',
				's'    => 'wp mail smtp',
				'tab'  => 'search',
			),
			admin_url( 'plugin-install.php' )
		);
		if ( ! isset( $dismissed_notices[ $slug ] ) || empty( $dismissed_notices[ $slug ]['dismissed'] ) ) {
			?>
			<div class="notice wpcode-notice notice-global is-dismissible" id="wpcode-notice-global-<?php echo esc_attr( $slug ); ?>">
				<h3><?php echo esc_html__( 'Make Sure Important Emails Reach Your Inbox', 'insert-headers-and-footers' ); ?></h3>
				<p>
					<?php
					printf(
					// Translators: %1$s: opening anchor tag, %2$s: closing anchor tag.
						esc_html__( 'Solve common email deliverability issues for good. %1$sGet WP Mail SMTP%2$s!', 'insert-headers-and-footers' ),
						'<a href="' . esc_url( $smtp_url ) . '">',
						'</a>'
					);
					?>
				</p>
			</div>
		<?php
			wpcode()->notice->enqueues();
		}
	}
}
PK     £‰U]ìé
½  ½  ;  includes/admin/pages/class-wpcode-admin-page-duplicator.phpnu „[µü¤        <?php
/**
 * Admin page for the Duplicator tool.
 *
 * @package WPCode
 */

/**
 * Class for the Duplicator admin page.
 */
class WPCode_Admin_Page_Duplicator extends WPCode_Admin_Page {

	/**
	 * The page slug to be used when adding the submenu.
	 *
	 * @var string
	 */
	public $page_slug = 'wpcode-duplicator';

	/**
	 * The action used for the nonce.
	 *
	 * @var string
	 */
	protected $action = 'wpcode-duplicator';

	/**
	 * The nonce name field.
	 *
	 * @var string
	 */
	protected $nonce_name = 'wpcode-duplicator_nonce';

	/**
	 * Call this just to set the page title translatable.
	 */
	public function __construct() {
		$this->page_title = 'Backups';
		$this->menu_title = 'Backups';
		parent::__construct();
	}

	/**
	 * Register hook on admin init just for this page.
	 *
	 * @return void
	 */
	public function page_hooks() {
		add_action( 'admin_init', array( $this, 'maybe_redirect_to_duplicator' ) );
	}

	/**
	 * Override to hide default header on this page.
	 *
	 * @return void
	 */
	public function output_header() {
	}

	/**
	 * Redirect to the Duplicator page if the plugin is active.
	 *
	 * @return void
	 */
	public function maybe_redirect_to_duplicator() {
		if ( class_exists( 'Duplicator\Lite\Requirements' ) ) {
			wp_safe_redirect( admin_url( 'admin.php?page=duplicator' ) );
			exit;
		} elseif ( class_exists( 'Duplicator\Pro\Requirements' ) ) {
			wp_safe_redirect( admin_url( 'admin.php?page=duplicator-pro' ) );
			exit;
		}
	}
	/**
	 * The page output.
	 *
	 * @return void
	 */
	public function output_content() {
		?>
		<div class="wpcode-plugin-page wpcode-plugin-page-duplicator">
			<div class="wpcode-plugin-page-image">
				<?php wpcode_icon( 'duplicator', 90, 90, '198 55 90 396' ); ?>
			</div>
			<div class="wpcode-plugin-page-title">
				<h1>Duplicator â€“ Migration & Backup Plugin by Duplicator</h1>
				<p>
					<?php esc_html_e( 'Easy, Fast and Secure WordPress Backups and Website Migration. Join 1,500,000+ professionals who trust Duplicator. No Code Required.', 'insert-headers-and-footers' ); ?>
				</p>
			</div>
			<section class="wpcode-plugin-screenshot">
				<div class="wpcode-plugin-screenshot-image">
					<img src="<?php echo esc_url( WPCODE_PLUGIN_URL ); // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage?>admin/images/duplicator.jpg" alt="<?php esc_attr_e( 'Duplicator Screenshot', 'insert-headers-and-footers' ); ?>"/>
					<a href="<?php echo esc_url( WPCODE_PLUGIN_URL ); ?>admin/images/duplicator.jpg" data-lity>
						<?php wpcode_icon( 'search', 16, 16 ); ?>
					</a>
				</div>
				<ul>
					<li><?php esc_html_e( 'Secure Backups.', 'insert-headers-and-footers' ); ?></li>
					<li><?php esc_html_e( 'Website Cloning.', 'insert-headers-and-footers' ); ?></li>
					<li><?php esc_html_e( 'Cloud Storage.', 'insert-headers-and-footers' ); ?></li>
					<li><?php esc_html_e( '1-Click Restore.', 'insert-headers-and-footers' ); ?></li>
				</ul>
			</section>
			<section class="wpcode-plugin-step wpcode-plugin-step-install">
				<aside class="wpcode-plugin-page-step-num">
					<?php wpcode_icon( 'step-1', 50, 50, '0 0 100 100' ); ?>
					<i class="wpcode-plugin-page-step-loader wpcode-plugin-page-step-loader-hidden"></i>
				</aside>
				<div>
					<h2>
						<?php
						printf(
						// translators: %s is the plugin name.
							esc_html__( 'Install and Activate %s', 'insert-headers-and-footers' ),
							'Duplicator'
						)
						?>
					</h2>
					<p>
						<?php
						printf(
						// translators: %s is the plugin name.
							esc_html__( 'Install %s from the WordPress.org plugin repository.', 'insert-headers-and-footers' ),
							'Duplicator'
						)
						?>
					</p>
					<?php
					// Let's check if you can install plugins on this site.
					if ( current_user_can( 'install_plugins' ) && wp_is_file_mod_allowed( 'install_plugins' ) ) {
						?>
						<button class="wpcode-button wpcode-button-install-plugin" data-slug="duplicator">
							<?php
							printf(
							// translators: %s is the plugin name.
								esc_html__( 'Install %s', 'insert-headers-and-footers' ),
								'Duplicator'
							);
							?>
						</button>
						<?php
					} else {
						?>
						<p>
							<?php esc_html_e( 'Please ask your website administrator to install Duplicator.', 'insert-headers-and-footers' ); ?>
						</p>
						<?php
					}
					?>
				</div>
			</section>
		</div>
		<?php
	}

	/**
	 * For this page we output a title and the save button.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
	}
}
PK     £‰U]Ç­[%Ù©  Ù©  0  includes/admin/pages/class-wpcode-admin-page.phpnu „[µü¤        <?php
/**
 * Admin pages abstract class.
 *
 * @package WPCode
 */

/**
 * Class Admin_Page
 */
abstract class WPCode_Admin_Page {

	use WPCode_Library_Refresh_Button;

	/**
	 * The page slug.
	 *
	 * @var string
	 */
	public $page_slug = '';

	/**
	 * The page title.
	 *
	 * @var string
	 */
	public $page_title = '';

	/**
	 * The menu title, defaults to the page title.
	 *
	 * @var string
	 */
	public $menu_title;

	/**
	 * If there's an error message, let's store it here.
	 *
	 * @var string
	 */
	public $message_error;

	/**
	 * If there's a success message, store it here.
	 *
	 * @var string
	 */
	public $message_success;
	/**
	 * The code type to be used by CodeMirror.
	 *
	 * @var string
	 */
	public $code_type = 'html';
	/**
	 * Whether the current user can edit the code on the current page.
	 *
	 * @var bool
	 */
	protected $can_edit = false;
	/**
	 * If true, the snippet library is shown, otherwise, we display
	 * the snippet editor.
	 *
	 * @var bool
	 */
	protected $show_library = false;

	/**
	 * The current view.
	 *
	 * @var string
	 */
	public $view = '';

	/**
	 * The available views for this page.
	 *
	 * @var array
	 */
	public $views = array();

	/**
	 * If the submenu for the page should be hidden, set this to true.
	 *
	 * @var bool
	 */
	public $hide_menu = false;

	/**
	 * The capability needed for the current user to view this page.
	 *
	 * @var string
	 */
	protected $capability = 'wpcode_edit_snippets';

	/**
	 * Constructor.
	 */
	public function __construct() {
		if ( ! isset( $this->menu_title ) ) {
			$this->menu_title = $this->page_title;
		}

		$this->hooks();
	}

	/**
	 * Add hooks to register the page and output content.
	 *
	 * @return void
	 */
	public function hooks() {
		add_action( 'admin_menu', array( $this, 'add_page' ) );
		$page = isset( $_GET['page'] ) ? sanitize_text_field( wp_unslash( $_GET['page'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
		// Only load if we are actually on the desired page.
		if ( $this->page_slug !== $page ) {
			return;
		}
		if ( ! current_user_can( $this->capability ) ) {
			wp_die( esc_html__( 'You do not have permission to access this page.', 'insert-headers-and-footers' ) );
		}
		remove_all_actions( 'admin_notices' );
		remove_all_actions( 'all_admin_notices' );
		add_action( 'wpcode_admin_page', array( $this, 'output' ) );
		add_action( 'wpcode_admin_page', array( $this, 'output_footer' ) );
		add_action( 'admin_enqueue_scripts', array( $this, 'page_scripts' ) );
		add_filter( 'admin_body_class', array( $this, 'page_specific_body_class' ) );
		add_filter( 'wpcode_admin_js_data', array( $this, 'maybe_add_library_data' ) );
		add_action( 'admin_init', array( $this, 'maybe_redirect_to_click' ) );

		$this->setup_views();
		$this->set_current_view();
		$this->page_hooks();
	}

	/**
	 * Get the post type for this page.
	 *
	 * @return string
	 */
	public function get_post_type() {
		return wpcode_get_post_type();
	}

	/**
	 * Override in child class to define page-specific hooks that will run only
	 * after checks have been passed.
	 *
	 * @return void
	 */
	public function page_hooks() {
	}

	/**
	 * Add the submenu page.
	 *
	 * @return void
	 */
	public function add_page() {
		add_submenu_page(
			'wpcode',
			$this->page_title,
			$this->menu_title,
			$this->capability,
			$this->page_slug,
			array(
				wpcode()->admin_page_loader,
				'admin_menu_page',
			)
		);
	}

	/**
	 * If the page has views, this is where you should assign them to $this->views.
	 *
	 * @return void
	 */
	protected function setup_views() {
	}

	/**
	 * Set the current view from the query param also checking it's a registered view for this page.
	 *
	 * @return void
	 */
	protected function set_current_view() {
		// phpcs:disable WordPress.Security.NonceVerification.Recommended
		if ( ! isset( $_GET['view'] ) ) {
			return;
		}
		$view = sanitize_text_field( wp_unslash( $_GET['view'] ) );
		// phpcs:enable WordPress.Security.NonceVerification.Recommended
		if ( array_key_exists( $view, $this->views ) ) {
			$this->view = $view;
		}
	}

	/**
	 * Output the page content.
	 *
	 * @return void
	 */
	public function output() {
		$this->output_header();
		?>
		<div class="wpcode-content">
			<?php
			$this->output_content();
			do_action( "wpcode_admin_page_content_{$this->page_slug}", $this );
			?>
		</div>
		<?php
	}

	/**
	 * Output of the header markup for admin pages.
	 *
	 * @return void
	 */
	public function output_header() {
		?>
		<div class="wpcode-header">
			<div class="wpcode-header-top">
				<div class="wpcode-header-left">
					<?php $this->output_header_left(); ?>
				</div>
				<div class="wpcode-header-right">
					<?php $this->output_header_right(); ?>
				</div>
			</div>
			<div id="wpcode-header-between">
			</div>
			<div class="wpcode-header-bottom">
				<?php $this->output_header_bottom(); ?>
			</div>
		</div>
		<?php $this->maybe_output_message(); ?>
		<?php
	}

	/**
	 * Output footer markup, mostly used for overlays that are fixed.
	 *
	 * @return void
	 */
	public function output_footer() {
		?>
		<div class="wpcode-modal-overlay"></div>
		<div class="wpcode-notifications-overlay"></div>
		<div class="wpcode-docs-overlay" id="wpcode-docs-overlay">
			<?php $this->logo_image( 'wpcode-help-logo' ); ?>
			<button id="wpcode-help-close" class="wpcode-button-just-icon" type="button">
				<?php wpcode_icon( 'close', 19, 19 ); ?>
			</button>
			<div class="wpcode-docs-content">
				<div id="wpcode-help-search" class="wpcode-search-empty">
					<label>
						<span class="screen-reader-text"><?php esc_html_e( 'Search docs', 'insert-headers-and-footers' ); ?></span>
						<?php wpcode_icon( 'search' ); ?>
						<input type="text" class="wpcode-input-text"/>
					</label>
					<div id="wpcode-help-search-clear" title="<?php esc_attr_e( 'Clear', 'insert-headers-and-footers' ); ?>">
						<?php wpcode_icon( 'close', 14, 14 ); ?>
					</div>
				</div>
				<div id="wpcode-help-no-result" style="display: none;">
					<ul class="wpcode-help-docs">
						<li>
							<span><?php esc_html_e( 'No docs found', 'insert-headers-and-footers' ); ?></span>
						</li>
					</ul>
				</div>
				<div id="wpcode-help-result">
					<ul class="wpcode-help-docs"></ul>
				</div>
				<?php
				$docs = new WPCode_Docs();
				$docs->get_categories_accordion();
				$support_url = wpcode_utm_url( 'https://wpcode.com/contact/', 'help-overlay', 'support-url' );
				?>
				<div class="wpcode-help-footer">
					<div class="wpcode-help-footer-box">
						<?php wpcode_icon( 'file', 48, 48 ); ?>
						<h3><?php esc_html_e( 'View Documentation', 'insert-headers-and-footers' ); ?></h3>
						<p><?php esc_html_e( 'Browse documentation, reference material, and tutorials for WPCode.', 'insert-headers-and-footers' ); ?></p>
						<a class="wpcode-button wpcode-button-secondary" href="<?php echo esc_url( wpcode_utm_url( 'https://wpcode.com/docs/', 'help-overlay', 'docs', 'footer' ) ); ?>" target="_blank"><?php esc_html_e( 'View All Documentation', 'insert-headers-and-footers' ); ?></a>
					</div>
					<div class="wpcode-help-footer-box">
						<?php wpcode_icon( 'support', 48, 48 ); ?>
						<h3><?php esc_html_e( 'Get Support', 'insert-headers-and-footers' ); ?></h3>
						<p><?php esc_html_e( 'Submit a ticket and our world class support team will be in touch soon.', 'insert-headers-and-footers' ); ?></p>
						<a class="wpcode-button wpcode-button-secondary" href="<?php echo esc_url( $support_url ); ?>" target="_blank"><?php esc_html_e( 'Submit a Support Ticket', 'insert-headers-and-footers' ); ?></a>
					</div>
				</div>
			</div>
		</div>
		<div class="wpcode-notifications-drawer" id="wpcode-notifications-drawer">
			<div class="wpcode-notifications-header">
				<h3 id="wpcode-active-title">
					<?php
					printf(
						wp_kses_post(
						// Translators: Placeholder for the number of active notifications.
							__( 'New Notifications (%s)', 'insert-headers-and-footers' )
						),
						'<span id="wpcode-notifications-count">' . absint( wpcode()->notifications->get_count() ) . '</span>'
					);
					?>
				</h3>
				<h3 id="wpcode-dismissed-title">
					<?php
					printf(
						wp_kses_post(
						// Translators: Placeholder for the number of dismissed notifications.
							__( 'Notifications (%s)', 'insert-headers-and-footers' )
						),
						'<span id="wpcode-notifications-dismissed-count">' . absint( wpcode()->notifications->get_dismissed_count() ) . '</span>'
					);
					?>
				</h3>
				<button type="button" class="wpcode-button-text" id="wpcode-notifications-show-dismissed">
					<?php esc_html_e( 'Dismissed Notifications', 'insert-headers-and-footers' ); ?>
				</button>
				<button type="button" class="wpcode-button-text" id="wpcode-notifications-show-active">
					<?php esc_html_e( 'Active Notifications', 'insert-headers-and-footers' ); ?>
				</button>
				<button type="button" class="wpcode-just-icon-button wpcode-notifications-close"><?php wpcode_icon( 'close', 12, 12, '0 0 16 16' ); ?></button>
			</div>
			<div class="wpcode-notifications-list">
				<ul class="wpcode-notifications-active">
					<?php
					$notifications = wpcode()->notifications->get_active_notifications();
					foreach ( $notifications as $notification ) {
						$this->get_notification_markup( $notification );
					}
					?>
				</ul>
				<ul class="wpcode-notifications-dismissed">
					<?php
					$notifications = wpcode()->notifications->get_dismissed_notifications();
					foreach ( $notifications as $notification ) {
						$this->get_notification_markup( $notification );
					}
					?>
				</ul>
			</div>
			<div class="wpcode-notifications-footer">
				<button type="button" class="wpcode-button-text wpcode-notification-dismiss" id="wpcode-dismiss-all" data-id="all"><?php esc_html_e( 'Dismiss all', 'insert-headers-and-footers' ); ?></button>
			</div>
		</div>
		<span class="wpcode-loading-spinner" id="wpcode-admin-spinner"></span>
		<?php
	}

	/**
	 * Get the notification HTML markup for displaying in a list.
	 *
	 * @param array $notification The notification array.
	 *
	 * @return void
	 */
	public function get_notification_markup( $notification ) {
		$type = ! empty( $notification['icon'] ) ? $notification['icon'] : 'info';
		?>
		<li>
			<div class="wpcode-notification-icon"><?php wpcode_icon( $type, 18, 18 ); ?></div>
			<div class="wpcode-notification-content">
				<h4><?php echo esc_html( $notification['title'] ); ?></h4>
				<p><?php echo wp_kses_post( $notification['content'] ); ?></p>
				<p class="wpcode-start"><?php echo esc_html( $notification['start'] ); ?></p>
				<div class="wpcode-notification-actions">
					<?php
					$main_button = ! empty( $notification['btns']['main'] ) ? $notification['btns']['main'] : false;
					$alt_button  = ! empty( $notification['btns']['alt'] ) ? $notification['btns']['alt'] : false;
					if ( $main_button ) {
						?>
						<a href="<?php echo esc_url( $main_button['url'] ); ?>" class="wpcode-button wpcode-button-small" target="_blank">
							<?php echo esc_html( $main_button['text'] ); ?>
						</a>
						<?php
					}
					if ( $alt_button ) {
						?>
						<a href="<?php echo esc_url( $alt_button['url'] ); ?>" class="wpcode-button wpcode-button-secondary wpcode-button-small" target="_blank">
							<?php echo esc_html( $alt_button['text'] ); ?>
						</a>
						<?php
					}
					?>
					<button type="button" class="wpcode-button-text wpcode-notification-dismiss" data-id="<?php echo esc_attr( $notification['id'] ); ?>"><?php esc_html_e( 'Dismiss', 'insert-headers-and-footers' ); ?></button>
				</div>
			</div>
		</li>
		<?php
	}

	/**
	 * Left side of the header, usually just the logo in this area.
	 *
	 * @return void
	 */
	public function output_header_left() {
		$this->logo_image();
	}

	/**
	 * Logo image.
	 *
	 * @param string $id Id of the image.
	 *
	 * @return void
	 */
	public function logo_image( $id = 'wpcode-header-logo' ) {
		$logo = get_wpcode_icon( 'logo-text', 132, 33, '0 0 132 33', $id );

		if ( wpcode()->settings->get_option( 'dark_mode' ) ) {
			$logo = str_replace( '11293E', 'CCCCCC', $logo );
		}

		echo wp_kses( $logo, wpcode_get_icon_allowed_tags() );
	}

	/**
	 * Top right area of the header, by default the notifications and help icons.
	 *
	 * @return void
	 */
	public function output_header_right() {
		$notifications_count = wpcode()->notifications->get_count();
		$dismissed_count     = wpcode()->notifications->get_dismissed_count();
		$data_count          = '';
		if ( $notifications_count > 0 ) {
			$data_count = sprintf(
				'data-count="%d"',
				absint( $notifications_count )
			);
		}

		// Add the "Check for Updates" button before the testing mode toggle.
		$this->add_check_for_updates_button();

		echo '<span class="wpcode-toggle-testing-mode-wrap">';
		echo $this->get_checkbox_toggle( wpcode_testing_mode_enabled(), 'wpcode-toggle-testing-mode', '', '', esc_html__( 'Testing Mode', 'insert-headers-and-footers' ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		echo '</span>';
		?>
			<button
					type="button"
					id="wpcode-notifications-button"
					class="wpcode-button-just-icon wpcode-notifications-inbox wpcode-open-notifications"
					data-dismissed="<?php echo esc_attr( $dismissed_count ); ?>"
			<?php echo $data_count; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
			<?php wpcode_icon( 'inbox', 15, 16 ); ?>
			</button>
			<button class="wpcode-text-button-icon wpcode-show-help" type="button">
			<?php wpcode_icon( 'help', 21 ); ?>
			<?php esc_html_e( 'Help', 'insert-headers-and-footers' ); ?>
			</button>
			<?php
	}

	/**
	 * This is the menu area but on some pages it's just at title.
	 * Tabs could also be used here.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
	}

	/**
	 * Checks if an error or success message is available and outputs using the specific format.
	 *
	 * @return void
	 */
	public function maybe_output_message() {
		$error_message   = $this->get_error_message();
		$success_message = $this->get_success_message();
		?>
		<div class="wrap" id="wpcode-notice-area">
			<?php
			if ( $error_message ) {
				?>
				<div class="error fade notice is-dismissible">
					<p><?php echo wp_kses_post( $error_message ); ?></p>
				</div>
				<?php
			}
			if ( $success_message ) {
				?>
				<div class="updated fade notice is-dismissible">
					<p><?php echo wp_kses_post( $success_message ); ?></p>
				</div>
				<?php
			}
			do_action( 'wpcode_admin_notices' );
			?>
		</div>
		<?php
	}

	/**
	 * If no message is set return false otherwise return the message string.
	 *
	 * @return false|string
	 */
	public function get_error_message() {
		return ! empty( $this->message_error ) ? $this->message_error : false;
	}

	/**
	 * If no message is set return false otherwise return the message string.
	 *
	 * @return false|string
	 */
	public function get_success_message() {
		return ! empty( $this->message_success ) ? $this->message_success : false;
	}

	/**
	 * This is the main page content and you can't get away without it.
	 *
	 * @return void
	 */
	abstract public function output_content();

	/**
	 * If you need to page-specific scripts override this function.
	 * Hooked to 'admin_enqueue_scripts'.
	 *
	 * @return void
	 */
	public function page_scripts() {
	}

	/**
	 * Set a success message to display it in the appropriate place.
	 * Let's use a function so if we decide to display multiple messages in the
	 * same instance it's easy to change the variable to an array.
	 *
	 * @param string $message The message to store as success message.
	 *
	 * @return void
	 */
	public function set_success_message( $message ) {
		$this->message_success = $message;
	}

	/**
	 * Set an error message to display it in the appropriate place.
	 * Let's use a function so if we decide to display multiple messages in the
	 * same instance it's easy to change the variable to an array.
	 *
	 * @param string $message The message to store as error message.
	 *
	 * @return void
	 */
	public function set_error_message( $message ) {
		$this->message_error = $message;
	}

	/**
	 * Add a page-specific body class using the page slug variable.
	 * Add a body class specific to the plugin version (lite/pro).
	 *
	 * @param string $body_class The body class to append.
	 *
	 * @return string
	 */
	public function page_specific_body_class( $body_class ) {

		$body_class .= ' ' . $this->page_slug . ' ';

		if ( ! class_exists( 'WPCode_Premium' ) ) {
			$body_class .= ' wpcode-lite-version ';
		} else {
			$body_class .= ' wpcode-pro-version ';
		}

		return $body_class;
	}

	/**
	 * Get the page url to be used in a form action.
	 *
	 * @return string
	 */
	public function get_page_action_url() {
		$args = array(
			'page' => $this->page_slug,
		);
		if ( ! empty( $this->view ) ) {
			$args['view'] = $this->view;
		}
		if ( ! empty( $this->snippet_id ) ) {
			$args['snippet_id'] = $this->snippet_id;
		}

		return add_query_arg( $args, $this->admin_url( 'admin.php' ) );
	}

	/**
	 * Metabox-style layout for admin pages.
	 *
	 * @param string $title The metabox title.
	 * @param string $content The metabox content.
	 * @param string $help The helper text (optional) - if set, a help icon will show up next to the title.
	 *
	 * @return void
	 */
	public function metabox( $title, $content, $help = '' ) {
		// translators: %s is the title of the metabox.
		$button_title = sprintf( __( 'Collapse Metabox %s', 'insert-headers-and-footers' ), $title )
		?>
		<div class="wpcode-metabox">
			<div class="wpcode-metabox-title">
				<div class="wpcode-metabox-title-text">
					<?php echo wp_kses_post( $title ); ?>
					<?php $this->help_icon( $help ); ?>
				</div>
				<div class="wpcode-metabox-title-toggle">
					<button class="wpcode-metabox-button-toggle" type="button" title="<?php echo esc_attr( $button_title ); ?>">
						<svg width="12" height="8" viewBox="0 0 12 8" fill="none" xmlns="http://www.w3.org/2000/svg">
							<path d="M1.41 7.70508L6 3.12508L10.59 7.70508L12 6.29508L6 0.295079L-1.23266e-07 6.29508L1.41 7.70508Z" fill="#454545"/>
						</svg>
					</button>
				</div>
			</div>
			<div class="wpcode-metabox-content">
				<?php echo $content; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
			</div>
		</div>
		<?php
	}

	/**
	 * Output a help icon with the text passed to it.
	 *
	 * @param string $text The tooltip text.
	 * @param bool   $echo Whether to echo or return the output.
	 *
	 * @return void|string
	 */
	public function help_icon( $text = '', $echo = true ) {
		if ( empty( $text ) ) {
			return;
		}
		if ( ! $echo ) {
			ob_start();
		}
		?>
		<span class="wpcode-help-tooltip">
			<?php wpcode_icon( 'help', 16, 16, '0 0 20 20' ); ?>
			<span class="wpcode-help-tooltip-text"><?php echo wp_kses_post( $text ); ?></span>
		</span>
		<?php
		if ( ! $echo ) {
			return ob_get_clean();
		}
	}

	/**
	 * Get a WPCode metabox row.
	 *
	 * @param string $label The label of the field.
	 * @param string $input The field input (html).
	 * @param string $input_id The id of the input that we use in the label.
	 * @param string $show_if_id Conditional logic id, automatically hide if the value of the field with this id doesn't match show if value.
	 * @param string $show_if_value Value(s) to match against, can be comma-separated string for multiple values.
	 * @param string $description Description to show under the input.
	 * @param bool   $is_pro Whether this is a pro feature and the pro indicator should be shown next to the label.
	 * $param string $id The id of the metabox row.
	 *
	 * @return void
	 */
	public function metabox_row( $label, $input, $input_id = '', $show_if_id = '', $show_if_value = '', $description = '', $is_pro = false, $id = '' ) {
		$show_if_rules = '';
		if ( ! empty( $show_if_id ) ) {
			$show_if_rules = sprintf( 'data-show-if-id="%1$s" data-show-if-value="%2$s"', esc_attr( $show_if_id ), esc_attr( $show_if_value ) );
		}
		$id = ! empty( $id ) ? 'id="' . esc_attr( $id ) . '"' : '';
		?>
		<div class="wpcode-metabox-form-row" <?php echo $show_if_rules; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?> <?php echo $id; ?>>
			<div class="wpcode-metabox-form-row-label">
				<label for="<?php echo esc_attr( $input_id ); ?>">
					<?php echo esc_html( $label ); ?>
					<?php
					if ( $is_pro ) {
						echo '<span class="wpcode-pro-pill">PRO</span>';
					}
					?>
				</label>
			</div>
			<div class="wpcode-metabox-form-row-input">
				<?php echo $input; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
				<?php if ( ! empty( $description ) ) { ?>
					<p><?php echo wp_kses_post( $description ); ?></p>
				<?php } ?>
			</div>
		</div>
		<?php
	}

	/**
	 * Get a checkbox wrapped with markup to be displayed as a toggle.
	 *
	 * @param bool       $checked Is it checked or not.
	 * @param string     $name The name for the input.
	 * @param string     $description Field description (optional).
	 * @param string|int $value Field value (optional).
	 * @param string     $label Field label (optional).
	 *
	 * @return string
	 */
	public function get_checkbox_toggle( $checked, $name, $description = '', $value = '', $label = '' ) {
		return wpcode_get_checkbox_toggle( $checked, $name, $description, $value, $label );
	}

	/**
	 * Build the markup for the snippet item. Also used as a template for the js.
	 *
	 * @param array  $snippet The snippet object.
	 * @param string $category The active category to display by default.
	 *
	 * @return void
	 */
	public function get_library_snippet_item( $snippet = array(), $category = '*' ) {
		$title                 = '';
		$url                   = '';
		$description           = '';
		$used_library_snippets = wpcode()->library->get_used_library_snippets();
		$button_text           = __( 'Use snippet', 'insert-headers-and-footers' );
		$pill_text             = '';
		$pill_class            = 'blue';
		if ( isset( $snippet['button_text'] ) ) {
			$button_text = $snippet['button_text'];
		}
		if ( isset( $snippet['button_icon'] ) ) {
			$button_text = get_wpcode_icon( $snippet['button_icon'], 16, 16, '0 96 960 960' ) . ' ' . $button_text;
		}
		if ( ! empty( $snippet ) ) {
			if ( empty( $snippet['url'] ) ) {
				if ( ! empty( $used_library_snippets[ $snippet['library_id'] ] ) ) {
					$url         = wpcode()->library->get_edit_snippet_url( $used_library_snippets[ $snippet['library_id'] ] );
					$button_text = __( 'Edit snippet', 'insert-headers-and-footers' );
					$pill_text   = __( 'Used', 'insert-headers-and-footers' );
				} else {
					$url = wpcode()->library->get_install_snippet_url( $snippet['library_id'] );
				}
			} else {
				$url = $snippet['url'];
			}
			$title       = $snippet['title'];
			$description = $snippet['note'];
		}
		$id            = $snippet['library_id'];
		$button_2_text = '';
		if ( ! empty( $snippet['code'] ) ) {
			$button_2_text = __( 'Preview', 'insert-headers-and-footers' );
		}
		$categories = isset( $snippet['categories'] ) ? $snippet['categories'] : array();

		$button_2 = array(
			'text'  => $button_2_text,
			'class' => 'wpcode-button wpcode-button-secondary wpcode-library-preview-button',
		);

		if ( ! empty( $snippet['needs_auth'] ) ) {
			$unlock_text = __( 'Connect to library to unlock (Free)', 'insert-headers-and-footers' );
			if ( isset( $snippet['needs_auth_text'] ) ) {
				$unlock_text = $snippet['needs_auth_text'];
			}
			$button_1 = array(
				'tag'   => 'button',
				'text'  => get_wpcode_icon( 'lock', 17, 22, '0 0 17 22' ) . $unlock_text,
				'class' => 'wpcode-button wpcode-item-use-button wpcode-start-auth wpcode-button-icon',
			);
		} else {
			$button_1 = array(
				'tag'  => 'a',
				'url'  => $url,
				'text' => $button_text,
			);
		}
		if ( ! empty( $snippet['pill_text'] ) ) {
			$pill_text = $snippet['pill_text'];
		}
		if ( ! empty( $snippet['pill_class'] ) ) {
			$pill_class = $snippet['pill_class'];
		}
		$extra_classes = array();
		if ( ! empty( $snippet['extra_classes'] ) && is_array( $snippet['extra_classes'] ) ) {
			$extra_classes = $snippet['extra_classes'];
		}

		$this->get_list_item( $id, $title, $description, $button_1, $button_2, $categories, $pill_text, $pill_class, $category, $extra_classes );
	}

	/**
	 * Get a list item markup, used for library & generators.
	 *
	 * @param string $id The id used for the data-id param (used for filtering).
	 * @param string $title The title of the item.
	 * @param string $description The item description.
	 * @param array  $button_1 The first button config (@see get_list_item_button).
	 * @param array  $button_2 The second button config (@see get_list_item_button).
	 * @param array  $categories The categories of this object (for filtering).
	 * @param string $pill_text (optional) Display a "pill" with some text in the top right corner.
	 * @param string $pill_class (optional) Custom CSS class for the pill.
	 * @param string $selected_category (optional) Slug of the category selected by default.
	 * @param array  $extra_classes (optional) Extra classes to add to the list item.
	 *
	 * @return void
	 */
	public function get_list_item( $id, $title, $description, $button_1, $button_2 = array(), $categories = array(), $pill_text = '', $pill_class = 'blue', $selected_category = '*', $extra_classes = array() ) {
		$item_class = array(
			'wpcode-list-item',
		);
		if ( ! empty( $pill_text ) ) {
			$item_class[] = 'wpcode-list-item-has-pill';
		}
		if ( ! empty( $extra_classes ) ) {
			$item_class = array_merge( $item_class, $extra_classes );
		}
		$style = '';
		if ( '*' !== $selected_category && ! in_array( $selected_category, $categories, true ) ) {
			$style = 'display:none;';
		}
		$button_1 = wp_parse_args(
			$button_1,
			array(
				'tag'   => 'a',
				'class' => 'wpcode-button wpcode-item-use-button',
			)
		);
		$button_2 = wp_parse_args(
			$button_2,
			array(
				'class' => 'wpcode-button wpcode-button-secondary',
			)
		);
		?>
		<li class="<?php echo esc_attr( implode( ' ', $item_class ) ); ?>" data-id="<?php echo esc_attr( $id ); ?>" data-categories='<?php echo wp_json_encode( $categories ); ?>' style="<?php echo esc_attr( $style ); ?>">
			<h3 title="<?php echo esc_attr( $title ); ?>"><?php echo esc_html( $title ); ?></h3>
			<?php if ( ! empty( $pill_text ) ) { ?>
				<span class="wpcode-list-item-pill wpcode-list-item-pill-<?php echo esc_attr( $pill_class ); ?>"><?php echo esc_html( $pill_text ); ?></span>
			<?php } ?>
			<div class="wpcode-list-item-actions">
				<div class="wpcode-list-item-description">
					<p><?php echo esc_html( $description ); ?></p>
				</div>
				<div class="wpcode-list-item-buttons">
					<?php self::get_list_item_button( $button_1 ); ?>
					<?php self::get_list_item_button( $button_2 ); ?>
				</div>
			</div>
			<?php $this->get_list_item_top_actions( $id ); ?>
		</li>
		<?php
	}

	/**
	 * Allow child classes to display additional buttons.
	 *
	 * @param string|int $id The id of the element passed for generating action urls.
	 *
	 * @return void
	 */
	public function get_list_item_top_actions( $id ) {
	}

	/**
	 * Get a button for the list of items.
	 *
	 * @param array $args Arguments for the button.
	 * @param bool  $echo (optional) Whether to echo the button or return it.
	 *
	 * @return void|string
	 */
	public static function get_list_item_button( $args, $echo = true ) {
		$button_settings = wp_parse_args(
			$args,
			array(
				'tag'        => 'button',
				'url'        => '',
				'text'       => '',
				'class'      => 'wpcode-button',
				'attributes' => array(),
			)
		);

		if ( empty( $button_settings['text'] ) ) {
			return;
		}

		$button_settings['class'] = esc_attr( $button_settings['class'] );

		$parsed_attributes = "class='{$button_settings['class']}' ";
		if ( ! empty( $button_settings['url'] ) && 'a' === $button_settings['tag'] ) {
			$parsed_attributes .= 'href="' . esc_url( $button_settings['url'] ) . '" ';
		}
		if ( ! empty( $button_settings['attributes'] ) ) {
			foreach ( $button_settings['attributes'] as $key => $value ) {
				$parsed_attributes .= esc_attr( $key ) . '="' . esc_attr( $value ) . '"';
			}
		}

		if ( $echo ) {
			printf(
				'<%1$s %2$s>%3$s</%1$s>',
				$button_settings['tag'], // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				$parsed_attributes, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				wp_kses( $button_settings['text'], wpcode_get_icon_allowed_tags() )
			);
		} else {
			return sprintf(
				'<%1$s %2$s>%3$s</%1$s>',
				$button_settings['tag'], // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				$parsed_attributes, // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
				wp_kses( $button_settings['text'], wpcode_get_icon_allowed_tags() )
			);
		}
	}

	/**
	 * Output the library markup from an array of categories and an array of snippets.
	 *
	 * @param array  $categories The snippet categories to show.
	 * @param array  $snippets The snippets to show.
	 * @param string $item_method The method in the current class for items output.
	 *
	 * @return void
	 */
	public function get_library_markup( $categories, $snippets, $item_method = 'get_library_snippet_item', $type = 'library' ) {
		$selected_category = isset( $categories[0]['slug'] ) ? $categories[0]['slug'] : '*';
		$count             = 0;
		foreach ( $snippets as $snippet ) {
			if ( isset( $snippet['needs_auth'] ) && empty( $snippet['skip_count'] ) ) {
				++$count;
			}
		}
		$categories = $this->add_item_counts( $categories, $snippets );
		$categories = $this->add_available_category_label( $categories, $snippets, $count );
		$snippets   = $this->add_available_category_to_snippets( $snippets );
		?>
		<div class="wpcode-items-metabox wpcode-metabox">
			<?php $this->get_items_list_sidebar( $categories, __( 'All Snippets', 'insert-headers-and-footers' ), __( 'Search Snippets', 'insert-headers-and-footers' ), $selected_category, $count ); ?>
			<div class="wpcode-items-list" data-type="<?php echo esc_attr( $type ); ?>">
				<?php
				if ( empty( $snippets ) ) {
					?>
					<div class="wpcode-alert wpcode-alert-warning">
						<?php printf( '<h4>%s</h4>', esc_html__( 'We encountered a problem loading the Snippet Library items, please try again later.', 'insert-headers-and-footers' ) ); ?>
					</div>
					<?php
				}
				?>
				<ul class="wpcode-items-list-category">
					<?php
					foreach ( $snippets as $snippet ) {
						call_user_func( array( $this, $item_method ), $snippet, $selected_category );
					}
					?>
				</ul>
			</div>
		</div>
		<?php
	}

	/**
	 * Goes through snippets and adds the item count to the categories.
	 *
	 * @param array $categories The categories to add the item count to.
	 * @param array $snippets The snippets to count.
	 *
	 * @return array
	 */
	public function add_item_counts( $categories, $snippets ) {
		$category_counts = array();
		foreach ( $snippets as $snippet ) {
			if ( ! isset( $snippet['categories'] ) ) {
				continue;
			}
			if ( empty( $snippet['code'] ) && empty( $snippet['needs_auth'] ) ) {
				continue;
			}
			foreach ( $snippet['categories'] as $category ) {
				if ( ! isset( $category_counts[ $category ] ) ) {
					$category_counts[ $category ] = 0;
				}
				++$category_counts[ $category ];
			}
		}

		// Add counts to the categories array.
		foreach ( $categories as $category_id => $category ) {
			if ( ! isset( $category['slug'] ) ) {
				continue;
			}
			$categories[ $category_id ]['count'] = isset( $category_counts[ $category['slug'] ] ) ? $category_counts[ $category['slug'] ] : 0;
		}

		return $categories;
	}

	/**
	 * Create a dynamic category for the available snippets. This goes through all the snippets
	 * and counts how many of them need auth to be used, if there are any, it adds the category that shows
	 * how many are available.
	 *
	 * @param array $categories The categories to add the available category to.
	 * @param array $snippets The snippets to count.
	 *
	 * @return array
	 */
	public function add_available_category_label( $categories, $snippets, $total ) {
		if ( wpcode()->library_auth->has_auth() ) {
			return $categories;
		}
		$need_auth_count = 0;
		foreach ( $snippets as $snippet ) {
			if ( ! empty( $snippet['needs_auth'] ) ) {
				++$need_auth_count;
			}
		}
		if ( $need_auth_count > 0 ) {
			$categories = array_merge(
				array(
					array(
						'name'  => __( 'Available Snippets', 'insert-headers-and-footers' ),
						'slug'  => 'available',
						'count' => $total - $need_auth_count,
					),
				),
				$categories
			);
		}

		return $categories;
	}

	/**
	 * For snippets that don't need auth, add an extra category "available" to allow easy filtering.
	 *
	 * @param array $snippets The snippets to add the category to.
	 *
	 * @return array
	 */
	public function add_available_category_to_snippets( $snippets ) {
		foreach ( $snippets as $key => $snippet ) {
			if ( empty( $snippet['needs_auth'] ) ) {
				$snippets[ $key ]['categories'][] = 'available';
			}
		}

		return $snippets;
	}

	/**
	 * Get the items list sidebar with optional search form.
	 *
	 * @param array  $categories The array of categories to display as filters - each item needs to have the "slug" and "name" keys.
	 * @param string $all_text Text to display on the all items button in the categories list.
	 * @param string $search_label The search label, if left empty the search form is hidden.
	 * @param string $selected_category Slug of the category selected by default.
	 * @param int    $all_count (optional) The number of items in the all category.
	 *
	 * @return void
	 */
	public function get_items_list_sidebar( $categories, $all_text = '', $search_label = '', $selected_category = '', $all_count = 0 ) {
		?>
		<div class="wpcode-items-sidebar">
			<?php if ( ! empty( $search_label ) ) { ?>
				<div class="wpcode-items-search">
					<label for="wpcode-items-search">
						<span class="screen-reader-text"><?php echo esc_html( $search_label ); ?></span>
						<?php wpcode_icon( 'search', 16, 16 ); ?>
					</label>
					<input type="search" class="wpcode-items-search-input" placeholder="<?php echo esc_html( $search_label ); ?>"/>
				</div>
			<?php } ?>
			<ul class="wpcode-items-categories-list wpcode-items-filters">
				<?php if ( ! empty( $all_text ) ) { ?>
					<li>
						<button type="button" data-category="*" class="<?php echo empty( $selected_category ) ? 'wpcode-active' : ''; ?>">
							<?php echo esc_html( $all_text ); ?>
							<?php if ( $all_count ) { ?>
								<span class="wpcode-items-count"><?php echo esc_html( $all_count ); ?></span>
							<?php } ?>
						</button>
					</li>
				<?php } ?>
				<?php
				foreach ( $categories as $category ) {
					// Mark the first category as active.
					$class = $category['slug'] === $selected_category ? 'wpcode-active' : '';
					?>
					<li>
						<button type="button" class="<?php echo esc_attr( $class ); ?>" data-category="<?php echo esc_attr( $category['slug'] ); ?>">
							<?php echo esc_html( $category['name'] ); ?>
							<?php if ( isset( $category['count'] ) ) { ?>
								<span class="wpcode-items-count"><?php echo esc_html( $category['count'] ); ?></span>
							<?php } ?>
						</button>
					</li>
				<?php } ?>
			</ul>
		</div>
		<?php
	}

	/**
	 * Get the preview modal markup.
	 *
	 * @return void
	 */
	public function library_preview_modal_content() {
		?>
		<div class="wpcode-library-preview wpcode-modal" id="wpcode-library-preview">
			<div class="wpcode-library-preview-header">
				<button type="button" class="wpcode-just-icon-button wpcode-close-modal"><?php wpcode_icon( 'close', 15, 14 ); ?></button>
				<h2><?php esc_html_e( 'Preview Snippet', 'insert-headers-and-footers' ); ?></h2>
			</div>
			<div class="wpcode-library-preview-content">
				<h3>
					<label for="wpcode-code-preview" id="wpcode-preview-title"><?php esc_html_e( 'Code Preview', 'insert-headers-and-footers' ); ?></label>
				</h3>
				<textarea id="wpcode-code-preview"></textarea>
			</div>
			<div class="wpcode-library-preview-buttons">
				<a class="wpcode-button wpcode-button-wide" id="wpcode-preview-use-code"><?php esc_html_e( 'Use Snippet', 'insert-headers-and-footers' ); ?></a>
				<a class="wpcode-button wpcode-button-secondary wpcode-my-library-buttons" id="wpcode-preview-edit-snippet" target="_blank"><?php esc_html_e( 'Edit in Library', 'insert-headers-and-footers' ); ?></a>
				<div class="wpcode-preview-updated wpcode-my-library-buttons" id="wpcode-preview-updated"></div>
			</div>
		</div>
		<?php
		$editor = new WPCode_Code_Editor( 'text' );
		$editor->set_setting( 'readOnly', 'nocursor' );
		$editor->set_setting( 'gutters', array() );
		$editor->register_editor( 'wpcode-code-preview' );
		$editor->init_editor();
	}

	/**
	 * Load library data in JS.
	 *
	 * @param array $data The library data.
	 *
	 * @return array
	 */
	public function maybe_add_library_data( $data ) {
		if ( $this->show_library ) {
			$data['library'] = wpcode()->library->get_data();
		}

		return $data;
	}

	/**
	 * Get the full URL for a view of an admin page.
	 *
	 * @param string $view The view slug.
	 *
	 * @return string
	 */
	public function get_view_link( $view ) {
		return add_query_arg(
			array(
				'page' => $this->page_slug,
				'view' => $view,
			),
			$this->admin_url( 'admin.php' )
		);
	}

	/**
	 * Get an upsell box markup.
	 *
	 * @param string $title The main upsell box title.
	 * @param string $text The text displayed under the title.
	 * @param string $button_1 The main CTA button.
	 * @param string $button_2 The text link below the main CTA.
	 * @param array  $features A list of features to display below the text.
	 *
	 * @return string
	 */
	public static function get_upsell_box( $title, $text = '', $button_1 = array(), $button_2 = array(), $features = array() ) {

		$container_class = array(
			'wpcode-upsell-box',
		);

		if ( ! empty( $features ) ) {
			$container_class[] = 'wpcode-upsell-box-with-features';
		}

		$html = sprintf(
			'<div class="%s">',
			esc_attr( implode( ' ', $container_class ) )
		);

		$html .= '<div class="wpcode-upsell-text-content">';

		$html .= sprintf(
			'<h2>%s</h2>',
			wp_kses_post( $title )
		);

		if ( ! empty( $text ) ) {
			$html .= sprintf(
				'<div class="wpcode-upsell-text">%s</div>',
				wp_kses_post( $text )
			);
		}

		if ( ! empty( $features ) ) {
			$html .= '<ul class="wpcode-upsell-features">';
			foreach ( $features as $feature ) {
				$html .= sprintf(
					'<li class="wpcode-upsell-feature">%s</li>',
					wp_kses_post( $feature )
				);
			}
			$html .= '</ul>';
		}
		$button_1 = wp_parse_args(
			$button_1,
			array(
				'tag'        => 'a',
				'text'       => '',
				'url'        => wpcode_utm_url( 'https://wpcode.com/lite/' ),
				'class'      => 'wpcode-button wpcode-button-orange wpcode-button-large',
				'attributes' => array(
					'target' => '_blank',
				),
			)
		);
		$button_2 = wp_parse_args(
			$button_2,
			array(
				'tag'        => 'a',
				'text'       => '',
				'url'        => wpcode_utm_url( 'https://wpcode.com/lite/' ),
				'class'      => 'wpcode-upsell-button-text',
				'attributes' => array(
					'target' => '_blank',
				),
			)
		);

		$html .= '</div>'; // .wpcode-upsell-text-content
		$html .= '<div class="wpcode-upsell-buttons">';

		if ( ! empty( $button_1['text'] ) ) {
			$html .= self::get_list_item_button( $button_1, false );
		}

		if ( ! empty( $button_2['text'] ) ) {
			$html .= '<br />';
			$html .= self::get_list_item_button( $button_2, false );
		}

		$html .= '</div>'; // .wpcode-upsell-buttons

		$html .= '</div>';

		return $html;
	}

	/**
	 * Banner to highlight that connecting to the library gives you access to more snippets.
	 *
	 * @return void
	 */
	public function library_connect_banner_template() {

		if ( wpcode()->library_auth->has_auth() ) {
			return;
		}

		if ( ! current_user_can( 'wpcode_manage_settings' ) ) {
			return;
		}

		$data  = wpcode()->library->get_data();
		$count = 0;
		if ( ! empty( $data['snippets'] ) ) {
			$count = count( $data['snippets'] );
		}
		?>
		<script type="text/html" id="tmpl-wpcode-library-connect-banner">
			<div id="wpcode-library-connect-banner">
				<div class="wpcode-template-content">
					<h3>
						<?php
						/* translators: %d - snippets count. */
						printf( esc_html__( 'Get Access to Our Library of %d FREE Snippets', 'insert-headers-and-footers' ), absint( $count ) );
						?>
					</h3>

					<p>
						<?php esc_html_e( 'Connect your website with WPCode Library and get instant access to FREE code snippets written by our experts. Snippets can be installed with just 1-click from inside the plugin and come automatically-configured to save you time.', 'insert-headers-and-footers' ); ?>
					</p>
				</div>
				<div class="wpcode-template-upgrade-button">
					<button class="wpcode-button wpcode-start-auth"><?php esc_html_e( 'Connect to Library', 'insert-headers-and-footers' ); ?></button>
				</div>
			</div>
		</script>
		<?php
	}

	/**
	 * On any of the plugin pages, if the user installed the plugin from the
	 * deploy a snippet flow, redirect to the 1-click page to allow them to continue that process.
	 *
	 * @return void
	 */
	public function maybe_redirect_to_click() {
		if ( 'wpcode-click' === $this->page_slug ) {
			// Don't redirect this page to avoid an infinite loop.
			return;
		}
		if ( false !== get_transient( 'wpcode_deploy_snippet_id' ) ) {
			// Don't delete the transient here, it will be deleted in the 1-click page.
			wp_safe_redirect( $this->admin_url( 'admin.php?page=wpcode-click' ) );
			exit;
		}
	}

	/**
	 * Get a text field markup.
	 *
	 * @param string $id The id of the text field.
	 * @param string $value The value of the text field.
	 * @param string $description The description of the text field.
	 * @param bool   $wide Whether the text field should be wide.
	 * @param string $type The type of the text field.
	 *
	 * @return string
	 */
	public function get_input_text( $id, $value = '', $description = '', $wide = false, $type = 'text' ) {
		$allowed_types = array(
			'text',
			'email',
			'url',
			'number',
			'password',
		);
		if ( in_array( $type, $allowed_types, true ) ) {
			$type = esc_attr( $type );
		} else {
			$type = 'text';
		}
		$class = 'wpcode-regular-text';
		if ( $wide ) {
			$class .= ' wpcode-wide-text';
		}
		if ( 'text' !== $type ) {
			$class .= ' wpcode-input-' . $type;
		}
		$markup = '<input type="' . esc_attr( $type ) . '" id="' . esc_attr( $id ) . '" name="' . esc_attr( $id ) . '" value="' . esc_attr( $value ) . '" class="' . esc_attr( $class ) . '" autocomplete="off">';
		if ( ! empty( $description ) ) {
			$markup .= '<p>' . wp_kses_post( $description ) . '</p>';
		}

		return $markup;
	}

	/**
	 * Get an email field.
	 *
	 * @param string $id The id of the text field.
	 * @param string $value The value of the text field.
	 * @param string $description The description of the text field.
	 * @param bool   $wide Whether the text field should be wide.
	 *
	 * @return string
	 */
	public function get_input_email( $id, $value = '', $description = '', $wide = false ) {
		return $this->get_input_text( $id, $value, $description, $wide, 'email' );
	}

	/**
	 * Get an admin URL.
	 *
	 * @param string $path The path to append to the admin URL.
	 *
	 * @return string
	 */
	public function admin_url( $path ) {
		return admin_url( $path );
	}
}
PK     £‰U]é>¨qŒ‘  Œ‘  9  includes/admin/pages/class-wpcode-code-snippets-table.phpnu „[µü¤        <?php
/**
 * Table of snippets for the admin list.
 *
 * @package WPCode
 */

/**
 * Generate the table for the list of code snippets.
 */
class WPCode_Code_Snippets_Table extends WP_List_Table {

	/**
	 * Number of snippets to show per page.
	 *
	 * @var int
	 */
	public $per_page;

	/**
	 * @var string $requested_type The requested type of the snippet.
	 */
	public $requested_type;

	/**
	 * Number of snippets in different views.
	 *
	 * @var array
	 */
	private $count;

	/**
	 * Current view.
	 *
	 * @var string
	 */
	private $view;

	/**
	 * Primary class constructor.
	 */
	public function __construct() {

		// Utilize the parent constructor to build the main class properties.
		parent::__construct(
			array(
				'singular' => 'wpcode-snippet',
				'plural'   => 'wpcode-snippets',
				'ajax'     => false,
			)
		);

		// Default number of snippets to show per page.
		$this->per_page = $this->get_items_per_page( 'wpcode_snippets_per_page', (int) apply_filters( 'wpcode_code_snippets_per_page', 20 ) );
		$this->view     = $this->get_current_view();
		$this->process_request_parameters();
	}

	/**
	 * Adjust query arguments based on GET parameters.
	 */
	protected function process_request_parameters() {
		if ( isset( $_GET['type'] ) && ! empty( $_GET['type'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			// Store the type in a class property or use it immediately in query preparations.
			$this->requested_type = sanitize_text_field( wp_unslash( $_GET['type'] ) );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
		} else {
			$this->requested_type = null;
		}
	}

	/**
	 * Load the current view from the get param.
	 *
	 * @return string
	 */
	private function get_current_view() {
		return isset( $_GET['view'] ) ? sanitize_text_field( wp_unslash( $_GET['view'] ) ) : 'all'; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
	}

	/**
	 * Render the checkbox column.
	 *
	 * @param WP_Post $item Snippet.
	 *
	 * @return string
	 */
	public function column_cb( $item ) {
		return '<input type="checkbox" name="snippet_id[]" value="' . absint( $item->ID ) . '" />';
	}

	/**
	 * Load the snippet for the columns.
	 *
	 * @param WP_Post $post The post object.
	 *
	 * @return WPCode_Snippet
	 */
	public function get_snippet( $post ) {
		return new WPCode_Snippet( $post );
	}

	/**
	 * The post type for this view.
	 *
	 * @return string
	 */
	public function get_post_type() {
		return wpcode_get_post_type();
	}

	/**
	 * Render the columns.
	 *
	 * @param WP_Post $item CPT object as a snippet representation.
	 * @param string  $column_name Column Name.
	 *
	 * @return string
	 */
	public function column_default( $item, $column_name ) {
		$snippet = $this->get_snippet( $item );

		switch ( $column_name ) {
			case 'id':
				$value = $snippet->get_id();
				break;

			case 'location':
				$location = $snippet->get_location();
				$value    = '';
				if ( ! empty( $location ) ) {
					$label = wpcode()->auto_insert->get_location_label( $location );
					if ( 'trash' === $this->view ) {
						$value = $label;
					} else {
						$url   = add_query_arg( 'location', $snippet->get_location_term()->slug );
						$url   = remove_query_arg( 'paged', $url );
						$value = sprintf( '<a href="%1$s">%2$s</a>', esc_url( $url ), esc_html( $label ) );
					}
				}
				break;

			case 'created':
				$value = sprintf(
				// Translators: This is the format for displaying the date in the admin list, [date] at [time].
					__( '%1$s at %2$s', 'insert-headers-and-footers' ),
					get_the_time( get_option( 'date_format' ), $snippet->get_post_data() ),
					get_the_time( get_option( 'time_format' ), $snippet->get_post_data() )
				);
				break;

			case 'updated':
				$value = sprintf(
				// Translators: This is the format for displaying the date in the admin list, [date] at [time].
					__( '%1$s at %2$s', 'insert-headers-and-footers' ),
					get_the_modified_date( get_option( 'date_format' ), $snippet->get_post_data() ),
					get_the_modified_date( get_option( 'time_format' ), $snippet->get_post_data() )
				);
				break;

			case 'author':
				$value  = '';
				$author = get_userdata( $snippet->get_snippet_author() );

				if ( ! $author ) {
					break;
				}

				$value         = $author->display_name;
				$user_edit_url = get_edit_user_link( $author->ID );

				if ( ! empty( $user_edit_url ) ) {
					$value = '<a href="' . esc_url( $user_edit_url ) . '">' . esc_html( $value ) . '</a>';
				}
				break;

			case 'tags':
				$tags       = $snippet->get_tags();
				$tags_links = array();
				if ( 'trash' !== $this->view ) {
					foreach ( $tags as $tag ) {
						$url          = add_query_arg( 'tag', $tag );
						$url          = remove_query_arg( 'paged', $url );
						$tags_links[] = sprintf(
							'<a href="%1$s" title="%2$s">%3$s</a>',
							esc_url( $url ),
							// Translators: The tag by which to filter the list of snippets in the admin.
							sprintf( __( 'Filter snippets by tag: %s', 'insert-headers-and-footers' ), esc_attr( $tag ) ),
							esc_html( $tag )
						);
					}
				} else {
					$tags_links = $tags;
				}
				$value = implode( ', ', $tags_links );
				break;

			case 'status':
				$value = $this->get_status_toggle( $snippet->is_active(), $snippet->get_id() );
				break;

			case 'shortcode':
				$shortcode = apply_filters( 'wpcode_shortcode_preview', '[wpcode id="' . absint( $snippet->get_id() ) . '"]', $snippet );
				// Show the shortcode in a code tag so it's easy to copy.
				$value = '<code class="wpcode-copy" data-copy-value="' . esc_attr( $shortcode ) . '">' . esc_html( $shortcode ) . get_wpcode_icon( 'copy' ) . '</code>';
				break;

			case 'code_type':
				// Let's display the code type with a link to filter by code type.
				$code_type = $snippet->get_code_type();
				if ( 'trash' === $this->view ) {
					$value = $code_type;
				} else {
					$url   = add_query_arg(
						array(
							'filter_action' => 'Filter',
							'type'          => $code_type,
						),
						$this->admin_url( 'admin.php?page=wpcode' )
					);
					$value = sprintf( '<a href="%1$s">%2$s</a>', esc_url( $url ), esc_html( $code_type ) );
				}
				break;

			case 'note':
				$notes = $snippet->get_note();
				// Simply apply content filters to properly format the HTML.
				$value = wpautop( wp_kses_post( $notes ) );
				break;

			case 'priority':
				$value = esc_html( $snippet->get_priority() );
				break;

			default:
				$value = '';
		}

		return apply_filters( 'wpcode_code_snippets_table_column_value', $value, $snippet, $column_name );
	}

	/**
	 * Get the markup for the status toggle.
	 *
	 * @param bool $active If the snippet is active or not.
	 * @param int  $snippet_id The id of the snippet.
	 *
	 * @return string
	 */
	public function get_status_toggle( $active, $snippet_id ) {
		$markup = '<label class="wpcode-checkbox-toggle">';

		$markup .= '<input data-id=' . absint( $snippet_id ) . ' type="checkbox" ' . checked( $active, true, false ) . ' class="wpcode-status-toggle" />';
		$markup .= '<span class="wpcode-checkbox-toggle-slider"></span>';
		$markup .= '<span class="screen-reader-text">' . esc_html__( 'Toggle Snippet Status', 'insert-headers-and-footers' ) . '</span>';
		$markup .= '</label>';

		$snippets_with_errors = wpcode()->error->get_snippets_with_errors();
		// Let's check if the snippet threw an error.
		if ( ! empty( $snippets_with_errors ) && in_array( $snippet_id, $snippets_with_errors, true ) ) {
			$last_error = get_post_meta( $snippet_id, '_wpcode_last_error', true );
			if ( ! empty( $last_error ) ) {
				$type = 'error';
				if ( isset( $last_error['wpc_type'] ) && 'deactivated' === $last_error['wpc_type'] ) {
					$tooltip_text = sprintf(
					// Translators: %1$s is the time since the snippet was deactivated, %2$s is the date and time of deactivation.
						__( 'This snippet was automatically deactivated because of a fatal error at %2$s on %3$s (%1$s ago)', 'insert-headers-and-footers' ),
						human_time_diff( $last_error['time'], time() ),
						gmdate( 'H:i:s', $last_error['time'] ),
						gmdate( 'Y-m-d', $last_error['time'] )
					);

					$type = 'deactivated';
				} else {
					$tooltip_text = esc_html__( 'This snippet threw an error, you can see more details when editing the snippet.', 'insert-headers-and-footers' );
				}

				$markup .= '<span class="wpcode-table-status-icon wpcode-help-tooltip wpcode-table-status-icon-' . esc_attr( $type ) . '">' . get_wpcode_icon( 'info' ) . '<span class="wpcode-help-tooltip-text">' . $tooltip_text . '</span></span>';
			}
		}

		// Add sync button for library snippets with updates
		$markup .= $this->maybe_add_sync_button( $snippet_id );

		return $markup;
	}

	/**
	 * Maybe add a sync button for snippets that have updates.
	 * This is separated into its own method so it can be overridden by child classes.
	 *
	 * @param int $snippet_id The snippet ID.
	 *
	 * @return string
	 */
	public function maybe_add_sync_button( $snippet_id ) {
		$markup = '';

		// Add sync button if snippet is from library and has updates
		$library_id = wpcode()->library->get_snippet_library_id( $snippet_id );
        $has_auth = wpcode()->library_auth->has_auth() ? 1 : 0;


		// Check if snippet has updates
		$snippets_with_updates = wpcode()->library->get_snippets_with_updates();
		if ( in_array( $snippet_id, $snippets_with_updates, true ) && $library_id ) {
			// If it's a library snippet
			$update_info = wpcode()->library->check_snippet_update( $snippet_id, $library_id );
			$current_version = isset( $update_info['current_version'] ) ? $update_info['current_version'] : '';
			$latest_version = isset( $update_info['latest_version'] ) ? $update_info['latest_version'] : '';

			$markup .= ' <button class="wpcode-sync-button wpcode-sync-snippet-lite" data-has-auth="' . $has_auth . '" data-id="' . absint( $snippet_id ) . '" data-library-id="' . absint( $library_id ) . '" data-current-version="' . esc_attr( $current_version ) . '" data-latest-version="' . esc_attr( $latest_version ) . '">'. esc_html__( 'Update Available', 'insert-headers-and-footers' );
			$markup .= '</button>';
		}

		return $markup;
	}

	/**
	 * Render the snippet name column with action links.
	 *
	 * @param WP_Post $snippet Snippet.
	 *
	 * @return string
	 */
	public function column_name( $snippet ) {
		// Build the row action links and return the value.
		return $this->get_column_name_title( $snippet ) . $this->get_column_name_row_actions( $snippet );
	}

	/**
	 * Get the snippet name HTML for the snippet name column.
	 *
	 * @param WP_Post $snippet Snippet post object.
	 *
	 * @return string
	 */
	protected function get_column_name_title( $snippet ) {

		$title = ! empty( $snippet->post_title ) ? $snippet->post_title : $snippet->post_name;
		$name  = sprintf(
			'<span><strong>%s</strong></span>',
			esc_html( $title )
		);

		if ( 'trash' === $this->view ) {
			return $name;
		}

		if ( current_user_can( 'edit_post', $snippet->ID ) ) {
			$name = sprintf(
				'<a href="%s" title="%s"><strong>%s</strong></a>',
				esc_url(
					add_query_arg(
						'snippet_id',
						$snippet->ID,
						$this->admin_url( 'admin.php?page=wpcode-snippet-manager' )
					)
				),
				esc_attr__( 'Edit This Snippet', 'insert-headers-and-footers' ),
				esc_html( $title )
			);
		}

		// Check if snippet is locked for editing.
		$post_lock = wp_check_post_lock( $snippet );
		if ( $post_lock ) {
			$user = get_user_by( 'id', $post_lock );

			$currently_editing = sprintf(
			/* translators: %s: User display name */
				esc_html__( '%s is currently editing', 'insert-headers-and-footers' ),
				esc_html( $user->display_name )
			);

			$name = '<div class="wpcode-locked-snippet">' . $currently_editing . '</div>' . $name;
		}

		return $name;
	}

	/**
	 * Get the row actions HTML for the snippet name column.
	 *
	 * @param WP_Post $snippet Snippet object.
	 *
	 * @return string
	 */
	protected function get_column_name_row_actions( $snippet ) {
		/**
		 * Filters row action links on the 'Code Snippets' admin page.
		 *
		 * @param array   $row_actions An array of action links for a given snippet.
		 * @param WP_Post $snippet Snippet object.
		 */
		$actions = array();

		if ( 'trash' === $this->view ) {
			if ( current_user_can( 'edit_post', $snippet->ID ) ) {
				$actions['untrash'] = sprintf(
					'<a href="%s" title="%s">%s</a>',
					esc_url(
						wp_nonce_url(
							add_query_arg(
								array(
									'action'     => 'untrash',
									'snippet_id' => $snippet->ID,
								),
								$this->admin_url( 'admin.php?page=wpcode' )
							),
							'wpcode_untrash_nonce'
						)
					),
					esc_attr__( 'Restore this snippet', 'insert-headers-and-footers' ),
					esc_html__( 'Restore', 'insert-headers-and-footers' )
				);
				$actions['delete']  = sprintf(
					'<a href="%s" title="%s">%s</a>',
					esc_url(
						wp_nonce_url(
							add_query_arg(
								array(
									'action'     => 'delete',
									'snippet_id' => $snippet->ID,
								),
								$this->admin_url( 'admin.php?page=wpcode' )
							),
							'wpcode_delete_nonce'
						)
					),
					esc_attr__( 'Delete this snippet permanently', 'insert-headers-and-footers' ),
					esc_html__( 'Delete Permanently', 'insert-headers-and-footers' )
				);
			}
		} else {

			if ( current_user_can( 'edit_post', $snippet->ID ) ) {
				$actions['edit'] = sprintf(
					'<a href="%s" title="%s">%s</a>',
					esc_url( add_query_arg( 'snippet_id', $snippet->ID, $this->admin_url( 'admin.php?page=wpcode-snippet-manager' ) ) ),
					esc_attr__( 'Edit This Snippet', 'insert-headers-and-footers' ),
					esc_html__( 'Edit', 'insert-headers-and-footers' )
				);
			}

			if ( current_user_can( 'edit_post', $snippet->ID ) && ! wpcode_testing_mode_enabled() ) {
				$actions['trash'] = sprintf(
					'<a href="%s" title="%s">%s</a>',
					esc_url(
						wp_nonce_url(
							add_query_arg(
								array(
									'action'     => 'trash',
									'snippet_id' => $snippet->ID,
								),
								$this->admin_url( 'admin.php?page=wpcode' )
							),
							'wpcode_trash_nonce'
						)
					),
					esc_attr__( 'Move this snippet to trash', 'insert-headers-and-footers' ),
					esc_html__( 'Trash', 'insert-headers-and-footers' )
				);
			}

			if ( current_user_can( 'edit_post', $snippet->ID ) ) {
				$actions['duplicate'] = sprintf(
					'<a href="%s" title="%s">%s</a>',
					esc_url(
						wp_nonce_url(
							add_query_arg(
								array(
									'action'     => 'duplicate',
									'snippet_id' => $snippet->ID,
								),
								$this->admin_url( 'admin.php?page=wpcode' )
							),
							'wpcode_duplicate_nonce'
						)
					),
					esc_attr__( 'Duplicate this snippet', 'insert-headers-and-footers' ),
					esc_html__( 'Duplicate', 'insert-headers-and-footers' )
				);
			}
		}

		return $this->row_actions( apply_filters( 'wpcode_code_snippets_row_actions', $actions, $snippet, $this->view ) );
	}

	/**
	 * Define bulk actions available for our table listing.
	 *
	 * @return array
	 */
	public function get_bulk_actions() {
		if ( 'trash' === $this->view ) {
			$bulk_actions = array(
				'untrash' => esc_html__( 'Restore', 'insert-headers-and-footers' ),
				'delete'  => esc_html__( 'Delete Permanently', 'insert-headers-and-footers' ),
			);
		} else {
			$bulk_actions = array(
				'trash'   => __( 'Trash', 'insert-headers-and-footers' ),
				'enable'  => __( 'Activate', 'insert-headers-and-footers' ),
				'disable' => __( 'Deactivate', 'insert-headers-and-footers' ),
			);
		}

		return apply_filters( 'wpcode_snippets_bulk_actions', $bulk_actions );
	}

	/**
	 * Get hidden columns for snippets table screen
	 *
	 * @return array
	 */
	protected function get_hidden_columns() {
		// Get current screen to ensure correct option name
		$screen        = get_current_screen();
		$screen_option = $screen->get_option( 'id' );

		// Get user's saved preferences
		$hidden = get_user_option( 'manage' . $screen->id . 'columnshidden' );

		// If no user preferences are set, use our defaults
		if ( ! is_array( $hidden ) ) {
			$hidden = array(
				'note',
				'shortcode',
				'updated',
			);

			// Save default preferences
			update_user_option( get_current_user_id(), 'manage' . $screen->id . 'columnshidden', $hidden, true );
		}

		return $hidden;
	}

	/**
	 * Message to be displayed when there are no snippets.
	 *
	 * @since 2.0.0
	 */
	public function no_items() {

		esc_html_e( 'No snippets found.', 'insert-headers-and-footers' );
	}

	/**
	 * Fetch and set up the final data for the table.
	 *
	 * @since 2.0.0
	 */
	public function prepare_items() {

		$columns = $this->get_columns();
		$hidden  = $this->get_hidden_columns();

		$sortable = array(
			'name'     => array( 'title', false ),
			'created'  => array( 'date', false ),
			'updated'  => array( 'last_updated', false ),
			'priority' => array( 'priority', false ),
		);

		$sortable_query_params = array(
			'last_updated' => 'modified',
			'title'        => 'title',
			'date'         => 'id',
			'priority'     => 'priority',
		);

		// Set column headers.
		$this->_column_headers = array( $columns, $hidden, $sortable, 'name' );

		// phpcs:disable WordPress.Security.NonceVerification.Recommended
		$page = $this->get_pagenum();

		// Reset page to 1 if a search or filter is being applied.
		if ( isset( $_REQUEST['submitted'] ) ) {
			$page = 1;
		}

		if ( isset( $_GET['order'] ) ) {
			$order = 'asc' === $_GET['order'] ? 'ASC' : 'DESC';
		} else {
			$order      = 'DESC';
			$user_order = get_user_option( 'wpcode_snippets_order' );
			if ( ! empty( $user_order ) ) {
				$order = $user_order;
			}
		}
		// Same thing but for order by.
		if ( isset( $_GET['orderby'] ) ) {
			$order_by = sanitize_key( $_GET['orderby'] );
		} else {
			$order_by     = 'ID';
			$user_orderby = get_user_option( 'wpcode_snippets_order_by' );
			if ( ! empty( $user_orderby ) ) {
				$order_by = $user_orderby;
			}
		}

		if ( isset( $sortable_query_params[ $order_by ] ) ) {
			$order_by = $sortable_query_params[ $order_by ];
		} else {
			$order_by = 'ID';
		}

		$per_page    = $this->get_items_per_page( 'wpcode_snippets_per_page', $this->per_page );
		$is_filtered = false;

		$args = array(
			'orderby'          => $order_by,
			'order'            => $order,
			'nopaging'         => false,
			'posts_per_page'   => $per_page,
			'paged'            => $page,
			'no_found_rows'    => false,
			'post_status'      => array( 'publish', 'draft' ),
			'post_type'        => $this->get_post_type(),
			'suppress_filters' => true,
		);

		if ( 'priority' === $order_by ) {
			$args['orderby']  = 'meta_value_num';
			$args['meta_key'] = '_wpcode_priority'; // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_key
		}

		if ( ! empty( $_GET['location'] ) ) {
			$is_filtered       = true;
			$args['tax_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
				array(
					'taxonomy' => 'wpcode_location',
					'terms'    => array( sanitize_key( $_GET['location'] ) ),
					'field'    => 'slug',
				),
			);
		}

		if ( ! empty( $_GET['type'] ) ) {
			$is_filtered = true;
			if ( ! isset( $args['tax_query'] ) ) {
				$args['tax_query'] = array(); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
			}
			$args['tax_query'][] = array(
				'taxonomy' => 'wpcode_type',
				'terms'    => array( sanitize_text_field( wp_unslash( $_GET['type'] ) ) ),
				'field'    => 'slug',
			);
		}

		if ( ! empty( $this->requested_type ) ) {
			$args['tax_query'][] = array(
				'taxonomy' => 'wpcode_type',
				'terms'    => array( $this->requested_type ),
				'field'    => 'slug',
			);
		}

		if ( ! empty( $_GET['tag'] ) ) {
			$is_filtered = true;
			if ( ! isset( $args['tax_query'] ) ) {
				$args['tax_query'] = array(); // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
			}
			$args['tax_query'][] = array(
				'taxonomy' => 'wpcode_tags',
				'terms'    => array( sanitize_text_field( wp_unslash( $_GET['tag'] ) ) ),
				'field'    => 'slug',
			);
		}

		if ( ! empty( $_GET['s'] ) ) {
			$args['s'] = sanitize_text_field( wp_unslash( $_GET['s'] ) );
			// This is a search so let's extend it to meta too.
			$this->add_meta_search();
		}
		// phpcs:enable WordPress.Security.NonceVerification.Recommended

		if ( 'all' !== $this->view ) {
			$args['post_status'] = $this->get_post_status_from_view();
		}

		if ( 'has_error' === $this->view ) {
			$args['meta_query'] = array( // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_meta_query
				'relation' => 'OR',
				array(
					'key'     => '_wpcode_last_error',
					'compare' => 'EXISTS',
				),
			);
		}

		if ( 'outdated' === $this->view ) {
			// Get snippets with updates
			$snippets_with_updates = wpcode()->library->get_snippets_with_updates();
			if ( ! empty( $snippets_with_updates ) ) {
				$args['post__in'] = $snippets_with_updates;
			} else {
				// If no snippets have updates, return no results
				$args['post__in'] = array( 0 );
			}
		}

		/**
		 * Filters the `get_posts()` arguments while preparing items for the code snippets table.
		 *
		 * @param array $args Arguments array.
		 */
		$args = (array) apply_filters( 'wpcode_code_snippets_table_prepare_items_args', $args );

		$items_query = new WP_Query( $args );
		$this->items = $items_query->get_posts();
		// Remove filters to avoid conflicts.
		$this->remove_meta_search();

		$per_page = isset( $args['posts_per_page'] ) ? $args['posts_per_page'] : $this->get_items_per_page( 'wpcode_snippets_per_page', $this->per_page );

		$this->update_count( $args );

		$count_current_view = empty( $this->count[ $this->view ] ) ? 0 : $this->count[ $this->view ];
		if ( $is_filtered ) {
			$count_current_view = $items_query->found_posts;
		}

		// Finalize pagination.
		$this->set_pagination_args(
			array(
				'total_items' => $count_current_view,
				'per_page'    => $per_page,
				'total_pages' => ceil( $count_current_view / $per_page ),
			)
		);
	}

	/**
	 * Retrieve the table columns.
	 *
	 * @return array $columns Array of all the list table columns.
	 */
	public function get_columns() {

		$columns = array(
			'cb'        => '<input type="checkbox" />',
			'id'        => esc_html__( 'ID', 'insert-headers-and-footers' ),
			'name'      => esc_html__( 'Name', 'insert-headers-and-footers' ),
			'author'    => esc_html__( 'Author', 'insert-headers-and-footers' ),
			'location'  => esc_html__( 'Location', 'insert-headers-and-footers' ),
			'created'   => esc_html__( 'Created', 'insert-headers-and-footers' ),
			'updated'   => esc_html__( 'Last Updated', 'insert-headers-and-footers' ),
			'tags'      => esc_html__( 'Tags', 'insert-headers-and-footers' ),
			'shortcode' => esc_html__( 'Shortcode', 'insert-headers-and-footers' ),
			'code_type' => esc_html__( 'Code Type', 'insert-headers-and-footers' ),
			'priority'  => esc_html__( 'Priority', 'insert-headers-and-footers' ),
			'note'      => esc_html__( 'Note', 'insert-headers-and-footers' ),
		);
		if ( 'trash' !== $this->view ) {
			$columns['status'] = esc_html__( 'Status', 'insert-headers-and-footers' );
		}

		return apply_filters( 'wpcode_code_snippets_table_columns', $columns );
	}

	/**
	 * Dynamically add filters to extend search to meta fields.
	 *
	 * @return void
	 */
	public function add_meta_search() {
		add_filter( 'posts_join', array( $this, 'meta_search_join' ) );
		add_filter( 'posts_where', array( $this, 'meta_search_where' ) );
		add_filter( 'posts_distinct', array( $this, 'meta_search_distinct' ) );
	}

	/**
	 * Remove dynamically added filters to avoid spilling to other queries.
	 *
	 * @return void
	 */
	public function remove_meta_search() {
		remove_filter( 'posts_join', array( $this, 'meta_search_join' ) );
		remove_filter( 'posts_where', array( $this, 'meta_search_where' ) );
		remove_filter( 'posts_distinct', array( $this, 'meta_search_distinct' ) );
	}

	/**
	 * Convert custom view names to actual post statuses.
	 *
	 * @return string
	 */
	private function get_post_status_from_view() {
		switch ( $this->view ) {
			case 'active':
				$post_status = 'publish';
				break;
			case 'deactivated':
			case 'inactive':
				$post_status = 'draft';
				break;
			case 'trash':
				$post_status = 'trash';
				break;
			default:
				$post_status = 'all';
				break;
		}

		return $post_status;
	}

	/**
	 * Calculate and update snippets counts.
	 *
	 * @param array $args Get snippets arguments.
	 */
	private function update_count( $args ) {
		/**
		 * Allow counting snippets filtered by a given search criteria.
		 *
		 * If result will not contain `all` key, count All Snippets without filtering will be performed.
		 *
		 * @param array $count Contains counts of snippets in different views.
		 * @param array $args Arguments of the `get_posts`.
		 *
		 * @since 2.0.0
		 */
		$this->count = (array) apply_filters( 'wpcode_code_snippets_table_update_count', array(), $args );

		// We do not need to perform all snippets count if we have the result already.
		if ( isset( $this->count['all'] ) ) {
			return;
		}

		$count_args = array(
			'post_type'      => $this->get_post_type(),
			'posts_per_page' => - 1,  // no pagination for counting.
		);

		// Apply the same filters as used in `prepare_items()`.
		if ( ! empty( $args['tax_query'] ) ) {
			$count_args['tax_query'] = $args['tax_query'];  // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
		}

		// Initialize counts.
		$this->count = array(
			'all'      => 0,
			'active'   => 0,
			'inactive' => 0,
			'outdated' => 0,
			'trash'    => 0,
		);

		// Calculate counts for each relevant status.
		$status_counts = array(
			'publish' => 'active',
			'draft'   => 'inactive',
			'trash'   => 'trash',
		);

		foreach ( $status_counts as $status => $view ) {
			$count_args['post_status'] = $status;
			$count_query               = new WP_Query( $count_args );
			$this->count[ $view ]      = $count_query->found_posts;

			if ( $status !== 'trash' ) {
				$this->count['all'] += $count_query->found_posts;
			}
		}

		// Get count of outdated snippets
		$snippets_with_updates = wpcode()->library->get_snippets_with_updates();
		$this->count['outdated'] = count( $snippets_with_updates );

		$this->count = (array) apply_filters( 'wpcode_code_snippets_table_update_count_all', $this->count, $args );
	}

	/**
	 * Extend the search to meta fields by joining the post meta table.
	 *
	 * @param string $join Join clause in the query.
	 *
	 * @return string
	 */
	public function meta_search_join( $join ) {
		global $wpdb;

		if ( is_admin() && isset( $_GET['s'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			$join .= ' LEFT JOIN ' . $wpdb->postmeta . ' ON ' . $wpdb->posts . '.ID = ' . $wpdb->postmeta . '.post_id ';
		}

		return $join;
	}

	/**
	 * Extend the where clause to include the post meta values.
	 *
	 * @param string $where Where clause in the query.
	 *
	 * @return string
	 */
	public function meta_search_where( $where ) {
		global $wpdb;

		if ( is_admin() && isset( $_GET['s'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			$where = preg_replace(
				'/\(\s*' . $wpdb->posts . ".post_title\s+LIKE\s*(\'[^\']+\')\s*\)/",
				'(' . $wpdb->posts . '.post_title LIKE $1) OR (' . $wpdb->postmeta . '.meta_value LIKE $1)',
				$where
			);
		}

		return $where;
	}

	/**
	 * Add distinct to the query to avoid duplicate results.
	 *
	 * @param string $distinct The distinct clause in the query.
	 *
	 * @return string
	 */
	public function meta_search_distinct( $distinct ) {

		if ( is_admin() && isset( $_GET['s'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			return 'DISTINCT';
		}

		return $distinct;
	}

	/**
	 * Extending the `display_rows()` method in order to add hooks.
	 *
	 * @since 1.5.6
	 */
	public function display_rows() {

		do_action( 'wpcode_code_snippets_table_before_rows', $this );

		parent::display_rows();

		do_action( 'wpcode_code_snippets_table_after_rows', $this );
	}

	/**
	 * Display the pagination.
	 *
	 * @param string $which The location of the table pagination: 'top' or 'bottom'.
	 */
	protected function pagination( $which ) {

		if ( empty( $this->_pagination_args['total_pages'] ) || $this->_pagination_args['total_pages'] <= 1 ) {
			return;
		}

		$total_items  = $this->_pagination_args['total_items'];
		$total_pages  = $this->_pagination_args['total_pages'];
		$current_page = $this->get_pagenum();

		// If form was submitted, reset to page 1.
		// phpcs:disable WordPress.Security.NonceVerification.Recommended
		if ( ! empty( $_GET['submitted'] ) && 'formSubmited' === $_GET['submitted'] ) {
			$current_page = 1;
		}

		// Construct URL base arguments.
		$page_args = array( 'page' => 'wpcode' );
		foreach ( array( 'type', 'filter_action', 'location', 'view' ) as $param ) {
			if ( ! empty( $_GET[ $param ] ) ) {
				$page_args[ $param ] = sanitize_text_field( wp_unslash( $_GET[ $param ] ) );
			}
		}

		// Construct the base URL for pagination.
		$base_url = add_query_arg( $page_args, admin_url( 'admin.php' ) ) . '&paged=%';

		$pagination_links_class = 'pagination-links';
		if ( ! empty( $this->_pagination_args['infinite_scroll'] ) ) {
			$pagination_links_class .= ' hide-if-js';
		}

		// Prepare the pagination links.
		$page_links = array();

		$disable_first = ( 1 === $current_page );
		$disable_last  = ( $current_page === $total_pages );
		$disable_prev  = $disable_first;
		$disable_next  = $disable_last;

		if ( $disable_first ) {
			$page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&laquo;</span>';
		} else {
			$page_links[] = sprintf(
				'<a class="first-page button" href="%s">%s</a>',
				esc_url( add_query_arg( 'paged', 1, $base_url ) ),
				'&laquo;'
			);
		}

		if ( $disable_prev ) {
			$page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&lsaquo;</span>';
		} else {
			$page_links[] = sprintf(
				'<a class="prev-page button" href="%s">%s</a>',
				esc_url( add_query_arg( 'paged', max( 1, $current_page - 1 ), $base_url ) ),
				'&lsaquo;'
			);
		}

		// Pagination input with hidden fields for filter parameters.
		$page_links[] = sprintf(
			'<span class="paging-input">
                        <label for="current-page-selector" class="screen-reader-text">%s</label>
                        <input class="current-page" id="current-page-selector" type="text" value="%d" size="%d" aria-describedby="table-paging" />
                        <span class="tablenav-paging-text"> ' . esc_html__( 'of', 'insert-headers-and-footers' ) . ' <span class="total-pages">%s</span></span>
                    </span>',
			esc_html__( 'Current Page', 'insert-headers-and-footers' ),
			esc_html( $current_page ),
			strlen( $total_pages ),
			number_format_i18n( $total_pages )
		);

		if ( $disable_next ) {
			$page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&rsaquo;</span>';
		} else {
			$page_links[] = sprintf(
				'<a class="next-page button" href="%s">%s</a>',
				esc_url( add_query_arg( 'paged', min( $total_pages, $current_page + 1 ), $base_url ) ),
				'&rsaquo;'
			);
		}

		if ( $disable_last ) {
			$page_links[] = '<span class="tablenav-pages-navspan button disabled" aria-hidden="true">&raquo;</span>';
		} else {
			$page_links[] = sprintf(
				'<a class="last-page button" href="%s">%s</a>',
				esc_url( add_query_arg( 'paged', $total_pages, $base_url ) ),
				'&raquo;'
			);
		}

		// Output the pagination.
		echo '<div class="tablenav-pages">';
		/* Translators: %s: the number of items. */
		echo '<span class="displaying-num">' . esc_html( sprintf( _n( '%s item', '%s items', absint( $total_items ), 'insert-headers-and-footers' ), number_format_i18n( $total_items ) ) ) . '</span>';
		echo '<span class="' . esc_attr( $pagination_links_class ) . '">';
		echo implode( "\n", wp_unslash( $page_links ) ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		echo '</span></div>';
	}

	/**
	 * Extra controls to be displayed between bulk actions and pagination.
	 *
	 * @param string $which The location of the table navigation: 'top' or 'bottom'.
	 *
	 * @return void
	 */
	protected function extra_tablenav( $which ) {
		if ( 'top' === $which && 'trash' !== $this->view ) {
			echo '<div class="actions alignleft">';
			$this->location_dropdown( $this->get_post_type() );

			submit_button( __( 'Filter', 'insert-headers-and-footers' ), '', 'filter_action', false, array( 'id' => 'wpcode-filter-submit' ) );

            if ( isset( $_GET['filter_action'] ) || isset( $_GET['tag'] ) ) { //phpcs:ignore WordPress.Security.NonceVerification.Recommended
                echo '&nbsp;';
                submit_button( __( 'Clear', 'insert-headers-and-footers' ), '', 'filter_clear', false, array( 'id' => 'wpcode-filter-clear' ) );
            }
            echo '</div>';

            // Add a div for the right side actions
            echo '<div class="actions alignright">';
            /**
             * Action that fires on the right side of the table navigation.
             * Used to add additional buttons or controls on the right side.
             *
             * @param string $which The location of the table navigation: 'top' or 'bottom'.
             */
            do_action( 'wpcode_code_snippets_table_right_actions', $which );
            echo '</div>';
		}
	}

	/**
	 * The dropdown to filter by location.
	 *
	 * @param string $post_type The post type.
	 *
	 * @return void
	 */
	protected function location_dropdown( $post_type ) {
		if ( ! is_object_in_taxonomy( $post_type, 'wpcode_location' ) ) {
			return;
		}

		$used_locations = get_terms(
			array(
				'taxonomy'   => 'wpcode_location',
				'hide_empty' => true,
			)
		);

		// Return if there are no posts using locations.
		if ( ! $used_locations ) {
			return;
		}

		$displayed_location = isset( $_GET['location'] ) ? sanitize_key( $_GET['location'] ) : ''; // phpcs:ignore WordPress.Security.NonceVerification.Recommended
		?>
		<label for="filter-by-location" class="screen-reader-text"><?php esc_html_e( 'Filter by location', 'insert-headers-and-footers' ); ?></label>
		<select name="location" id="filter-by-location">
			<option<?php selected( $displayed_location, '' ); ?> value=""><?php esc_html_e( 'All locations', 'insert-headers-and-footers' ); ?></option>
			<?php
			foreach ( $used_locations as $used_location ) {
				$pretty_name = wpcode()->auto_insert->get_location_label( $used_location->slug );
				?>
				<option<?php selected( $displayed_location, $used_location->slug ); ?> value="<?php echo esc_attr( $used_location->slug ); ?>"><?php echo esc_html( $pretty_name ); ?></option>
				<?php
			}
			?>
		</select>
		<?php
	}

	/**
	 * Get the list of views available on the overview table.
	 *
	 * @return array
	 */
	protected function get_views() {
		$views = array();

		if ( $this->count['all'] ) {
			$views['all'] = $this->view_markup( 'all', __( 'All', 'insert-headers-and-footers' ) );
		}
		if ( $this->count['active'] ) {
			$views['active'] = $this->view_markup( 'active', __( 'Active', 'insert-headers-and-footers' ) );
		}
		if ( $this->count['inactive'] ) {
			$views['inactive'] = $this->view_markup( 'inactive', __( 'Inactive', 'insert-headers-and-footers' ) );
		}
		if ( $this->count['outdated'] ) {
			$views['outdated'] = $this->view_markup( 'outdated', __( 'Outdated', 'insert-headers-and-footers' ) );
		}
		if ( $this->count['trash'] && ! wpcode_testing_mode_enabled() ) {
			$views['trash'] = $this->view_markup( 'trash', __( 'Trash', 'insert-headers-and-footers' ) );
		}

		return $views;
	}

	/**
	 * Get view link markup for the nav above the table.
	 *
	 * @param string $slug The slug of the view.
	 * @param string $label The label for the view.
	 *
	 * @return string
	 */
	private function view_markup( $slug, $label ) {

		$start_url = admin_url( 'admin.php' );
		// Start with a clean URL by removing specific query arguments.
		$base_url = remove_query_arg(
			array(
				'view',
				'trashed',
				'duplicated',
				'untrashed',
				'deleted',
				'enabled',
				'disabled',
				's',
			),
			$start_url
		);

		$base_url       = add_query_arg( 'page', 'wpcode', $base_url );
		$current_params = $_GET;

		// Remove the same specific query arguments from current params to ensure they are not reintroduced.
		$params_to_remove = array(
			'view',
			'trashed',
			'duplicated',
			'untrashed',
			'deleted',
			'enabled',
			'disabled',
			's',
		);
		foreach ( $params_to_remove as $param ) {
			unset( $current_params[ $param ] );
		}

		$current_params['view'] = $slug;

		$url   = add_query_arg( $current_params, $base_url );
		$class = ( $slug === $this->view ) ? 'current' : '';
		$count = isset( $this->count[ $slug ] ) ? $this->count[ $slug ] : 0;

		return sprintf(
			'<a href="%1$s" class="%2$s">%3$s <span class="count">(%4$d)</span></a>',
			esc_url( $url ),
			esc_attr( $class ),
			esc_html( $label ),
			esc_html( $count )
		);
	}


	/**
	 * Get an admin URL.
	 *
	 * @param string $path The path to append to the admin URL.
	 *
	 * @return string
	 */
	public function admin_url( $path ) {
		return admin_url( $path );
	}
}
PK     £‰U]—àBÕ u   u  6  includes/admin/pages/class-wpcode-admin-page-pixel.phpnu „[µü¤        <?php
/**
 * The Conversion Pixels page.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Admin_Page_Pixel.
 */
class WPCode_Admin_Page_Pixel extends WPCode_Admin_Page {

	use WPCode_WPConsent_Notice;

	/**
	 * The page slug to be used when adding the submenu.
	 *
	 * @var string
	 */
	public $page_slug = 'wpcode-pixel';

	/**
	 * Default view.
	 *
	 * @var string
	 */
	public $view = 'facebook';

	/**
	 * The capability required to view this page.
	 *
	 * @var string
	 */
	protected $capability = 'wpcode_manage_conversion_pixels';

	/**
	 * Call this just to set the page title translatable.
	 */
	public function __construct() {
		$this->page_title = __( 'Conversion Pixels', 'insert-headers-and-footers' );
		parent::__construct();
	}

	/**
	 * The Conversion Pixels page output.
	 *
	 * @return void
	 */
	public function output_content() {
		$this->notice_wpconsent();
		if ( method_exists( $this, 'output_view_' . $this->view ) ) {
			echo '<div class="wpcode-blur-area">';
			call_user_func( array( $this, 'output_view_' . $this->view ) );
			echo '</div>';
			echo $this->get_pixel_overlay(); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		}
	}

	/**
	 * Get the overlay for the pixel settings.
	 *
	 * @return string
	 */
	public function get_pixel_overlay() {

		$text = sprintf(
		// translators: %1$s and %2$s are <u> tags.
			'<p>' . esc_html__( 'While you can always add pixels manually using code snippets, our Conversion Pixels addon helps you %1$ssave time%2$s while %1$sreducing errors%2$s. It lets you properly implement Facebook, Google, Pinterest, TikTok and Snapchat ads tracking with deep integrations for eCommerce events, interaction measurement, and more. This addon is available on WPCode Plus plan or higher.', 'insert-headers-and-footers' ) . '</p>',
			'<u>',
			'</u>'
		);

		return self::get_upsell_box(
			esc_html__( 'Conversion Pixels Addon is a PRO Feature', 'insert-headers-and-footers' ),
			$text,
			array(
				'text' => esc_html__( 'Upgrade to WPCode PRO', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'conversion-pixels', 'tab-' . $this->view, 'upgrade-to-pro' ) ),
			),
			array(),
			array(
				esc_html__( 'Seamless integration with WooCommerce, Easy Digital Downloads and MemberPress', 'insert-headers-and-footers' ),
				esc_html__( 'Works with Facebook, Google Ads, Pinterest, TikTok and Snapchat', 'insert-headers-and-footers' ),
				esc_html__( 'No coding required', 'insert-headers-and-footers' ),
				esc_html__( '1-click setup for conversion tracking', 'insert-headers-and-footers' ),
			)
		);
	}

	/**
	 * Setup page-specific views.
	 *
	 * @return void
	 */
	protected function setup_views() {
		$this->views = array(
			'facebook'       => __( 'Facebook', 'insert-headers-and-footers' ),
			'google'         => __( 'Google', 'insert-headers-and-footers' ),
			'pinterest'      => __( 'Pinterest', 'insert-headers-and-footers' ),
			'tiktok'         => __( 'TikTok', 'insert-headers-and-footers' ),
			'snapchat'       => __( 'Snapchat', 'insert-headers-and-footers' ),
			'click_tracking' => __( 'Click Tracking', 'insert-headers-and-footers' ),
		);
	}

	/**
	 * For this page we output a menu.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
		?>
		<ul class="wpcode-admin-tabs">
			<?php
			foreach ( $this->views as $slug => $label ) {
				$class = $this->view === $slug ? 'active' : '';
				?>
				<li>
					<a href="<?php echo esc_url( $this->get_view_link( $slug ) ); ?>" class="<?php echo esc_attr( $class ); ?>"><?php echo esc_html( $label ); ?></a>
				</li>
			<?php } ?>
		</ul>
		<?php
	}

	/**
	 * Form for Facebook Pixel.
	 *
	 * @return void
	 */
	public function output_view_facebook() {
		?>
		<h2><?php esc_html_e( 'Facebook Pixel', 'insert-headers-and-footers' ); ?></h2>
		<?php
		$this->metabox_row(
			__( 'Facebook Pixel ID', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'facebook_pixel_id',
				$this->get_option( 'facebook_pixel_id', '' ),
				sprintf(
				// translators: %1$s and %2$s are the opening and closing anchor tags.
					__( 'You can find your Facebook Pixel ID in the Facebook Ads Manager. %1$sRead our step by step directions%2$s. ', 'insert-headers-and-footers' ),
					'<a target="_blank" href="' . wpcode_utm_url( 'https://wpcode.com/docs/how-to-find-your-facebook-pixel-id-and-conversions-api-token/', 'conversion-pixels', 'facebook', 'pixel' ) . '">',
					'</a>'
				)
			),
			'facebook_pixel_id'
		);
		$this->metabox_row(
			__( 'Conversions API Token', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'facebook_pixel_api_token',
				$this->get_option( 'facebook_pixel_api_token', '' ),
				__( 'The Conversions API token allows you to send API events that are more reliable and can improve audience targeting.', 'insert-headers-and-footers' ),
				true
			),
			'facebook_pixel_api_token'
		);
		$this->metabox_row(
			__( 'Facebook Pixel Events', 'insert-headers-and-footers' ),
			$this->get_checkbox_inputs(
				array(
					array(
						'label'       => __( 'PageView Event', 'insert-headers-and-footers' ),
						'name'        => 'page_view',
						'description' => __( 'Enable the PageView event to track and record page visits on all the pages of your website using the Facebook Pixel.', 'insert-headers-and-footers' ),
						'ecommerce'   => false,
					),
				),
				'facebook_pixel_events' )
		);
		$this->metabox_row(
			__( 'eCommerce Events Tracking', 'insert-headers-and-footers' ),
			$this->get_ecommerce_events_input() . $this->get_checkbox_inputs( $this->get_fb_pixel_events_inputs(), 'facebook_pixel_events' )
		);
		wp_nonce_field( 'wpcode-save-facebook-pixel-data', 'wpcode-pixel-nonce' );
		?>
		<button type="submit" class="wpcode-button">
			<?php esc_html_e( 'Save Changes', 'insert-headers-and-footers' ); ?>
		</button>
		<?php
	}

	/**
	 * Form for Google Pixel.
	 *
	 * @return void
	 */
	public function output_view_google() {
		?>
		<h2><?php esc_html_e( 'Google Analytics & Ads Tracking', 'insert-headers-and-footers' ); ?></h2>
		<?php
		$this->metabox_row(
			__( 'Google Analytics ID', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'google_analytics_id',
				$this->get_option( 'google_analytics_id', '' ),
				sprintf(
				// translators: %1$s and %2$s are the opening and closing anchor tags.
					__( 'You can find your Google Analytics ID in the Google Analytics Admin panel. %1$sRead our step by step directions%2$s. ', 'insert-headers-and-footers' ),
					'<a target="_blank" href="' . wpcode_utm_url( 'https://wpcode.com/docs/how-to-find-your-google-analytics-id/', 'conversion-pixels', 'google', 'pixel' ) . '">',
					'</a>'
				)
			),
			'google_analytics_id'
		);
		$this->metabox_row(
			__( 'Google Ads Tag ID', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'google_ads_id',
				$this->get_option( 'google_ads_id', '' ),
				sprintf(
				// translators: %1$s and %2$s are the opening and closing anchor tags.
					__( 'You can find your Google Ads Tag ID in the Google Ads Settings under Google Tag. %1$sRead our step by step directions%2$s. ', 'insert-headers-and-footers' ),
					'<a target="_blank" href="' . wpcode_utm_url( 'https://wpcode.com/docs/how-to-find-your-google-ads-tag-id/', 'conversion-pixels', 'google', 'pixel' ) . '">',
					'</a>'
				)
			),
			'google_ads_id'
		);
		$this->metabox_row(
			__( 'Ads Conversion Label', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'google_ads_label',
				$this->get_option( 'google_ads_label', '' ),
				sprintf(
				// translators: %1$s and %2$s are the opening and closing anchor tags.
					__( 'Add your Google Ads Conversion Label for tracking conversion events. %1$sLearn More%2$s.', 'insert-headers-and-footers' ),
					'<a target="_blank" href="' . wpcode_utm_url( 'https://wpcode.com/docs/how-to-find-your-google-ads-tag-id/', 'conversion-pixels', 'google', 'pixel' ) . '">',
					'</a>'
				)
			),
			'google_ads_label'
		);
		$this->metabox_row(
			__( 'Google Events', 'insert-headers-and-footers' ),
			$this->get_checkbox_inputs(
				array(
					array(
						'label'       => __( 'PageView Event', 'insert-headers-and-footers' ),
						'name'        => 'page_view',
						'description' => __( 'Enable PageView event on all pages.', 'insert-headers-and-footers' ),
						'ecommerce'   => false,
					),
				),
				'google_pixel_events'
			)
		);
		$this->metabox_row(
			__( 'eCommerce Events Tracking', 'insert-headers-and-footers' ),
			$this->get_ecommerce_events_input() . $this->get_checkbox_inputs( $this->get_google_pixel_events_inputs(), 'google_pixel_events' )
		);
		wp_nonce_field( 'wpcode-save-google-pixel-data', 'wpcode-pixel-nonce' );
		?>
		<button type="submit" class="wpcode-button">
			<?php esc_html_e( 'Save Changes', 'insert-headers-and-footers' ); ?>
		</button>
		<?php
	}

	/**
	 * Settings for the Pinterest pixel.
	 *
	 * @return void
	 */
	public function output_view_pinterest() {
		?>
		<h2><?php esc_html_e( 'Pinterest Tag', 'insert-headers-and-footers' ); ?></h2>
		<?php
		$this->metabox_row(
			__( 'Tag ID', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'pinterest_id',
				$this->get_option( 'pinterest_id', '' ),
				sprintf(
				// translators: %1$s and %2$s are the opening and closing anchor tags.
					__( 'You can find your Tag id in your Pinterest Business account. %1$sRead our step by step directions%2$s. ', 'insert-headers-and-footers' ),
					'<a target="_blank" href="' . wpcode_utm_url( 'https://wpcode.com/docs/how-to-find-your-pinterest-tag-id-and-conversion-access-token/', 'conversion-pixels', 'pinterest', 'pixel' ) . '">',
					'</a>'
				)
			),
			'pinterest_id'
		);
		$this->metabox_row(
			__( 'Ad Account ID', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'pinterest_ad_account_id',
				$this->get_option( 'pinterest_ad_account_id', '' ),
				sprintf(
				// translators: %1$s and %2$s are the opening and closing anchor tags.
					__( 'You can find your Ad Account ID in your Pinterest Business account. %1$sRead more%2$s. ', 'insert-headers-and-footers' ),
					'<a target="_blank" href="' . wpcode_utm_url( 'https://wpcode.com/docs/how-to-find-your-pinterest-tag-id-and-conversion-access-token/', 'conversion-pixels', 'pinterest', 'pixel' ) . '">',
					'</a>'
				)
			),
			'pinterest_ad_account_id'
		);
		$this->metabox_row(
			__( 'Conversion Access Token', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'pinterest_conversion_token',
				$this->get_option( 'pinterest_conversion_token', '' ),
				sprintf(
				// translators: %1$s and %2$s are the opening and closing anchor tags.
					__( 'You can find your Conversion Access Token under Ads > Conversions > Conversion access token. %1$sRead more%2$s. ', 'insert-headers-and-footers' ),
					'<a target="_blank" href="' . wpcode_utm_url( 'https://wpcode.com/docs/how-to-find-your-pinterest-tag-id-and-conversion-access-token/', 'conversion-pixels', 'pinterest', 'pixel' ) . '">',
					'</a>'
				),
				true
			),
			'pinterest_conversion_token'
		);
		$this->metabox_row(
			__( 'eCommerce Events Tracking', 'insert-headers-and-footers' ),
			$this->get_ecommerce_events_input() . $this->get_checkbox_inputs( $this->get_pinterest_pixel_events_inputs(), 'pinterest_pixel_events' )
		);
		wp_nonce_field( 'wpcode-save-pinterest-pixel-data', 'wpcode-pixel-nonce' );
		?>
		<button type="submit" class="wpcode-button">
			<?php esc_html_e( 'Save Changes', 'insert-headers-and-footers' ); ?>
		</button>
		<?php
	}

	/**
	 * Settings for the Pinterest pixel.
	 *
	 * @return void
	 */
	public function output_view_tiktok() {
		?>
		<h2><?php esc_html_e( 'TikTok Pixel', 'insert-headers-and-footers' ); ?></h2>
		<?php
		$this->metabox_row(
			__( 'Pixel ID', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'tiktok_pixel_id',
				$this->get_option( 'tiktok_pixel_id', '' ),
				sprintf(
				// translators: %1$s and %2$s are the opening and closing anchor tags.
					__( 'You can find your Pixel id in your TikTok Business Account. %1$sRead our step by step directions%2$s.', 'insert-headers-and-footers' ),
					'<a target="_blank" href="' . wpcode_utm_url( 'https://wpcode.com/docs/how-to-find-your-tiktok-pixel-id-and-events-api-access-token/', 'conversion-pixels', 'tiktok', 'pixel' ) . '">',
					'</a>'
				)
			),
			'tiktok_pixel_id'
		);
		$this->metabox_row(
			__( 'Events API Access Token', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'tiktok_access_token',
				$this->get_option( 'tiktok_access_token', '' ),
				sprintf(
				// translators: %1$s and %2$s are the opening and closing anchor tags.
					__( 'You can generate an access token in the Pixel Settings under Access Token Generation. %1$sRead more%2$s', 'insert-headers-and-footers' ),
					'<a target="_blank" href="' . wpcode_utm_url( 'https://wpcode.com/docs/how-to-find-your-tiktok-pixel-id-and-events-api-access-token/', 'conversion-pixels', 'tiktok', 'pixel' ) . '">',
					'</a>'
				),
				true
			),
			'tiktok_access_token'
		);
		$this->metabox_row(
			__( 'eCommerce Events Tracking', 'insert-headers-and-footers' ),
			$this->get_ecommerce_events_input() . $this->get_checkbox_inputs( $this->get_tiktok_pixel_events_inputs(), 'tiktok_pixel_events' )
		);
		wp_nonce_field( 'wpcode-save-tiktok-pixel-data', 'wpcode-pixel-nonce' );
		?>
		<button type="submit" class="wpcode-button">
			<?php esc_html_e( 'Save Changes', 'insert-headers-and-footers' ); ?>
		</button>
		<?php
	}

	/**
	 * Page for Snapchat pixel settings.
	 *
	 * @return void
	 */
	public function output_view_snapchat() {
		?>
		<h2><?php esc_html_e( 'Snapchat Pixel', 'insert-headers-and-footers' ); ?></h2>
		<?php
		$this->metabox_row(
			__( 'Snap Pixel ID', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'snapchat_pixel_id',
				$this->get_option( 'snapchat_pixel_id', '' ),
				sprintf(
				// translators: %1$s and %2$s are the opening and closing anchor tags.
					__( 'You can find your Snapchat Pixel ID in the Snapchat Ads Manager. %1$sRead our step by step directions%2$s. ', 'insert-headers-and-footers' ),
					'<a target="_blank" href="' . wpcode_utm_url( 'https://wpcode.com/docs/how-to-find-your-snapchat-pixel-id-and-conversions-api-token/', 'conversion-pixels', 'snapchat', 'pixel' ) . '">',
					'</a>'
				),
				true
			),
			'snapchat_pixel_id'
		);
		$this->metabox_row(
			__( 'Conversions API Token', 'insert-headers-and-footers' ),
			$this->get_input_text(
				'snapchat_pixel_api_token',
				$this->get_option( 'snapchat_pixel_api_token', '' ),
				__( 'The Conversions API token allows you to send API events that are more reliable and can improve audience targeting.', 'insert-headers-and-footers' ),
				true
			),
			'snapchat_pixel_api_token'
		);
		$this->metabox_row(
			__( 'Snapchat Pixel Events', 'insert-headers-and-footers' ),
			$this->get_checkbox_inputs(
				array(
					array(
						'label'       => __( 'Pave View Event', 'insert-headers-and-footers' ),
						'name'        => 'page_view',
						'description' => __( 'Enable the PAGE_VIEW event to track and record page visits on all the pages of your website using the Snapchat Pixel.', 'insert-headers-and-footers' ),
						'ecommerce'   => false,
					),
				),
				'snapchat_pixel_events'
			)
		);
		$this->metabox_row(
			__( 'eCommerce Events Tracking', 'insert-headers-and-footers' ),
			$this->get_ecommerce_events_input() . $this->get_checkbox_inputs( $this->get_snap_pixel_events_inputs(), 'snapchat_pixel_events' )
		);
		wp_nonce_field( 'wpcode-save-snapchat-pixel-data', 'wpcode-pixel-nonce' );
		?>
		<button type="submit" class="wpcode-button">
			<?php esc_html_e( 'Save Changes', 'insert-headers-and-footers' ); ?>
		</button>
		<?php
	}

	/**
	 * Event options checkboxes for Facebook Pixel.
	 *
	 * @return array[]
	 */
	public function get_fb_pixel_events_inputs() {
		return array(
			array(
				'label'       => __( 'ViewContent Event', 'insert-headers-and-footers' ),
				'name'        => 'view_content',
				'description' => __( 'Turn on the "ViewContent" event to track views of product pages on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'view-content',
			),
			array(
				'label'       => __( 'AddtoCart Event', 'insert-headers-and-footers' ),
				'name'        => 'add_to_cart',
				'description' => __( 'Turn on the "AddToCart" event to track when items are added to a shopping cart on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'add-to-cart',
			),
			array(
				'label'       => __( 'InitiateCheckout Event', 'insert-headers-and-footers' ),
				'name'        => 'begin_checkout',
				'description' => __( 'Turn on the "InitiateCheckout" event to track when a user reaches the checkout page on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'begin-checkout',
			),
			array(
				'label'       => __( 'Purchase Event', 'insert-headers-and-footers' ),
				'name'        => 'purchase',
				'description' => __( 'Turn on the "Purchase" event to track successful purchases on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'purchase',
			),
		);
	}

	/**
	 * Events checkboxes for Google Analytics & Ads.
	 *
	 * @return array[]
	 */
	public function get_google_pixel_events_inputs() {
		return array(
			array(
				'label'       => __( 'View Item Event', 'insert-headers-and-footers' ),
				'name'        => 'view_item',
				'description' => __( 'Send the View Item event to track views of product pages on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'view-content',
			),
			array(
				'label'       => __( 'Add to Cart Event', 'insert-headers-and-footers' ),
				'name'        => 'add_to_cart',
				'description' => __( 'Send the Add to Cart event when a product is added to the cart.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'add-to-cart',
			),
			array(
				'label'       => __( 'Begin Checkout Event', 'insert-headers-and-footers' ),
				'name'        => 'begin_checkout',
				'description' => __( 'Send the Begin Checkout event when the user sees the checkout page.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'begin-checkout',
			),
			array(
				'label'       => __( 'Purchase Event', 'insert-headers-and-footers' ),
				'name'        => 'purchase',
				'description' => __( 'Send the Purchase event when the user completes a purchase.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'purchase',
			),
			array(
				'label'       => __( 'Conversion Event', 'insert-headers-and-footers' ),
				'name'        => 'conversion',
				'description' => __( 'Send the conversion event with the Google Ads label set above on a successful purchase.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'conversion',
			),
		);
	}

	/**
	 * Events checkboxes for Pinterest.
	 *
	 * @return array[]
	 */
	public function get_pinterest_pixel_events_inputs() {
		return array(
			array(
				'label'       => __( 'PageVisit Product Event', 'insert-headers-and-footers' ),
				'name'        => 'pagevisit_product',
				'description' => __( 'Turn on the "PageVisit" event to track views of product pages on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'view-content ',
			),
			array(
				'label'       => __( 'Add to Cart Event', 'insert-headers-and-footers' ),
				'name'        => 'add_to_cart',
				'description' => __( 'Turn on the Add to Cart event to track when items are added to a shopping cart on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'add-to-cart',
			),
			array(
				'label'       => __( 'Checkout PageVisit Event', 'insert-headers-and-footers' ),
				'name'        => 'begin_checkout',
				'description' => __( 'Enable the Checkout PageVisit event to track when a user reaches the checkout page on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'begin-checkout',
			),
			array(
				'label'       => __( 'Checkout Event', 'insert-headers-and-footers' ),
				'name'        => 'purchase',
				'description' => __( 'Turn on the "Checkout" event to track successful purchases on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'purchase',
			),
		);
	}

	/**
	 * Events checkboxes for TikTok.
	 *
	 * @return array[]
	 */
	public function get_tiktok_pixel_events_inputs() {
		return array(
			array(
				'label'       => __( 'ViewContent Product Event', 'insert-headers-and-footers' ),
				'name'        => 'view_content',
				'description' => __( 'Turn on the "ViewContent" event to track views of product pages on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'view-content',
			),
			array(
				'label'       => __( 'Add to Cart Event', 'insert-headers-and-footers' ),
				'name'        => 'add_to_cart',
				'description' => __( 'Turn on the "AddToCart" event to track when items are added to a shopping cart on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'add-to-cart',
			),
			array(
				'label'       => __( 'InitiateCheckout Event', 'insert-headers-and-footers' ),
				'name'        => 'begin_checkout',
				'description' => __( 'Turn on the "InitiateCheckout" event to track when a user reaches the checkout page on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'begin-checkout',
			),
			array(
				'label'       => __( 'PlaceAnOrder Event', 'insert-headers-and-footers' ),
				'name'        => 'purchase',
				'description' => __( 'Turn on the "PlaceAnOrder" event to track successful purchases on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'purchase',
			),
		);
	}

	/**
	 * Get the markup for a list of checkboxes.
	 *
	 * @param array  $inputs The details for the checkbox inputs.
	 * @param string $name The name of the inputs.
	 * @param string $pixel_options_key The key of the pixel options (defaults to $name above if not set).
	 *
	 * @return string
	 */
	public function get_checkbox_inputs( $inputs, $name, $pixel_options_key = '' ) {
		$markup = '';
		if ( empty( $pixel_options_key ) ) {
			$pixel_options_key = $name;
		}
		$pixel_options     = $this->get_option( $pixel_options_key, array() );
		$ecommerce_vendors = $this->ecommerce_available();

		foreach ( $inputs as $input ) {
			$row_class  = isset( $input['css_class'] ) ? $input['css_class'] : '';
			$input_name = $name . '[' . $input['name'] . ']';
			$checked    = ! empty( $pixel_options[ $input['name'] ] );
			if ( $input['ecommerce'] && empty( $ecommerce_vendors ) ) {
				$row_class = ' wpcode-checkbox-row-disabled';
			}
			$markup .= '<div class="wpcode-checkbox-row ' . $row_class . '">';
			$markup .= $this->get_checkbox_toggle(
				$checked,
				$input_name,
				$input['description'],
				1,
				$input['label']
			);
			$markup .= '</div>';
		}

		return $markup;
	}

	/**
	 * There's no actual value to show in this instance.
	 *
	 * @param string $key The key of the option.
	 * @param mixed  $default The default value of the option.
	 *
	 * @return mixed
	 */
	public function get_option( $key, $default = false ) {
		return $default;
	}

	/**
	 * Whether we have a supported eCommerce plugin installed.
	 *
	 * @return array
	 */
	public function ecommerce_available() {
		return array();
	}

	/**
	 * Get the markup for the eCommerce events input.
	 *
	 * @return string
	 */
	public function get_ecommerce_events_input() {
		$providers = $this->ecommerce_available();

		$markup = '<div class="wpcode-label-text-row">';
		if ( empty( $providers ) ) {
			$markup .= '<p><strong>' . __( 'Disabled, no eCommerce Platform Detected', 'insert-headers-and-footers' ) . '</strong></p>';
		} else {
			foreach ( $providers as $provider ) {
				// translators: %s is the name of the eCommerce provider.
				$markup .= '<p><strong>' . sprintf( __( '%s Tracking Enabled', 'insert-headers-and-footers' ), $provider ) . '</strong></p>';
			}
		}
		$markup .= '<p>';
		$markup .= sprintf(
		// translators: %s a html break.
			__( 'Advanced eCommerce tracking is available for WooCommerce, Easy Digital Downloads and MemberPress. %s These plugins are detected automatically and when available you can toggle individual events using the options below.', 'insert-headers-and-footers' ),
			'</br>'
		);
		$markup .= '</p>';
		$markup .= '</div>';

		return $markup;
	}

	/**
	 * Event options checkboxes for the Snapchat Pixel.
	 *
	 * @return array[]
	 */
	public function get_snap_pixel_events_inputs() {
		return array(
			array(
				'label'       => __( 'View Content Event', 'insert-headers-and-footers' ),
				'name'        => 'view_content',
				'description' => __( 'Turn on the "VIEW_CONTENT" event to track views of product pages on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'view-content',
			),
			array(
				'label'       => __( 'Add to Cart Event', 'insert-headers-and-footers' ),
				'name'        => 'add_to_cart',
				'description' => __( 'Turn on the "ADD_CART" event to track when items are added to a shopping cart on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'add-to-cart',
			),
			array(
				'label'       => __( 'Start Checkout Event', 'insert-headers-and-footers' ),
				'name'        => 'begin_checkout',
				'description' => __( 'Turn on the "START_CHECKOUT" event to track when a user reaches the checkout page on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'begin-checkout',
			),
			array(
				'label'       => __( 'Purchase Event', 'insert-headers-and-footers' ),
				'name'        => 'purchase',
				'description' => __( 'Turn on the "PURCHASE" event to track successful purchases on your website.', 'insert-headers-and-footers' ),
				'ecommerce'   => true,
				'css_class'   => 'purchase',
			),
		);
	}

	/**
	 * This is the page content for the Custom Events page.
	 *
	 * @return void
	 */
	public function output_view_click_tracking() {
		?>
		<h2><?php esc_html_e( 'Custom Click Tracking', 'insert-headers-and-footers' ); ?></h2>
		<p>
			<?php
			printf(
			/* Translators: %1$s is the opening link tag, %2$s is the closing link tag */
				esc_html__( 'Use this section to add custom click events to your site. You can add as many as you like. Each event can have multiple pixels and each pixel can have a custom event name and value. Read more about how to configure these settings in %1$sthis article%2$s', 'insert-headers-and-footers' ),
				'<a href="' . esc_url( wpcode_utm_url( 'https://wpcode.com/docs/conversion-pixels-custom-click-tracking/' ) ) . '" target="_blank" rel="noopener noreferrer">',
				'</a>'
			);
			?>
		</p>
		<div id="wpcode-settings-repeater" class="wpcode-settings-repeater-group">
			<div class="wpcode-settings-repeater-item">
				<?php
				$this->metabox_row(
					__( 'CSS Selector', 'insert-headers-and-footers' ),
					$this->get_input_text(
						'',
						'',
						sprintf(
						// Translators: %1$s is an opening anchor tag, %2$s is a closing anchor tag.
							esc_html__( 'Define the HTML element that triggers the event upon clicking (button, link, etc). Input the appropriate CSS selector here. %1$sLearn more%2$s', 'insert-headers-and-footers' ),
							'<a href="' . esc_url( wpcode_utm_url( 'https://wpcode.com/docs/finding-css-selector/' ) ) . '" target="_blank" rel="noopener noreferrer">',
							'</a>'
						),
						true
					)
				);
				$this->metabox_row(
					__( 'Event Name', 'insert-headers-and-footers' ),
					$this->get_input_text(
						'',
						'',
						__( 'Assign a unique identifier to your event for easy recognition and categorization. ', 'insert-headers-and-footers' )
					)
				);
				$this->metabox_row(
					__( 'Event Value', 'insert-headers-and-footers' ),
					$this->get_input_text(
						'',
						'',
						__( 'Input a numerical value for your event. This helps in quantifying user interactions for your tracking needs. ', 'insert-headers-and-footers' )
					)
				);
				?>
				<div class="wpcode-pixels-chooser-row">
					<div class="wpcode-metabox-form-row">
						<div class="wpcode-metabox-form-row-label">
							<label for="">Pixels </label>
						</div>
						<div class="wpcode-metabox-form-row-input">
							<p>Choose which pixels to enable for this event. </p>
							<p>You can choose a standard event for each pixel to override the custom event label set
								above.</p>
							<?php
							$pixels = array(
								'Facebook',
								'Google',
								'Pinterest',
								'TikTok',
								'Snapchat',
							);
							foreach ( $pixels as $pixel ) {
								echo '<div class="wpcode-checkbox-row">';
								echo $this->get_checkbox_toggle( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
									true,
									'',
									'',
									1,
									$pixel // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
								);
								echo '</div>';
							}
							?>
						</div>
					</div>
				</div>
			</div>
		</div>
		<button type="button" class="wpcode-button wpcode-button-secondary" id="wpcode-add-click-event">
			<?php esc_html_e( 'Add New Click Event', 'insert-headers-and-footers' ); ?>
		</button>
		<?php
		wp_nonce_field( 'wpcode-save-click-pixel-data', 'insert-headers-and-footers-nonce' );
		?>
		<button type="submit" class="wpcode-button">
			<?php esc_html_e( 'Save Changes', 'insert-headers-and-footers' ); ?>
		</button>
		<?php
	}
}
PK     £‰U]Fý Q¾  ¾  7  includes/admin/pages/trait-wpcode-revisions-display.phpnu „[µü¤        <?php
/**
 * Trait for displaying code revisions in the admin.
 *
 * @package WPCode
 */

/**
 * Trait WPCode_Revisions_Display_Lite.
 */
trait WPCode_Revisions_Display_Lite {
	/**
	 * Get a code revisions list with a notice on top.
	 *
	 * @param string $title The title for the notice.
	 * @param string $description Description or text below the title.
	 * @param array  $button_1 Button 1 params for the get_upsell_box method.
	 * @param array  $button_2 Button 2 params for the get_upsell_box method.
	 *
	 * @return string
	 */
	public function code_revisions_list_with_notice( $title, $description = '', $button_1 = array(), $button_2 = array() ) {
		$html = '<div class="wpcode-revisions-list-area">';

		$html .= $this->get_code_revisions_empty_list();
		$html .= WPCode_Admin_Page::get_upsell_box(
			$title,
			$description,
			$button_1,
			$button_2
		);
		$html .= '</div>';// .wpcode-revisions-list-area.

		return $html;
	}

	/**
	 * Get the markup for a revision item in the list of revisions.
	 *
	 * @param int    $author_id The author id to display the avatar and name for.
	 * @param string $date The date used to display time passed.
	 * @param array  $actions Links specific to this row.
	 *
	 * @return string
	 */
	public function get_revision_item( $author_id, $date, $actions = array() ) {
		$list_item = '<li class="wpcode-revision-list-item">';
		if ( ! empty( $author_id ) ) {
			$list_item .= get_avatar( $author_id, 30 );
			$list_item .= sprintf(
				'<span class="wpcode-revision-list-author">%s</span>',
				get_the_author_meta( 'display_name', $author_id )
			);
		} else {
			$list_item .= sprintf(
				'<img src="%s" class="avatar avatar-30 photo" alt="Avatar" width="30" height="30" />',
				esc_url( WPCODE_PLUGIN_URL . 'admin/images/default-user-icon.png' )
			);
			$list_item .= '<span class="wpcode-revision-list-author">John Doe</span>';
		}
		$list_item .= sprintf(
			'<span class="wpcode-revision-list-date">%s</span>',
			$date
		);
		if ( ! empty( $actions ) ) {
			$list_item .= sprintf(
				'<span class="wpcode-revision-list-item-actions">%s</span>',
				implode( '', $actions )
			);
		}
		$list_item .= '</li>';

		return $list_item;
	}

	/**
	 * Get a list of code revisions to use behind the notice.
	 *
	 * @return string
	 */
	public function get_code_revisions_empty_list() {
		$list           = array();
		$post_modified  = isset( $this->snippet ) ? strtotime( $this->snippet->get_post_data()->post_modified ) : time();
		$snippet_author = isset( $this->snippet ) ? $this->snippet->get_snippet_author() : get_current_user_id();
		$revisions_data = array(
			$post_modified,
			$post_modified - DAY_IN_SECONDS,
			$post_modified - WEEK_IN_SECONDS,
			$post_modified - 2 * WEEK_IN_SECONDS,
			$post_modified - MONTH_IN_SECONDS,
			$post_modified - 2 * MONTH_IN_SECONDS,
		);

		$compare = sprintf(
			'<span>%s</span>',
			esc_html__( 'Compare', 'insert-headers-and-footers' )
		);
		$view    = sprintf(
			'<span>%s</a>',
			get_wpcode_icon( 'eye', 16, 11, '0 0 16 11' )
		);

		foreach ( $revisions_data as $revisions_date ) {
			$updated = sprintf(
			// Translators: time since the revision has been updated.
				esc_html__( 'Updated %s ago', 'insert-headers-and-footers' ),
				human_time_diff( $revisions_date )
			);

			$list[] = $this->get_revision_item(
				0,
				$updated,
				array(
					$compare,
					$view,
				)
			);
		}

		$html = '<div class="wpcode-blur-area">';

		$html .= sprintf(
			'<ul class="wpcode-revisions-list">%s</ul>',
			implode( '', $list )
		);

		$button_text = sprintf(
		// Translators: The placeholder gets replaced with the extra number of revisions available.
			esc_html__( '%d Other Revisions', 'insert-headers-and-footers' ),
			3
		);

		$html .= sprintf(
			'<button type="button" class="wpcode-button wpcode-button-secondary wpcode-button-icon" id="wpcode-show-all-snippets">%1$s %2$s</button>',
			get_wpcode_icon( 'rewind', 16, 14 ),
			$button_text
		);

		$html .= '</div>';// .wpcode-blur-area.

		return $html;
	}
}
PK     ¤‰U]þØÕõT+  T+  @  includes/admin/pages/class-wpcode-admin-page-headers-footers.phpnu „[µü¤        <?php
/**
 * Headers & Footers admin page.
 *
 * @package WPCode
 */

/**
 * Class for the headers & footers admin page.
 */
class WPCode_Admin_Page_Headers_Footers extends WPCode_Admin_Page {

	use WPCode_Revisions_Display_Lite;
	use WPCode_WPConsent_Notice;

	/**
	 * The page slug to be used when adding the submenu.
	 *
	 * @var string
	 */
	public $page_slug = 'wpcode-headers-footers';

	/**
	 * The action used for the nonce.
	 *
	 * @var string
	 */
	protected $action = 'insert-headers-and-footers';

	/**
	 * If the page should be a submenu of Settings instead of wpcode.
	 *
	 * @var bool
	 */
	protected $settings_submenu = false;

	/**
	 * The nonce name field.
	 *
	 * @var string
	 */
	protected $nonce_name = 'insert-headers-and-footers_nonce';

	/**
	 * The capability required to view this page.
	 *
	 * @var string
	 */
	protected $capability = 'wpcode_edit_html_snippets';

	/**
	 * Call this just to set the page title translatable.
	 */
	public function __construct() {
		if ( wpcode()->settings->get_option( 'headers_footers_mode' ) ) {
			$this->settings_submenu = true;
		}
		$this->page_title = __( 'Header & Footer', 'insert-headers-and-footers' );
		parent::__construct();

		add_action( 'wpcode_admin_page_content_wpcode-headers-footers', array( $this, 'revisions_box' ), 260 );
	}

	/**
	 * Add the submenu page.
	 *
	 * @return void
	 */
	public function add_page() {
		if ( $this->settings_submenu ) {
			add_options_page(
				$this->menu_title,
				$this->page_title,
				'wpcode_edit_snippets',
				$this->page_slug,
				array(
					wpcode()->admin_page_loader,
					'admin_menu_page',
				)
			);

			return;
		}
		parent::add_page();
	}

	/**
	 * Register hook on admin init just for this page.
	 *
	 * @return void
	 */
	public function page_hooks() {
		$this->can_edit = current_user_can( 'unfiltered_html', 'wpcode-editor' );
		add_action( 'admin_init', array( $this, 'submit_listener' ) );
		$this->process_message();
	}

	/**
	 * Process messages specific to this page.
	 *
	 * @return void
	 */
	public function process_message() {
		// phpcs:disable WordPress.Security.NonceVerification
		if ( ! isset( $_GET['message'] ) ) {
			return;
		}

		$messages = array(
			1 => __( 'Headers & Footers mode activated. Use the toggle next to the Save Changes button to disable it at any time.', 'insert-headers-and-footers' ),
			2 => __( 'Headers & Footers mode deactivated, if you wish to switch back please use the option on the settings page.', 'insert-headers-and-footers' ),
		);
		$message  = absint( $_GET['message'] );
		// phpcs:enable WordPress.Security.NonceVerification

		if ( ! isset( $messages[ $message ] ) ) {
			return;
		}
		$this->set_success_message( $messages[ $message ] );
	}

	/**
	 * Wrap this page in a form tag.
	 *
	 * @return void
	 */
	public function output() {
		if ( ! $this->can_edit ) {
			$this->set_error_message( __( 'Sorry, you only have read-only access to this page. Ask your administrator for assistance editing.', 'insert-headers-and-footers' ) );
			$headers_footers_mode = wpcode()->settings->get_option( 'headers_footers_mode' );
			// If in headers & footers mode allow them to update to disable the simple mode.
			if ( ! $headers_footers_mode ) {
				// If the user can't edit the values just don't load form at all.
				parent::output();

				return;
			}
		}
		?>
		<form action="<?php echo esc_url( $this->get_page_action_url() ); ?>" method="post">
			<?php parent::output(); ?>
		</form>
		<?php
	}

	/**
	 * The headers & footers page output.
	 *
	 * @return void
	 */
	public function output_content() {

		$this->notice_wpconsent();

		$header_desc = sprintf(
		/* translators: %s: The `<head>` tag */
			esc_html__( 'These scripts will be printed in the %s section.', 'insert-headers-and-footers' ),
			'<code>&lt;head&gt;</code>'
		);
		$body_desc   = sprintf(
		/* translators: %s: The `<head>` tag */
			esc_html__( 'These scripts will be printed just below the opening %s tag.', 'insert-headers-and-footers' ),
			'<code>&lt;body&gt;</code>'
		);
		$footer_desc = sprintf(
		/* translators: %s: The `</body>` tag */
			esc_html__( 'These scripts will be printed above the closing %s tag.', 'insert-headers-and-footers' ),
			'<code>&lt;/body&gt;</code>'
		);
		$this->textarea_field( 'header', __( 'Header', 'insert-headers-and-footers' ), $header_desc );
		if ( $this->body_supported() ) {
			$this->textarea_field( 'body', __( 'Body', 'insert-headers-and-footers' ), $body_desc );
		}
		$this->textarea_field( 'footer', __( 'Footer', 'insert-headers-and-footers' ), $footer_desc );
		wp_nonce_field( $this->action, $this->nonce_name );
	}

	/**
	 * Check if the website supports wp_body_open.
	 *
	 * @return bool
	 */
	public function body_supported() {
		return function_exists( 'wp_body_open' ) && version_compare( get_bloginfo( 'version' ), '5.2', '>=' );
	}

	/**
	 * Standard output for a code input field.
	 *
	 * @param string $option The option name as stored in the DB.
	 * @param string $title The title of the input (also used as label).
	 * @param string $desc The description that shows up under the field.
	 *
	 * @return void
	 */
	public function textarea_field( $option, $title, $desc ) {
		$value = wp_unslash( $this->get_option( $option ) );
		?>
		<div class="wpcode-code-textarea" id="wpcode-global-<?php echo esc_attr( $option ); ?>">
			<h2><label for="ihaf_insert_<?php echo esc_attr( $option ); ?>"><?php echo esc_html( $title ); ?></label>
			</h2>
			<textarea name="ihaf_insert_<?php echo esc_attr( $option ); ?>" id="ihaf_insert_<?php echo esc_attr( $option ); ?>" class="widefat" rows="8" <?php disabled( ! current_user_can( 'unfiltered_html', 'wpcode-editor' ) ); ?>><?php echo esc_html( $value ); ?></textarea>
			<p>
				<?php echo wp_kses( $desc, array( 'code' => array() ) ); ?>
			</p>
		</div>
		<?php
	}

	/**
	 * Get the value of an option.
	 *
	 * @param string $option The option name.
	 *
	 * @return mixed
	 */
	public function get_option( $option ) {
		return get_option( 'ihaf_insert_' . $option );
	}

	/**
	 * For this page we output a title and the save button.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
		$headers_footers_mode = wpcode()->settings->get_option( 'headers_footers_mode' );
		$button_disabled      = ! $this->can_edit && ! $headers_footers_mode ? 'disabled' : '';
		?>
		<div class="wpcode-column">
			<h1><?php esc_html_e( 'Global Header and Footer', 'insert-headers-and-footers' ); ?></h1>
		</div>
		<div class="wpcode-column">
			<?php $this->get_submenu_toggle(); ?>
			<button class="wpcode-button" type="submit" <?php echo esc_attr( $button_disabled ); ?>>
				<?php esc_html_e( 'Save Changes', 'insert-headers-and-footers' ); ?>
			</button>
		</div>
		<?php
	}

	/**
	 * Get the toggle to disable submenu mode.
	 *
	 * @return void
	 */
	public function get_submenu_toggle() {
		if ( ! $this->settings_submenu ) {
			return;
		}

		?>
		<div>
			<label for="headers_footers_mode" class="wpcode-status-text"><?php esc_html_e( 'Simple mode', 'insert-headers-and-footers' ); ?></label>
			<?php echo $this->get_checkbox_toggle( true, 'headers_footers_mode' ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
		</div>
		<?php
	}

	/**
	 * Page specific scripts. Hooked to 'admin_enqueue_scripts'.
	 *
	 * @return void
	 */
	public function page_scripts() {
		$editor = new WPCode_Code_Editor();

		$editor->register_editor( 'ihaf_insert_header' );
		$editor->register_editor( 'ihaf_insert_footer' );
		if ( $this->body_supported() ) {
			$editor->register_editor( 'ihaf_insert_body' );
		}
		$editor->init_editor();
	}

	/**
	 * If the form is submitted attempt to save the values.
	 *
	 * @return void
	 */
	public function submit_listener() {
		if ( ! isset( $_REQUEST[ $this->nonce_name ] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST[ $this->nonce_name ] ), $this->action ) ) {
			// Nonce is missing, so we're not even going to try.
			return;
		}

		if ( $this->can_edit && isset( $_REQUEST['ihaf_insert_header'] ) && isset( $_REQUEST['ihaf_insert_footer'] ) ) {
			// If they are not allowed to edit the page these should not be processed but we still allow them to save to disable the simple mode.
			update_option( 'ihaf_insert_header', $_REQUEST['ihaf_insert_header'] );  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
			update_option( 'ihaf_insert_footer', $_REQUEST['ihaf_insert_footer'] );  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
			update_option( 'ihaf_insert_body', isset( $_REQUEST['ihaf_insert_body'] ) ? $_REQUEST['ihaf_insert_body'] : '' );  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized

			// Clear the cache.
			if ( apply_filters( 'wpcode_clear_cache_on_global_save', true ) ) {
				wpcode_clear_all_plugins_page_cache( 'global' );
			}
		}

		if ( wpcode()->settings->get_option( 'headers_footers_mode' ) && ! isset( $_REQUEST['headers_footers_mode'] ) ) {
			wpcode()->settings->update_option( 'headers_footers_mode', false );
			wp_safe_redirect(
				add_query_arg(
					array(
						'page'    => $this->page_slug,
						'message' => 2,
					),
					admin_url( 'admin.php' )
				)
			);
			exit;
		}

		$this->set_success_message( __( 'Settings Saved. Please don\'t forget to clear the site cache if you are using a cache plugin, so that the changes will be reflected for all users.', 'insert-headers-and-footers' ) );
	}

	/**
	 * Use a different base url when the headers_footers_mode is enabled.
	 *
	 * @return string
	 */
	public function get_page_action_url() {
		$url = parent::get_page_action_url();

		if ( ! wpcode()->settings->get_option( 'headers_footers_mode' ) ) {
			return $url;
		}

		return str_replace( 'admin.php', 'options-general.php', $url );
	}

	/**
	 * Add the revisions box.
	 *
	 * @return void
	 */
	public function revisions_box() {
		$html = $this->code_revisions_list_with_notice(
			esc_html__( 'Code Revisions is a Pro Feature', 'insert-headers-and-footers' ),
			sprintf(
				'<p>%s</p>',
				esc_html__( 'Upgrade to WPCode Pro today and start tracking revisions and see exactly who, when and which changes were made to global Headers & Footers scripts.', 'insert-headers-and-footers' )
			),
			array(
				'text' => esc_html__( 'Upgrade to Pro and Unlock Revisions', 'insert-headers-and-footers' ),
				'url'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'headers-footers', 'revisions', 'upgrade-to-pro' ),
			),
			array(
				'text' => esc_html__( 'Learn more about all the features', 'insert-headers-and-footers' ),
				'url'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'headers-footers', 'revisions', 'features' ),
			)
		);

		$this->metabox(
			__( 'Code Revisions', 'insert-headers-and-footers' ),
			$html,
			__( 'Easily switch back to a previous version of your global scripts.', 'insert-headers-and-footers' )
		);

	}
}
PK     ¤‰U]iß&Ý’ƒ  ’ƒ  6  includes/admin/pages/class-wpcode-admin-page-tools.phpnu „[µü¤        <?php
/**
 * Tools admin page.
 *
 * @package WPCode
 */

/**
 * Class for the Tools admin page.
 */
class WPCode_Admin_Page_Tools extends WPCode_Admin_Page {

	/**
	 * The page slug to be used when adding the submenu.
	 *
	 * @var string
	 */
	public $page_slug = 'wpcode-tools';

	/**
	 * The action used for the nonce.
	 *
	 * @var string
	 */
	private $action = 'wpcode-tools';

	/**
	 * Default view.
	 *
	 * @var string
	 */
	public $view = 'import';

	/**
	 * The nonce name field.
	 *
	 * @var string
	 */
	private $nonce_name = 'wpcode-tools_nonce';

	/**
	 * Available importers.
	 *
	 * @var WPCode_Importer_Type[]
	 */
	private $importers = array();

	/**
	 * The capability required to view this page.
	 *
	 * @var string
	 */
	protected $capability = 'wpcode_edit_php_snippets';

	/**
	 * Call this just to set the page title translatable.
	 */
	public function __construct() {
		$this->page_title = __( 'Tools', 'insert-headers-and-footers' );
		parent::__construct();
	}

	/**
	 * Register hook on admin init just for this page.
	 *
	 * @return void
	 */
	public function page_hooks() {
		$this->process_message();
		add_action( 'admin_init', array( $this, 'submit_listener' ) );
		add_action( 'admin_print_scripts', array( $this, 'importer_templates' ) );
		add_filter( 'wpcode_admin_js_data', array( $this, 'add_tools_data' ) );
		// Listen for log delete requests.
		add_action( 'admin_init', array( $this, 'maybe_delete_log' ) );
		// Localize script data.
		add_filter( 'wpcode_admin_js_data', array( $this, 'add_tools_strings' ) );
	}


	/**
	 * Process messages specific to this page.
	 *
	 * @return void
	 */
	public function process_message() {
		// phpcs:disable WordPress.Security.NonceVerification
		if ( ! isset( $_GET['message'] ) ) {
			return;
		}

		$messages = array(
			1 => sprintf(
			// Translators: Adds a link to the snippets list in the admin.
				__( 'Import was successfully finished. You can go and check %1$syour snippets%2$s.', 'insert-headers-and-footers' ),
				'<a href="' . esc_url( admin_url( 'admin.php?page=wpcode' ) ) . '">',
				'</a>'
			),
			// 2 shows a fail message due to the file not being in the right format.
			2 => __( 'Import failed. Please make sure you are uploading a valid WPCode export file.', 'insert-headers-and-footers' ),
		);
		$message  = absint( $_GET['message'] );
		// phpcs:enable WordPress.Security.NonceVerification

		if ( ! isset( $messages[ $message ] ) ) {
			return;
		}

		if ( 1 === $message ) {
			$this->set_success_message( $messages[ $message ] );
		} else {
			$this->set_error_message( $messages[ $message ] );
		}
	}

	/**
	 * @return WPCode_Importer_Type[]
	 */
	public function get_importers() {
		if ( empty( $this->importers ) ) {
			$this->importers = wpcode()->importers->get_importers();
		}

		return $this->importers;
	}

	/**
	 * The Tools page output.
	 *
	 * @return void
	 */
	public function output_content() {
		if ( method_exists( $this, 'output_view_' . $this->view ) ) {
			call_user_func( array( $this, 'output_view_' . $this->view ) );
		}
	}

	/**
	 * The Import view.
	 *
	 * @return void
	 */
	public function output_view_import() {
		?>
		<div class="wpcode-setting-row wpcode-tools">
			<h3><?php esc_html_e( 'WPCode Snippet Import', 'insert-headers-and-footers' ); ?></h3>
			<p><?php esc_html_e( 'Select a WPCode export file', 'insert-headers-and-footers' ); ?></p>

			<form method="post" enctype="multipart/form-data" action="<?php echo esc_url( $this->get_page_action_url() ); ?>">
				<div class="wpcode-file-upload">
					<input type="file" name="file" id="wpcode-tools-snippets-import" class="inputfile" data-multiple-caption="{count} files selected" accept=".json">
					<label for="wpcode-tools-snippets-import">
						<span class="wpcode-file-field"><span class="placeholder"><?php esc_html_e( 'No file chosen', 'insert-headers-and-footers' ); ?></span></span>
						<strong class="wpcode-button wpcode-button-secondary wpcode-button-icon">
							<?php
							wpcode_icon( 'upload', 12, 12 );
							esc_html_e( 'Choose a file&hellip;', 'insert-headers-and-footers' );
							?>
						</strong>
					</label>
				</div>
				<br>
				<input type="hidden" name="action" value="import_snippets">
				<?php wp_nonce_field( $this->action, $this->nonce_name ); ?>
				<button name="submit-import" class="wpcode-button">
					<?php esc_html_e( 'Import', 'insert-headers-and-footers' ); ?>
				</button>
			</form>
		</div>
		<hr/>
		<div class="wpcode-setting-row wpcode-tools">
			<h3><?php esc_html_e( 'Import from Other Code Plugins', 'insert-headers-and-footers' ); ?></h3>
			<p><?php esc_html_e( 'WPCode makes it easy for you to switch by allowing you import your third-party snippet plugins with a single click.', 'insert-headers-and-footers' ); ?></p>
			<form action="<?php echo esc_url( admin_url( 'admin.php' ) ); ?>">
				<select name="provider" id="wpcode-plugins-importer" required>
					<option value=""><?php esc_html_e( 'Select previous Code plugin', 'insert-headers-and-footers' ); ?></option>
					<?php
					foreach ( $this->get_importers() as $importer ) {
						$status = '';

						if ( empty( $importer['installed'] ) ) {
							$status = esc_html__( 'Not Installed', 'insert-headers-and-footers' );
						} elseif ( empty( $importer['active'] ) ) {
							$status = esc_html__( 'Not Active', 'insert-headers-and-footers' );
						}
						printf(
							'<option value="%s" %s>%s %s</option>',
							esc_attr( $importer['slug'] ),
							! empty( $status ) ? 'disabled' : '',
							esc_html( $importer['name'] ),
							! empty( $status ) ? '(' . esc_html( $status ) . ')' : '' //phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
						);
					}
					?>
				</select>
				<input type="hidden" name="view" value="importer"/>
				<input type="hidden" name="page" value="<?php echo esc_attr( $this->page_slug ); ?>"/>
				<br/>
				<button class="wpcode-button"><?php esc_html_e( 'Import', 'insert-headers-and-footers' ); ?></button>
			</form>
		</div>
		<hr/>
		<?php
	}

	/**
	 * The export view.
	 *
	 * @return void
	 */
	public function output_view_export() {
		?>
		<div class="wpcode-setting-row wpcode-tools">
			<h3><?php esc_html_e( 'Export Code Snippets', 'insert-headers-and-footers' ); ?></h3>
			<form action="<?php echo esc_url( $this->get_page_action_url() ); ?>" method="post">
				<?php
				$this->metabox_row(
					__( 'Status', 'insert-headers-and-footers' ),
					$this->get_status_dropdown(),
					'wpcode_export_status'
				);
				$this->metabox_row(
					__( 'Code type', 'insert-headers-and-footers' ),
					$this->get_code_type_checkboxes(),
					'wpcode_export_code_type'
				);
				$this->metabox_row(
					__( 'Tags', 'insert-headers-and-footers' ),
					$this->get_tags_checkboxes(),
					'wpcode_export_tags'
				);

				wp_nonce_field( $this->action, $this->nonce_name );
				?>
				<button type="submit" name="wpcode-export-snippets" class="wpcode-button"><?php esc_html_e( 'Export Snippets', 'insert-headers-and-footers' ); ?></button>
			</form>
		</div>
		<?php
	}

	/**
	 * The System Info view.
	 *
	 * @return void
	 */
	public function output_view_info() {
		?>
		<div class="wpcode-setting-row">
			<h3><?php esc_html_e( 'System Information', 'insert-headers-and-footers' ); ?></h3>
			<textarea class="info-area" readonly><?php echo esc_textarea( $this->get_system_info() ); ?></textarea>
		</div>
		<hr/>
		<div class="wpcode-setting-row">
			<h3 id="ssl-verify"><?php esc_html_e( 'Test SSL Connections', 'insert-headers-and-footers' ); ?></h3>
			<p><?php esc_html_e( 'Click the button below to verify your web server can perform SSL connections successfully.', 'insert-headers-and-footers' ); ?></p>
			<button type="button" id="wpcode-ssl-verify" class="wpcode-button">
				<?php esc_html_e( 'Test Connection', 'insert-headers-and-footers' ); ?>
			</button>
		</div>
		<?php
	}

	/**
	 * Importer view (from other plugins).
	 *
	 * @return void
	 */
	public function output_view_importer() {
		$provider = ! empty( $_GET['provider'] ) ? sanitize_text_field( wp_unslash( $_GET['provider'] ) ) : '';// phpcs:ignore WordPress.Security.NonceVerification.Recommended

		$importers     = wpcode()->importers->importers;
		$snippets      = array();
		$provider_name = '';
		if ( isset( $importers[ $provider ] ) ) {
			$snippets      = $importers[ $provider ]->get_snippets();
			$provider_name = $importers[ $provider ]->name;
		}

		?>
		<h2><?php esc_html_e( 'Snippets import', 'insert-headers-and-footers' ); ?></h2>
		<hr/>
		<div id="wpcode-importer-snippets">
			<div class="wpcode-setting-row wpcode-tools">
				<p><?php esc_html_e( 'Select the Snippets you would like to import.', 'insert-headers-and-footers' ); ?></p>

				<div class="wpcode-checkbox-multiselect-columns">
					<div class="first-column">
						<h5 class="header"><?php esc_html_e( 'Available Snippets', 'insert-headers-and-footers' ); ?></h5>

						<ul>
							<?php
							if ( empty( $snippets ) ) {
								echo '<li>' . esc_html__( 'No snippets found.', 'insert-headers-and-footers' ) . '</li>';
							} else {
								foreach ( $snippets as $id => $snippet ) {
									printf(
										'<li><label><input type="checkbox" name="snippets[]" value="%s">%s</label></li>',
										esc_attr( $id ),
										esc_attr( sanitize_text_field( $snippet ) )
									);
								}
							}
							?>
						</ul>

						<?php if ( ! empty( $snippets ) ) : ?>
							<a href="#" class="all"><?php esc_html_e( 'Select All', 'insert-headers-and-footers' ); ?></a>
						<?php endif; ?>

					</div>
					<div class="second-column">
						<h5 class="header"><?php esc_html_e( 'Snippets to Import', 'insert-headers-and-footers' ); ?></h5>
						<ul></ul>
					</div>
				</div>
			</div>

			<?php if ( ! empty( $snippets ) ) : ?>
				<p class="submit">
					<input type="hidden" value="<?php echo esc_attr( $provider ); ?>" id="wpcode-importer-provider"/>
					<button class="wpcode-button" id="wpcode-importer-snippets-submit"><?php esc_html_e( 'Import', 'insert-headers-and-footers' ); ?></button>
				</p>
			<?php endif; ?>
		</div>
		<div id="wpcode-importer-process">

			<p class="process-count">
				<i class="fa fa-spinner fa-spin" aria-hidden="true"></i>
				<?php
				printf(
					wp_kses(
					// Translators: These add markup to display which snippet out of the total from the provider name.
						__( 'Importing %1$s of %2$s snippets from %3$s.', 'insert-headers-and-footers' ),
						array(
							'span' => array(
								'class' => array(),
							),
						)
					),
					'<span class="snippet-current">1</span>',
					'<span class="snippet-total">0</span>',
					esc_html( $provider_name )
				);
				?>
			</p>
			<p class="process-completed">
				<?php
				printf(
					wp_kses(
					// Translators: this adds the total snippets count that have been completed.
						__( 'Congrats, the import process has finished! We have successfully imported %s snippets. You can review the results below.', 'insert-headers-and-footers' ),
						array(
							'span' => array(
								'class' => array(),
							),
						)
					),
					'<span class="snippets-completed"></span>'
				);
				?>
			</p>
			<div class="status"></div>
		</div>
		<?php
	}

	/**
	 * Get a dropdown with the status options.
	 *
	 * @return string
	 */
	public function get_status_dropdown() {
		$options = array(
			'all'     => __( 'All', 'insert-headers-and-footers' ),
			'publish' => __( 'Active', 'insert-headers-and-footers' ),
			'draft'   => __( 'Inactive', 'insert-headers-and-footers' ),
		);

		$select = '<select name="wpcode_export_status" id="wpcode_export_status">';
		foreach ( $options as $value => $label ) {
			$select .= sprintf(
				'<option value="%1$s">%2$s</option>',
				esc_attr( $value ),
				esc_html( $label )
			);
		}
		$select .= '</select>';

		return $select;
	}

	/**
	 * Get all the tags in a checkbox list.
	 *
	 * @return string
	 */
	public function get_code_type_checkboxes() {
		$labels  = wpcode()->execute->get_options();
		$tags    = get_terms(
			array(
				'taxonomy' => 'wpcode_type',
				'count'    => true,
			)
		);
		$options = array();

		if ( empty( $tags ) ) {
			return __( 'No snippets available to export.', 'insert-headers-and-footers' );
		}

		foreach ( $tags as $tag ) {
			$label                    = isset( $labels[ $tag->slug ] ) ? $labels[ $tag->slug ] : $tag->name;
			$options[ $tag->term_id ] = $label . ' (' . $tag->count . ')';
		}

		return $this->get_checkboxes_list( $options, 'wpcode_export_code_type' );
	}

	/**
	 * Get all the tags in a checkbox list.
	 *
	 * @return string
	 */
	public function get_tags_checkboxes() {
		$tags = get_terms(
			array(
				'taxonomy' => 'wpcode_tags',
				'count'    => true,
			)
		);

		if ( empty( $tags ) ) {
			return __( 'No tags available.', 'insert-headers-and-footers' );
		}

		$options = array();
		foreach ( $tags as $tag ) {
			$options[ $tag->term_id ] = $tag->name . ' (' . $tag->count . ')';
		}

		return $this->get_checkboxes_list( $options, 'wpcode_export_tags' );
	}

	/**
	 * Get a list of checkboxes from a key=>value array.
	 *
	 * @param array  $options The options to display as checkboxes.
	 * @param string $name The name used for the input name attribute.
	 *
	 * @return string
	 */
	public function get_checkboxes_list( $options, $name ) {
		$checkboxes = '<div class="wpcode-checkboxes-list">';
		foreach ( $options as $value => $label ) {
			$checkboxes .= sprintf(
				'<label><input type="checkbox" name="%1$s[]" value="%2$s" />%3$s</label>',
				$name,
				$value,
				$label
			);
		}
		$checkboxes .= '</div>';

		return $checkboxes;
	}

	/**
	 * For this page we output a menu.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
		?>
		<ul class="wpcode-admin-tabs">
			<?php
			foreach ( $this->views as $slug => $label ) {
				if ( 'importer' === $slug ) {
					continue;
				}
				$class = $this->view === $slug ? 'active' : '';
				?>
				<li>
					<a href="<?php echo esc_url( $this->get_view_link( $slug ) ); ?>" class="<?php echo esc_attr( $class ); ?>"><?php echo esc_html( $label ); ?></a>
				</li>
			<?php } ?>
		</ul>
		<?php
	}

	/**
	 * Setup page-specific views.
	 *
	 * @return void
	 */
	protected function setup_views() {
		$this->views = array(
			'import'   => __( 'Import', 'insert-headers-and-footers' ),
			'export'   => __( 'Export', 'insert-headers-and-footers' ),
			'info'     => __( 'System Info', 'insert-headers-and-footers' ),
			'importer' => __( 'Importer', 'insert-headers-and-footers' ),
			'logs'     => __( 'Logs', 'insert-headers-and-footers' ),
		);
	}

	/**
	 * If the form is submitted attempt to save the values.
	 *
	 * @return void
	 */
	public function submit_listener() {
		if ( ! isset( $_REQUEST[ $this->nonce_name ] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST[ $this->nonce_name ] ), $this->action ) ) {
			// Nonce is missing, so we're not even going to try.
			return;
		}

		if ( isset( $_REQUEST['wpcode-export-snippets'] ) ) {
			$this->handle_export();
		}

		if ( ! isset( $_REQUEST['action'] ) ) {
			return;
		}

		$action = sanitize_text_field( wp_unslash( $_REQUEST['action'] ) );
		if ( 'import_snippets' === $action ) {
			$this->handle_import_file();
		}
	}

	/**
	 * Process export form and download a JSON file.
	 *
	 * @return void
	 */
	public function handle_export() {
		// Already verified nonce in parent method @see submit_listener.
		// phpcs:disable WordPress.Security.NonceVerification
		$status     = isset( $_POST['wpcode_export_status'] ) ? sanitize_text_field( wp_unslash( $_POST['wpcode_export_status'] ) ) : 'all';
		$code_types = isset( $_POST['wpcode_export_code_type'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['wpcode_export_code_type'] ) ) : array();
		$tags       = isset( $_POST['wpcode_export_tags'] ) ? array_map( 'sanitize_text_field', wp_unslash( $_POST['wpcode_export_tags'] ) ) : array();
		if ( 'all' === $status ) {
			$status = array(
				'publish',
				'draft',
			);
		}
		$tax_query = array();

		if ( ! empty( $code_types ) ) {
			$tax_query[] = array(
				'taxonomy' => 'wpcode_type',
				'terms'    => $code_types,
			);
		}
		if ( ! empty( $tags ) ) {
			$tax_query[] = array(
				'taxonomy' => 'wpcode_tags',
				'terms'    => $tags,
			);
		}

		$query_args = array(
			'post_type'   => 'wpcode',
			'post_status' => $status,
			'nopaging'    => true,
		);
		if ( ! empty( $tax_query ) ) {
			$query_args['tax_query'] = $tax_query; // phpcs:ignore WordPress.DB.SlowDBQuery.slow_db_query_tax_query
		}
		$export   = array();
		$snippets = get_posts( $query_args );

		foreach ( $snippets as $snippet ) {
			$snippet                          = new WPCode_Snippet( $snippet );
			$snippet_data                     = $snippet->get_data_for_caching();
			$snippet_data['tags']             = $snippet->get_tags();
			$snippet_data['note']             = $snippet->get_note();
			$snippet_data['cloud_id']         = $snippet->get_cloud_id();
			$snippet_data['custom_shortcode'] = $snippet->get_custom_shortcode();

			$export[] = apply_filters( 'wpcode_export_snippet_data', $snippet_data, $snippet );
		}

		$export = array_reverse( $export );

		ignore_user_abort( true );

		nocache_headers();
		header( 'Content-Type: application/json; charset=utf-8' );
		header( 'Content-Disposition: attachment; filename=wpcode-snippets-export-' . current_time( 'Y-m-d' ) . '.json' );
		header( 'Expires: 0' );

		echo wp_json_encode( $export );
		exit;
	}

	/**
	 * Process import file.
	 *
	 * @return void
	 */
	public function handle_import_file() {

		$ext = '';

		if ( isset( $_FILES['file']['name'] ) ) {
			$ext = strtolower( pathinfo( sanitize_text_field( wp_unslash( $_FILES['file']['name'] ) ), PATHINFO_EXTENSION ) );
		}

		if ( 'json' !== $ext ) {
			wp_die(
				esc_html__( 'Please upload a valid .json snippets export file.', 'insert-headers-and-footers' ),
				esc_html__( 'Error', 'insert-headers-and-footers' ),
				array(
					'response' => 400,
				)
			);
		}

		$tmp_name = isset( $_FILES['file']['tmp_name'] ) ? sanitize_text_field( $_FILES['file']['tmp_name'] ) : ''; //phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash -- wp_unslash() breaks upload on Windows.
		$snippets = json_decode( $this->remove_utf8_bom( file_get_contents( $tmp_name ) ), true ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents

		if ( empty( $snippets ) || ! is_array( $snippets ) ) {
			wp_die(
				esc_html__( 'Snippets data cannot be imported.', 'insert-headers-and-footers' ),
				esc_html__( 'Error', 'insert-headers-and-footers' ),
				array(
					'response' => 400,
				)
			);
		}

		$message = 1; // Default message for successful import.

		$valid_snippets_count = 0;
		foreach ( $snippets as $snippet ) {
			if ( empty( $snippet['code_type'] ) ) {
				// Just a minimal check that we have some required fields.
				continue;
			}
			++ $valid_snippets_count;
			if ( isset( $snippet['id'] ) ) {
				// We don't want to update existing snippets/posts.
				unset( $snippet['id'] );
			}

			$snippet         = apply_filters( 'wpcode_import_snippet_data', $snippet );
			$snippet['code'] = isset( $snippet['code'] ) ? wp_slash( $snippet['code'] ) : '';
			$new_snippet     = new WPCode_Snippet( $snippet );
			$new_snippet->save();

		}

		if ( 0 === $valid_snippets_count ) {
			$message = 2;
		}

		wp_safe_redirect(
			add_query_arg( 'message', $message, $this->get_page_action_url() )
		);
		exit;
	}

	/**
	 * Remove UTF-8 BOM signature if it is present.
	 *
	 * @param string $string String to process.
	 *
	 * @return string
	 */
	public function remove_utf8_bom( $string ) {
		if ( strpos( bin2hex( $string ), 'efbbbf' ) === 0 ) {
			$string = substr( $string, 3 );
		}

		return $string;
	}

	/**
	 * Templates used by the importer in JS.
	 *
	 * @return void
	 */
	public function importer_templates() {
		?>
		<script type="text/template" id="wpcode-importer-status-update">
			<div class="item">
				<div class="wpcode-clear">
					<span class="name">
						<?php wpcode_icon( 'check', 16, 13 ); ?>
						<span></span>
					</span>
					<span class="actions">
						<a href="" target="_blank"><?php esc_html_e( 'Edit', 'insert-headers-and-footers' ); ?></a>
					</span>
				</div>
			</div>
		</script>
		<?php
	}

	/**
	 * Add tools-specific localization data.
	 *
	 * @param array $data Localization data.
	 *
	 * @return array
	 */
	public function add_tools_data( $data ) {
		$data['testing'] = esc_html__( 'Testing', 'insert-headers-and-footers' );

		return $data;
	}

	/**
	 * Get system information.
	 *
	 * Based on a function from Easy Digital Downloads by Pippin Williamson.
	 *
	 * @link https://github.com/easydigitaldownloads/easy-digital-downloads/blob/master/includes/admin/tools.php#L470
	 *
	 * @return string
	 */
	public function get_system_info() {

		$data = '### Begin System Info ###' . "\n\n";

		$data .= $this->site_info();
		$data .= $this->wp_info();
		$data .= $this->uploads_info();
		$data .= $this->plugins_info();
		$data .= $this->server_info();

		$data .= "\n" . '### End System Info ###';

		return $data;
	}

	/**
	 * Get Site info.
	 *
	 * @return string
	 */
	private function site_info() {

		$data = "\n" . '-- Site Info' . "\n\n";
		$data .= 'Site URL:                 ' . site_url() . "\n";
		$data .= 'Home URL:                 ' . home_url() . "\n";
		$data .= 'Multisite:                ' . ( is_multisite() ? 'Yes' : 'No' ) . "\n";

		return $data;
	}

	/**
	 * Get WordPress Configuration info.
	 *
	 * @return string
	 */
	private function wp_info() {

		global $wpdb;

		$theme_data = wp_get_theme();
		$theme      = $theme_data->name . ' ' . $theme_data->version;

		$data = "\n" . '-- WordPress Configuration' . "\n\n";
		$data .= 'Version:                  ' . get_bloginfo( 'version' ) . "\n";
		$data .= 'Language:                 ' . get_locale() . "\n";
		$data .= 'User Language:            ' . get_user_locale() . "\n";
		$data .= 'Permalink Structure:      ' . ( get_option( 'permalink_structure' ) ? get_option( 'permalink_structure' ) : 'Default' ) . "\n";
		$data .= 'Active Theme:             ' . $theme . "\n";
		$data .= 'Show On Front:            ' . get_option( 'show_on_front' ) . "\n";

		// Only show page specs if front page is set to 'page'.
		if ( get_option( 'show_on_front' ) === 'page' ) {
			$front_page_id = get_option( 'page_on_front' );
			$blog_page_id  = get_option( 'page_for_posts' );

			$data .= 'Page On Front:            ' . ( $front_page_id ? get_the_title( $front_page_id ) . ' (#' . $front_page_id . ')' : 'Unset' ) . "\n";
			$data .= 'Page For Posts:           ' . ( $blog_page_id ? get_the_title( $blog_page_id ) . ' (#' . $blog_page_id . ')' : 'Unset' ) . "\n";
		}
		$data .= 'ABSPATH:                  ' . ABSPATH . "\n";
		$data .= 'Table Prefix:             ' . 'Length: ' . strlen( $wpdb->prefix ) . '   Status: ' . ( strlen( $wpdb->prefix ) > 16 ? 'ERROR: Too long' : 'Acceptable' ) . "\n"; //phpcs:ignore
		$data .= 'WP_DEBUG:                 ' . ( defined( 'WP_DEBUG' ) ? WP_DEBUG ? 'Enabled' : 'Disabled' : 'Not set' ) . "\n";
		$data .= 'Memory Limit:             ' . WP_MEMORY_LIMIT . "\n";
		$data .= 'Registered Post Stati:    ' . implode( ', ', get_post_stati() ) . "\n";
		$data .= 'Revisions:                ' . ( WP_POST_REVISIONS ? WP_POST_REVISIONS > 1 ? 'Limited to ' . WP_POST_REVISIONS : 'Enabled' : 'Disabled' ) . "\n";

		return $data;
	}

	/**
	 * Get Uploads/Constants info.
	 *
	 * @return string
	 */
	private function uploads_info() {

		$data = "\n" . '-- WordPress Uploads/Constants' . "\n\n";
		$data .= 'WP_CONTENT_DIR:           ' . ( defined( 'WP_CONTENT_DIR' ) ? WP_CONTENT_DIR ? WP_CONTENT_DIR : 'Disabled' : 'Not set' ) . "\n";
		$data .= 'WP_CONTENT_URL:           ' . ( defined( 'WP_CONTENT_URL' ) ? WP_CONTENT_URL ? WP_CONTENT_URL : 'Disabled' : 'Not set' ) . "\n";
		$data .= 'UPLOADS:                  ' . ( defined( 'UPLOADS' ) ? UPLOADS ? UPLOADS : 'Disabled' : 'Not set' ) . "\n";

		$uploads_dir = wp_upload_dir();

		$data .= 'wp_uploads_dir() path:    ' . $uploads_dir['path'] . "\n";
		$data .= 'wp_uploads_dir() url:     ' . $uploads_dir['url'] . "\n";
		$data .= 'wp_uploads_dir() basedir: ' . $uploads_dir['basedir'] . "\n";
		$data .= 'wp_uploads_dir() baseurl: ' . $uploads_dir['baseurl'] . "\n";

		return $data;
	}

	/**
	 * Get Plugins info.
	 *
	 * @return string
	 */
	private function plugins_info() {

		// Get plugins that have an update.
		$data = $this->mu_plugins();

		$data .= $this->installed_plugins();
		$data .= $this->multisite_plugins();

		return $data;
	}

	/**
	 * Get MU Plugins info.
	 *
	 * @return string
	 */
	private function mu_plugins() {

		$data = '';

		// Must-use plugins.
		// NOTE: MU plugins can't show updates!
		$muplugins = get_mu_plugins();

		if ( ! empty( $muplugins ) && count( $muplugins ) > 0 ) {
			$data = "\n" . '-- Must-Use Plugins' . "\n\n";

			foreach ( $muplugins as $plugin => $plugin_data ) {
				$data .= $plugin_data['Name'] . ': ' . $plugin_data['Version'] . "\n";
			}
		}

		return $data;
	}

	/**
	 * Get Installed Plugins info.
	 *
	 * @return string
	 */
	private function installed_plugins() {

		$updates = get_plugin_updates();

		// WordPress active plugins.
		$data = "\n" . '-- WordPress Active Plugins' . "\n\n";

		$plugins        = get_plugins();
		$active_plugins = get_option( 'active_plugins', array() );

		foreach ( $plugins as $plugin_path => $plugin ) {
			if ( ! in_array( $plugin_path, $active_plugins, true ) ) {
				continue;
			}
			$update = ( array_key_exists( $plugin_path, $updates ) ) ? ' (needs update - ' . $updates[ $plugin_path ]->update->new_version . ')' : '';
			$data   .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
		}

		// WordPress inactive plugins.
		$data .= "\n" . '-- WordPress Inactive Plugins' . "\n\n";

		foreach ( $plugins as $plugin_path => $plugin ) {
			if ( in_array( $plugin_path, $active_plugins, true ) ) {
				continue;
			}
			$update = ( array_key_exists( $plugin_path, $updates ) ) ? ' (needs update - ' . $updates[ $plugin_path ]->update->new_version . ')' : '';
			$data   .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
		}

		return $data;
	}

	/**
	 * Get Multisite Plugins info.
	 *
	 * @return string
	 */
	private function multisite_plugins() {

		$data = '';

		if ( ! is_multisite() ) {
			return $data;
		}

		$updates = get_plugin_updates();

		// WordPress Multisite active plugins.
		$data = "\n" . '-- Network Active Plugins' . "\n\n";

		$plugins        = wp_get_active_network_plugins();
		$active_plugins = get_site_option( 'active_sitewide_plugins', array() );

		foreach ( $plugins as $plugin_path ) {
			$plugin_base = plugin_basename( $plugin_path );

			if ( ! array_key_exists( $plugin_base, $active_plugins ) ) {
				continue;
			}
			$update = ( array_key_exists( $plugin_path, $updates ) ) ? ' (needs update - ' . $updates[ $plugin_path ]->update->new_version . ')' : '';
			$plugin = get_plugin_data( $plugin_path );
			$data   .= $plugin['Name'] . ': ' . $plugin['Version'] . $update . "\n";
		}

		return $data;
	}

	/**
	 * Get Server info.
	 *
	 * @return string
	 */
	private function server_info() {

		global $wpdb;

		// Server configuration (really just versions).
		$data = "\n" . '-- Webserver Configuration' . "\n\n";
		$data .= 'PHP Version:              ' . PHP_VERSION . "\n";
		$data .= 'MySQL Version:            ' . $wpdb->db_version() . "\n";
		$data .= 'Webserver Info:           ' . ( isset( $_SERVER['SERVER_SOFTWARE'] ) ? sanitize_text_field( wp_unslash( $_SERVER['SERVER_SOFTWARE'] ) ) : '' ) . "\n";

		// PHP configs... now we're getting to the important stuff.
		$data .= "\n" . '-- PHP Configuration' . "\n\n";
		$data .= 'Memory Limit:             ' . ini_get( 'memory_limit' ) . "\n";
		$data .= 'Upload Max Size:          ' . ini_get( 'upload_max_filesize' ) . "\n";
		$data .= 'Post Max Size:            ' . ini_get( 'post_max_size' ) . "\n";
		$data .= 'Upload Max Filesize:      ' . ini_get( 'upload_max_filesize' ) . "\n";
		$data .= 'Time Limit:               ' . ini_get( 'max_execution_time' ) . "\n";
		$data .= 'Max Input Vars:           ' . ini_get( 'max_input_vars' ) . "\n";
		$data .= 'Display Errors:           ' . ( ini_get( 'display_errors' ) ? 'On (' . ini_get( 'display_errors' ) . ')' : 'N/A' ) . "\n";

		// PHP extensions and such.
		$data .= "\n" . '-- PHP Extensions' . "\n\n";
		$data .= 'cURL:                     ' . ( function_exists( 'curl_init' ) ? 'Supported' : 'Not Supported' ) . "\n";
		$data .= 'fsockopen:                ' . ( function_exists( 'fsockopen' ) ? 'Supported' : 'Not Supported' ) . "\n";
		$data .= 'SOAP Client:              ' . ( class_exists( 'SoapClient', false ) ? 'Installed' : 'Not Installed' ) . "\n";
		$data .= 'Suhosin:                  ' . ( extension_loaded( 'suhosin' ) ? 'Installed' : 'Not Installed' ) . "\n";

		// Session stuff.
		$data .= "\n" . '-- Session Configuration' . "\n\n";
		$data .= 'Session:                  ' . ( isset( $_SESSION ) ? 'Enabled' : 'Disabled' ) . "\n";

		// The rest of this is only relevant if session is enabled.
		if ( isset( $_SESSION ) ) {
			$data .= 'Session Name:             ' . esc_html( ini_get( 'session.name' ) ) . "\n";
			$data .= 'Cookie Path:              ' . esc_html( ini_get( 'session.cookie_path' ) ) . "\n";
			$data .= 'Save Path:                ' . esc_html( ini_get( 'session.save_path' ) ) . "\n";
			$data .= 'Use Cookies:              ' . ( ini_get( 'session.use_cookies' ) ? 'On' : 'Off' ) . "\n";
			$data .= 'Use Only Cookies:         ' . ( ini_get( 'session.use_only_cookies' ) ? 'On' : 'Off' ) . "\n";
		}

		return $data;
	}

	/**
	 * Output the log viewer.
	 *
	 * @return void
	 */
	public function output_view_logs() {

		if ( ! current_user_can( 'wpcode_edit_php_snippets' ) ) {
			echo '<p>' . esc_html__( 'You do not have sufficient permissions to view logs.', 'insert-headers-and-footers' ) . '</p>';

			return;
		}

		$logs = wpcode()->logger->get_logs();

		if ( empty( $logs ) ) {
			echo '<p>';
			printf(
			// translators: %1$s: opening anchor tag, %2$s: closing anchor tag.
				esc_html__( 'No logs found. You can enable logging from the %1$ssettings panel%2$s.', 'insert-headers-and-footers' ),
				'<a href="' . esc_url( admin_url( 'admin.php?page=wpcode-settings&view=errors' ) ) . '">',
				'</a>'
			);
			echo '</p>';

			return;
		}
		$selected_log      = $logs[0]['path'];
		$selected_log_name = $logs[0]['filename'];

		if ( isset( $_POST['log'] ) && isset( $_POST['_wpnonce'] ) && wp_verify_nonce( sanitize_key( $_POST['_wpnonce'] ), 'wpcode_view_log' ) ) {
			$selected_log_name = sanitize_text_field( wp_unslash( $_POST['log'] ) );
			// Find the log file path.
			foreach ( $logs as $log ) {
				if ( $log['filename'] === $selected_log_name ) {
					$selected_log = $log['path'];
					break;
				}
			}
		}
		// Load the selected log.
		$log_content = file_get_contents( $selected_log ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents

		$delete_log_url = wp_nonce_url(
			add_query_arg(
				array(
					'wpcode_action' => 'delete_log',
					'log'           => str_replace( '.log', '', $selected_log_name ),
				),
				$this->get_page_action_url()
			),
			'wpcode_delete_log'
		);
		// Log picker form.
		?>
		<div class="alignleft">
			<h2><?php echo esc_html( $selected_log_name ); ?>
				<a class="wpcode-button wpcode-button-secondary wpcode-delete-log" href="<?php echo esc_url( $delete_log_url ); ?>"><?php esc_html_e( 'Delete log', 'insert-headers-and-footers' ); ?></a>
			</h2>
		</div>
		<div class="alignright">
			<form method="post" action="<?php echo esc_url( $this->get_page_action_url() ); ?>">
				<select name="log">
					<?php foreach ( $logs as $log ) : ?>
						<option value="<?php echo esc_attr( $log['filename'] ); ?>" <?php selected( $selected_log_name, $log['filename'] ); ?>><?php echo esc_html( $log['filename'] ); ?></option>
					<?php endforeach; ?>
				</select>
				<button type="submit" class="wpcode-button"><?php esc_html_e( 'View', 'insert-headers-and-footers' ); ?></button>
				<?php wp_nonce_field( 'wpcode_view_log' ); ?>
			</form>
		</div>
		<div class="clear"></div>

		<div id="wpcode-log-data">
			<?php if ( empty( $log_content ) ) : ?>
				<p><?php esc_html_e( 'Log is empty.', 'insert-headers-and-footers' ); ?></p>
			<?php endif; ?>
			<pre><?php echo esc_html( $log_content ); ?></pre>
		</div>
		<?php
	}

	/**
	 * Delete a log file.
	 *
	 * @return void
	 */
	public function maybe_delete_log() {

		if ( ! isset( $_GET['wpcode_action'] ) || 'delete_log' !== $_GET['wpcode_action'] || ! isset( $_GET['log'] ) ) {
			return;
		}

		// Check nonce.
		if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'wpcode_delete_log' ) ) {
			wp_die( esc_html__( 'Link expired. Please refresh the page and retry.', 'insert-headers-and-footers' ) );
		}

		if ( ! current_user_can( 'wpcode_activate_snippets' ) ) {
			echo '<p>' . esc_html__( 'You do not have sufficient permissions to delete logs.', 'insert-headers-and-footers' ) . '</p>';

			return;
		}

		wpcode()->logger->delete_log( sanitize_key( wp_unslash( $_GET['log'] ) ) );

		wp_safe_redirect( $this->get_page_action_url() );
		exit;
	}

	/**
	 * Add tools-specific strings to the JS strings object.
	 *
	 * @param array $data The strings object.
	 *
	 * @return array
	 */
	public function add_tools_strings( $data ) {
		$data['confirm_delete_log'] = __( 'Are you sure you want to delete this log?', 'insert-headers-and-footers' );

		return $data;
	}
}
PK     ¤‰U]±<âÝÝ  Ý  <  includes/admin/pages/class-wpcode-admin-page-file-editor.phpnu „[µü¤        <?php
/**
 * File editor page.
 *
 * @package WPCode
 */

/**
 * Class for the file editor page.
 */
class WPCode_Admin_Page_File_Editor extends WPCode_Admin_Page {

	/**
	 * The page slug.
	 *
	 * @var string
	 */
	public $page_slug = 'wpcode-file-editor';

	/**
	 * The default view.
	 *
	 * @var string
	 */
	public $view = 'adstxt';

	/**
	 * The capability required to view this page.
	 *
	 * @var string
	 */
	protected $capability = 'wpcode_file_editor';

	/**
	 * WPCode_Admin_Page_File_Editor constructor.
	 */
	public function __construct() {
		$this->page_title = __( 'File Editor', 'insert-headers-and-footers' );
		parent::__construct();
	}

	/**
	 * Add codemirror settings specific to the needs for this page.
	 *
	 * @return void
	 */
	public function page_hooks() {
		// Add the codemirror settings.
		add_filter( 'wpcode_editor_config', array( $this, 'editor_config' ) );
	}

	/**
	 * Output the page content.
	 *
	 * @return void
	 */
	public function output_content() {
		$this->can_edit = true;
		echo '<div class="wpcode-blur-area" style="min-height: 700px">';
		$this->file_editor_area();
		echo '</div>';
		echo $this->get_pixel_overlay();  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
	}

	/**
	 * File editor area.
	 *
	 * @return void
	 */
	public function file_editor_area() {
		$value = $this->get_value();
		?>
		<div class="wpcode-code-textarea" id="wpcode-edit-<?php echo esc_attr( $this->view ); ?>-area" style="max-width: 1000px">
			<div class="wpcode-flex">
				<div class="wpcode-column">
					<h2>
						<label for="wpcode_file_<?php echo esc_attr( $this->view ); ?>">
							<?php
							printf(
							// Translators: %s is the name of the file.
								esc_html__( '%s Editor', 'insert-headers-and-footers' ),
								esc_html( $this->views[ $this->view ] )
							);
							?>
						</label>
					</h2>
				</div>
				<div class="wpcode-column">
					<div class="wpcode-input-select">
						<label for="<?php echo esc_attr( 'wpcode_file_' . $this->view . '[enabled]' ); ?>">
							<?php esc_html_e( 'Enable file output', 'insert-headers-and-footers' ); ?>
						</label>
						<?php
						echo $this->get_checkbox_toggle( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
							$value['enabled'],
							esc_attr( 'wpcode_file_' . $this->view . '[enabled]' )
						)
						?>
					</div>
				</div>
			</div>
			<textarea name="wpcode_file_<?php echo esc_attr( $this->view ); ?>[content]" id="wpcode_file_<?php echo esc_attr( $this->view ); ?>" class="widefat" rows="8"><?php echo esc_textarea( $value['content'] ); ?></textarea>
			<p>
				<?php
				printf(
				// Translators: %s is the name of the file.
					esc_html__( 'Use this area to edit your %s file.', 'insert-headers-and-footers' ),
					esc_html( $this->views[ $this->view ] )
				);
				?>
			</p>
			<p>
				<?php
				printf(
				// Translators: %1$s is the opening link tag, %2$s is the closing link tag.
					esc_html__( 'The file contents above will be used to generated a dynamic file. There is no physical file created on your server. %1$sLearn more%2$s.', 'insert-headers-and-footers' ),
					'<a href="' . esc_url( wpcode_utm_url( 'https://wpcode.com/docs/file-editor/', 'file-editor', 'docs', 'learn-more' ) ) . '" target="_blank" rel="noopener noreferrer">',
					'</a>'
				);
				?>
			</p>
		</div>
		<?php

		wp_nonce_field( 'wpcode-edit-' . $this->view, 'wpcode-edit-' . $this->view . '-nonce' );

		// If we need to add page-specific content we can do this here.
		if ( method_exists( $this, 'output_view_' . $this->view ) ) {
			call_user_func( array( $this, 'output_view_' . $this->view ) );
		}

		?>
		<button class="wpcode-button" type="submit" <?php echo $this->can_edit ? '' : 'disabled'; ?>>
			<?php esc_html_e( 'Save Changes', 'insert-headers-and-footers' ); ?>
		</button>
		<a href="<?php echo esc_url( home_url() . '/' . $this->views[ $this->view ] ); ?>" class="wpcode-button wpcode-button-secondary" target="_blank" rel="noopener noreferrer">
			<?php esc_html_e( 'View File', 'insert-headers-and-footers' ); ?>
		</a>
		<?php
	}

	/**
	 * For this page we output a menu.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
		?>
		<ul class="wpcode-admin-tabs">
			<?php
			foreach ( $this->views as $slug => $label ) {
				$class = $this->view === $slug ? 'active' : '';
				?>
				<li>
					<a href="<?php echo esc_url( $this->get_view_link( $slug ) ); ?>" class="<?php echo esc_attr( $class ); ?>"><?php echo esc_html( $label ); ?></a>
				</li>
			<?php } ?>
		</ul>
		<?php
	}

	/**
	 * Page specific scripts. Hooked to 'admin_enqueue_scripts'.
	 *
	 * @return void
	 */
	public function page_scripts() {
		$editor = new WPCode_Code_Editor( 'text' );

		$editor->register_editor( 'wpcode_file_' . $this->view );
		$editor->init_editor();
	}

	/**
	 * Disable all the codemirror settings for this page as we need a basic editor.
	 *
	 * @param array $config The WPCode editor config.
	 *
	 * @return array
	 */
	public function editor_config( $config ) {

		if ( 'serviceworkerjs' === $this->view ) {
			$config['type'] = 'text/javascript';
		} else {
			$config['type']       = 'shell';
			$config['codemirror'] = array();
			$config['showHint']   = 'false';
		}

		return $config;
	}

	/**
	 * Output content specific to the robots.txt file.
	 *
	 * @return void
	 */
	public function output_view_robotstxt() {
		?>
		<p>
			<?php esc_html_e( 'Content added here will be appended to the robots.txt content generated by WordPress and other plugins.', 'insert-headers-and-footers' ); ?>
		</p>
		<?php
	}

	/**
	 * Setup page-specific views.
	 *
	 * @return void
	 */
	protected function setup_views() {
		$this->views = array(
			'adstxt'          => 'ads.txt',
			'appadstxt'       => 'app-ads.txt',
			'serviceworkerjs' => 'service-worker.js',
			'robotstxt'       => 'robots.txt',
		);
	}

	/**
	 * Nothing to return by default.
	 *
	 * @return array
	 */
	public function get_value() {
		return array(
			'enabled' => true,
			'content' => '',
		);
	}

	/**
	 * Get the overlay for the file editor page.
	 *
	 * @return string
	 */
	public function get_pixel_overlay() {

		$text = '<p>' . esc_html__( 'Simplify your website management with the WPCode File Editor! Say goodbye to the hassle of manually editing files on your server.', 'insert-headers-and-footers' ) . '<p>';

		$text .= sprintf(
		// translators: %1$s and %2$s are <u> tags.
			'<p>' . esc_html__( 'With this powerful tool, you can easily customize crucial files like %1$sads.txt%2$s, %1$sapp-ads.txt%2$s, %1$srobots.txt%2$s, and %1$sservice-worker.js%2$s right from your WordPress admin.', 'insert-headers-and-footers' ) . '</p>',
			'<u>',
			'</u>'
		);


		return self::get_upsell_box(
			__( 'File Editor is a PRO Feature', 'insert-headers-and-footers' ),
			$text,
			array(
				'text' => esc_html__( 'Upgrade to WPCode PRO', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'file-editor', 'tab-' . $this->view, 'upgrade-to-pro' ) ),
			),
			array(
				'text' => esc_html__( 'Learn More about the File Editor', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/docs/file-editor/', 'file-editor', 'tab-' . $this->view, 'learn-more' ) ),
			),
			array(
				esc_html__( 'No manual coding, no FTP', 'insert-headers-and-footers' ),
				esc_html__( 'Effortless integrations setup', 'insert-headers-and-footers' ),
				esc_html__( 'Reduce the number of plugins', 'insert-headers-and-footers' ),
				esc_html__( 'Prevent advertising fraud', 'insert-headers-and-footers' ),
			)
		);
	}
}
PK     ¤‰U]_Œ\+z  z  <  includes/admin/pages/trait-wpcode-library-refresh-button.phpnu „[µü¤        <?php
/**
 * Trait for the library refresh button (lite version).
 *
 * @package WPCode
 */

/**
 * Trait WPCode_Library_Refresh_Button.
 */
trait WPCode_Library_Refresh_Button {

	/**
	 * Add the "Check for Updates" button to the header.
	 * Lite version - simple button without update check logic.
	 *
	 * @return void
	 */
	public function add_check_for_updates_button() {
		$tooltip_text = esc_html__( 'Check for updates to your private library snippets.', 'insert-headers-and-footers' );

		echo '<span class="wpcode-help-tooltip"><button type="button" id="wpcode-check-for-updates" class="wpcode-button-just-icon">' . wp_kses( get_wpcode_icon( 'sync', 16, 16, '0 0 20 21' ), wpcode_get_icon_allowed_tags() ) . '</button>';
		echo '<span class="wpcode-help-tooltip-text wpcode-help-tooltip-text-down wpcode-check-updates-tooltip">' . esc_html( $tooltip_text ) . '</span></span>';
	}
}
PK     ¥‰U]e\Rž¢  ¢  8  includes/admin/pages/class-wpcode-admin-page-library.phpnu „[µü¤        <?php
/**
 * Admin page for the snippets library.
 *
 * @package WPCode
 */

/**
 * WPCode_Admin_Page_Library class.
 */
class WPCode_Admin_Page_Library extends WPCode_Admin_Page {

	use WPCode_My_Library_Markup_Lite;
	/**
	 * The page slug.
	 *
	 * @var string
	 */
	public $page_slug = 'wpcode-library';
	/**
	 * We always show the library on this page.
	 *
	 * @var bool
	 */
	protected $show_library = true;

	/**
	 *  The default view.
	 *
	 * @var string
	 */
	public $view = 'library';

	/**
	 * The object used for loading data on this page.
	 *
	 * @var WPCode_Library
	 */
	protected $data_handler;

	/**
	 * The capability required to view this page.
	 *
	 * @var string
	 */
	protected $capability = 'wpcode_edit_php_snippets';

	/**
	 * Call this just to set the page title translatable.
	 */
	public function __construct() {
		$this->page_title = __( 'Library', 'insert-headers-and-footers' );
		parent::__construct();
	}

	/**
	 * Setup page-specific views.
	 *
	 * @return void
	 */
	protected function setup_views() {
		$this->views = array(
			'library'      => __( 'Snippets', 'insert-headers-and-footers' ),
			'my_library'   => __( 'My Library', 'insert-headers-and-footers' ),
			'my_favorites' => __( 'My Favorites', 'insert-headers-and-footers' ),
		);
	}

	/**
	 * Add page-specific hooks.
	 *
	 * @return void
	 */
	public function page_hooks() {
		$this->process_message();
		add_action( 'admin_init', array( $this, 'maybe_add_from_library' ) );
	}

	/**
	 * Handle grabbing snippets from the library.
	 *
	 * @return void
	 */
	public function maybe_add_from_library() {
		if ( ! isset( $_GET['_wpnonce'] ) || ! wp_verify_nonce( sanitize_key( $_GET['_wpnonce'] ), 'wpcode_add_from_library' ) ) {
			return;
		}
		$library_id = isset( $_GET['snippet_library_id'] ) ? absint( $_GET['snippet_library_id'] ) : 0;

		if ( empty( $library_id ) ) {
			return;
		}

		$snippet = $this->get_data_handler()->create_new_snippet( $library_id );

		if ( $snippet ) {
			$url = add_query_arg(
				array(
					'page'       => 'wpcode-snippet-manager',
					'snippet_id' => $snippet->get_id(),
				),
				$this->admin_url( 'admin.php' )
			);
		} else {
			$url = add_query_arg(
				array(
					'message' => 1,
				),
				remove_query_arg(
					array(
						'_wpnonce',
						'snippet_library_id',
					)
				)
			);
		}

		wp_safe_redirect( $url );
		exit;
	}

	/**
	 * Markup for the Library page content.
	 *
	 * @return void
	 */
	public function output_content() {

		if ( method_exists( $this, 'output_view_' . $this->view ) ) {
			call_user_func( array( $this, 'output_view_' . $this->view ) );
		}
	}

	/**
	 * Ouptut the library content (default view).
	 *
	 * @return void
	 */
	public function output_view_library() {
		$library_data = $this->get_data_handler()->get_data();
		$categories   = $library_data['categories'];
		$snippets     = $library_data['snippets'];

		$this->get_library_markup( $categories, $snippets );
		$this->library_preview_modal_content();
		$this->library_connect_banner_template();
	}

	/**
	 * For this page we output a menu.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
		?>
		<ul class="wpcode-admin-tabs">
			<?php
			foreach ( $this->views as $slug => $label ) {
				$class = $this->view === $slug ? 'active' : '';
				?>
				<li>
					<a href="<?php echo esc_url( $this->get_view_link( $slug ) ); ?>" class="<?php echo esc_attr( $class ); ?>"><?php echo esc_html( $label ); ?></a>
				</li>
			<?php } ?>
		</ul>
		<?php
	}

	/**
	 * Process messages specific to this page.
	 *
	 * @return void
	 */
	public function process_message() {
		// phpcs:disable WordPress.Security.NonceVerification
		if ( ! isset( $_GET['message'] ) ) {
			return;
		}

		$messages = array(
			1 => __( 'We encountered an error while trying to load the snippet data. Please try again.', 'insert-headers-and-footers' ),
		);
		$message  = absint( $_GET['message'] );
		// phpcs:enable WordPress.Security.NonceVerification

		if ( ! isset( $messages[ $message ] ) ) {
			return;
		}

		$this->set_error_message( $messages[ $message ] );

	}

	/**
	 * Markup for the "My Library" page.
	 *
	 * @return void
	 */
	public function output_view_my_library() {
		$this->get_my_library_markup();
	}

	/**
	 * Markup for the "My Library" page.
	 *
	 * @return void
	 */
	public function output_view_my_favorites() {
		$this->blurred_placeholder_items();
		// Show upsell.
		echo WPCode_Admin_Page::get_upsell_box( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			esc_html__( 'My Favorites is a PRO Feature', 'insert-headers-and-footers' ),
			'<p>' . esc_html__( 'Upgrade to WPCode PRO today and see the snippets you starred in the WPCode Library directly in the plugin.', 'insert-headers-and-footers' ) . '</p>',
			array(
				'text' => esc_html__( 'Upgrade to PRO and Unlock "My Favorites"', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'library-page', 'my-favorites', 'upgrade-and-unlock' ) ),
			),
			array(
				'text' => esc_html__( 'Learn more about all the features', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'library-page', 'my-favorites', 'features' ) ),
			),
			array(
				esc_html__( 'Load favorite snippets in the plugin', 'insert-headers-and-footers' ),
				esc_html__( 'Import snippets from the WPCode Library', 'insert-headers-and-footers' ),
				esc_html__( 'Save your snippets to the WPCode Library', 'insert-headers-and-footers' ),
				esc_html__( 'Set up new websites faster', 'insert-headers-and-footers' ),
				esc_html__( 'Easily implement features on multiple sites', 'insert-headers-and-footers' ),
				esc_html__( 'Edit snippets in the WPCode Library', 'insert-headers-and-footers' ),
			)
		);
	}

	/**
	 * Get the data handler for this page.
	 *
	 * @return WPCode_Library
	 */
	public function get_data_handler() {
		if ( ! isset( $this->data_handler ) ) {
			$this->data_handler = wpcode()->library;
		}

		return $this->data_handler;
	}

}
PK     §‰U]fVêŠq q @  includes/admin/pages/class-wpcode-admin-page-snippet-manager.phpnu „[µü¤        <?php
/**
 * Snippet manager page - add/edit snippets.
 *
 * @package WPCode
 */

/**
 * WPCode_Admin_Page_Snippet_Manager class.
 */
class WPCode_Admin_Page_Snippet_Manager extends WPCode_Admin_Page {

	use WPCode_Revisions_Display_Lite;
	use WPCode_My_Library_Markup_Lite;

	/**
	 * The page slug to be used when adding the submenu.
	 *
	 * @var string
	 */
	public $page_slug = 'wpcode-snippet-manager';
	/**
	 * The publish button text depending on the status.
	 *
	 * @var string
	 */
	public $publish_button_text;
	/**
	 * The header title text depending on the status.
	 *
	 * @var string
	 */
	public $header_title;
	/**
	 * The default code type for this page is HTML.
	 *
	 * @var string
	 */
	public $code_type = 'html';
	/**
	 * The action for the nonce when the current page is submitted.
	 *
	 * @var string
	 */
	protected $action = 'wpcode-save-snippet';

	/**
	 * The name of the nonce used for saving.
	 *
	 * @var string
	 */
	protected $nonce_name = 'wpcode-save-snippet-nonce';
	/**
	 * The snippet id.
	 *
	 * @var int
	 */
	protected $snippet_id;
	/**
	 * The snippet instance.
	 *
	 * @var WPCode_Snippet
	 */
	protected $snippet;

	/**
	 * Whether the snippet is currently edited by someone else.
	 *
	 * @var bool
	 */
	protected $is_locked = false;

	/**
	 * The name of user who locked the snippet.
	 *
	 * @var string
	 */
	protected $locked_by;

	/**
	 * Constructor.
	 */
	public function __construct() {
		// Translators: This adds the name of the plugin "WPCode".
		$this->page_title = sprintf( __( 'Add %s Snippet', 'insert-headers-and-footers' ), 'WPCode' );
		$this->menu_title = sprintf( '+ %s', __( 'Add Snippet', 'insert-headers-and-footers' ) );
		parent::__construct();
	}

	/**
	 * Load the snippet if we're editing one.
	 *
	 * @return void
	 */
	public function load_snippet() {
		if ( isset( $_GET['snippet_id'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			$snippet_post = get_post( absint( $_GET['snippet_id'] ) );  // phpcs:ignore WordPress.Security.NonceVerification.Recommended
			if ( ! is_null( $snippet_post ) && $this->get_post_type() === $snippet_post->post_type ) {
				$this->snippet_id = $snippet_post->ID;
				$this->snippet    = wpcode_get_snippet( $snippet_post );

				// Let's check if it's not already being edited by someone else.
				$snippet_locked = wp_check_post_lock( $this->snippet_id );
				if ( $snippet_locked ) {
					$locked_by = get_user_by( 'id', $snippet_locked );
					if ( $locked_by ) {
						$this->locked_by = $locked_by->display_name;
						$this->is_locked = true;
					}
				} else {
					wp_set_post_lock( $this->snippet_id );
				}
			}
		}
	}

	/**
	 * Page-specific hooks.
	 *
	 * @return void
	 */
	public function page_hooks() {
		$this->can_edit = current_user_can( 'wpcode_edit_snippets' );
		// phpcs:disable WordPress.Security.NonceVerification.Recommended
		if ( isset( $_GET['snippet_id'] ) ) {
			$this->load_snippet();
			// Check if we need to sync the snippet.
			if ( isset( $_GET['sync'] ) && 'true' === $_GET['sync'] && isset( $this->snippet ) ) {
				$this->sync_snippet();
			}
			// If the post type does not match the page will act as an add new snippet page, the id will be ignored.
		} elseif ( ! isset( $_GET['custom'] ) ) {
			$this->show_library = apply_filters( 'wpcode_add_snippet_show_library', true );
		}
		// phpcs:enable WordPress.Security.NonceVerification.Recommended
		$this->publish_button_text = __( 'Save Snippet', 'insert-headers-and-footers' );
		$this->header_title        = __( 'Create Custom Snippet', 'insert-headers-and-footers' );
		if ( isset( $this->snippet ) ) {
			$this->header_title        = __( 'Edit Snippet', 'insert-headers-and-footers' );
			$this->publish_button_text = __( 'Update', 'insert-headers-and-footers' );
		}
		if ( $this->show_library ) {
			$this->header_title = __( 'Add Snippet', 'insert-headers-and-footers' );
		}
		$this->process_message();
		add_action( 'admin_init', array( $this, 'check_status' ) );
		add_filter( 'submenu_file', array( $this, 'change_current_menu' ) );
		add_filter( 'admin_title', array( $this, 'change_page_title' ), 15, 2 );
		add_action( 'admin_init', array( $this, 'submit_listener' ) );
		add_action( 'admin_init', array( $this, 'set_code_type' ) );
		add_filter( 'wpcode_admin_js_data', array( $this, 'add_conditional_rules_to_script' ) );
		add_filter( 'admin_body_class', array( $this, 'body_class_code_type' ) );
		add_filter( 'admin_body_class', array( $this, 'maybe_editor_height_auto' ) );
		add_filter( 'admin_body_class', array( $this, 'maybe_syntax_highlighting_disabled' ) );
		add_filter( 'admin_head', array( $this, 'maybe_editor_height' ) );
		add_action( 'wpcode_admin_notices', array( $this, 'maybe_show_error_notice' ) );

		add_filter( 'user_can_richedit', '__return_true', 150 ); // Override other plugins that disable TinyMCE.
	}

	/**
	 * Make sure we can't edit a trashed snippet.
	 *
	 * @return void
	 */
	public function check_status() {
		if ( ! isset( $this->snippet ) ) {
			return;
		}
		$post_data = $this->snippet->get_post_data();
		if ( 'trash' === $post_data->post_status ) {
			wp_die( esc_html__( 'You cannot edit this snippet because it is in the Trash. Please restore it and try again.', 'insert-headers-and-footers' ) );
		}
	}

	/**
	 * Process messages specific to this page.
	 *
	 * @return void
	 */
	public function process_message() {
		// phpcs:disable WordPress.Security.NonceVerification
		if ( ! isset( $_GET['message'] ) ) {
			$snippet_types = array_keys( wpcode()->execute->get_options() );
			if ( in_array( 'html', $snippet_types, true ) && ! current_user_can( 'unfiltered_html', 'wpcode-editor' ) ) {
				$this->set_error_message( __( 'Sorry, you only have read-only access to this page. Ask your administrator for assistance editing.', 'insert-headers-and-footers' ) );
			}

			return;
		}

		$error_details = '';
		if ( isset( $_GET['error'] ) ) {
			$error_details = sanitize_text_field( wp_unslash( $_GET['error'] ) );
		}

		$messages = array(
			1 => __( 'Snippet updated.', 'insert-headers-and-footers' ),
			2 => __( 'Snippet created & Saved.', 'insert-headers-and-footers' ),
			3 => __( 'We encountered an error activating your snippet, please check the syntax and try again.', 'insert-headers-and-footers' ),
			4 => __( 'Sorry, you are not allowed to change the status of the snippet.', 'insert-headers-and-footers' ),
			5 => __( 'Snippet updated & executed.', 'insert-headers-and-footers' ),
			6 => __( 'Your changes are saved but your snippet was deactivated due to an error, please check the syntax and try again.', 'insert-headers-and-footers' ),
		);
		$message  = absint( $_GET['message'] );
		// phpcs:enable WordPress.Security.NonceVerification

		if ( ! isset( $messages[ $message ] ) ) {
			return;
		}

		if ( in_array( $message, array( 3, 6 ), true ) && ! empty( $error_details ) ) {
			$error_message = sprintf(
			/* translators: %s: Error message. */
				esc_html__( 'Error message: %s', 'insert-headers-and-footers' ),
				'<code>' . $error_details . '</code>'
			);

			$messages[ $message ] .= ' ' . $error_message;
		}

		if ( $message > 2 && $message < 5 || 6 === $message ) {
			$this->set_error_message( $messages[ $message ] );
		} else {
			$this->set_success_message( $messages[ $message ] );
		}

		if ( in_array( $message, array( 1, 2 ), true ) ) {
			// The first time the user saves a snippet, if they did not activate it, highlight that and save a user meta to avoid the message from being displayed again.
			add_action( 'wpcode_admin_notices', array( $this, 'maybe_show_saved_without_activation_notice' ), 5 );
		}
	}

	/**
	 * The first time a snippet is saved without being activated, show a notice to the user.
	 *
	 * @return void
	 */
	public function maybe_show_saved_without_activation_notice() {
		if ( ! isset( $this->snippet ) ) {
			return;
		}
		$snippet = $this->snippet;
		if ( ! $snippet->is_active() && ! get_user_meta( get_current_user_id(), 'wpcode_snippet_activate_notice_shown', true ) ) {
			update_user_meta( get_current_user_id(), 'wpcode_snippet_activate_notice_shown', true );
			?>
			<div class="notice-warning fade notice is-dismissible">
				<p><?php esc_html_e( 'Don\'t forget to activate your snippet using the toggle next to the "Update" button when you are ready to start using it.', 'insert-headers-and-footers' ); ?></p>
			</div>
			<?php
		}
	}

	/**
	 * If we're editing a snippet, change the active submenu like WP does.
	 *
	 * @param null|string $submenu_file The submenu file.
	 *
	 * @return null|string
	 */
	public function change_current_menu( $submenu_file ) {
		if ( ! isset( $this->snippet_id ) ) {
			// Only change this for when editing a snippet.
			return $submenu_file;
		}

		return 'wpcode';
	}

	/**
	 * Change the admin page title when editing a snippet.
	 *
	 * @param string $title The admin page title to be displayed.
	 * @param string $original_title The page title before adding the WP suffix.
	 *
	 * @return string
	 */
	public function change_page_title( $title, $original_title ) {
		if ( isset( $this->snippet ) ) {
			// If the snippet post is loaded (so we're editing) replace the original page title with our edit snippet one.
			// Translators: this changes the edit page title to show the snippet title.
			return str_replace( $original_title, sprintf( __( 'Edit snippet "%s"', 'insert-headers-and-footers' ), $this->snippet->get_title() ), $title );
		}

		return $title;
	}

	/**
	 * The main page content.
	 *
	 * @return void
	 */
	public function output_content() {
		if ( $this->show_library ) {
			$this->show_snippet_library();
		} else {
			$this->show_snippet_editor();
		}
	}

	/**
	 * Show the snippet editor markup.
	 *
	 * @return void
	 */
	public function show_snippet_editor() {
		$this->field_title();
		$this->field_code_editor();
		$this->field_insert_options();
		$this->field_device_type();
		$this->field_conditional_logic();
		$this->field_code_revisions();
		$this->field_basic_info();
		$this->hidden_fields();
		wp_nonce_field( $this->action, $this->nonce_name );
	}

	/**
	 * Static items to be displayed in the library list when adding a new snippet.
	 *
	 * @param string $default_category The default category slug.
	 *
	 * @return array
	 */
	public function get_static_snippet_items( $default_category ) {
		return array(
			array(
				'library_id'    => 0,
				'title'         => esc_html__( 'Add Your Custom Code (New Snippet)', 'insert-headers-and-footers' ),
				'note'          => esc_html__( 'Choose this blank snippet to start from scratch and paste any custom code or simply write your own.', 'insert-headers-and-footers' ),
				'categories'    => array(
					$default_category,
				),
				'url'           => add_query_arg(
					array(
						'page'   => 'wpcode-snippet-manager',
						'custom' => true,
					),
					$this->admin_url( 'admin.php' )
				),
				'extra_classes' => array( 'wpcode-custom-snippet' ),
				'button_text'   => '+ ' . esc_html__( 'Add Custom Snippet', 'insert-headers-and-footers' ),
			),
			array(
				'library_id'    => 0,
				'title'         => esc_html__( 'Generate snippet using AI', 'insert-headers-and-footers' ),
				'note'          => esc_html__( 'Generate a new snippet specific to your needs leveraging the power of WPCode\'s AI integration.', 'insert-headers-and-footers' ),
				'categories'    => array(
					$default_category,
				),
				'pill_text'     => 'pro',
				'pill_class'    => 'light',
				'url'           => '#',
				'extra_classes' => array( 'wpcode-library-item-ai', 'wpcode-library-item-ai-not-available' ),
				'button_text'   => '+ ' . esc_html__( 'Generate Snippet', 'insert-headers-and-footers' ),
			),
		);
	}

	/**
	 * Show the snippet library markup.
	 *
	 * @return void
	 */
	public function show_snippet_library() {
		$library_data     = wpcode()->library->get_data();
		$categories       = $library_data['categories'];
		$snippets         = $library_data['snippets'];
		$default_category = isset( $categories[0]['slug'] ) ? $categories[0]['slug'] : '';

		$snippets = array_merge(
			$this->get_static_snippet_items( $default_category ),
			$snippets
		);

		?>
		<div class="wpcode-library-tab-navigation">
			<button class="wpcode-library-tab-button wpcode-library-tab-button-active" data-tab="library" role="button">
				<?php esc_html_e( 'Snippet Library', 'insert-headers-and-footers' ); ?>
			</button>
			<button class="wpcode-library-tab-button " data-tab="generator" role="button">
				<?php esc_html_e( 'Snippet Generators', 'insert-headers-and-footers' ); ?>
			</button>
			<button class="wpcode-library-tab-button" data-tab="plugin-snippets" role="button">
				<?php esc_html_e( 'Plugin Snippets', 'insert-headers-and-footers' ); ?>
			</button>
			<button class="wpcode-library-tab-button" data-tab="my-library" role="button">
				<?php esc_html_e( 'My Library', 'insert-headers-and-footers' ); ?>
			</button>
		</div>
		<div class="wpcode-library-tabs">
			<div class="wpcode-library-tab wpcode-library-tab-active" data-tab="library">
				<div class="wpcode-add-snippet-description">
					<?php
					$custom_url = add_query_arg(
						array(
							'page'   => 'wpcode-snippet-manager',
							'custom' => 1,
						),
						admin_url( 'admin.php' )
					);
					printf(
					// Translators: The placeholders add links to create a new custom snippet or the suggest-a-snippet form.
						esc_html__( 'To speed up the process you can select from one of our pre-made library, or you can start with a %1$sblank snippet%2$s and %1$screate your own%2$s. Have a suggestion for new snippet? %3$sWeâ€™d love to hear it!%4$s', 'insert-headers-and-footers' ),
						'<a href="' . esc_url( $custom_url ) . '">',
						'</a>',
						'<a href="' . esc_url( wpcode_utm_url( 'https://wpcode.com/suggestions/?wpf78_8=Snippet Request', 'add-new', 'suggestions' ) ) . '" target="_blank">',
						'</a>'
					);
					?>
				</div>
				<?php $this->get_library_markup( $categories, $snippets ); ?>
			</div>
			<div class="wpcode-library-tab" data-tab="generator">
				<?php $categories = wpcode()->generator()->get_categories(); ?>
				<div class="wpcode-add-snippet-description">
					<?php esc_html_e( 'Create custom snippets for your website easily by filling out a form. You can also use this form to update your snippets later, without having to write or edit any code.', 'insert-headers-and-footers' ); ?>
				</div>
				<div class="wpcode-items-metabox wpcode-metabox">
					<?php $this->get_items_list_sidebar( $categories, __( 'All Generators', 'insert-headers-and-footers' ), __( 'Search Generators', 'insert-headers-and-footers' ) ); ?>
					<div class="wpcode-items-list">
						<ul class="wpcode-items-list-category">
							<?php
							$generators = wpcode()->generator()->get_all_generators();
							foreach ( $generators as $generator ) {
								$url      = add_query_arg(
									array(
										'page'      => 'wpcode-generator',
										'generator' => $generator->get_name(),
									),
									admin_url( 'admin.php' )
								);
								$button_1 = array(
									'tag'  => 'a',
									'url'  => $url,
									'text' => __( 'Generate', 'insert-headers-and-footers' ),
								);
								$this->get_list_item( $generator->get_name(), $generator->get_title(), $generator->get_description(), $button_1, array(), $generator->get_categories() );
							}
							?>
						</ul>
					</div>
				</div>
			</div>
			<div class="wpcode-library-tab" data-tab="plugin-snippets">
				<div class="wpcode-add-snippet-description">
					<?php esc_html_e( 'Easily add code snippets that extend other plugins on your site from a library maintained by the plugin authors.', 'insert-headers-and-footers' ); ?>
				</div>
				<?php
				$username_library    = wpcode()->library->get_username_snippets();
				$username_categories = $username_library['categories'];
				$username_snippets   = $username_library['snippets'];
				if ( empty( $username_snippets ) ) {
					$library_plugins = WPCode_Suggested_Plugins::get_library_plugins();
					?>
					<div class="wpcode-library-suggest-plugins wpcode-metabox">
						<p class="wpcode-suggestions-title"><?php esc_html_e( 'You don\'t have any plugins installed that extend the WPCode library, install any of the plugins below to start expanding the WPCode snippet library:', 'insert-headers-and-footers' ); ?></p>
						<div class="wpcode-plugin-suggestions">
							<?php foreach ( $library_plugins as $slug => $plugin ) { ?>
								<div class="wpcode-plugin-suggestion-plugin">
									<div class="wpcode-plugin-suggestion-plugin-icon">
										<img width="72" src="<?php echo esc_url( WPCODE_PLUGIN_URL . 'admin/images/' . $plugin['icon'] ); // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?>" alt="<?php echo esc_attr( $plugin['name'] ); ?>"/>
									</div>
									<div class="wpcode-plugin-suggesion-plugin-text">
										<h3><?php echo esc_html( $plugin['name'] ); ?></h3>
										<p><?php echo esc_html( $plugin['description'] ); ?></p>
										<button type=" button" class="wpcode-button wpcode-button-secondary wpcode-button-install-plugin" data-slug="<?php echo esc_attr( $slug ); ?>"><?php esc_html_e( 'Install Plugin', 'insert-headers-and-footers' ); ?></button>
									</div>
								</div>
							<?php } ?>
						</div>
					</div>
					<?php
				} else {
					$this->get_library_markup( $username_categories, $username_snippets );
				}
				?>
			</div>
			<div class="wpcode-library-tab" data-tab="my-library">
				<?php $this->get_my_library_markup(); ?>
			</div>
		</div>
		<?php
		$this->library_preview_modal_content();
		$this->library_connect_banner_template();
	}

	/**
	 * Output the snippet title field.
	 *
	 * @return void
	 */
	public function field_title() {
		$value = isset( $this->snippet ) ? $this->snippet->get_title() : '';
		?>
		<div class="wpcode-input-title">
			<input type="text" class="widefat wpcode-input-text" value="<?php echo esc_attr( $value ); ?>" name="wpcode_snippet_title" placeholder="<?php esc_attr_e( 'Add title for snippet', 'insert-headers-and-footers' ); ?>"/>
		</div>
		<?php
	}

	/**
	 * The main code editor field.
	 *
	 * @return void
	 */
	public function field_code_editor() {
		$value = isset( $this->snippet ) ? $this->snippet->get_code() : '';
		?>
		<div class="wpcode-code-textarea" data-code-type="<?php echo esc_attr( $this->code_type ); ?>">
			<div class="wpcode-flex">
				<div class="wpcode-column">
					<h2>
						<label for="wpcode_snippet_code"><?php esc_html_e( 'Code Preview', 'insert-headers-and-footers' ); ?></label>
					</h2>
				</div>
				<div class="wpcode-column">
					<?php $this->ai_generate_button(); ?>
					<?php wpcode()->smart_tags->smart_tags_picker( 'wpcode_snippet_code' ); ?>
					<?php $this->field_code_type(); ?>
				</div>
			</div>
			<textarea name="wpcode_snippet_code" id="wpcode_snippet_code" class="widefat" rows="8"><?php echo esc_textarea( $value ); ?></textarea>
			<?php
			wp_editor(
				$value,
				'wpcode_snippet_text',
				array(
					'wpautop'        => false,
					'default_editor' => 'tinymce',
					'tinymce'        => array(
						'height' => 330,
					),
				)
			);
			?>
		</div>
		<div class="wpcode-resize-handle"></div>
		<?php
	}

	/**
	 * Snippet type field.
	 *
	 * @return void
	 */
	public function field_code_type() {
		$snippet_types = wpcode()->execute->get_options();
		?>
		<div class="wpcode-input-select" id="wpcode_snippet_type-holder">
			<label for="wpcode_snippet_type"><?php esc_html_e( 'Code Type', 'insert-headers-and-footers' ); ?></label>
			<select name="wpcode_snippet_type" id="wpcode_snippet_type">
				<?php
				foreach ( $snippet_types as $key => $label ) {
					$class = wpcode()->execute->is_type_pro( $key ) ? 'wpcode-pro' : '';
					?>
					<option value="<?php echo esc_attr( $key ); ?>" <?php selected( $this->code_type, $key ); ?> class="<?php echo esc_attr( $class ); ?>">
						<?php echo esc_html( $label ); ?>
					</option>
				<?php } ?>
			</select>
		</div>
		<div class="wpcode-code-type-picker-backdrop" id="wpcode-code-type-picker-backdrop"></div>
		<div class="wpcode-code-type-picker">
			<div class="wpcode-code-type-picker-header">
				<h2><?php esc_html_e( 'Select the code type for your snippet:', 'insert-headers-and-footers' ); ?></h2>
				<button type="button" class="wpcode-button-just-icon" id="wpcode-close-code-type-picker">
					<?php wpcode_icon( 'close', 19, 19 ); ?>
				</button>
			</div>
			<div class="wpcode-code-types-list" id="wpcode-code-type-list">
				<?php
				$code_types = wpcode()->execute->get_code_types();
				foreach ( $code_types as $key => $code_type ) {
					$class = 'wpcode-code-type';
					if ( $key === $this->code_type ) {
						$class .= ' wpcode-code-type-selected';
					}
					?>
					<div class="<?php echo esc_attr( $class ); ?>" data-code-type="<?php echo esc_attr( $key ); ?>">
						<div class="wpcode-code-type-image">

						</div>
						<h3><?php echo esc_html( $code_type['label'] ); ?></h3>
						<p class="wpcode-code-type-desc">
							<?php echo wp_kses_post( $code_type['description'] ); ?>
						</p>
					</div>
					<?php
				}
				?>
			</div>
		</div>
		<?php
	}

	/**
	 * The insert options - using a metabox-style layout to output the options.
	 *
	 * @return void
	 */
	public function field_insert_options() {
		$title           = __( 'Insertion', 'insert-headers-and-footers' );
		$insert_toggle   = $this->get_input_insert_toggle();
		$shortcode_field = $this->get_input_shortcode();
		// Build the field markup here.
		ob_start();
		?>
		<p><?php esc_html_e( 'Choose "Auto Insert" if you want the snippet to be automatically executed in one of the locations available. In "Shortcode" mode, the snippet will only be executed where the shortcode is inserted.', 'insert-headers-and-footers' ); ?></p>
		<div class="wpcode-separator"></div>
		<div class="wpcode-metabox-form">
			<?php $this->metabox_row( __( 'Insert Method', 'insert-headers-and-footers' ), $insert_toggle ); ?>
			<div class="wpcode-auto-insert-form-fields" data-show-if-id="#wpcode_auto_insert" data-show-if-value="1">
				<?php $this->metabox_row( __( 'Location', 'insert-headers-and-footers' ), $this->get_selected_auto_insert_location() ); ?>
			</div>
			<div class="wpcode-shortcode-form-fields" data-show-if-id="#wpcode_auto_insert" data-show-if-value="0">
				<?php
				$this->metabox_row( __( 'Shortcode', 'insert-headers-and-footers' ), $shortcode_field, 'wpcode_shortcode' );
				$this->get_input_row_custom_shortcode();
				$this->get_input_row_shortcode_attributes();
				$this->get_shortcode_locations();
				?>
			</div>
		</div>
		<?php $this->get_input_auto_insert_options(); ?>
		<div class="wpcode-metabox-form">
			<?php $this->get_input_row_as_file(); ?>
			<?php $this->get_input_row_compress_output(); ?>
			<?php $this->get_input_row_schedule(); ?>
		</div>
		<?php
		$content = ob_get_clean();

		$this->metabox(
			$title,
			$content,
			__( 'Your snippet can be either automatically executed or only used as a shortcode. When using the "Auto Insert" option you can choose the location where your snippet will be placed automatically.', 'insert-headers-and-footers' )
		);
	}

	/**
	 * Get all the descriptions for the insert number input with conditional rules.
	 *
	 * @return string
	 */
	public function get_insert_number_descriptions() {
		$descriptions = array(
			'before_paragraph'    => __( 'before paragraph number', 'insert-headers-and-footers' ),
			'after_paragraph'     => __( 'after paragraph number', 'insert-headers-and-footers' ),
			'archive_before_post' => __( 'before post number', 'insert-headers-and-footers' ),
			'archive_after_post'  => __( 'after post number', 'insert-headers-and-footers' ),
			'after_words'         => __( 'minimum number of words', 'insert-headers-and-footers' ),
			'every_words'         => __( 'number of words', 'insert-headers-and-footers' ),
		);
		$markup       = '';
		foreach ( $descriptions as $value => $description ) {
			$markup .= sprintf( '<div class="wpcode-location-extra-input-description" data-show-if-id="[name=\'wpcode_auto_insert_location\']" data-show-if-value="%1$s" style="display:none;">%2$s</div>', $value, esc_html( $description ) );
		}

		return $markup;
	}

	/**
	 * Get the input insert toggle markup.
	 *
	 * @return string
	 */
	public function get_input_insert_toggle() {
		ob_start();
		?>
		<div class="wpcode-button-toggle">
			<button class="wpcode-button wpcode-button-large wpcode-button-secondary <?php echo esc_attr( $this->get_active_toggle_class( 1 ) ); ?>" type="button" value="1">
				<?php wpcode_icon( 'auto', 18, 23 ); ?>
				<span><?php esc_html_e( 'Auto&nbsp;Insert', 'insert-headers-and-footers' ); ?></span>
			</button>
			<button class="wpcode-button wpcode-button-large wpcode-button-secondary <?php echo esc_attr( $this->get_active_toggle_class( 0 ) ); ?>" type="button" value="0">
				<?php wpcode_icon( 'shortcode', 24, 17 ); ?>
				<span><?php esc_html_e( 'Shortcode', 'insert-headers-and-footers' ); ?></span>
			</button>
			<input type="hidden" name="wpcode_auto_insert" class="wpcode-button-toggle-input" id="wpcode_auto_insert" value="<?php echo absint( $this->get_auto_insert_value() ); ?>"/>
		</div>
		<?php
		return ob_get_clean();
	}

	/**
	 * Get the active toggle class based on the auto-insert value.
	 *
	 * @param string|int $value The value of the button.
	 *
	 * @return string
	 */
	private function get_active_toggle_class( $value ) {
		$current_value = $this->get_auto_insert_value();
		if ( absint( $value ) !== $current_value ) {
			return 'wpcode-button-secondary-inactive';
		}

		return '';
	}

	/**
	 * Get the auto-insert value consistently.
	 *
	 * @return int
	 */
	private function get_auto_insert_value() {
		return isset( $this->snippet ) ? $this->snippet->get_auto_insert() : 1;
	}

	/**
	 * Get the markup for the conditional logic picker.
	 *
	 * @return void
	 */
	public function get_conditional_logic_dropdown() {
		$options = wpcode()->conditional_logic->get_all_admin_options();

		$categories = array(
			array(
				'slug' => 'who',
				'name' => __( 'Who (visitor)', 'insert-headers-and-footers' ),
			),
			array(
				'slug' => 'where',
				'name' => __( 'Where (page)', 'insert-headers-and-footers' ),
			),
			array(
				'slug' => 'ecommerce',
				'name' => __( 'eCommerce', 'insert-headers-and-footers' ),
			),
			array(
				'slug' => 'advanced',
				'name' => __( 'Advanced', 'insert-headers-and-footers' ),
			),
		);

		?>
		<div class="wpcode-items-metabox wpcode-items-metabox-inside wpcode-hidden" id="wpcode_cl_picker">
			<?php
			$this->get_items_list_sidebar(
				$categories,
				'',
				__( 'Search Options', 'insert-headers-and-footers' ),
				'*'
			);
			?>
			<div class="wpcode-items-list">
				<ul class="wpcode-items-list-category">
					<?php
					foreach ( $options as $opt_group ) {
						foreach ( $opt_group['options'] as $key => $option ) {
							$style_class = 'wpcode-list-item wpcode-list-item-location';
							if ( ! empty( $option['upgrade'] ) ) {
								$style_class .= ' wpcode-list-item-disabled';
							}
							?>
							<li class="<?php echo esc_attr( $style_class ); ?>" data-id="<?php echo esc_attr( $key ); ?>" data-categories='<?php echo wp_json_encode( array( $opt_group['category'] ) ); ?>'>
								<label>
										<span class="wpcode-list-item-title" title="<?php echo esc_attr( $option['label'] ); ?>" data-selected-label="<?php esc_attr_e( 'Selected', 'insert-headers-and-footers' ); ?>">
											<span class="wpcode-keywords">
											</span>
											<?php echo esc_html( $option['label'] ); ?>
										</span>
									<span class="wpcode-list-item-actions">
											<span class="wpcode-list-item-description">
											<?php echo esc_html( $option['description'] ); ?>
											</span>
										</span>
									<input type="radio" class="wpcode-radio-cl-option" name="wpcode-radio-cl-option" value="<?php echo esc_attr( $key ); ?>" <?php checked( $key, '' ); ?> <?php disabled( isset( $option['disabled'] ) && $option['disabled'], true, false ); ?> />
								</label>
							</li>
						<?php } ?>
					<?php } ?>
				</ul>
			</div>
		</div>
		<?php
	}

	/**
	 * Renders the dropdown with the auto-insert options.
	 * This uses the auto-insert class that loads all the available types.
	 * Each type has some specific options.
	 *
	 * @return void
	 * @see WPCode_Auto_Insert
	 */
	public function get_input_auto_insert_options() {

		$code_type        = $this->code_type;
		$current_location = $this->get_current_snippet_location();

		$locations_by_category = wpcode()->auto_insert->get_type_categories();
		// Let's find the active category from the selected location.
		$active_category = 'global';
		foreach ( $locations_by_category as $category_key => $category_data ) {
			/**
			 * @var WPCode_Auto_Insert_Type $type
			 */
			foreach ( $category_data['types'] as $type ) {
				$locations = $type->get_locations();
				if ( array_key_exists( $current_location, $locations ) ) {
					$active_category = $category_key;
					break 2;
				}
			}
		}

		?>
		<div class="wpcode-items-metabox wpcode-items-metabox-inside" id="wpcode_auto_insert_location">
			<?php
			$this->get_items_list_sidebar(
				wpcode()->auto_insert->get_type_categories_for_sidebar(),
				'',
				__( 'Search locations', 'insert-headers-and-footers' ),
				$active_category
			);
			?>
			<div class="wpcode-items-list">
				<ul class="wpcode-items-list-category">
					<?php
					$index          = 0;
					$selected_label = __( 'Selected', 'insert-headers-and-footers' );
					foreach ( $locations_by_category as $category_key => $category_data ) {
						$style = '';
						if ( $category_key !== $active_category ) {
							$style = 'display:none;';
						}
						foreach ( $category_data['types'] as $type ) {
							$locations  = $type->get_locations();
							$label_pill = '';
							if ( ! empty( $type->label_pill ) ) {
								$label_pill = $type->label_pill;
							}
							?>
							<li class="wpcode-list-item wpcode-list-item-separator" data-index="<?php echo absint( $index ); ?>" data-categories='<?php echo wp_json_encode( array( $category_key ) ); ?>' style="<?php echo esc_attr( $style ); ?>" data-code-type="<?php echo esc_attr( $type->code_type ); ?>">
								<?php echo esc_html( $type->get_label() ); ?>
								<?php if ( ! empty( $label_pill ) ) : ?>
									<span class="wpcode-list-item-pill wpcode-list-item-pill-light"><?php echo esc_html( $label_pill ); ?></span>
								<?php endif; ?>
							</li>
							<?php
							++$index;

							foreach ( $locations as $location_slug => $location ) {
								$description    = '';
								$style_class    = 'wpcode-list-item wpcode-list-item-location';
								$label          = $location;
								$extra_data     = '';
								$input_disabled = false;
								$tabindex       = 'tabindex="0"';
								if ( isset( $location['label'] ) ) {
									$label       = $location['label'];
									$description = $location['description'];
								}
								if ( 'all' !== $type->code_type && $type->code_type !== $code_type ) {
									$style_class .= ' wpcode-list-item-disabled';
									$tabindex     = '';

									$input_disabled = true;
								}
								if ( ! empty( $type->upgrade_title ) ) {
									$extra_data = ' data-upgrade-title="' . esc_attr( $type->upgrade_title ) . '"';
								}
								if ( ! empty( $type->upgrade_text ) ) {
									$extra_data .= ' data-upgrade-text="' . esc_attr( $type->upgrade_text ) . '"';
								}
								if ( ! empty( $type->upgrade_link ) ) {
									$extra_data .= ' data-upgrade-link="' . esc_attr( $type->upgrade_link ) . '"';
								}
								if ( ! empty( $type->upgrade_button ) ) {
									$extra_data .= ' data-upgrade-button="' . esc_attr( $type->upgrade_button ) . '"';
								}
								if ( $location_slug === $current_location ) {
									$style_class .= ' wpcode-list-item-selected';
								}
								?>
								<li class="<?php echo esc_attr( $style_class ); ?>" data-index="<?php echo absint( $index ); ?>" data-id="<?php echo esc_attr( $location_slug ); ?>" data-categories='<?php echo wp_json_encode( array( $category_key ) ); ?>' data-code-type="<?php echo esc_attr( $type->code_type ); ?>" style="<?php echo esc_attr( $style ); ?>" <?php echo $tabindex; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
									<label <?php echo $extra_data; // phpcs:disable WordPress.Security.EscapeOutput.OutputNotEscaped ?>>
										<span class="wpcode-list-item-title" title="<?php echo esc_attr( $label ); ?>" data-selected-label="<?php echo esc_attr( $selected_label ); ?>">
											<span class="wpcode-keywords">
												<?php
												// Output the type label to improve search results without displaying the text to the user.
												echo esc_html( $type->label );
												?>
											</span>
											<?php echo esc_html( $label ); ?>
										</span>
										<span class="wpcode-list-item-actions">
											<span class="wpcode-list-item-description">
											<?php echo esc_html( $description ); ?>
											</span>
										</span>
										<input type="radio" name="wpcode_auto_insert_location" value="<?php echo esc_attr( $location_slug ); ?>" <?php checked( $location_slug, $current_location ); ?> <?php disabled( $input_disabled ); ?> />
									</label>
								</li>
								<?php
								++$index;
							}
						}
					}
					?>
				</ul>
			</div>
		</div>
		<?php
	}

	/**
	 * Get the selected auto insert location.
	 *
	 * @return string
	 */
	public function get_selected_auto_insert_location() {
		$current_location = $this->get_current_snippet_location();

		if ( empty( $current_location ) ) {
			$current_location = 'site_wide_header';
		}

		$location_extra = isset( $this->snippet ) ? $this->snippet->get_location_extra() : '';

		// Show a faux select box with the current location.
		$location_label = wpcode()->auto_insert->get_location_label( $current_location );

		$markup = '<input type="hidden" name="wpcode_auto_insert_location_extra" id="wpcode_auto_insert_location_extra" value="' . esc_attr( $location_extra ) . '" />';

		$markup .= '<div class="wpcode-faux-select" id="wpcode-selected-location-display" tabindex="0"><span>' . esc_html( $location_label ) . '</span></div>';
		$markup .= '<div class="wpcode-extra-location-fields">';
		$markup .= '<div class="wpcode-extra-location-input" data-show-if-id="[name=\'wpcode_auto_insert_location\']" data-show-if-value="' . implode( ',', wpcode_get_auto_insert_locations_with_number() ) . '">';
		$markup .= $this->get_insert_number_descriptions();
		$markup .= $this->get_input_number(
			'wpcode_auto_insert_number',
			$this->get_auto_insert_number_value(),
			'',
			1
		);
		$markup .= '</div>';

		/**
		 * Filter the markup for the location display inputs.
		 * This is used to add the number input for auto insert locations.
		 *
		 * @param string               $markup The markup to display.
		 * @param WPCode_Snippet|false $snippet The snippet object.
		 * @param WPCode_Admin_Page    $this The admin page object.
		 */
		$markup = apply_filters( 'wpcode_location_display_inputs', $markup, isset( $this->snippet ) ? $this->snippet : false, $this );

		$markup .= '</div>';// End wpcode-extra-location-fields.

		return $markup;
	}

	/**
	 * Grab the current snippet location.
	 *
	 * @return mixed|string
	 */
	public function get_current_snippet_location() {
		$current_location = 'site_wide_header';
		if ( ! isset( $this->snippet_id ) ) {
			return $current_location;
		}

		return $this->snippet->get_location();
	}

	/**
	 * Get the shortcode field.
	 *
	 * @return string
	 */
	public function get_input_shortcode() {
		$shortcode = __( 'Please save the snippet first', 'insert-headers-and-footers' );
		if ( isset( $this->snippet_id ) ) {
			$shortcode  = sprintf( '[wpcode id="%d"]', $this->snippet_id );
			$attributes = $this->snippet->get_shortcode_attributes();
			if ( ! empty( $attributes ) ) {
				$attributes_string = implode( '="" ', $attributes );
				$shortcode         = str_replace( ']', ' ' . $attributes_string . '=""]', $shortcode );
			}
		}
		$input  = sprintf(
			'<input type="text" value=\'%1$s\' id="wpcode-shortcode" class="wpcode-input-text" readonly />',
			$shortcode
		);
		$button = wpcode_get_copy_target_button( 'wpcode-shortcode' );

		return sprintf( '<div class="wpcode-input-with-button">%1$s %2$s</div>', $input, $button );
	}

	/**
	 * Generic input number function.
	 *
	 * @param string     $id The id of the input field.
	 * @param string|int $value The value of the input.
	 * @param string     $description The description to display under the field.
	 * @param int        $min The minimum value.
	 *
	 * @return string
	 */
	public function get_input_number( $id, $value = '', $description = '', $min = 0 ) {
		$input = '<input type="number" class="wpcode-input-number" id="' . esc_attr( $id ) . '" name="' . esc_attr( $id ) . '" value="' . esc_attr( $value ) . '" min="' . absint( $min ) . '" />';
		if ( ! empty( $description ) ) {
			$input .= '<p>' . $description . '</p>';
		}

		return $input;
	}

	/**
	 * Get a simple textarea field.
	 *
	 * @param string $id The id of the input field.
	 * @param string $value The value of the input.
	 * @param string $description The description to display under the field.
	 *
	 * @return string
	 */
	public function get_input_textarea( $id, $value = '', $description = '' ) {
		ob_start();
		echo '<div class="wpcode-input-textarea">';
		wp_editor(
			wp_kses_post( $value ),
			$id,
			array(
				'media_buttons' => false,
				'textarea_rows' => 3,
				'teeny'         => true,
				'quicktags'     => false,
				'tinymce'       => array(
					'toolbar1' => 'bold,italic,underline,bullist,numlist,link',
					'toolbar2' => '',
					'toolbar3' => '',
				),
			)
		);
		echo '</div>';

		if ( ! empty( $description ) ) {
			echo '<p>' . esc_html( $description ) . '</p>';
		}

		return ob_get_clean();
	}

	/**
	 * Get the auto-insert value consistently.
	 *
	 * @return int
	 */
	private function get_auto_insert_number_value() {
		return isset( $this->snippet ) ? $this->snippet->get_auto_insert_number() : 1;
	}

	/**
	 * Markup for the basic info metabox.
	 *
	 * @return void
	 */
	public function field_basic_info() {
		$priority = isset( $this->snippet ) ? $this->snippet->get_priority() : 10;
		$note     = isset( $this->snippet ) ? $this->snippet->get_note() : '';

		ob_start();
		$this->metabox_row( __( 'Tag', 'insert-headers-and-footers' ), $this->get_input_tag_picker() );
		$this->metabox_row( __( 'Priority', 'insert-headers-and-footers' ), $this->get_input_number( 'wpcode_priority', $priority ), 'wpcode_priority' );
		$this->metabox_row( __( 'Note', 'insert-headers-and-footers' ), $this->get_input_textarea( 'wpcode_note', $note ), 'wpcode_note' );

		$this->metabox(
			__( 'Basic info', 'insert-headers-and-footers' ),
			ob_get_clean(),
			__( 'Tags: Use tags to make it easier to group similar snippets together. <br />Priority: A lower priority will result in the snippet being executed before others with a higher priority. <br />Note: Add a private note related to this snippet.', 'insert-headers-and-footers' )
		);
	}

	/**
	 * The conditional logic field.
	 *
	 * @return void
	 */
	public function field_conditional_logic() {
		$enable_logic = isset( $this->snippet ) && $this->snippet->conditional_rules_enabled();

		$content = '<p>' . __( 'Using conditional logic you can limit the pages where you want the snippet to be auto-inserted.', 'insert-headers-and-footers' ) . '</p>';

		$content .= '<div class="wpcode-separator"></div>';
		ob_start();
		$this->metabox_row( __( 'Enable Logic', 'insert-headers-and-footers' ), $this->get_checkbox_toggle( $enable_logic, 'wpcode_conditional_logic_enable' ), 'wpcode_conditional_logic_enable' );
		$this->metabox_row( __( 'Conditions', 'insert-headers-and-footers' ), $this->get_conditional_logic_input(), 'wpcode_contional_logic_conditions', '#wpcode_conditional_logic_enable', '1' );

		$content .= ob_get_clean();

		$this->metabox(
			__( 'Smart Conditional Logic', 'insert-headers-and-footers' ),
			$content,
			__( 'Enable logic to add rules and limit where your snippets are inserted automatically. Use multiple groups for different sets of rules.', 'insert-headers-and-footers' )
		);

		$this->get_conditional_logic_dropdown();
	}

	/**
	 * Get the tag picker markup.
	 *
	 * @return string
	 */
	public function get_input_tag_picker() {
		$tags        = isset( $this->snippet ) ? $this->snippet->get_tags() : array();
		$tags_string = isset( $this->snippet ) ? implode( ',', $this->snippet->get_tags() ) : '';
		$markup      = '<select multiple="multiple" class="wpcode-tags-picker" data-target="#wpcode-tags">';
		foreach ( $tags as $tag ) {
			$markup .= '<option value="' . esc_attr( $tag ) . '" selected="selected">' . esc_html( $tag ) . '</option>';
		}
		$markup .= '</select>';
		$markup .= '<input type="hidden" name="wpcode_tags" id="wpcode-tags" value="' . esc_attr( $tags_string ) . '" />';

		return $markup;
	}

	/**
	 * Get the link to the generator page for the current snippet.
	 *
	 * @return string
	 */
	public function get_input_generator() {
		$generator = $this->snippet->get_generator();

		return sprintf(
			'<a href="%1$s" class="wpcode-button wpcode-button-secondary">%2$s</a>',
			add_query_arg(
				array(
					'generator' => $generator,
					'page'      => 'wpcode-generator',
					'snippet'   => $this->snippet->get_id(),
				),
				admin_url( 'admin.php' )
			),
			esc_html__( 'Update Generated Snippet', 'insert-headers-and-footers' )
		);
	}

	/**
	 * The hidden fields needed to identify the form submission.
	 *
	 * @return void
	 */
	public function hidden_fields() {
		if ( ! isset( $this->snippet_id ) ) {
			return;
		}
		?>
		<input type="hidden" name="id" value="<?php echo esc_attr( $this->snippet_id ); ?>"/>
		<?php
	}

	/**
	 * Output of the page wrapped in a form.
	 *
	 * @return void
	 */
	public function output() {
		if ( $this->show_library ) {
			// Don't wrap with form when showing library.
			parent::output();

			return;
		}
		?>
		<form action="<?php echo esc_url( $this->get_page_action_url() ); ?>" method="post" id="wpcode-snippet-manager-form" autocomplete="off">
			<?php parent::output(); ?>
		</form>
		<?php
	}

	/**
	 * The bottom of the header part.
	 *
	 * @return void
	 */
	public function output_header_bottom() {
		?>
		<div class="wpcode-column">
			<h1><?php echo esc_html( $this->header_title ); ?></h1>
		</div>
		<?php
		// If we're displaying the libray screen, return early and hide right-side buttons.
		if ( $this->show_library ) {
			return;
		}
		?>
		<div class="wpcode-column">
			<?php $this->header_buttons(); ?>
		</div>
		<?php
	}

	/**
	 * Add header buttons on the right side of the header.
	 *
	 * @return void
	 */
	public function header_buttons() {
		$active = isset( $this->snippet ) && $this->snippet->is_active();
		$this->save_to_library_button();
		?>
		<span class="wpcode-status-toggle" data-show-if-id="[name='wpcode_auto_insert_location']" data-hide-if-value="on_demand">
		<label class="wpcode-status-text" for="wpcode_active">
			<span class="screen-reader-text">
				<?php esc_html_e( 'Snippet Status:', 'insert-headers-and-footers' ); ?>
			</span>
			<span data-show-if-id="#wpcode_active" data-show-if-value="1" style="display: none">
				<?php esc_html_e( 'Active', 'insert-headers-and-footers' ); ?>
			</span>
			<span data-show-if-id="#wpcode_active" data-show-if-value="0" style="display:none;">
				<?php esc_html_e( 'Inactive', 'insert-headers-and-footers' ); ?>
			</span>
		</label>
		<?php echo $this->get_checkbox_toggle( $active, 'wpcode_active' ); ?>
		</span>
		<button
				class="wpcode-button wpcode-button-secondary wpcode-button-execute-now"
				id="wpcode_execute_now"
				data-show-if-id="[name='wpcode_auto_insert_location']"
				data-show-if-value="on_demand"
				type="submit"
				name="execute_now"
				value="execute_now" style="display:none;">
			<?php esc_html_e( 'Execute Snippet Now', 'insert-headers-and-footers' ); ?>
		</button>
		<?php
		if ( isset( $this->snippet ) && $this->snippet->is_generated() ) {
			echo $this->get_input_generator();
		}

		// Check if snippet has updates and add sync button if needed.
		$update_info = $this->snippet_has_update();
		$has_auth    = wpcode()->library_auth->has_auth() ? 1 : 0;
		if ( $update_info ) {
			$current_url     = add_query_arg(
				array(
					'page'       => 'wpcode-snippet-manager',
					'snippet_id' => $this->snippet->get_id(),
					'sync'       => 'true',
				),
				admin_url( 'admin.php' )
			);
			$current_version = isset( $update_info['current_version'] ) ? $update_info['current_version'] : '';
			$latest_version  = isset( $update_info['latest_version'] ) ? $update_info['latest_version'] : '';
			?>
			<a href="<?php echo esc_url( $current_url ); ?>" data-has-auth="<?php echo $has_auth; ?>" data-current-version="<?php echo esc_attr( $current_version ); ?>" data-latest-version="<?php echo esc_attr( $latest_version ); ?>" class="wpcode-sync-button sync-snippet">
				<?php esc_html_e( 'Update Available', 'insert-headers-and-footers' ); ?>
			</a>
			<?php
		}

		do_action( 'wpcode_header_buttons', $this->snippet );
		$this->update_button();
	}

	/**
	 * The Update snippet button.
	 *
	 * @return void
	 */
	public function update_button() {
		?>
		<button class="wpcode-button" type="submit" value="publish" name="button"><?php echo esc_html( $this->publish_button_text ); ?></button>
		<?php
	}

	/**
	 * Markup for the save to library button.
	 *
	 * @return void
	 */
	public function save_to_library_button() {
		?>
		<button
				class="wpcode-button wpcode-button-text wpcode-button-save-to-library"
				id="wpcode_save_to_library"
				type="button">
			<?php
			wpcode_icon( 'cloud', 16, 12 );
			esc_html_e( 'Save to Library', 'insert-headers-and-footers' );
			?>
		</button>
		<?php
	}

	/**
	 * Handle a form submit here.
	 *
	 * @return void
	 */
	public function submit_listener() {
		if ( ! isset( $_REQUEST[ $this->nonce_name ] ) || ! wp_verify_nonce( sanitize_key( $_REQUEST[ $this->nonce_name ] ), $this->action ) ) {
			// Nonce is missing, so we're not even going to try.
			return;
		}
		if ( ! $this->can_edit ) {
			return;
		}
		$code_type    = isset( $_POST['wpcode_snippet_type'] ) ? sanitize_text_field( wp_unslash( $_POST['wpcode_snippet_type'] ) ) : 'html';
		$snippet_code = isset( $_POST['wpcode_snippet_code'] ) ? $_POST['wpcode_snippet_code'] : '';  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized

		if ( WPCode_Snippet_Execute::is_code_not_allowed( $snippet_code ) ) {
			$title = esc_html__( 'Restricted Code Detected', 'insert-headers-and-footers' );
			wp_die(
				'<h2>' . $title . '</h2>' .
				sprintf(
				// Translators: %1$s is the opening link tag, %2$s is the closing link tag.
					esc_html__( 'For your protection, we blocked the addition of certain types of code that could compromise your website\'s security. If you believe this is in error or need assistance, please %1$scontact our support team%2$s.', 'insert-headers-and-footers' ),
					'<a href="' . wpcode_utm_url( 'https://wpcode.com/contact', 'error', 'restricted-code' ) . '" target="_blank" rel="noopener noreferrer">',
					'</a>'
				),
				$title
			);
		}

		if ( 'text' === $code_type ) {
			$snippet_code = wpautop( $snippet_code );
		}

		$tags = array();

		if ( isset( $_POST['wpcode_tags'] ) ) {
			$tags = trim( sanitize_text_field( wp_unslash( $_POST['wpcode_tags'] ) ) );
			if ( ! empty( $tags ) ) {
				$tags = explode( ',', $tags );
			}
		}

		if ( 'php' === $code_type ) {
			$snippet_code = preg_replace( '|^\s*<\?(php)?|', '', $snippet_code );
			// Let's also replace the closing php tag if any.
			$snippet_code = preg_replace( '|\?>\s*$|', '', $snippet_code );
		}

		if ( 'js' === $code_type && apply_filters( 'wpcode_strip_script_tags_for_js', true ) ) {
			$snippet_code = preg_replace( '|^\s*<script[^>]*>|', '', $snippet_code );
			$snippet_code = preg_replace( '|</(script)>\s*$|', '', $snippet_code );
		}

		$rules = isset( $_POST['wpcode_cl_rules'] ) ? json_decode( sanitize_textarea_field( wp_unslash( $_POST['wpcode_cl_rules'] ) ), true ) : array();

		if ( isset( $_POST['wpcode_shortcode_attributes'] ) ) {
			$attributes = array_map( 'sanitize_key', wp_unslash( $_POST['wpcode_shortcode_attributes'] ) );
		} else {
			$attributes = array();
		}
		$active      = isset( $_REQUEST['wpcode_active'] );
		$location    = isset( $_POST['wpcode_auto_insert_location'] ) ? sanitize_text_field( wp_unslash( $_POST['wpcode_auto_insert_location'] ) ) : '';
		$execute_now = isset( $_POST['execute_now'] ) && 'execute_now' === $_POST['execute_now'] && 'on_demand' === $location;

		if ( $execute_now ) {
			// If we are executing now we should never save the snippet as active.
			$active = false;
		}
		$snippet_id        = empty( $_REQUEST['id'] ) ? 0 : absint( $_REQUEST['id'] );
		$previous_snippet  = wpcode_get_snippet( $snippet_id );
		$previously_active = $previous_snippet->is_active();

		$snippet = wpcode_get_snippet(
			array(
				'id'                   => $snippet_id,
				'title'                => isset( $_POST['wpcode_snippet_title'] ) ? sanitize_text_field( wp_unslash( $_POST['wpcode_snippet_title'] ) ) : '',
				'code'                 => $snippet_code,
				'active'               => $active,
				'code_type'            => $code_type,
				'location'             => $location,
				'insert_number'        => isset( $_POST['wpcode_auto_insert_number'] ) ? absint( $_POST['wpcode_auto_insert_number'] ) : 0,
				'auto_insert'          => isset( $_POST['wpcode_auto_insert'] ) ? absint( $_POST['wpcode_auto_insert'] ) : 0,
				'tags'                 => $tags,
				'use_rules'            => isset( $_POST['wpcode_conditional_logic_enable'] ),
				'rules'                => $rules,
				'priority'             => isset( $_POST['wpcode_priority'] ) ? intval( $_POST['wpcode_priority'] ) : 10,
				'note'                 => isset( $_POST['wpcode_note'] ) ? wp_kses_post( wp_unslash( $_POST['wpcode_note'] ) ) : '',
				'location_extra'       => isset( $_POST['wpcode_auto_insert_location_extra'] ) ? sanitize_text_field( wp_unslash( $_POST['wpcode_auto_insert_location_extra'] ) ) : '',
				'shortcode_attributes' => $attributes,
			)
		);

		if ( empty( $snippet->title ) ) {
			$snippet->title = $snippet->get_untitled_title();
		}

		$message_number = 1;
		$active_wanted  = $snippet->active;

		if ( 0 === $snippet->id ) {
			// If it's a new snippet display a different message.
			$message_number = 2;
		}

		$this->add_extra_snippet_data( $snippet );

		$id = $snippet->save();

		// Save the last used code type.
		update_user_meta( get_current_user_id(), 'wpcode_default_code_type', $code_type );

		if ( $active_wanted !== $snippet->is_active() ) {
			// If the snippet failed to change status display an error message.
			$message_number = 3;
			// If the current user is not allowed to change snippet status, display a different message.
			if ( ! current_user_can( 'wpcode_activate_snippets' ) ) { //phpcs:ignore
				$message_number = 4;
			}

			if ( $previously_active ) {
				$message_number = 6;
			}
		}

		// Now that we saved the data, let's execute the snippet if needed.
		if ( $execute_now ) {
			wpcode()->execute->doing_activation(); // Mark this to unslash the code.
			$snippet->execute( apply_filters( 'wpcode_on_demand_ignore_conditional_logic', false ) );
			$message_number = 5;
		}

		if ( $id ) {
			wp_safe_redirect( $this->get_after_save_redirect_url( $id, $message_number ) );
			exit;
		}
	}

	/**
	 * Get the URL to redirect to after a snippet is saved.
	 *
	 * @param int $snippet_id The snippet id that was just saved.
	 * @param int $message_number The message number to display.
	 *
	 * @return string
	 */
	protected function get_after_save_redirect_url( $snippet_id, $message_number = 1 ) {
		return add_query_arg(
			array(
				'snippet_id' => $snippet_id,
				'message'    => $message_number,
				'error'      => wpcode()->error->get_last_error_message(),
			),
			$this->get_page_action_url()
		);
	}

	/**
	 * Load page-specific scripts.
	 *
	 * @return void
	 */
	public function page_scripts() {
		if ( $this->show_library ) {
			return;
		}

		$editor = new WPCode_Code_Editor( $this->code_type );
		$editor->load_hint_scripts();
		$editor->set_setting( 'autoCloseTags', true );
		$editor->set_setting( 'matchTags', array( 'bothTags' => true ) );

		$editor->register_editor( 'wpcode_snippet_code' );
		$editor->init_editor();
	}

	/**
	 * Get the snippet type based on the context.
	 *
	 * @return void
	 */
	public function set_code_type() {
		if ( isset( $this->snippet ) ) {
			$this->code_type = $this->snippet->get_code_type();
		} else {
			$user_code_type = get_user_meta( get_current_user_id(), 'wpcode_default_code_type', true );
			if ( ! empty( $user_code_type ) ) {
				$this->code_type = $user_code_type;
			}
			$this->code_type = apply_filters( 'wpcode_default_code_type', $this->code_type );
			$snippet_types   = wpcode()->execute->get_options();
			// If the selected code type is not in the available types, change the selected type to the first available type.
			if ( ! isset( $snippet_types[ $this->code_type ] ) ) {
				$this->code_type = key( $snippet_types );
			}
		}
	}

	/**
	 * Get the conditional logic options input markup.
	 *
	 * @return string
	 */
	public function get_conditional_logic_input() {

		$conditional_rules = isset( $this->snippet ) ? wp_json_encode( $this->snippet->get_conditional_rules() ) : '';

		$markup = $this->get_conditional_select_show_hide();

		$markup .= sprintf( '<div id="wpcode-conditions-holder">%s</div>', $this->build_conditional_rules_form() );
		$markup .= sprintf( '<button type="button" class="wpcode-button" id="wpcode-cl-add-group">%s</button>', __( '+ Add new group', 'insert-headers-and-footers' ) );
		$markup .= sprintf( '<script type="text/template" id="wpcode-conditions-group-markup">%s</script>', $this->get_conditions_group_markup() );
		$markup .= sprintf( '<script type="text/template" id="wpcode-conditions-group-row-markup">%s</script>', $this->get_conditions_group_row_markup() );
		$markup .= sprintf( '<input type="hidden" name="wpcode_cl_rules" id="wpcode-cl-rules" value="%s" />', esc_attr( $conditional_rules ) );

		return $markup;
	}

	/**
	 * Markup for the show/hide select input.
	 *
	 * @return string
	 */
	public function get_conditional_select_show_hide() {
		$rules    = isset( $this->snippet ) ? $this->snippet->get_conditional_rules() : array();
		$selected = empty( $rules ) ? 'show' : $rules['show'];
		$options  = array(
			'show' => __( 'Show', 'insert-headers-and-footers' ),
			'hide' => __( 'Hide', 'insert-headers-and-footers' ),
		);

		$markup = '<div class="wpcode-inline-select">';

		$markup .= '<select id="wpcode-cl-show-hide">';
		foreach ( $options as $value => $label ) {
			$markup .= sprintf(
				'<option value="%1$s" %2$s>%3$s</option>',
				esc_attr( $value ),
				selected( $value, $selected, false ),
				esc_html( $label )
			);
		}
		$markup .= '</select>';
		$markup .= '<label for="wpcode-cl-show-hide">';
		$markup .= sprintf( '<span>%s</span>', __( 'This code snippet if', 'insert-headers-and-footers' ) );
		$markup .= '</label>';
		$markup .= '</div>';

		return $markup;
	}

	/**
	 * Build back the form markup from the stored conditions.
	 *
	 * @return string|void
	 */
	public function build_conditional_rules_form() {
		if ( ! isset( $this->snippet ) ) {
			return;
		}
		$options = wpcode()->conditional_logic->get_all_admin_options();
		$rules   = $this->snippet->get_conditional_rules();
		if ( empty( $rules ) || empty( $rules['groups'] ) ) {
			return;
		}
		$form_groups = array();
		foreach ( $rules['groups'] as $group_rows ) {
			$rows = array();
			foreach ( $group_rows as $row ) {
				$type_options = $options[ $row['type'] ];
				$value_option = $type_options['options'][ $row['option'] ];

				// Construct the meta array.
				$meta = array(
					'post' => isset( $row['meta_key'] ) ? $row['meta_key'] : '',
					'user' => isset( $row['user_meta_key'] ) ? $row['user_meta_key'] : '',
				);

				$rows[] = $this->get_conditions_group_row_markup(
					$row['option'],
					$row['relation'],
					$this->get_input_markup_by_type( $value_option, $row['value'] ),
					$meta
				);
			}

			$form_groups[] = $this->get_conditions_group_markup( implode( '', $rows ) );
		}

		return implode( '', $form_groups );
	}

	/**
	 * Process the type options and return the input markup.
	 *
	 * @param array  $data The data with the settings/options.
	 * @param string $value The value currently selected.
	 *
	 * @return string
	 */
	private function get_input_markup_by_type( $data, $value ) {
		$markup = '';
		switch ( $data['type'] ) {
			case 'select':
				$multiple = isset( $data['multiple'] ) && $data['multiple'] ? 'multiple' : '';
				$class    = isset( $data['multiple'] ) && $data['multiple'] ? 'wpcode-select2' : '';
				$markup   = '<select class=' . esc_attr( $class ) . '  ' . $multiple . '>';
				if ( empty( $value ) ) {
					$value = false;
				}
				$selected = ! is_array( $value ) ? array( $value ) : $value;
				foreach ( $data['options'] as $option ) {
					$markup .= '<option value="' . esc_attr( $option['value'] ) . '" ' . selected( in_array( $option['value'], $selected, true ), true, false ) . ' ' . disabled( isset( $option['disabled'] ) && $option['disabled'], true, false ) . '>' . esc_html( $option['label'] ) . '</option>';
				}
				$markup .= '</select>';
				break;
			case 'text':
				$markup = sprintf( '<input type="text" class="wpcode-input-text" value="%s" />', esc_attr( $value ) );
				break;
			case 'time':
				$markup = sprintf( '<input type="text" class="wpcode-input-text wpcode-input-time" value="%s" />', esc_attr( $value ) );
				break;
			case 'date':
				$value  = ! empty( $value ) ? date_i18n( 'Y-m-d', strtotime( $value ) ) : '';
				$markup = sprintf( '<input type="text" class="wpcode-input-text wpcode-input-date" value="%s" />', esc_attr( $value ) );
				break;
			case 'datetime':
				$value  = ! empty( $value ) ? date_i18n( 'Y-m-d H:i', strtotime( $value ) ) : '';
				$markup = sprintf( '<input type="text" class="wpcode-input-text wpcode-input-datetime" value="%s" />', esc_attr( $value ) );
				break;
			case 'ajax':
				$options  = isset( $data['labels_callback'] ) ? $data['labels_callback']( $value ) : array();
				$multiple = isset( $data['multiple'] ) && $data['multiple'] ? 'multiple' : '';
				$markup   = '<select class="wpcode-select2-ajax" data-action="' . esc_attr( $data['options'] ) . '" ' . $multiple . '>';
				foreach ( $options as $option ) {
					$markup .= '<option value="' . esc_attr( $option['value'] ) . '" ' . selected( true, true, false ) . '>' . esc_html( $option['label'] ) . '</option>';
				}
				$markup .= '</select>';
				break;
		}

		return $markup;
	}

	/**
	 * Build the markup for an empty conditional logic group.
	 *
	 * @param string $rows Optional, already-built rows markup.
	 *
	 * @return string
	 */
	private function get_conditions_group_markup( $rows = '' ) {
		$markup = '<div class="wpcode-cl-group">';

		$markup .= $this->get_conditions_group_or_markup();
		$markup .= '<div class="wpcode-cl-group-rules">' . $rows . '</div>';
		$markup .= sprintf(
			'<button class="wpcode-button wpcode-cl-add-row" type="button" title="%2$s">%1$s</button>',
			_x( 'AND', 'Conditional logic add another "and" rules row.', 'insert-headers-and-footers' ),
			esc_attr__( 'Add another "AND" rules row.', 'insert-headers-and-footers' )
		);
		$markup .= '</div>';

		return $markup;
	}

	/**
	 * Build the markup for a conditional logic row. All parameters are optional and if
	 * left empty it will return the template to be used in JS.
	 *
	 * @param string $type The value for the type input.
	 * @param string $relation The value for the relation field.
	 * @param string $value The value selected for this row.
	 * @param array  $meta Optional, meta data for user or post meta.
	 *
	 * @return string
	 */
	private function get_conditions_group_row_markup( $type = '', $relation = '', $value = '', $meta = array() ) {
		$options = wpcode()->conditional_logic->get_all_admin_options();

		$markup = '<div class="wpcode-cl-rules-row">';

		$markup .= '<div class="wpcode-cl-rules-row-options">';
		$markup .= '<span class="wpcode-cl-rule-type-container">';
		$markup .= '<select class="wpcode-cl-rule-type">';
		foreach ( $options as $opt_group ) {
			$markup .= '<optgroup label="' . esc_attr( $opt_group['label'] ) . '" data-type="' . esc_attr( $opt_group['name'] ) . '">';
			foreach ( $opt_group['options'] as $key => $option ) {
				$data_attrs = '';
				if ( isset( $option['upgrade'] ) && is_array( $option['upgrade'] ) ) {
					if ( isset( $option['upgrade']['title'] ) ) {
						$data_attrs = 'data-upgrade-title= "' . esc_attr( $option['upgrade']['title'] ) . '"';
					}
					if ( isset( $option['upgrade']['text'] ) ) {
						$data_attrs .= ' data-upgrade-text="' . esc_attr( $option['upgrade']['text'] ) . '"';
					}
					if ( isset( $option['upgrade']['link'] ) ) {
						$data_attrs .= ' data-upgrade-link="' . esc_attr( $option['upgrade']['link'] ) . '"';
					}
					if ( isset( $option['upgrade']['button'] ) ) {
						$data_attrs .= ' data-upgrade-button="' . esc_attr( $option['upgrade']['button'] ) . '"';
					}
				}
				$markup .= '<option value="' . esc_attr( $key ) . '" ' . selected( $type, $key, false ) . ' ' . disabled( isset( $option['disabled'] ) && $option['disabled'], true, false ) . $data_attrs . '>' . esc_html( $option['label'] ) . '</option>';
			}
			$markup .= '</optgroup>';
		}
		$markup .= '</select>';
		$markup .= '</span>'; // wpcode-cl-rule-type-container.

		// Display the appropriate input based on the type.
		if ( 'user_meta' === $type || 'post_meta' === $type ) {
			$meta_key = '';
			if ( 'post_meta' === $type && isset( $meta['post'] ) ) {
				$meta_key   = $meta['post'];
				$identifier = 'wpcode-cl-rule-meta-key';
			} elseif ( 'user_meta' === $type && isset( $meta['user'] ) ) {
				$meta_key   = $meta['user'];
				$identifier = 'wpcode-cl-rule-user-meta-key';
			}

			$markup .= '<div class="' . $identifier . '-container">';
			$markup .= '<input type="text" class="' . $identifier . ' wpcode-input-text" name="' . $identifier . '" placeholder="Enter Meta Key" value="' . esc_attr( $meta_key ) . '">';
			$markup .= '</div>';
		}

		$markup .= $this->get_conditions_relation_select( $relation );
		$markup .= '<div class="wpcode-cl-rule-value">' . $value . '</div>';
		$markup .= '</div>'; // rules-row-options.
		$markup .= '<button class="wpcode-button-just-icon wpcode-cl-remove-row" type="button" title="' . esc_attr__( 'Remove Row', 'insert-headers-and-footers' ) . '">' . get_wpcode_icon( 'remove' ) . '</button>';
		$markup .= '</div>'; // rules-row.

		return $markup;
	}

	/**
	 * Get the markup for the relation field.
	 *
	 * @param string $relation Optional selected relation.
	 *
	 * @return string
	 */
	private function get_conditions_relation_select( $relation = '' ) {
		$options = wpcode_get_conditions_relation_labels();
		$markup  = '<select class="wpcode-cl-rule-relation">';
		foreach ( $options as $value => $label ) {
			$markup .= '<option value="' . esc_attr( $value ) . '" ' . selected( $relation, $value, false ) . '>' . esc_html( $label ) . '</option>';
		}
		$markup .= '</select>';

		return $markup;
	}

	/**
	 * The markup for the "or" displayed between groups.
	 *
	 * @return string
	 */
	private function get_conditions_group_or_markup() {
		$markup = '<div class="wpcode-cl-group-or">';

		$markup .= '<div class="wpcode-cl-group-or-line"></div>';
		$markup .= '<div class="wpcode-cl-group-or-text">' . _x( 'OR', 'Conditional logic "or" another rule', 'insert-headers-and-footers' ) . '</div>';
		$markup .= '</div>';

		return $markup;
	}

	/**
	 * Add conditions to the admin script when on this page.
	 *
	 * @param array $data The localized data used in wp_localize_script.
	 *
	 * @return array
	 * @see wpcode_admin_scripts
	 */
	public function add_conditional_rules_to_script( $data ) {
		if ( ! isset( $data['conditions'] ) ) {
			$data['conditions'] = wpcode()->conditional_logic->get_all_admin_options( true );
		}

		$data['snippet_id']             = isset( $this->snippet_id ) ? $this->snippet_id : 0;
		$data['save_to_library_url']    = wpcode_utm_url( 'https://wpcode.com/lite/', 'snippet-editor', 'save-to-library', 'upgrade-to-pro' );
		$data['save_to_library_title']  = __( 'Save to Library is a Pro Feature', 'insert-headers-and-footers' );
		$data['save_to_library_text']   = __( 'Upgrade to PRO today and save your private snippets to the WPCode library for easy access. You can also share your snippets with other users or load them on other sites.', 'insert-headers-and-footers' );
		$data['save_to_library_button'] = $data['upgrade_button'];
		$data['shortcode_title']        = __( 'Custom Shortcode is a Pro Feature', 'insert-headers-and-footers' );
		$data['shortcode_text']         = __( 'Upgrade today to use a custom shortcode and nerver worry about changing snippet ids again, even when importing your snippets to another site. You\'ll also get access to a private library that makes setting up new sites a lot easier.', 'insert-headers-and-footers' );
		$data['shortcode_url']          = wpcode_utm_url( 'https://wpcode.com/lite/', 'snippet-editor', 'custom-shortcode', 'modal' );
		$data['device_title']           = __( 'Device Type is a Pro Feature', 'insert-headers-and-footers' );
		$data['device_text']            = __( 'Upgrade to PRO today and unlock one-click device targeting for your snippets.', 'insert-headers-and-footers' );
		$data['device_url']             = wpcode_utm_url( 'https://wpcode.com/lite/', 'snippet-editor', 'device-type', 'modal' );
		$data['datetime_title']         = __( 'Scheduling snippets is a Pro Feature', 'insert-headers-and-footers' );
		$data['datetime_text']          = __( 'Upgrade to PRO today and unlock powerful scheduling options to limit when your snippet is active on the site.', 'insert-headers-and-footers' );
		$data['datetime_url']           = wpcode_utm_url( 'https://wpcode.com/lite/', 'snippet-editor', 'schedule', 'modal' );
		$data['blocks_title']           = __( 'Blocks snippets is a Pro Feature', 'insert-headers-and-footers' );
		$data['blocks_text']            = __( 'Upgrade to PRO today and unlock building snippets using the Gutenberg Block Editor. Create templates using blocks and use the full power of WPCode to insert them in your site.', 'insert-headers-and-footers' );
		$data['blocks_url']             = wpcode_utm_url( 'https://wpcode.com/lite/', 'snippet-editor', 'blocks', 'modal' );
		$data['blocks_button']          = $data['save_to_library_button'];
		$data['scss_title']             = __( 'SCSS snippets is a Pro Feature', 'insert-headers-and-footers' );
		$data['scss_text']              = __( 'Upgrade to PRO today and unlock editing snippets using SCSS code with optimized compiling directly in the WordPress admin.', 'insert-headers-and-footers' );
		$data['scss_url']               = wpcode_utm_url( 'https://wpcode.com/lite/', 'snippet-editor', 'scss', 'modal' );
		$data['scss_button']            = $data['save_to_library_button'];
		$data['shortcode_attributes']   = __( 'Shortcode Attributes', 'insert-headers-and-footers' );
		$data['laf_title']              = __( 'Load as file is a Pro Feature', 'insert-headers-and-footers' );
		$data['laf_text']               = __( 'Upgrade to PRO today and unlock loading your CSS and JS snippets as files for better performance and improved compatibility with caching plugins.', 'insert-headers-and-footers' );
		$data['laf_url']                = wpcode_utm_url( 'https://wpcode.com/lite/', 'snippet-editor', 'laf', 'modal' );
		$data['co_title']               = __( 'Compress Output is a Pro Feature', 'insert-headers-and-footers' );
		$data['co_text']                = __( 'Upgrade to PRO today and unlock the ability to compress your code by removing comments and unnecessary spaces, ensuring enhanced performance.', 'insert-headers-and-footers' );
		$data['co_url']                 = wpcode_utm_url( 'https://wpcode.com/lite/', 'snippet-editor', 'compress-output', 'modal' );
		$data['php_cl_location_notice'] = sprintf(
		// Translators: %1$s Opening anchor tag. %2$s Closing anchor tag.
			__( 'For better results using conditional logic with PHP snippets we automatically switched the auto-insert location to "Frontend Conditional Logic" that runs later. If you want to run the snippet earlier please switch back to "Run Everywhere" but note not all conditional logic options will be available. %1$sRead more%2$s', 'insert-headers-and-footers' ),
			'<a href="' . wpcode_utm_url( 'https://wpcode.com/docs/conditional-logic-php-snippets/', 'snippet-editor', 'php-conditional-logic' ) . '" target="_blank">',
			'</a>'
		);

		$error_line = 0;
		if ( isset( $this->snippet ) ) {
			$last_error = $this->snippet->get_last_error();
			if ( ! empty( $last_error['error_line'] ) ) {
				$error_line = $last_error['error_line'];
			}
		}

		$data['cl_labels']          = wpcode_get_conditions_relation_labels();
		$data['cl_labels_custom']   = $this->get_conditional_logic_operators_custom_labels();
		$data['error_line']         = $error_line;
		$data['error_line_message'] = esc_html__( 'The snippet has been recently deactivated due to an error on this line', 'insert-headers-and-footers' );
		$data['is_locked']          = $this->is_locked;
		$data['locked_by']          = $this->locked_by;
		// Translators: The name of the user that is currently editing the snippet is appended at the end.
		$data['edited']           = esc_html__( 'This snippet is currently being edited by ', 'insert-headers-and-footers' );
		$data['ai_title']         = esc_html__( 'AI Snippet Generation is a Pro Feature', 'insert-headers-and-footers' );
		$data['ai_improve_title'] = esc_html__( 'Improving Snippets with AI is a Pro Feature', 'insert-headers-and-footers' );
		$data['ai_text']          = esc_html__( 'Upgrade today to access the WPCode AI code generator, which allows you to create code snippets simply by describing their functionality using the power of AI.', 'insert-headers-and-footers' );
		$data['ai_url']           = wpcode_utm_url( 'https://wpcode.com/lite/', 'snippet-editor', 'ai', 'generate' );
		$data['ai_improve_url']   = wpcode_utm_url( 'https://wpcode.com/lite/', 'snippet-editor', 'ai', 'improve' );
		$data['ai_button']        = esc_html__( 'Upgrade to PRO', 'insert-headers-and-footers' );

		return $data;
	}

	/**
	 * Add a body class specific to the code type of the current snippet.
	 *
	 * @param string $body_class The body class.
	 *
	 * @return string
	 */
	public function body_class_code_type( $body_class ) {
		$body_class .= ' wpcode-code-type-' . $this->code_type;

		if ( empty( $this->snippet ) ) {
			$body_class .= ' wpcode-new-snippet';
		}

		return $body_class;
	}

	/**
	 * If the editor should grow with the code, add a body class.
	 *
	 * @param string $body_class The body class.
	 *
	 * @return string
	 */
	public function maybe_editor_height_auto( $body_class ) {
		$height_auto = wpcode()->settings->get_option( 'editor_height_auto' );
		if ( false !== $height_auto ) {
			$body_class .= ' wpcode-editor-auto ';
		}

		return $body_class;
	}

	/**
	 * If the current user has syntax_highlighting disabled add a body class.
	 *
	 * @param string $body_class The body class.
	 *
	 * @return string
	 */
	public function maybe_syntax_highlighting_disabled( $body_class ) {
		$user = wp_get_current_user();

		if ( ! isset( $user->syntax_highlighting ) || 'false' === $user->syntax_highlighting || ! function_exists( 'wp_enqueue_code_editor' ) ) {
			$body_class .= ' wpcode-syntax-highlighting-disabled ';
		}

		return $body_class;
	}

	/**
	 * If we have a custom height set, output the styles to change that.
	 * Also, check if the auto-height is set.
	 *
	 * @return void
	 */
	public function maybe_editor_height() {
		// Let's check if the auto-height is not enabled.
		$height_auto = wpcode()->settings->get_option( 'editor_height_auto' );
		if ( false !== $height_auto ) {
			return;
		}

		$height = wpcode()->settings->get_option( 'editor_height' );
		if ( ! $height ) {
			return;
		}

		echo '<style>.CodeMirror {height: ' . absint( $height ) . 'px;}</style>';
	}

	/**
	 * Get the markup of the custom shortcode row.
	 *
	 * @return void
	 */
	public function get_input_row_custom_shortcode() {
		$this->metabox_row(
			__( 'Custom Shortcode', 'insert-headers-and-footers' ),
			sprintf(
				'<input type="text" placeholder="%s" class="wpcode-input-text" id="wpcode-custom-shortcode-lite" readonly />',
				__( 'Shortcode name', 'insert-headers-and-footers' )
			),
			'',
			'',
			'',
			__( 'Use this field to define a custom shortcode name instead of the id-based one.', 'insert-headers-and-footers' ),
			true
		);
	}

	/**
	 * Method used to output the markup for the shortcode attributes input.
	 *
	 * @return void
	 */
	public function get_input_row_shortcode_attributes() {
		$button = sprintf(
			'<button class="wpcode-button wpcode-button-icon wpcode-button-secondary" id="wpcode_add_attribute" type="button"><span>%1$s</span> %2$s</button>',
			get_wpcode_icon( 'plus', 16, 16, '0 96 960 960' ),
			__( 'Add&nbsp;Attribute', 'insert-headers-and-footers' )
		);
		$input  = sprintf(
			'<div class="wpcode-input-with-button"><input type="text" id="wpcode-shortcode-attribute-name" placeholder="%1$s" class="wpcode-input-text" />%2$s</div>',
			__( 'Attribute name', 'insert-headers-and-footers' ),
			$button
		);

		$input .= $this->help_icon(
			sprintf(
			// Translators: %1$s is the opening <code> tag, %2$s is the closing </code> tag.
				__( 'Use this field to define the attribute name for your shortcode and click Add Attribute. Attributes added here will be available to use as smart tags and as variables inside snippets. E.g. an attribute named "keyword" will be available in a PHP snippet as %1$s$keyword%2$s. %3$sLearn more%4$s.', 'insert-headers-and-footers' ),
				'<code>',
				'</code>',
				'<a href="' . wpcode_utm_url( 'https://wpcode.com/docs/shortcode-attributes/', 'snippet-editor', 'shortcode-attributes' ) . '" target="_blank">',
				'</a>'
			),
			false
		);

		$input .= '<div id="wpcode-shortcode-attributes-list" class="wpcode-shortcode-attributes-list">';
		$input .= $this->get_shortcode_attributes_list();
		$input .= '<script type="text/template" id="wpcode_shortcode_attribute_list_item_template">' . $this->get_shortcode_attribute_list_item() . '</script>';
		$input .= '</div>';

		$this->metabox_row(
			__( 'Shortcode Attributes', 'insert-headers-and-footers' ),
			$input,
			'wpcode-shortcode-attribute-name',
			'',
			''
		);
	}

	/**
	 * Get the markup of the shortcode attributes list.
	 *
	 * @return string|void
	 */
	public function get_shortcode_attributes_list() {
		if ( ! isset( $this->snippet ) ) {
			return '<ul></ul>';
		}
		$attributes = $this->snippet->get_shortcode_attributes();
		if ( empty( $attributes ) ) {
			return '<ul></ul>';
		}
		$output = '<ul>';
		foreach ( $attributes as $attribute ) {
			$output .= sprintf(
				$this->get_shortcode_attribute_list_item(),
				esc_html( $attribute )
			);
		}
		$output .= '</ul>';

		return $output;
	}

	/**
	 * Get the markup of the shortcode attribute list item.
	 *
	 * @return string
	 */
	public function get_shortcode_attribute_list_item() {
		return sprintf(
			'<li><span class="wpcode-shortcode-attribute-name">%1$s</span><button class="wpcode-shortcode-attribute-remove wpcode-button-just-icon">%2$s</button><input name="wpcode_shortcode_attributes[]" class="wpcode-shortcode-attribute-item-input" value="%1$s" type="hidden" /></li>',
			'%1$s',
			get_wpcode_icon( 'trash' )
		);
	}

	/**
	 * Get the markup of the schedule main dates inputs.
	 *
	 * @return void
	 */
	public function get_input_row_schedule() {
		?>
		<div class="wpcode-schedule-form-fields">
			<?php
			$schedule_label = __( 'Schedule snippet', 'insert-headers-and-footers' );
			$this->metabox_row(
				$schedule_label,
				$this->get_input_row_schedule_contents( '', '', true ),
				'wpcode_schedule',
				'',
				'',
				'',
				true
			);
			?>
		</div>
		<?php
	}

	/**
	 * Get the description of the load as file option.
	 *
	 * @return string
	 */
	public function get_input_row_as_file_description() {
		return sprintf(
		// Translators: Link to the documentation article for files as snippets. %1$s is the opening anchor tag, %2$s is the closing anchor tag.
			esc_html__( 'If enabled, this snippet will be loaded as a physical file instead of being inserted in the source of the page. %1$sLearn more%2$s.', 'insert-headers-and-footers' ),
			'<a target="_blank" rel="noreferrer noopener" href="' . esc_url( wpcode_utm_url( 'https://wpcode.com/docs/snippet-files', 'snippet-manager', 'load-as-file', 'learn-more' ) ) . '">',
			'</a>'
		);
	}

	/**
	 * Get the description of the compress output option.
	 *
	 * @return string
	 */
	public function get_input_row_compress_output_description() {
		return esc_html__( 'Compress code output by removing spaces and comments.', 'insert-headers-and-footers' );
	}

	/**
	 * Get the markup for displaying an option to load the snippet as a file if the code type is CSS or JS.
	 *
	 * @return void
	 */
	public function get_input_row_as_file() {
		$this->metabox_row(
			esc_html__( 'Load as file', 'insert-headers-and-footers' ),
			$this->get_checkbox_toggle(
				false,
				'wpcode_snippet_as_file'
			),
			'wpcode_snippet_as_file',
			'#wpcode_snippet_type',
			'js,css',
			$this->get_input_row_as_file_description(),
			true,
			'wpcode_snippet_as_file_option'
		);
	}

	/**
	 * Get the markup for displaying an option to compress the output if the code type is CSS, HTML, or JS.
	 *
	 * @return void
	 */
	public function get_input_row_compress_output() {

		$this->metabox_row(
			esc_html__( 'Compress Output', 'insert-headers-and-footers' ),
			$this->get_checkbox_toggle(
				false,
				'wpcode_compress_output'
			),
			'wpcode_compress_output',
			'#wpcode_snippet_type',
			'js,css,html',
			$this->get_input_row_compress_output_description(),
			true,
			'wpcode_compress_output_option'
		);
	}

	/**
	 * Get the markup of the schedule inputs.
	 *
	 * @param string $start Start date.
	 * @param string $end End date.
	 * @param bool   $read_only If the inputs should be read-only.
	 *
	 * @return string
	 */
	public function get_input_row_schedule_contents( $start = '', $end = '', $read_only = false ) {
		$markup = '<div class="wpcode-input-row wpcode-input-row-schedule">';

		$markup .= $this->get_input_datetime(
			'wpcode-schedule-start',
			$start,
			esc_html__( 'Start Date', 'insert-headers-and-footers' ),
			esc_html__( 'Start Date', 'insert-headers-and-footers' ),
			esc_html__( 'Clear start date', 'insert-headers-and-footers' ),
			$read_only
		);

		$markup .= $this->get_input_datetime(
			'wpcode-schedule-end',
			$end,
			esc_html__( 'End Date', 'insert-headers-and-footers' ),
			esc_html__( 'End Date', 'insert-headers-and-footers' ),
			esc_html__( 'Clear end date', 'insert-headers-and-footers' ),
			$read_only
		);

		$markup .= '</div>';

		$markup .= $this->help_icon(
			sprintf(
			// Translators: %1$s and %2$s are HTML tags for a link to the documentation article.
				__( 'Looking for more scheduling options? %1$sClick here%2$s to read more about all the available options.', 'insert-headers-and-footers' ),
				'<a href="' . wpcode_utm_url( 'https://wpcode.com/docs/how-to-create-advanced-scheduling-rules/', 'snippet-editor', 'schedule-more' ) . '" target="_blank">',
				'</a>'
			),
			false
		);

		return $markup;
	}

	/**
	 * Get the markup of the schedule main dates inputs.
	 *
	 * @param string $id The id of the input.
	 * @param string $value The value of the input.
	 * @param string $label The label of the input.
	 * @param string $placeholder The placeholder of the input.
	 * @param string $clear_text The text of the clear button.
	 * @param bool   $readonly If the input should be readonly.
	 *
	 * @return string
	 */
	public function get_input_datetime( $id, $value = '', $label = '', $placeholder = '', $clear_text = '', $readonly = false ) {

		$markup = '';
		if ( $label ) {
			$markup .= sprintf(
				'<div class="wpcode-input-row-label screen-reader-text">
					<label for="%1$s">%2$s</label>
				</div>',
				esc_attr( $id ),
				esc_html( $label )
			);
		}
		$markup .= '<div class="wpcode-input-row-input">';
		$markup .= sprintf(
			'<input type="text" class="wpcode-input-text wpcode-input-datetime" id="%1$s" name="%1$s" value="%2$s" placeholder="%3$s" %4$s />',
			esc_attr( $id ),
			esc_attr( $value ),
			esc_attr( $placeholder ),
			$readonly ? 'readonly' : ''
		);
		if ( ! empty( $clear_text ) ) {
			$markup .= sprintf(
				'<button type="button" class="wpcode-input-button wpcode-input-button-clear" title="%1$s" style="%3$s">%2$s</button>',
				esc_attr( $clear_text ),
				get_wpcode_icon( 'close', 16, 16 ),
				! empty( $value ) ? '' : 'display:none;'
			);
		}
		$markup .= '</div>';

		return $markup;
	}

	/**
	 * Add extra snippet data.
	 *
	 * @param WPCode_Snippet $snippet Snippet about to be saved, passed by reference.
	 *
	 * @return void
	 */
	public function add_extra_snippet_data( &$snippet ) {
	}

	/**
	 * Markup for shortcode locations
	 *
	 * @return void
	 */
	public function get_shortcode_locations() {
		$button = sprintf(
			'<button class="wpcode-button wpcode-button-secondary" id="wpcode-find-locations" type="button">
				<span>%s</span>
			</button>',
			__( 'Find Where This Shortcode Is Used', 'insert-headers-and-footers' )
		);

		$help = $this->help_icon(
			__( 'Click to search for any posts or pages where this shortcode is being used.', 'insert-headers-and-footers' ),
			false
		);

		$input  = '<div id="wpcode-shortcode-locations-list" class="wpcode-shortcode-locations-list">';
		$input .= '<div class="wpcode-button-row">' . $button . $help . '</div>';
		$input .= '<div id="wpcode-locations-list"></div>';
		$input .= '</div>';

		$this->metabox_row(
			__( 'Locations Used', 'insert-headers-and-footers' ),
			$input,
			'wpcode-shortcode-locations',
			'',
			''
		);
	}

	/**
	 * Markup for the code revisions metabox.
	 *
	 * @return void
	 */
	public function field_code_revisions() {
		$html = sprintf(
			'<p>%s</p><hr />',
			esc_html__( 'As you make changes to your snippet and save, you will get a list of previous versions with all the changes made in each revision. You can compare revisions to the current version or see changes as they have been saved by going through each revision. Any of the revisions can then be restored as needed.', 'insert-headers-and-footers' )
		);

		$html .= $this->code_revisions_list();
		$this->metabox(
			__( 'Code Revisions', 'insert-headers-and-footers' ),
			$html,
			__( 'Easily switch back to a previous version of your snippet.', 'insert-headers-and-footers' )
		);
	}

	/**
	 * Markup for the device type metabox.
	 *
	 * @return void
	 */
	public function field_device_type() {
		$html = sprintf(
			'<p>%s</p>',
			esc_html__( 'Limit where you want this snippet to be loaded by device type. By default, snippets are loaded on all devices.', 'insert-headers-and-footers' )
		);

		$html .= '<div class="wpcode-separator"></div>';
		$html .= $this->device_type_picker();
		$this->metabox(
			__( 'Device Type', 'insert-headers-and-footers' ),
			$html
		);
	}

	/**
	 * This method returns the markup for the device type radio input picker, the
	 * three options available are Any device type, Desktop only and Mobile only.
	 * By default, any device type is selected.
	 *
	 * @return string
	 */
	public function device_type_picker() {
		$html  = '<div class="wpcode-device-type-picker wpcode-device-type-picker-lite">';
		$html .= $this->get_radio_field_icon( 'devices', __( 'Any device type', 'insert-headers-and-footers' ), 'any', '', true );
		$html .= $this->get_radio_field_icon( 'desktop', __( 'Desktop only', 'insert-headers-and-footers' ), 'desktop', '', false, '', true );
		$html .= $this->get_radio_field_icon( 'mobile', __( 'Mobile only', 'insert-headers-and-footers' ), 'mobile', '', false, '', true );
		$html .= '</div>';

		return $html;
	}

	/**
	 * Get a styled radio input with an icon.
	 *
	 * @param string $icon Icon to use for label, @see get_wpcode_icon.
	 * @param string $label The text of the label to display.
	 * @param string $value The value of the radio input.
	 * @param string $name The input name (for PHP).
	 * @param bool   $checked Whether the input is checked or not.
	 * @param string $id Unique id for the input, by default name + value will be used.
	 * @param bool   $disabled Whether the input should be disabled.
	 *
	 * @return string
	 */
	public function get_radio_field_icon( $icon = '', $label = '', $value = '', $name = '', $checked = false, $id = '', $disabled = false ) {

		$id    = empty( $id ) ? $name . '-' . $value : $id;
		$html  = '<div class="wpcode-input-radio">';
		$html .= sprintf(
			'<input type="radio" name="%1$s" id="%2$s" value="%3$s" %4$s %5$s />',
			esc_attr( $name ),
			esc_attr( $id ),
			esc_attr( $value ),
			checked( $checked, true, false ),
			disabled( $disabled, true, false )
		);
		$html .= sprintf(
			'<label for="%1$s"><span class="wpcode-input-radio-icon">%2$s</span><span class="wpcode-input-radio-label">%3$s</span></label>',
			esc_attr( $id ),
			get_wpcode_icon( $icon, 48, 48 ),
			wp_kses_post( $label )
		);
		$html .= '</div>';

		return $html;
	}

	/**
	 * List of code revision items.
	 *
	 * @return string
	 */
	public function code_revisions_list() {
		return $this->code_revisions_list_with_notice(
			esc_html__( 'Code Revisions is a Pro Feature', 'insert-headers-and-footers' ),
			sprintf(
				'<p>%s</p>',
				esc_html__( 'Upgrade to WPCode Pro today and start tracking revisions and see exactly who, when and which changes were made to your snippet.', 'insert-headers-and-footers' )
			),
			array(
				'text' => esc_html__( 'Upgrade to Pro and Unlock Revisions', 'insert-headers-and-footers' ),
				'url'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'snippet-editor', 'revisions', 'upgrade-to-pro' ),
			),
			array(
				'text' => esc_html__( 'Learn more about all the features', 'insert-headers-and-footers' ),
				'url'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'snippet-editor', 'revisions', 'features' ),
			)
		);
	}

	/**
	 * Display a notice if the snippet loaded for editing triggered an error.
	 *
	 * @return void
	 */
	public function maybe_show_error_notice() {
		if ( ! isset( $this->snippet ) ) {
			return;
		}
		if ( $this->is_locked ) {
			?>
			<div class="notice-warning fade notice is-dismissible">
				<p>
					<?php
					// Translators: The placeholder gets replaced with the display name of the user currently editing the snippet.
					printf( esc_html__( 'Notice: %1$s is also editing this snippet. Please be aware that your changes could be overwritten.', 'insert-headers-and-footers' ), esc_html( $this->locked_by ) );
					?>
				</p>
			</div>
			<?php
		}
		$last_error = $this->snippet->get_last_error();
		if ( empty( $last_error ) ) {
			return;
		}
		$error_line      = isset( $last_error['error_line'] ) ? $last_error['error_line'] : false;
		$time            = $last_error['time'];
		$logging_enabled = wpcode()->settings->get_option( 'error_logging' );
		if ( $logging_enabled ) {
			$button_text = esc_html__( 'View Error Logs', 'insert-headers-and-footers' );
			$button_url  = add_query_arg(
				array(
					'page' => 'wpcode-tools',
					'view' => 'logs',
				),
				admin_url( 'admin.php' )
			);
		} else {
			$button_text = esc_html__( 'Enable Error Logging', 'insert-headers-and-footers' );
			$button_url  = add_query_arg(
				array(
					'page' => 'wpcode-settings',
					'view' => 'errors',
				),
				admin_url( 'admin.php' )
			);
		}
		?>
		<div class="info fade notice is-dismissible">
			<?php if ( 'deactivated' === $last_error['wpc_type'] ) { ?>
				<p>
					<?php
					printf(
					// Translators: The placeholder gets replaced with the time passed since the snippet was deactivated.
						esc_html__( 'This snippet was automatically deactivated due to an error at %1$s on %2$s (%3$s ago).', 'insert-headers-and-footers' ),
						gmdate( 'H:i:s', $last_error['time'] ),
						gmdate( 'Y-m-d', $last_error['time'] ),
						human_time_diff( $last_error['time'] )
					);
					?>
				</p>
			<?php } else { ?>
				<p>
					<?php
					printf(
					// Translators: The placeholder gets replaced with the time passed since the snippet was deactivated.
						esc_html__( 'This snippet first threw an error at %1$s on %2$s (%3$s ago).', 'insert-headers-and-footers' ),
						gmdate( 'H:i:s', $time ),
						gmdate( 'Y-m-d', $time ),
						human_time_diff( $time )
					);
					?>
				</p>
			<?php } ?>
			<p>
				<?php
				// Display the error message after a label.
				printf( '<strong>%s</strong>', esc_html__( 'Error message:', 'insert-headers-and-footers' ) );
				?>
			</p>
			<pre class="wpcode-error-preview"><?php echo esc_html( wpcode()->error->get_error_message_short( $last_error['message'] ) ); ?></pre>
			<?php if ( $error_line ) { ?>
				<p>
					<?php
					printf(
					// Translators: The placeholders make the text bold and add the line number.
						esc_html__( 'The error occurred on %1$sline %3$d%2$s of this snippet\'s code (highlighted below).', 'insert-headers-and-footers' ),
						'<strong>',
						'</strong>',
						absint( $error_line )
					);
					?>
				</p>
			<?php } ?>

			<?php if ( ! empty( $last_error['url'] ) ) { ?>
				<p>
					<?php
					printf(
					// Translators: The placeholder is replaced with the URL where the error happened.
						esc_html__( 'The error was triggered at the following URL: %1$s', 'insert-headers-and-footers' ),
						'<a href=' . esc_url( $last_error['url'] ) . ' target="_blank" rel="noopener noreferrer">' . esc_url( $last_error['url'] ) . '</a>'
					);
					?>
				</p>
			<?php } ?>
			<p>
				<?php
				if ( $logging_enabled ) {
					printf(
					// Translators: The placeholders are for the link to the error logs.
						esc_html__( 'You can %1$sview the error log%2$s to get more details about the error that caused this. The error will also be in a snippet-specific log whose name starts with snippet-%3$d (the id of this snippet).', 'insert-headers-and-footers' ),
						'<a href="' . esc_url( $button_url ) . '">',
						'</a>',
						absint( $this->snippet->get_id() )
					);
				} else {
					esc_html_e( 'You can enable error logging to get more details about the error that caused this.', 'insert-headers-and-footers' );
				}
				?>
			</p>
			<p>
				<?php esc_html_e( 'This message will disappear when the snippet is updated.', 'insert-headers-and-footers' ); ?>
			</p>
			<p>
				<a href="<?php echo esc_url( $button_url ); ?>" class="button button-primary">
					<?php echo esc_html( $button_text ); ?>
				</a>
				<a href="<?php echo esc_url( wpcode_utm_url( 'https://wpcode.com/docs/how-to-debug-php-errors-in-wpcode/', 'snippet-error-notice', 'edit-snippet' ) ); ?>" class="button button-secondary" target="_blank" rel="noopener noreferrer">
					<?php esc_html_e( 'Learn More', 'insert-headers-and-footers' ); ?>
				</a>
			</p>
		</div>
		<?php
	}

	/**
	 * Sync the snippet with the library version.
	 *
	 * @return void
	 */
	protected function sync_snippet() {
		if ( ! isset( $this->snippet ) || ! current_user_can( 'wpcode_edit_snippets' ) ) { //phpcs:ignore
			return;
		}

		$snippet_id = $this->snippet->get_id();
		$library_id = wpcode()->library->get_snippet_library_id( $snippet_id );

		if ( empty( $library_id ) ) {
			return;
		}

		$result = wpcode()->library->update_snippet_from_library( $snippet_id, $library_id );

		if ( ! $result ) {
			$this->set_error_message( __( 'Failed to update snippet from library.', 'insert-headers-and-footers' ) );
			return;
		}

		// Reload the snippet to get the updated version.
		$this->snippet = wpcode_get_snippet( $snippet_id );

		$this->set_success_message( __( 'Snippet successfully updated from library.', 'insert-headers-and-footers' ) );
	}

	/**
	 * Check if the current snippet has an update available.
	 *
	 * @return bool|array False if no update, array with version info if update available.
	 */
	private function snippet_has_update() {
		if ( ! isset( $this->snippet ) ) {
			return false;
		}

		$snippet_id = $this->snippet->get_id();
		$library_id = wpcode()->library->get_snippet_library_id( $snippet_id );

		if ( ! empty( $library_id ) ) {
			return wpcode()->library->check_snippet_update( $snippet_id, $library_id );
		}

		return false;
	}

	/**
	 * Get a list of custom conditional logic operators for the conditional logic builder.
	 *
	 * @return array
	 */
	public function get_conditional_logic_operators_custom_labels() {
		$options = wpcode()->conditional_logic->get_all_admin_options();

		$labels = array();

		foreach ( $options as $option ) {
			foreach ( $option['options'] as $key => $opt_group ) {
				if ( ! empty( $opt_group['operator_labels'] ) ) {
					$labels[ $key ] = $opt_group['operator_labels'];
				}
				if ( ! empty( $opt_group['placeholder'] ) ) {
					if ( ! isset( $labels[ $key ] ) ) {
						$labels[ $key ] = array();
					}
					$labels[ $key ]['placeholder'] = $opt_group['placeholder'];
				}
			}
		}

		return $labels;
	}

	/**
	 * Get the markup for the AI generate button.
	 *
	 * @param string $class The class to add to the button.
	 *
	 * @return void
	 */
	public function ai_generate_button( $class = 'wpcode-button-ai-not-available' ) {
		?>
		<button class="wpcode-button wpcode-button-secondary wpcode-button-just-icon wpcode-ai-improve wpcode-button-ai-generate <?php echo esc_attr( $class ); ?>" id="wpcode-ai-improve" type="button" data-show-if-id="#wpcode_snippet_type" data-show-if-value="php" title="<?php esc_attr_e( 'Use AI to improve your snippet by describing the changes you want', 'insert-headers-and-footers' ); ?>">
			<?php wpcode_icon( 'aisparks', 16, 16, '0 0 29.57 30' ); ?>
		</button>
		<?php
	}
}
PK     ©‰U]ØeÄ    7  includes/admin/pages/trait-wpcode-my-library-markup.phpnu „[µü¤        <?php

trait WPCode_My_Library_Markup_Lite {

	/**
	 * Get an array of items for the library blurred background.
	 *
	 * @return array
	 */
	public function get_placeholder_library_items() {
		$categories = array(
			'*'           => 'Most Popular',
			'admin'       => 'Admin',
			'archive'     => 'Archive',
			'attachments' => 'Attachments',
			'comments'    => 'Comments',
			'disable'     => 'Disable',
			'login'       => 'Login',
			'rss-feeds'   => 'RSS Feeds',
			'search'      => 'Search',
		);

		$categories_parsed = array();
		foreach ( $categories as $slug => $name ) {
			$categories_parsed[] = array(
				'slug' => $slug,
				'name' => $name,
			);
		}

		return array(
			'categories' => $categories_parsed,
			'snippets'   => array(
				array(
					'library_id' => 0,
					'title'      => 'Add an Edit Post Link to Archives',
					'code'       => '',
					'note'       => 'Make it easier to edit posts when viewing archives. Or on single pages. If you...',
					'categories' =>
						array(
							0 => 'archive',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Add Featured Images to RSS Feeds',
					'code'       => '',
					'note'       => 'Extend your site\'s RSS feeds by including featured images in the feed.',
					'categories' =>
						array(
							0 => 'rss-feeds',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Add the Page Slug to Body Class',
					'code'       => '',
					'note'       => 'Add the page slug to the body class for better styling.',
					'categories' =>
						array(
							0 => 'archive',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Allow SVG Files Upload',
					'code'       => '',
					'note'       => 'Add support for SVG files to be uploaded in WordPress media.',
					'categories' =>
						array(
							0 => 'most-popular',
							1 => 'attachments',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Automatically Link Featured Images to Posts',
					'code'       => '',
					'note'       => 'Wrap featured images in your theme in links to posts.',
					'categories' =>
						array(
							0 => 'attachments',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Change "Howdy Admin" in Admin Bar',
					'code'       => '',
					'note'       => 'Customize the "Howdy" message in the admin bar.',
					'categories' =>
						array(
							0 => 'admin',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Change Admin Panel Footer Text',
					'code'       => '',
					'note'       => 'Display custom text in the admin panel footer with this snippet.',
					'categories' =>
						array(
							0 => 'admin',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Change Excerpt Length',
					'code'       => '',
					'note'       => 'Update the length of the Excerpts on your website using this snippet.',
					'categories' =>
						array(
							0 => 'archive',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Change Read More Text for Excerpts',
					'code'       => '',
					'note'       => 'Customize the "Read More" text that shows up after excerpts.',
					'categories' =>
						array(
							0 => 'archive',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Completely Disable Comments',
					'code'       => '',
					'note'       => 'Disable comments for all post types, in the admin and the frontend.',
					'categories' =>
						array(
							0 => 'most-popular',
							1 => 'comments',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Delay Posts in RSS Feeds',
					'code'       => '',
					'note'       => 'Add a delay before published posts show up in the RSS feeds.',
					'categories' =>
						array(
							0 => 'rss-feeds',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Disable Attachment Pages',
					'code'       => '',
					'note'       => 'Hide the Attachment/Attachments pages on the frontend from all visitors.',
					'categories' =>
						array(
							0 => 'most-popular',
							1 => 'attachments',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Disable Automatic Updates',
					'code'       => '',
					'note'       => 'Use this snippet to completely disable automatic updates on your website.',
					'categories' =>
						array(
							0 => 'most-popular',
							1 => 'disable',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Disable Automatic Updates Emails',
					'code'       => '',
					'note'       => 'Stop getting emails about automatic updates on your WordPress site.',
					'categories' =>
						array(
							0 => 'most-popular',
							1 => 'disable',
						),
					'code_type'  => 'php',
				),
				array(
					'library_id' => 0,
					'title'      => 'Disable Gutenberg Editor (use Classic Editor)',
					'code'       => '',
					'note'       => 'Switch back to the Classic Editor by disablling the Block Editor.',
					'categories' =>
						array(
							0 => 'most-popular',
							1 => 'admin',
						),
					'code_type'  => 'php',
				),
			),
		);
	}

	/**
	 * Get placeholder library items in a blurred box.
	 *
	 * @return void
	 */
	public function blurred_placeholder_items() {
		$snippets = $this->get_placeholder_library_items();
		echo '<div class="wpcode-blur-area">';
		$this->get_library_markup( $snippets['categories'], $snippets['snippets'] );
		echo '</div>';
	}

	/**
	 * Get the markup for the "My Library" section.
	 *
	 * @return void
	 */
	public function get_my_library_markup() {
		$this->blurred_placeholder_items();
		// Show upsell.
		echo WPCode_Admin_Page::get_upsell_box( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			esc_html__( 'My Library is a PRO Feature', 'insert-headers-and-footers' ),
			'<p>' . esc_html__( 'Upgrade to WPCode PRO today and save your snippets in your private library directly from the plugin and import them with 1-click on other sites.', 'insert-headers-and-footers' ) . '</p>',
			array(
				'text' => esc_html__( 'Upgrade to PRO and Unlock "My Library"', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'add-snippet', 'my-library', 'upgrade-and-unlock' ) ),
			),
			array(
				'text' => esc_html__( 'Learn more about all the features', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'add-snippet', 'my-library', 'features' ) ),
			),
			array(
				esc_html__( 'Save your snippets to your library', 'insert-headers-and-footers' ),
				esc_html__( '1-click import snippets from you library', 'insert-headers-and-footers' ),
				esc_html__( 'Deploy new snippets from your account', 'insert-headers-and-footers' ),
				esc_html__( 'Update snippets across all your sites', 'insert-headers-and-footers' ),
				esc_html__( 'Set up new websites faster', 'insert-headers-and-footers' ),
				esc_html__( 'Edit snippets in the WPCode Library', 'insert-headers-and-footers' ),
			)
		);
	}
}PK     ª‰U]ªï‹�   �   1  includes/admin/class-wpcode-admin-page-loader.phpnu „[µü¤        <?php
/**
 * Class used to load admin pages allowing child classes
 *  to replace or add pages by changing the classes used.
 *
 * @package WPCode
 */

/**
 * Class WPCode admin page loader.
 */
class WPCode_Admin_Page_Loader {

	/**
	 * Array of admin pages to load.
	 *
	 * @var array
	 */
	public $pages = array();

	/**
	 * Slugs of pages that should not be visible in the submenu.
	 *
	 * @var array
	 */
	public $hidden_pages = array();

	/**
	 * Constructor.
	 */
	public function __construct() {
		$this->require_files();

		$this->hooks();
	}

	/**
	 * Hooks.
	 *
	 * @return void
	 */
	public function hooks() {
		add_action( 'admin_menu', array( $this, 'register_admin_menu' ), 9 );
		add_filter( 'plugin_action_links_' . WPCODE_PLUGIN_BASENAME, array( $this, 'add_plugin_action_links' ) );

		// Hide submenus.
		add_filter( 'parent_file', array( $this, 'hide_menus' ), 1020 );

		// Save Screen options.
		add_filter( 'set-screen-option', array( $this, 'screen_options_set' ), 10, 3 );
		add_filter( 'set_screen_option_wpcode_snippets_per_page', array( $this, 'screen_options_set' ), 10, 3 );
	}

	/**
	 * Load required files for the admin pages.
	 *
	 * @return void
	 */
	public function require_files() {
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/trait-wpcode-revisions-display.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/trait-wpcode-my-library-markup.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/trait-wpcode-wpconsent-notice.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page-headers-footers.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page-code-snippets.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page-snippet-manager.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page-library.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page-generator.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page-tools.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page-settings.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page-click.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page-pixel.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page-file-editor.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page-search-replace.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-admin-page-duplicator.php';
	}

	/**
	 * Load the pages classes allowing child classes to replace.
	 *
	 * @return void
	 */
	public function prepare_pages() {

		if ( $this->is_headers_footers_mode() ) {
			$this->pages['headers_footers'] = 'WPCode_Admin_Page_Headers_Footers';

			return;
		}

		$this->pages['code_snippets']   = 'WPCode_Admin_Page_Code_Snippets';
		$this->pages['snippet_manager'] = 'WPCode_Admin_Page_Snippet_Manager';
		$this->pages['headers_footers'] = 'WPCode_Admin_Page_Headers_Footers';
		$this->pages['pixel']           = 'WPCode_Admin_Page_Pixel';
		$this->pages['library']         = 'WPCode_Admin_Page_Library';
		$this->pages['generator']       = 'WPCode_Admin_Page_Generator';
		$this->pages['file_editor']     = 'WPCode_Admin_Page_File_Editor';
		$this->pages['search-replace']  = 'WPCode_Admin_Page_Search_Replace';
		$this->pages['duplicator']      = 'WPCode_Admin_Page_Duplicator';
		$this->pages['tools']           = 'WPCode_Admin_Page_Tools';
		$this->pages['settings']        = 'WPCode_Admin_Page_Settings';
		$this->pages['click']           = 'WPCode_Admin_Page_Click';
	}

	/**
	 * Load the pages using their specific classes.
	 *
	 * @return void
	 */
	public function load_pages() {

		$this->prepare_pages();

		do_action( 'wpcode_before_admin_pages_loaded', $this->pages );

		foreach ( $this->pages as $slug => $page_class ) {
			if ( ! class_exists( $page_class ) ) {
				continue;
			}
			/**
			 * @var WPCode_Admin_Page $new_page
			 */
			$this->pages[ $slug ] = new $page_class();
			if ( $this->pages[ $slug ]->hide_menu ) {
				$this->hidden_pages[] = $this->pages[ $slug ]->page_slug;
			}
		}
	}

	/**
	 * Add the main menu item used for all the other admin pages.
	 *
	 * @return void
	 */
	public function add_main_menu_item() {
		$svg         = get_wpcode_icon( 'logo', 36, 34, '-10 -6 80 80' );
		$wpcode_icon = 'data:image/svg+xml;base64,' . base64_encode( $svg ); // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.obfuscation_base64_encode

		add_menu_page(
			__( 'Code Snippets', 'insert-headers-and-footers' ),
			__( 'Code Snippets', 'insert-headers-and-footers' ),
			'wpcode_edit_snippets',
			'wpcode',
			array(
				$this,
				'admin_menu_page',
			),
			$wpcode_icon,
			'81.45687234432916'
		);
	}

	/**
	 * Handler for registering the admin menu & loading pages.
	 *
	 * @return void
	 */
	public function register_admin_menu() {
		if ( ! $this->is_headers_footers_mode() ) {
			$this->add_main_menu_item();
		}

		$this->load_pages();
	}

	/**
	 * Check if the site is in headers & footers only mode.
	 *
	 * @return mixed
	 */
	public function is_headers_footers_mode() {
		return wpcode()->settings->get_option( 'headers_footers_mode' );
	}

	/**
	 * Generic handler for the wpcode pages.
	 *
	 * @return void
	 */
	public function admin_menu_page() {
		do_action( 'wpcode_admin_page' );
	}

	/**
	 * Add a link to the code snippets list in the plugins list view.
	 *
	 * @param array $links The links specific to our plugin.
	 *
	 * @return array
	 */
	public function add_plugin_action_links( $links ) {
		$url  = add_query_arg(
			array(
				'page' => 'wpcode',
			),
			admin_url( 'admin.php' )
		);
		$text = esc_html__( 'Code Snippets', 'insert-headers-and-footers' );
		if ( wpcode()->settings->get_option( 'headers_footers_mode' ) ) {
			$url  = add_query_arg(
				array(
					'page' => 'wpcode-headers-footers',
				),
				admin_url( 'options-general.php' )
			);
			$text = esc_html__( 'Settings', 'insert-headers-and-footers' );
		}
		$custom = array();

		$custom['wpcodepro'] = sprintf(
			'<a href="%1$s" aria-label="%2$s" target="_blank" rel="noopener noreferrer" 
				style="color: #00a32a; font-weight: 700;" 
				onmouseover="this.style.color=\'#008a20\';" 
				onmouseout="this.style.color=\'#00a32a\';"
				>%3$s</a>',
			wpcode_utm_url(
				'https://wpcode.com/lite/',
				'all-plugins',
				'get-wpcode-pro'
			),
			esc_attr__( 'Upgrade to WPCode Pro', 'insert-headers-and-footers' ),
			esc_html__( 'Get WPCode Pro', 'insert-headers-and-footers' )
		);

		$custom['settings'] = sprintf(
			'<a href="%1$s">%2$s</a>',
			$url,
			$text
		);

		return array_merge( $custom, $links );
	}

	/**
	 * Hide menu items for pages that should be hidden.
	 * We're using the parent_file filter to improve compatibility with admin-menu-editor.
	 *
	 * @param string $parent_file The parent file.
	 *
	 * @return string
	 */
	public function hide_menus( $parent_file ) {

		foreach ( $this->hidden_pages as $page ) {
			remove_submenu_page( 'wpcode', $page );
		}

		return $parent_file;
	}


	/**
	 * Set the per page option for the snippets list screen.
	 *
	 * @param $status
	 * @param $option
	 * @param $value
	 *
	 * @return mixed
	 */
	public function screen_options_set( $status, $option, $value ) {

		if ( isset( $_POST['wpcode_screen_order_by'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
			$order_by = sanitize_text_field( wp_unslash( $_POST['wpcode_screen_order_by'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
			update_user_option( get_current_user_id(), 'wpcode_snippets_order_by', $order_by );
		}

		if ( isset( $_POST['wpcode_screen_order'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
			$order_by = sanitize_text_field( wp_unslash( $_POST['wpcode_screen_order'] ) ); // phpcs:ignore WordPress.Security.NonceVerification
			update_user_option( get_current_user_id(), 'wpcode_snippets_order', $order_by );
		}

		if ( 'wpcode_snippets_per_page' === $option ) {
			return absint( $value );
		}

		return $status;
	}
}
PK     ª‰U][qk3  3  $  includes/admin/class-wpcode-skin.phpnu „[µü¤        <?php
/**
 * Skin class.
 *
 * @since 2.0.7
 *
 * @package WPCode
 */

// Exit if accessed directly
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

class WPCode_Skin extends WP_Upgrader_Skin {

	/**
	 * Primary class constructor.
	 *
	 * @param array $args Empty array of args (we will use defaults).
	 *
	 * @since 2.0.7
	 *
	 */
	public function __construct( $args = array() ) {

		parent::__construct();

	}

	/**
	 * Set the upgrader object and store it as a property in the parent class.
	 *
	 * @param object $upgrader The upgrader object (passed by reference).
	 *
	 * @since 2.0.7
	 *
	 */
	public function set_upgrader( &$upgrader ) {

		if ( is_object( $upgrader ) ) {
			$this->upgrader =& $upgrader;
		}

	}

	/**
	 * Set the upgrader result and store it as a property in the parent class.
	 *
	 * @param object $result The result of the install process.
	 *
	 * @since 2.0.7
	 *
	 */
	public function set_result( $result ) {

		$this->result = $result;

	}

	/**
	 * Empty out the header of its HTML content and only check to see if it has
	 * been performed or not.
	 *
	 * @since 2.0.7
	 */
	public function header() {
	}

	/**
	 * Empty out the footer of its HTML contents.
	 *
	 * @since 2.0.7
	 */
	function footer() {
	}

	/**
	 * Instead of outputting HTML for errors, json_encode the errors and send them
	 * back to the Ajax script for processing.
	 *
	 * @param array $errors Array of errors with the install process.
	 *
	 * @since 2.0.7
	 *
	 */
	function error( $errors ) {

		if ( ! empty( $errors ) ) {
			$error_message = sprintf(
			// Translators: Support link tag starts with url and Support link tag ends.
				esc_html__( 'There was an error installing the addon. Please try again. If you are still having issues, please %1$scontact our support%2$s team.', 'insert-headers-and-footers' ),
				'<a target="_blank" href="' . wpcode_utm_url( 'https://library.wpcode.com/account/support/', 'notice', 'error-installing-addons' ) . '">',
				'</a>'
			);
			if ( is_wp_error( $errors ) ) {
				/**
				 * @var WP_Error $errors
				 */
				$message = $errors->get_error_message();

				if ( ! empty( $message ) ) {
					// Translators: The name of the addon that can't be installed, Support link tag starts with url and Support link tag ends.
					$error_message = sprintf(
					// Translators: The name of the addon that can't be installed, Support link tag starts with url and Support link tag ends.
						esc_html__( 'There was an error installing the addon, %1$s. Please try again. If you are still having issues, please %2$scontact our support%3$s team. ', 'insert-headers-and-footers' ),
						esc_html( $message ),
						'<a target="_blank" href="' . wpcode_utm_url( 'https://library.wpcode.com/account/support/', 'notice', 'error-installing-addons' ) . '">',
						'</a>'
					);
				}
			}

			wp_send_json( array( 'error' => $error_message ) );
		}

	}

	/**
	 * Empty out the feedback method to prevent outputting HTML strings as the install
	 * is progressing.
	 *
	 * @param string $string The feedback string.
	 *
	 * @since 2.0.7
	 *
	 */
	function feedback( $string, ...$args ) {

	}

}
PK     ª‰U]î†‘ð  ð  &  includes/admin/class-wpcode-review.phpnu „[µü¤        <?php

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Ask for some love.
 *
 *
 */
class WPCode_Review {

	/**
	 * Primary class constructor.
	 *
	 *
	 */
	public function __construct() {

		// Admin notice requesting review.
		add_action( 'admin_init', array( $this, 'review_request' ) );

		// Admin footer text.
		add_filter( 'admin_footer_text', array( $this, 'admin_footer' ), 1, 2 );
	}

	/**
	 * Add admin notices as needed for reviews.
	 */
	public function review_request() {

		// Only consider showing the review request to admin users.
		if ( ! is_super_admin() ) {
			return;
		}

		// Don't show notice to headers & footers mode users.
		if ( wpcode()->settings->get_option( 'headers_footers_mode' ) ) {
			return;
		}

		// If this is a multisite and the user is a super admin let's see if they already dismissed this on other sites.
		if ( is_multisite() && is_super_admin() ) {
			$dismissed = get_user_meta( get_current_user_id(), 'wpcode_dismissed_review_request', true );

			if ( ! empty( $dismissed ) ) {
				return;
			}
		}

		// Verify that we can do a check for reviews.
		$notices = get_option( 'wpcode_admin_notices', array() );
		$time    = time();
		$load    = false;

		if ( empty( $notices['review_request'] ) ) {
			$notices['review_request'] = array(
				'time'      => $time,
				'dismissed' => false,
			);

			update_option( 'wpcode_admin_notices', $notices );

			return;
		}

		// Check if it has been dismissed or not.
		if (
			( isset( $notices['review_request']['dismissed'] ) &&
			  ! $notices['review_request']['dismissed'] ) &&
			(
				isset( $notices['review_request']['time'] ) &&
				( ( $notices['review_request']['time'] + DAY_IN_SECONDS ) <= $time )
			)
		) {
			$load = true;
		}

		// If we cannot load, return early.
		if ( ! $load ) {
			return;
		}

		$this->review();
	}

	/**
	 * Maybe show Lite review request.
	 */
	public function review() {

		// Fetch when plugin was initially installed.
		$activated = get_option( 'ihaf_activated', array() );

		if ( ! empty( $activated['wpcode'] ) ) {
			// Only continue if plugin has been installed for at least 14 days.
			if ( ( $activated['wpcode'] + ( DAY_IN_SECONDS * 14 ) ) > time() ) {
				return;
			}
		} else {
			$activated['wpcode'] = time();

			update_option( 'ihaf_activated', $activated );

			return;
		}

		// Only proceed with displaying if the user is using an active snippet.
		$snippet_count = wp_count_posts( 'wpcode' );

		if ( empty( $snippet_count->publish ) ) {
			return;
		}

		$feedback_url = add_query_arg( array(
			'siteurl' => untrailingslashit( home_url() ),
			'plugin' => class_exists( 'WPCode_Premium') ? 'pro' : 'lite',
			'version' => WPCODE_VERSION,
		), 'https://www.wpcode.com/plugin-feedback/' );
		$feedback_url = wpcode_utm_url( $feedback_url, 'review-notice', 'feedback' );

		ob_start();

		// We have a candidate! Output a review message.
		?>
		<div class="wpcode-review-step wpcode-review-step-1">
			<p><?php esc_html_e( 'Are you enjoying WPCode?', 'insert-headers-and-footers' ); ?></p>
			<p>
				<a href="#" class="wpcode-review-switch-step" data-step="3"><?php esc_html_e( 'Yes', 'insert-headers-and-footers' ); ?></a>&nbsp;&bull;&nbsp;<a href="#" class="wpcode-review-switch-step" data-step="2"><?php esc_html_e( 'Not Really', 'insert-headers-and-footers' ); ?></a>
			</p>
		</div>
		<div class="wpcode-review-step wpcode-review-step-2" style="display: none">
			<p><?php esc_html_e( 'We\'re sorry to hear you aren\'t enjoying WPCode. We would love a chance to improve. Could you take a minute and let us know what we can do better?', 'insert-headers-and-footers' ); ?></p>
			<p>
				<a href="<?php echo esc_url( $feedback_url ); ?>" class="wpcode-notice-dismiss" target="_blank"><?php esc_html_e( 'Give Feedback', 'insert-headers-and-footers' ); ?></a>&nbsp;&bull;&nbsp;<a href="#" class="wpcode-notice-dismiss" rel="noopener noreferrer"><?php esc_html_e( 'No thanks', 'insert-headers-and-footers' ); ?></a>
			</p>
		</div>
		<div class="wpcode-review-step wpcode-review-step-3" style="display: none">
			<p><?php esc_html_e( 'That\'s awesome! Could you please do us a BIG favor and give it a 5-star rating on WordPress to help us spread the word and boost our motivation?', 'insert-headers-and-footers' ); ?></p>
			<p>
				<a href="https://wordpress.org/support/plugin/insert-headers-and-footers/reviews/?filter=5#new-post" class="wpcode-notice-dismiss wpcode-review-out" target="_blank" rel="noopener noreferrer"><?php esc_html_e( 'Give Feedback', 'insert-headers-and-footers' ); ?></a>&nbsp;&bull;&nbsp;<a href="#" class="wpcode-notice-dismiss" rel="noopener noreferrer"><?php esc_html_e( 'No thanks', 'insert-headers-and-footers' ); ?></a><br>
			</p>
		</div>
		<script type="text/javascript">
			jQuery(document).ready(function ($) {
				$(document).on('click', '.wpcode-review-switch-step', function (e) {
					e.preventDefault();
					var target = $(this).attr('data-step');
					if (target) {
						var notice = $(this).closest('.wpcode-review-notice');
						var review_step = notice.find('.wpcode-review-step-' + target);
						if (review_step.length > 0) {
							notice.find('.wpcode-review-step:visible').fadeOut(function () {
								review_step.fadeIn();
							});
						}
					}
				})
			});
		</script>
		<?php

		WPCode_Notice::info(
			ob_get_clean(),
			array(
				'dismiss' => WPCode_Notice::DISMISS_GLOBAL,
				'slug'    => 'review_request',
				'autop'   => false,
				'class'   => 'wpcode-review-notice',
			)
		);
	}

	/**
	 * When user is on a WPCode related admin page, display footer text
	 * that graciously asks them to rate us.
	 *
	 * @param string $text Footer text.
	 *
	 * @return string
	 *
	 *
	 */
	public function admin_footer( $text ) {

		global $current_screen;

		if ( ! empty( $current_screen->id ) && strpos( $current_screen->id, 'wpcode' ) !== false ) {
			$url  = 'https://wordpress.org/support/plugin/insert-headers-and-footers/reviews/?filter=5#new-post';
			$text = sprintf(
				wp_kses( /* translators: $1$s - WPCode plugin name; $2$s - WP.org review link; $3$s - WP.org review link. */
					__( 'Please rate %1$s <a href="%2$s" target="_blank" rel="noopener noreferrer">&#9733;&#9733;&#9733;&#9733;&#9733;</a> on <a href="%3$s" target="_blank" rel="noopener">WordPress.org</a> to help us spread the word. Thank you from the WPCode team!', 'insert-headers-and-footers' ),
					array(
						'a' => array(
							'href'   => array(),
							'target' => array(),
							'rel'    => array(),
						),
					)
				),
				'<strong>WPCode</strong>',
				$url,
				$url
			);
		}

		return $text;
	}

}

new WPCode_Review();
PK     ª‰U]�Ð ™´%  ´%  ,  includes/admin/class-wpcode-admin-notice.phpnu „[µü¤        <?php

class WPCode_Notice {

	/**
	 * Not dismissible.
	 *
	 * Constant attended to use as the value of the $args['dismiss'] argument.
	 * DISMISS_NONE means that the notice is not dismissible.
	 *
	 */
	const DISMISS_NONE = 0;

	/**
	 * Dismissible global.
	 *
	 * Constant attended to use as the value of the $args['dismiss'] argument.
	 * DISMISS_GLOBAL means that the notice will have the dismiss button, and after clicking this button, the notice will be dismissed for all users.
	 *
	 */
	const DISMISS_GLOBAL = 1;

	/**
	 * Dismissible per user.
	 *
	 * Constant attended to use as the value of the $args['dismiss'] argument.
	 * DISMISS_USER means that the notice will have the dismiss button, and after clicking this button, the notice will be dismissed only for the current user..
	 *
	 */
	const DISMISS_USER = 2;

	/**
	 * Added notices.
	 *
	 * @var array
	 */
	public $notices = array();

	/**
	 * Top notices, displayed separately.
	 *
	 * @var array
	 */
	public $notices_top = array();

	/**
	 * Init.
	 *
	 */
	public function __construct() {

		$this->hooks();
	}

	/**
	 * Hooks.
	 *
	 */
	public function hooks() {
		add_action( 'admin_notices', array( $this, 'display' ), 999000 );
		// Hook for our specific pages where we hide all other admin notices.
		add_action( 'wpcode_admin_notices', array( $this, 'display' ), 10 );
		add_action( 'wp_ajax_wpcode_notice_dismiss', array( $this, 'dismiss_ajax' ) );

		// Display notices above the header.
		add_action( 'wpcode_admin_page', array( $this, 'display_top' ), 5 );
	}

	/**
	 * Enqueue assets.
	 */
	public function enqueues() {

		wp_enqueue_script(
			'wpcode-admin-notices',
			WPCODE_PLUGIN_URL . 'build/notices.js',
			array( 'jquery' ),
			WPCODE_VERSION,
			true
		);

		wp_localize_script(
			'wpcode-admin-notices',
			'wpcode_admin_notices',
			array(
				'ajax_url' => admin_url( 'admin-ajax.php' ),
				'nonce'    => wp_create_nonce( 'wpcode-admin' ),
			)
		);
	}

	/**
	 * Display the notices.
	 */
	public function display() {

		$dismissed_notices = get_user_meta( get_current_user_id(), 'wpcode_admin_notices', true );
		$dismissed_notices = is_array( $dismissed_notices ) ? $dismissed_notices : array();
		$dismissed_notices = array_merge( $dismissed_notices, (array) get_option( 'wpcode_admin_notices', array() ) );

		foreach ( $this->notices as $slug => $notice ) {
			if ( isset( $dismissed_notices[ $slug ] ) && ! empty( $dismissed_notices[ $slug ]['dismissed'] ) ) {
				unset( $this->notices[ $slug ] );
			}
		}

		$output = implode( '', $this->notices );

		echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped

		// Enqueue script only when it's needed.
		if ( strpos( $output, 'is-dismissible' ) !== false ) {
			$this->enqueues();
		}
	}

	/**
	 * Display the notices at the top of the WPC pages.
	 */
	public function display_top() {
		$dismissed_notices = get_user_meta( get_current_user_id(), 'wpcode_admin_notices', true );
		$dismissed_notices = is_array( $dismissed_notices ) ? $dismissed_notices : array();
		$dismissed_notices = array_merge( $dismissed_notices, (array) get_option( 'wpcode_admin_notices', array() ) );

		foreach ( $this->notices_top as $slug => $notice ) {
			if ( isset( $dismissed_notices[ $slug ] ) && ! empty( $dismissed_notices[ $slug ]['dismissed'] ) ) {
				unset( $this->notices_top[ $slug ] );
			}
		}

		$output = implode( '', $this->notices_top );

		if ( ! empty( $output ) ) {
			echo '<div class="wpcode-notice-top-area">';
			echo $output; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			echo '</div>';
		}

		// Enqueue script only when it's needed.
		if ( strpos( $output, 'is-dismissible' ) !== false ) {
			$this->enqueues();
		}
	}

	/**
	 * Add notice to the registry.
	 *
	 *
	 * @param string $message Message to display.
	 * @param string $type Type of the notice. Can be [ '' (default) | 'info' | 'error' | 'success' | 'warning' ].
	 * @param array  $args The array of additional arguments. Please see the $defaults array below.
	 */
	public static function add( $message, $type = '', $args = [] ) {

		static $uniq_id = 0;

		$defaults = [
			'dismiss' => self::DISMISS_NONE,
			// Dismissible level: one of the self::DISMISS_* const. By default notice is not dismissible.
			'slug'    => '',
			// Slug. Should be unique if dismissible is not equal self::DISMISS_NONE.
			'autop'   => true,
			// `false` if not needed to pass message through wpautop().
			'class'   => '',
			// Additional CSS class.
		];

		$args = wp_parse_args( $args, $defaults );

		$dismissible = (int) $args['dismiss'];
		$dismissible = $dismissible > self::DISMISS_USER ? self::DISMISS_USER : $dismissible;

		$class  = $dismissible > self::DISMISS_NONE ? ' is-dismissible' : '';
		$global = ( $dismissible === self::DISMISS_GLOBAL ) ? 'global-' : '';
		$slug   = sanitize_key( $args['slug'] );

		++ $uniq_id;

		$uniq_id += ( $uniq_id === (int) $slug ) ? 1 : 0;

		$id = 'wpcode-notice-' . $global;

		$id .= empty( $slug ) ? $uniq_id : $slug;

		$type_class = ! empty( $type ) ? 'notice-' . esc_attr( sanitize_key( $type ) ) : '';
		$class      = empty( $args['class'] ) ? $class : $class . ' ' . esc_attr( sanitize_key( $args['class'] ) );
		$message    = $args['autop'] ? wpautop( $message ) : $message;
		$notice     = sprintf(
			'<div class="notice wpcode-notice %s%s" id="%s">%s</div>',
			esc_attr( $type_class ),
			esc_attr( $class ),
			esc_attr( $id ),
			$message
		);

		if ( 'top' === $type ) {
			if ( empty( $slug ) ) {
				wpcode()->notice->notices_top[] = $notice;
			} else {
				wpcode()->notice->notices_top[ $slug ] = $notice;
			}

			return; // Don't mix top notices.
		}

		if ( empty( $slug ) ) {
			wpcode()->notice->notices[] = $notice;
		} else {
			wpcode()->notice->notices[ $slug ] = $notice;
		}
	}

	/**
	 * Add info notice.
	 *
	 *
	 * @param string $message Message to display.
	 * @param array  $args Array of additional arguments. Details in the self::add() method.
	 */
	public static function info( $message, $args = [] ) {

		self::add( $message, 'info', $args );
	}

	/**
	 * Add top notice (displayed before the header on wpcode pages only).
	 *
	 *
	 * @param string $message Message to display.
	 * @param array  $args Array of additional arguments. Details in the self::add() method.
	 */
	public static function top( $message, $args = [] ) {

		self::add( $message, 'top', $args );
	}

	/**
	 * Add error notice.
	 *
	 *
	 * @param string $message Message to display.
	 * @param array  $args Array of additional arguments. Details in the self::add() method.
	 */
	public static function error( $message, $args = [] ) {

		self::add( $message, 'error', $args );
	}

	/**
	 * Add success notice.
	 *
	 *
	 * @param string $message Message to display.
	 * @param array  $args Array of additional arguments. Details in the self::add() method.
	 */
	public static function success( $message, $args = [] ) {

		self::add( $message, 'success', $args );
	}

	/**
	 * Add warning notice.
	 *
	 *
	 * @param string $message Message to display.
	 * @param array  $args Array of additional arguments. Details in the self::add() method.
	 */
	public static function warning( $message, $args = [] ) {

		self::add( $message, 'warning', $args );
	}

	/**
	 * AJAX routine that updates dismissed notices meta data.
	 *

	 */
	public function dismiss_ajax() {

		// Run a security check.
		check_ajax_referer( 'wpcode-admin' );

		// Sanitize POST data.
		$post = array_map( 'sanitize_key', wp_unslash( $_POST ) );

		// Update notices meta data.
		if ( strpos( $post['id'], 'global-' ) !== false ) {

			// Check for permissions.
			if ( ! current_user_can( 'wpcode_edit_snippets' ) ) {
				wp_send_json_error();
			}

			$notices = $this->dismiss_global( $post['id'] );
			$level   = self::DISMISS_GLOBAL;

		} else {

			$notices = $this->dismiss_user( $post['id'] );
			$level   = self::DISMISS_USER;
		}

		/**
		 * Allows developers to apply additional logic to the dismissing notice process.
		 * Executes after updating option or user meta (according to the notice level).
		 *
		 *
		 * @param string  $notice_id Notice ID (slug).
		 * @param integer $level Notice level.
		 * @param array   $notices Dismissed notices.
		 */
		do_action( 'wpcode_admin_notice_dismiss_ajax', $post['id'], $level, $notices );

		wp_send_json_success();
	}

	/**
	 * AJAX sub-routine that updates dismissed notices option.
	 *
	 *
	 * @param string $id Notice Id.
	 *
	 * @return array Notices.
	 */
	private function dismiss_global( $id ) {

		$id             = str_replace( 'global-', '', $id );
		$notices        = get_option( 'wpcode_admin_notices', array() );
		$notices[ $id ] = array(
			'time'      => time(),
			'dismissed' => true,
		);

		update_option( 'wpcode_admin_notices', $notices, true );

		// If this is a multisite, and they dismissed the review-request let's keep a note in the user's meta.
		if ( is_multisite() && is_super_admin() && 'review_request' === $id ) {
			update_user_meta( get_current_user_id(), 'wpcode_dismissed_review_request', true );
		}

		return $notices;
	}

	/**
	 *  AJAX sub-routine that updates dismissed notices user meta.
	 *
	 *
	 * @param string $id Notice Id.
	 *
	 * @return array Notices.
	 */
	private function dismiss_user( $id ) {

		$user_id        = get_current_user_id();
		$notices        = get_user_meta( $user_id, 'wpcode_admin_notices', true );
		$notices        = ! is_array( $notices ) ? array() : $notices;
		$notices[ $id ] = array(
			'time'      => time(),
			'dismissed' => true,
		);

		update_user_meta( $user_id, 'wpcode_admin_notices', $notices );

		return $notices;
	}
}
PK     ª‰U]Lt´&  &  $  includes/admin/class-wpcode-docs.phpnu „[µü¤        <?php
/**
 * Load docs data from the server and store it
 * in local file cache in the uplaods folder.
 *
 * @package WPCode
 */

/**
 * The class to load docs data from the server.
 */
class WPCode_Docs {

	/**
	 * The URL from which to grab docs.
	 *
	 * @var string
	 */
	public $url = 'https://cdn.wpcode.com/wp-content/docs.json';

	/**
	 * The categories.
	 *
	 * @var array
	 */
	private $categories;

	/**
	 * The docs data.
	 *
	 * @var array
	 */
	private $docs;

	/**
	 * Load docs data from cache or from the server.
	 *
	 * @return void
	 */
	public function load_docs_data() {
		$docs_data = wpcode()->file_cache->get( 'docs', DAY_IN_SECONDS );
		if ( false === $docs_data ) {
			$docs_data = $this->load_from_server();
			wpcode()->file_cache->set( 'docs', $docs_data );
		}

		$this->categories = isset( $docs_data['categories'] ) ? $docs_data['categories'] : array();
		$this->docs       = isset( $docs_data['docs'] ) ? $docs_data['docs'] : array();
	}

	/**
	 * Get the docs.
	 *
	 * @return array
	 */
	public function get_docs() {
		if ( ! isset( $this->docs ) ) {
			$this->load_docs_data();
		}

		return $this->docs;
	}

	/**
	 * Get the docs categories.
	 *
	 * @return array
	 */
	public function get_categories() {
		if ( ! isset( $this->categories ) ) {
			$this->load_docs_data();
		}

		return $this->categories;
	}

	/**
	 * Load the docs data from the server.
	 *
	 * @return array
	 */
	public function load_from_server() {
		$request = wp_remote_get( $this->url );

		if ( wp_remote_retrieve_response_code( $request ) > 299 ) {
			return array();
		}

		return json_decode( wp_remote_retrieve_body( $request ), true );
	}

	/**
	 * Go through all the docs and retrieve just those for this category.
	 *
	 * @param string $slug The category slug.
	 *
	 * @return array
	 */
	public function get_docs_for_category( $slug ) {
		$docs = $this->get_docs();

		ksort( $docs );
		$category_docs = array();
		// Until we drop PHP 5.2 support to use closure.
		foreach ( $docs as $doc ) {
			if ( ! in_array( $slug, $doc['categories'], true ) ) {
				continue;
			}
			$category_docs[] = $doc;
		}

		return $category_docs;
	}

	/**
	 * Output the docs categories markup.
	 *
	 * @return void
	 */
	public function get_categories_accordion() {
		?>
		<div id="wpcode-help-categories" style="transition: opacity 300ms ease-in 0s; opacity: 1;">
			<ul class="wpcode-help-categories-toggle">
				<?php
				$ci         = 0;
				$categories = $this->get_categories();
				foreach ( $categories as $slug => $category_title ) {
					$style = 0 === $ci ? 'display:block' : '';
					$class = 0 === $ci ? 'wpcode-help-category open' : 'wpcode-help-category';
					$ci ++;
					$docs = $this->get_docs_for_category( $slug );
					$i    = 0;
					?>
					<li class="<?php echo esc_attr( $class ); ?>">
						<header>
							<?php wpcode_icon( 'folder', 28, 22 ); ?>
							<span><?php echo esc_html( $category_title ); ?></span>
							<?php wpcode_icon( 'arrow', 10, 16 ); ?>
						</header>
						<ul class="wpcode-help-docs" style="<?php echo esc_attr( $style ); ?>">
							<?php
							foreach ( $docs as $doc ) {
								$i ++;
								?>
								<li>
									<?php wpcode_icon( 'file-text', 16, 16 ); ?>
									<a href="<?php echo esc_url( wpcode_utm_url( $doc['url'], 'help-overlay', 'view-doc', esc_attr( $doc['title'] ) ) ); ?>" rel="noopener noreferrer" target="_blank">
										<?php echo esc_html( $doc['title'] ); ?>
									</a>
								</li>
								<?php
								if ( 5 === $i && count( $docs ) > 5 ) {
									echo '<div style="display: none;">';
								}
							}
							if ( count( $docs ) > 5 ) {
								echo '</div>' // Hidden div for the rest of the elements.
								?>

								<button class="wpcode-button wpcode-button-secondary viewall" type="button">
									<?php
									printf(
									// Translators: Placeholder for the category name.
										esc_html__( 'View All %s Docs', 'insert-headers-and-footers' ),
										esc_html( $category_title )
									);
									?>
								</button>
							<?php } ?>
						</ul>
					</li>
				<?php } ?>
			</ul>
		</div>
		<?php
	}
}
PK     ª‰U]Ù�9Æå3  å3  1  includes/admin/class-wpcode-suggested-plugins.phpnu „[µü¤        <?php
/**
 * Suggest other relevant free plugins to our users.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class WPCode_Suggested_Plugins
 */
class WPCode_Suggested_Plugins {

	/**
	 * WPCode_Suggested_Plugins constructor.
	 */
	public function __construct() {
		$this->hooks();
	}

	/**
	 * Hooks for the class.
	 */
	public function hooks() {
		add_action( 'wp_ajax_wpcode_install_plugin', array( $this, 'install_plugin' ) );
		// Maybe suggest plugins to the current user.
		add_action( 'admin_init', array( $this, 'maybe_suggest_plugins' ) );
	}

	/**
	 * Get all plugins that we suggest.
	 *
	 * @return array
	 */
	public static function all_plugins() {
		$plugins = array(
			'wpconsent'              => array(
				'name'        => 'WPConsent',
				'description' => esc_html__( 'Custom cookie banner with automatic script blocking, advanced scanner and more.', 'insert-headers-and-footers' ),
				'url'         => 'https://downloads.wordpress.org/plugin/wpconsent-cookies-banner-privacy-suite.zip',
				'slug'        => 'wpconsent-cookies-banner-privacy-suite/wpconsent.php',
				'pro_slug'    => 'wpconsent-premium/wpconsent-premium.php',
				'icon'        => 'icon-wpconsent.png',
				'suggested'   => true,
				'library'     => false,
			),
			'duplicator'             => array(
				'name'        => 'Duplicator',
				'description' => esc_html__( 'Easy, Fast and Secure WordPress and Website Migration.', 'insert-headers-and-footers' ),
				'url'         => 'https://downloads.wordpress.org/plugin/duplicator.zip',
				'slug'        => 'duplicator/duplicator.php',
				'pro_slug'    => 'duplicator-pro/duplicator-pro.php',
				'icon'        => 'icon-duplicator.png',
				'suggested'   => true,
				'library'     => false,
			),
			'search-replace-wpcode'  => array(
				'name'        => 'Search & Replace Everything',
				'description' => esc_html__( 'Replace text across your database or media uploads in a single plugin.', 'insert-headers-and-footers' ),
				'url'         => 'https://downloads.wordpress.org/plugin/search-replace-wpcode.zip',
				'slug'        => 'search-replace-wpcode/wsrw.php',
				'pro_slug'    => 'search-replace-wpcode-pro/wsrw-premium.php',
				'icon'        => 'icon-search-replace-wpcode.png',
				'suggested'   => true,
				'library'     => false,
			),
			'wp-mail-smtp'           => array(
				'name'        => 'WP Mail SMTP',
				'description' => esc_html__( 'Making Email Deliverability Easy for WordPress', 'insert-headers-and-footers' ),
				'url'         => 'https://downloads.wordpress.org/plugin/wp-mail-smtp.zip',
				'slug'        => 'wp-mail-smtp/wp_mail_smtp.php',
				'pro_slug'    => 'wp-mail-smtp-pro/wp_mail_smtp_pro.php',
				'icon'        => 'icon-wp-mail-smtp.png',
				'suggested'   => true,
				'library'     => false,
			),
			'all-in-one-seo-pack'    => array(
				'name'        => 'All in One SEO Pack',
				'description' => esc_html__( 'Powerful SEO Plugin to Boost SEO Rankings & Increase Traffic.', 'insert-headers-and-footers' ),
				'url'         => 'https://downloads.wordpress.org/plugin/all-in-one-seo-pack.zip',
				'slug'        => 'all-in-one-seo-pack/all_in_one_seo_pack.php',
				'pro_slug'    => 'all-in-one-seo-pack-pro/all_in_one_seo_pack.php',
				'icon'        => 'icon-all-in-one-seo-pack.png',
				'suggested'   => true,
				'library'     => true,
			),
			'wpforms'                => array(
				'name'        => 'WPForms',
				'description' => esc_html__( 'The Best Drag & Drop WordPress Form Builder.', 'insert-headers-and-footers' ),
				'url'         => 'https://downloads.wordpress.org/plugin/wpforms-lite.zip',
				'slug'        => 'wpforms-lite/wpforms.php',
				'pro_slug'    => 'wpforms/wpforms.php',
				'icon'        => 'icon-wpforms.png',
				'suggested'   => true,
				'library'     => true,
			),
			'uncanny-automator'      => array(
				'name'        => 'Uncanny Automator',
				'description' => esc_html__( 'Connect your WordPress plugins together and create automated workflows.', 'insert-headers-and-footers' ),
				'url'         => 'https://downloads.wordpress.org/plugin/uncanny-automator.zip',
				'slug'        => 'uncanny-automator/uncanny-automator.php',
				'pro_slug'    => 'uncanny-automator-pro/uncanny-automator-pro.php',
				'icon'        => 'icon-uncanny-automator.png',
				'suggested'   => true,
				'library'     => false,
			),
			'easy-digital-downloads' => array(
				'name'        => 'Easy Digital Downloads',
				'description' => esc_html__( 'The easiest way to sell digital products with WordPress.', 'insert-headers-and-footers' ),
				'url'         => 'https://downloads.wordpress.org/plugin/easy-digital-downloads.zip',
				'slug'        => 'easy-digital-downloads/easy-digital-downloads.php',
				'pro_slug'    => 'easy-digital-downloads-pro/easy-digital-downloads.php',
				'icon'        => 'icon-edd.png',
				'suggested'   => false,
				'library'     => true,
			),
			'charitable'             => array(
				'name'        => 'Charitable',
				'description' => esc_html__( 'Raise more money for your cause with the most powerful WordPress donation and fundraising plugin.', 'insert-headers-and-footers' ),
				'url'         => 'https://downloads.wordpress.org/plugin/charitable.zip',
				'slug'        => 'charitable/charitable.php',
				'pro_slug'    => 'charitable/charitable.php',
				'icon'        => 'icon-charitable.jpg',
				'suggested'   => false,
				'library'     => true,
			),
			'wp-simple-pay'          => array(
				'name'        => 'WP Simple Pay',
				'description' => esc_html__( 'Start accepting one-time and recurring payments on your WordPress site without setting up a shopping cart.', 'insert-headers-and-footers' ),
				'url'         => 'https://downloads.wordpress.org/plugin/stripe.zip',
				'slug'        => 'stripe/stripe-checkout.php',
				'pro_slug'    => 'wp-simple-pay-pro-3/simple-pay.php',
				'icon'        => 'icon-wp-simple-pay.png',
				'suggested'   => false,
				'library'     => true,
			),
		);

		return $plugins;
	}

	/**
	 * Get a list of plugins to suggest.
	 *
	 * @param int $count How many plugins to suggest.
	 *
	 * @return array
	 */
	public function get_suggested_plugins( $count = 3 ) {
		$plugins = self::all_plugins();

		// Let's loop through all the plugins and see which are installed already and only suggest the ones that are not. We should check for the pro version for each one.
		$suggested_plugins = array();
		foreach ( $plugins as $slug => $plugin ) {
			if ( $count <= count( $suggested_plugins ) ) {
				break;
			}
			if ( ! $plugin['suggested'] ) {
				continue;
			}

			if ( ! $this->is_plugin_installed( $plugin['slug'] ) && ! $this->is_plugin_installed( $plugin['pro_slug'] ) ) {
				$suggested_plugins[ $slug ] = $plugin;
			}
		}

		return $suggested_plugins;
	}

	/**
	 * Get a list of plugins that have a library integration so we can show them in the plugin snippets page.
	 *
	 * @return array
	 */
	public static function get_library_plugins() {
		$plugins = self::all_plugins();

		// Filter out just the plugins that have "library" true.
		return array_filter(
			$plugins,
			function ( $plugin ) {
				return $plugin['library'];
			}
		);
	}

	/**
	 * Check if a plugin is installed.
	 *
	 * @param string $slug The plugin slug.
	 *
	 * @return bool
	 */
	public function is_plugin_installed( $slug ) {
		$installed_plugins = array_keys( get_plugins() );

		return in_array( $slug, $installed_plugins, true );
	}

	/**
	 * AJAX callback to install a plugin.
	 *
	 * @return void
	 */
	public function install_plugin() {
		check_ajax_referer( 'wpcode_admin' );

		// If the current user can't install plugins they should not be trying this.
		if ( ! current_user_can( 'install_plugins' ) ) {
			wp_send_json_error();
		}

		require_once ABSPATH . 'wp-admin/includes/file.php';
		require_once ABSPATH . 'wp-admin/includes/template.php';
		require_once ABSPATH . 'wp-admin/includes/class-wp-screen.php';
		require_once ABSPATH . 'wp-admin/includes/screen.php';

		$allowed_plugins = self::all_plugins();
		$slug            = isset( $_POST['slug'] ) ? sanitize_text_field( wp_unslash( $_POST['slug'] ) ) : '';

		if ( ! array_key_exists( $slug, $allowed_plugins ) ) {
			wp_send_json_error();
		}

		$plugin_info = $allowed_plugins[ $slug ];

		// Set the current screen to avoid undefined notices.
		set_current_screen( 'toplevel_page_wpcode' );
		// 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 );

		// Let's check if the plugin is already installed.
		if ( is_plugin_active( $plugin_info['slug'] ) ) {
			wp_send_json_success(
				array(
					'msg' => esc_html__( 'Plugin already installed and activated.', 'insert-headers-and-footers' ),
				)
			);
		}

		// Check if the Pro plugin is available first.
		if ( $this->is_plugin_installed( $plugin_info['pro_slug'] ) ) {
			activate_plugin( $plugin_info['pro_slug'] );
			wp_send_json_success(
				array(
					'msg' => esc_html__( 'Plugin activated.', 'insert-headers-and-footers' ),
				)
			);
		}

		if ( $this->is_plugin_installed( $plugin_info['slug'] ) ) {
			activate_plugin( $plugin_info['slug'] );
			wp_send_json_success(
				array(
					'msg' => esc_html__( 'Plugin activated.', 'insert-headers-and-footers' ),
				)
			);
		}

		wpcode_require_upgrader();

		// Create the plugin upgrader with our custom skin.
		$installer = new Plugin_Upgrader( new WPCode_Skin() );

		$installer->install( $allowed_plugins[ $slug ]['url'] );

		// Flush the cache and return the newly installed plugin basename.
		wp_cache_flush();

		$plugin_basename = $installer->plugin_info();
		if ( ! $plugin_basename ) {
			wp_send_json_error();
		}

		// Activate the plugin silently.
		$activated = activate_plugin( $plugin_basename );

		if ( is_wp_error( $activated ) ) {
			wp_send_json_error();
		}

		wp_send_json_success(
			array(
				'message' => esc_html__( 'Plugin installed and activated.', 'insert-headers-and-footers' ),
			)
		);
	}

	/**
	 * Maybe suggest plugins to the current user.
	 */
	public function maybe_suggest_plugins() {
		if ( ! is_super_admin() || ! current_user_can( 'install_plugins' ) ) {
			return;
		}

		// Verify that we can do a check to suggest plugins.
		$notices = get_option( 'wpcode_admin_notices', array() );
		$time    = time();
		$load    = false;

		if ( empty( $notices['suggest_plugins'] ) ) {
			$notices['suggest_plugins'] = array(
				'time'      => $time,
				'dismissed' => false,
			);

			update_option( 'wpcode_admin_notices', $notices );

			return;
		}

		// Check if it has been dismissed or not.
		if (
			( isset( $notices['suggest_plugins']['dismissed'] ) &&
			  ! $notices['suggest_plugins']['dismissed'] ) &&
			(
				isset( $notices['suggest_plugins']['time'] ) &&
				( ( $notices['suggest_plugins']['time'] + DAY_IN_SECONDS ) <= $time )
			)
		) {
			$load = true;
		}

		// If we cannot load, return early.
		if ( ! $load ) {
			return;
		}

		add_action( 'admin_head', array( $this, 'suggest_plugins' ) );
	}

	/**
	 * Suggest plugins to the current user.
	 */
	public function suggest_plugins() {
		// Let's make sure we are on a wpcode screen using get_current_screen.
		$screen = get_current_screen();

		if ( ! $screen || 'toplevel_page_wpcode' !== $screen->id ) {
			return;
		}
		// Fetch when plugin was initially installed.
		$activated = get_option( 'ihaf_activated', array() );

		if ( ! empty( $activated['wpcode'] ) ) {
			// Only continue if plugin has been installed for at least 21 days.
			if ( ( $activated['wpcode'] + ( DAY_IN_SECONDS * 21 ) ) > time() ) {
				return;
			}
		} else {
			$activated['wpcode'] = time();

			update_option( 'ihaf_activated', $activated );

			return;
		}

		$suggested_plugins = $this->get_suggested_plugins();

		if ( empty( $suggested_plugins ) ) {
			return;
		}

		ob_start();
		?>
		<p class="wpcode-suggestions-title"><?php esc_html_e( 'Enjoying WPCode? Check out some of our other top-rated FREE plugins:', 'insert-headers-and-footers' ); ?></p>
		<div class="wpcode-plugin-suggestions">
			<?php foreach ( $suggested_plugins as $slug => $plugin ) { ?>
				<div class="wpcode-plugin-suggestion-plugin">
					<div class="wpcode-plugin-suggestion-plugin-icon">
						<img width="72" src="<?php echo esc_url( add_query_arg( 'v', WPCODE_VERSION, WPCODE_PLUGIN_URL . 'admin/images/' . $plugin['icon'] ) ); ?>" alt="<?php echo esc_attr( $plugin['name'] );  // phpcs:ignore PluginCheck.CodeAnalysis.ImageFunctions.NonEnqueuedImage ?>"/>
					</div>
					<div class="wpcode-plugin-suggesion-plugin-text">
						<h3><?php echo esc_html( $plugin['name'] ); ?></h3>
						<p><?php echo esc_html( $plugin['description'] ); ?></p>
						<button type=" button" class="wpcode-button wpcode-button-secondary wpcode-button-install-plugin" data-slug="<?php echo esc_attr( $slug ); ?>"><?php esc_html_e( 'Install Plugin', 'insert-headers-and-footers' ); ?></button>
					</div>
				</div>
			<?php } ?>
		</div>
		<?php

		WPCode_Notice::info(
			ob_get_clean(),
			array(
				'dismiss' => WPCode_Notice::DISMISS_GLOBAL,
				'slug'    => 'suggest_plugins',
				'autop'   => false,
				'class'   => 'wpcode-suggest-plugins-notice',
			)
		);
	}
}
PK     ª‰U]¥å*´X:  X:  &  includes/admin/admin-ajax-handlers.phpnu „[µü¤        <?php
/**
 * Ajax handlers for the admin.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

add_action( 'wp_ajax_wpcode_update_snippet_status', 'wpcode_update_snippet_status' );
add_action( 'wp_ajax_wpcode_filter_snippets_by_type', 'wpcode_filter_snippets_by_type' );
add_action( 'wp_ajax_wpcode_search_terms', 'wpcode_search_terms' );
add_action( 'wp_ajax_wpcode_generate_snippet', 'wpcode_generate_snippet' );
add_action( 'wp_ajax_wpcode_save_generated_snippet', 'wpcode_save_generated_snippet' );
add_action( 'wp_ajax_wpcode_verify_ssl', 'wpcode_verify_ssl' );
add_filter( 'heartbeat_received', 'wpcode_heartbeat_data', 10, 3 );
add_action( 'wp_ajax_wpcode_save_editor_height', 'wpcode_save_editor_height' );
add_action( 'wp_ajax_wpcode_get_shortcode_locations', 'wpcode_get_shortcode_locations' );
add_action( 'wp_ajax_wpcode_sync_snippet', 'wpcode_sync_snippet' );

/**
 * Handles toggling a snippet status from the admin.
 *
 * @return void
 */
function wpcode_update_snippet_status() {
	check_ajax_referer( 'wpcode_admin' );

	if ( empty( $_POST['snippet_id'] ) ) {
		return;
	}
	$snippet_id = absint( $_POST['snippet_id'] );
	$active     = isset( $_POST['active'] ) && 'true' === $_POST['active'];

	$snippet = wpcode_get_snippet( $snippet_id );

	if ( ! current_user_can( 'wpcode_activate_snippets', $snippet ) ) { //phpcs:ignore
		wpcode()->error->add_error(
			array(
				'message' => __( 'You are not allowed to change snippet status, please contact your webmaster.', 'insert-headers-and-footers' ),
				'type'    => 'permissions',
			)
		);
		$active = false;
	} elseif ( $active ) {
		$snippet->activate();
	} else {
		$snippet->deactivate();
	}

	if ( ! isset( $snippet->active ) || $active !== $snippet->active ) {
		$error_message = sprintf(
		// Translators: %2$s is the action that they were trying to perform, either activated or deactivated. %1$s is the error message why the action failed.
			__( 'Snippet not %2$s, the following error was encountered: %1$s', 'insert-headers-and-footers' ),
			'<code>' . wpcode()->error->get_last_error_message() . '</code>',
			$active ? _x( 'activated', 'Snippet status change', 'insert-headers-and-footers' ) : _x( 'deactivated', 'Snippet status change', 'insert-headers-and-footers' )
		);
		// We failed to activate it, so it's an error.
		wp_send_json_error(
			array(
				'message' => $error_message,
			)
		);
	}
	exit;
}

/**
 * Filter snippets by type.
 *
 * @return void
 */
function wpcode_filter_snippets_by_type() {

	check_ajax_referer( 'wpcode_admin' );

	// If the current user can't edit snippets they should not be trying this.
	if ( ! current_user_can( 'wpcode_edit_snippets' ) ) { //phpcs:ignore
		wp_send_json_error();
	}

	if ( ! isset( $_POST['snippet_type'] ) ) {
		wp_send_json_error();
	}

	require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/class-wpcode-code-snippets-table.php';

	$snippet_type = isset( $_POST['snippet_type'] ) ? sanitize_text_field( wp_unslash( $_POST['snippet_type'] ) ) : '';
	$location     = isset( $_POST['location'] ) ? sanitize_text_field( wp_unslash( $_POST['location'] ) ) : '';
	$search_term  = isset( $_POST['s'] ) ? sanitize_text_field( wp_unslash( $_POST['s'] ) ) : '';

	$screen_id      = 'toplevel_page_wpcode';
	$current_screen = convert_to_screen( $screen_id );
	set_current_screen( $screen_id );

	$snippets_table = new WPCode_Code_Snippets_Table();

	// Used screen object to set up table.
	$snippets_table->screen = $current_screen;

	$_GET['type']     = $snippet_type;
	$_GET['location'] = $location;
	$_GET['s']        = $search_term;

	$snippets_table->prepare_items();
	$count = $snippets_table->get_total_items();

	// Output table HTML.
	ob_start();
	?>
	<input type="hidden" name="page" value="wpcode"/>
	<?php
	$snippets_table->search_box( __( 'Search Snippets', 'insert-headers-and-footers' ), 'wpcode_snippet_search' );
	$snippets_table->views();
	$snippets_table->display();

	$table_html = ob_get_clean();

	// Send success response.
	wp_send_json_success(
		array(
			'html'  => $table_html,
			'count' => $count,
		)
	);
}

/**
 * Ajax handler to search for terms through all the public taxonomies.
 *
 * @return void
 */
function wpcode_search_terms() {
	check_ajax_referer( 'wpcode_admin' );

	if ( ! current_user_can( 'wpcode_edit_snippets' ) ) { //phpcs:ignore
		wp_send_json_error();
	}

	$term = isset( $_GET['term'] ) ? sanitize_text_field( wp_unslash( $_GET['term'] ) ) : '';

	$public_taxonomies = get_taxonomies(
		array(
			'public' => true,
		)
	);

	$terms = get_terms(
		array(
			'search'     => $term,
			'taxonomy'   => $public_taxonomies,
			'hide_empty' => false,
		)
	);

	$results = array();

	foreach ( $terms as $term ) {
		$results[] = array(
			'id'   => $term->term_id,
			'text' => $term->name,
		);
	}

	wp_send_json(
		array(
			'results' => $results,
		)
	);
}

/**
 * Ajax handler for the generator.
 *
 * @return void
 */
function wpcode_generate_snippet() {

	check_ajax_referer( 'wpcode_generate', 'nonce' );

	if ( ! current_user_can( 'wpcode_edit_snippets' ) ) { //phpcs:ignore
		wp_send_json_error();
	}

	$generator_type = isset( $_POST['type'] ) ? sanitize_text_field( wp_unslash( $_POST['type'] ) ) : '';

	$generator = wpcode()->generator()->get_type( $generator_type );

	if ( ! $generator ) {
		wp_send_json_error();
	}

	$snippet_code = $generator->process_form_data( $_POST );

	wp_send_json( $snippet_code );
}

/**
 * Take the values from a generated snippet and save as a new snippet.
 *
 * @return void
 */
function wpcode_save_generated_snippet() {

	check_ajax_referer( 'wpcode_generate', 'nonce' );

	// If the current user can't edit snippets they should not be trying this.
	if ( ! current_user_can( 'wpcode_edit_snippets' ) ) { //phpcs:ignore
		wp_send_json_error();
	}

	$generator_type = isset( $_POST['type'] ) ? sanitize_text_field( wp_unslash( $_POST['type'] ) ) : '';
	$generator      = wpcode()->generator()->get_type( $generator_type );
	// If a snippet id is passed, let's attempt to update it.
	$snippet_id = isset( $_POST['snippet_id'] ) ? absint( $_POST['snippet_id'] ) : '';

	if ( ! $generator ) {
		wp_send_json_error();
	}

	$snippet_code = $generator->process_form_data( $_POST );

	$snippet_data = array(
		// Translators: this an auto-generated title for when a snippet is saved from the generator.
		'title'          => sprintf( __( 'Generated Snippet %s', 'insert-headers-and-footers' ), $generator->get_title() ),
		'code'           => $snippet_code,
		'code_type'      => $generator->get_code_type(),
		'tags'           => $generator->get_tags(),
		'location'       => $generator->get_location(),
		'generator'      => $generator->get_name(),
		'generator_data' => $generator->get_generator_data(),
		'auto_insert'    => $generator->get_auto_insert(),
	);

	// If a snippet id is passed, let's attempt to update the snippet.
	if ( ! empty( $snippet_id ) ) {
		$snippet = new WPCode_Snippet( $snippet_id );
		// Let's make sure this is an id for a snippet.
		if ( null !== $snippet->get_post_data() ) {
			$snippet_data['id']     = $snippet_id;
			$snippet_data['active'] = false;
			// Don't change the title of an existing snippet.
			unset( $snippet_data['title'] );
		}
	}

	$new_snippet = new WPCode_Snippet( $snippet_data );

	$new_snippet_id = $new_snippet->save();

	wp_send_json_success(
		array(
			'url' => add_query_arg(
				array(
					'page'       => 'wpcode-snippet-manager',
					'snippet_id' => $new_snippet_id,
				),
				admin_url( 'admin.php' )
			),
		)
	);
}

/**
 * Ajax handler to verify that the current web host can successfully
 * make outbound SSL connections.
 *
 * @return void
 */
function wpcode_verify_ssl() {
	if ( ! current_user_can( 'wpcode_edit_snippets' ) ) { //phpcs:ignore
		wp_send_json_error();
	}

	$response = wp_remote_post( 'https://wpcode.com' );

	if ( 200 === wp_remote_retrieve_response_code( $response ) ) {
		wp_send_json_success(
			array(
				'msg' => esc_html__( 'Success! Your server can make SSL connections.', 'insert-headers-and-footers' ),
			)
		);
	}

	wp_send_json_error(
		array(
			'msg'   => esc_html__( 'There was an error and the connection failed. Please contact your web host with the technical details below.', 'insert-headers-and-footers' ),
			'debug' => '<pre>' . print_r( map_deep( $response, 'wp_strip_all_tags' ), true ) . '</pre>', // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_print_r
		)
	);
}

/**
 * Use heartbeat to update lock status when editing a snippet.
 *
 * @param array  $response The Heartbeat response.
 * @param array  $data The $_POST data sent with the Heartbeat.
 * @param string $screen_id The screen ID.
 *
 * @return array
 */
function wpcode_heartbeat_data( $response, $data, $screen_id ) {
	if ( 'code-snippets_page_wpcode-snippet-manager' === $screen_id && isset( $data['wpcode_lock'] ) ) {
		// Update the post lock while they are still editing.
		wp_set_post_lock( absint( $data['wpcode_lock'] ) );
	}

	return $response;
}

/**
 * AJAX handler to save the editor height.
 *
 * @return void
 */
function wpcode_save_editor_height() {
	check_ajax_referer( 'wpcode_admin' );

	// If the current user can't edit snippets they should not be trying this.
	if ( ! current_user_can( 'wpcode_edit_snippets' ) ) { //phpcs:ignore
		wp_send_json_error();
	}

	$height = isset( $_POST['height'] ) ? absint( $_POST['height'] ) : false;

	if ( false !== $height ) {
		wpcode()->settings->update_option( 'editor_height', $height );

		wp_send_json_success();
	}

	wp_send_json_error();
}

/**
 * Get the list of locations where a shortcode is used.
 *
 * @return void
 */
function wpcode_get_shortcode_locations() {
	check_ajax_referer( 'wpcode_admin', '_wpnonce' );

	if ( ! current_user_can( 'wpcode_edit_snippets' ) ) { //phpcs:ignore
		wp_send_json_error();
	}

	if ( empty( $_POST['snippet_id'] ) ) {
		wp_send_json_error( 'No snippet ID provided' );
	}

	$snippet_id = absint( $_POST['snippet_id'] );
	$snippet    = wpcode_get_snippet( $snippet_id );

	$page     = isset( $_POST['page'] ) ? absint( $_POST['page'] ) : 1;
	$per_page = 100;

	$post_types = array_merge(
		get_post_types( array( 'public' => true ) ),
		array(
			'wp_template',
			'wp_template_part',
			'wpcode',
		)
	);

	// Add post types to params.
	$params = $post_types;

	global $wpdb;

	$search_terms   = array();
	$search_terms[] = '[wpcode';
	if ( $snippet->get_custom_shortcode() ) {
		$search_terms[] = '[' . $snippet->get_custom_shortcode();
	}

	$like_clauses = array();
	foreach ( $search_terms as $term ) {
		$like_clauses[] = 'post_content LIKE %s';
		$params[]       = '%' . $wpdb->esc_like( $term ) . '%';
	}
	$where_like = implode( ' OR ', $like_clauses );

	$offset = ( $page - 1 ) * $per_page;

	$post_type_placeholders = implode( ', ', array_fill( 0, count( $post_types ), '%s' ) );

	$params[] = $per_page;
	$params[] = $offset;

	$candidate_ids = $wpdb->get_col( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.NoCaching, WordPress.DB.DirectDatabaseQuery.DirectQuery
		$wpdb->prepare( // phpcs:ignore WordPress.DB.PreparedSQLPlaceholders.ReplacementsWrongNumber
			"SELECT ID FROM {$wpdb->posts}  
            WHERE post_type IN ($post_type_placeholders)
            AND post_status != 'trash'
            AND ($where_like) 
            LIMIT %d OFFSET %d",
			$params
		)
	);
	$candidate_ids = array_unique( $candidate_ids );

	$matching_posts = array();

	if ( ! empty( $candidate_ids ) ) {
		$candidate_posts = get_posts(
			array(
				'post_type'      => array_values( $post_types ),
				'post_status'    => 'any',
				'posts_per_page' => - 1,
				'include'        => $candidate_ids,
			)
		);

		foreach ( $candidate_posts as $post ) {
			$content = $post->post_content;

			if ( has_shortcode( $content, 'wpcode' ) && preg_match( '/\[wpcode[^\]]*id\s*=\s*["\']\s*' . preg_quote( $snippet_id, '/' ) . '\s*["\'][^\]]*\]/', $content ) ) {
				$matching_posts[] = $post;
				continue;
			}

			if ( $snippet->get_custom_shortcode() && has_shortcode( $content, $snippet->get_custom_shortcode() ) && preg_match( '/\[' . preg_quote( $snippet->get_custom_shortcode(), '/' ) . '[^\]]*\]/', $content ) ) {
				$matching_posts[] = $post;
			}
		}
	}

	if ( empty( $matching_posts ) ) {
		if ( 1 === $page ) {
			$html = '<ul><li>' . esc_html__( 'This shortcode is not used in any content yet.', 'insert-headers-and-footers' ) . '</li></ul>';
		} else {
			$html = '';
		}
	} else {
		$html = '<ul>';
		foreach ( $matching_posts as $post ) {
			if ( 'wpcode' === $post->post_type ) {
				$edit_link       = esc_url( add_query_arg( 'snippet_id', $post->ID, admin_url( 'admin.php?page=wpcode-snippet-manager' ) ) );
				$post_type_label = esc_html__( 'WPCode Snippet', 'insert-headers-and-footers' );
			} else {
				$edit_link       = get_edit_post_link( $post->ID );
				$post_type_obj   = get_post_type_object( $post->post_type );
				$post_type_label = $post_type_obj ? $post_type_obj->labels->singular_name : $post->post_type;
			}

			$html .= sprintf(
				'<li><a href="%1$s" target="_blank" rel="noopener noreferrer">%2$s</a> <span class="wpcode-post-type">(%3$s)</span></li>',
				esc_url( $edit_link ),
				// Translators: %d is the post id.
				esc_html( empty( $post->post_title ) ? sprintf( esc_html__( 'Untitled (#%d)', 'insert-headers-and-footers' ), $post->ID ) : $post->post_title ),
				esc_html( $post_type_label )
			);
		}
		$html .= '</ul>';
	}

	$has_more = count( $candidate_ids ) >= $per_page;

	wp_send_json_success(
		array(
			'html'     => $html,
			'has_more' => $has_more,
			'page'     => $page,
		)
	);
}

/**
 * AJAX handler for syncing a snippet from the library.
 *
 * @return void
 */
function wpcode_sync_snippet() {

	// Check nonce.
	if ( ! check_ajax_referer( 'wpcode_admin', 'nonce', false ) ) {
		wp_send_json_error( array( 'message' => __( 'Security check failed.', 'insert-headers-and-footers' ) ) );
	}

	// Check permissions.
	if ( ! current_user_can( 'wpcode_edit_snippets' ) ) { //phpcs:ignore
		wp_send_json_error( array( 'message' => __( 'You do not have permission to edit snippets.', 'insert-headers-and-footers' ) ) );
	}

	$snippet_id = isset( $_POST['snippet_id'] ) ? absint( $_POST['snippet_id'] ) : 0;
	$library_id = isset( $_POST['library_id'] ) ? absint( $_POST['library_id'] ) : 0;

	if ( ! $snippet_id || ! $library_id ) {
		wp_send_json_error( array( 'message' => __( 'Invalid snippet ID.', 'insert-headers-and-footers' ) ) );
	}

	$result = wpcode()->library->update_snippet_from_library( $snippet_id, $library_id );

	if ( ! $result ) {
		wp_send_json_error( array( 'message' => __( 'Failed to update snippet from library.', 'insert-headers-and-footers' ) ) );
	}

	// No need to update the option as we're checking for updates on the fly.

	wp_send_json_success(
		array(
			'message' => __( 'Snippet successfully updated.', 'insert-headers-and-footers' ),
			'version' => isset( $result['version'] ) ? $result['version'] : '',
		)
	);
}
PK     «‰U]÷F{½o  o  &  includes/class-wpcode-capabilities.phpnu „[µü¤        <?php
/**
 * Manage custom capabilities for WPCode.
 *
 * @package WPCode
 */

/**
 * The WPCode_Capabilities class.
 */
class WPCode_Capabilities {
	/**
	 * Function to call on plugin activation.
	 *
	 * @return void
	 */
	public static function add_capabilities() {

		foreach ( self::get_roles() as $role ) {
			if ( $role->has_cap( 'manage_options' ) ) {
				$role->add_cap( 'wpcode_edit_snippets' );
				$role->add_cap( 'wpcode_activate_snippets' );
			}
		}

	}

	/**
	 * Get roles as WP_Role objects.
	 *
	 * @return WP_Role[]
	 */
	public static function get_roles() {
		$roles      = wp_roles()->roles;
		$role_array = array();
		foreach ( array_keys( $roles ) as $role_key ) {
			$role_array[] = get_role( $role_key );
		}

		return $role_array;
	}

	/**
	 * Remove custom capabilities.
	 *
	 * @return void
	 */
	public static function uninstall() {
		foreach ( self::get_roles() as $role ) {
			if ( $role->has_cap( 'wpcode_edit_snippets' ) ) {
				$role->remove_cap( 'wpcode_edit_snippets' );
			}
			if ( $role->has_cap( 'wpcode_activate_snippets' ) ) {
				$role->remove_cap( 'wpcode_activate_snippets' );
			}
		}
	}
}
PK     «‰U]âðñi  i  %  includes/class-wpcode-auto-insert.phpnu „[µü¤        <?php
/**
 * Central handler of auto-inserting snippets.
 * Loads the different types and processes them.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Auto_Insert.
 */
class WPCode_Auto_Insert {

	/**
	 * The auto-insert types.
	 *
	 * @var array
	 */
	public $types = array();

	/**
	 * The auto-insert categories.
	 *
	 * @var array
	 */
	public $type_categories = array();

	public $categories_with_labels;

	/**
	 * Constructor.
	 */
	public function __construct() {
		$this->hooks();
	}

	/**
	 * Add hooks.
	 *
	 * @return void
	 */
	private function hooks() {
		add_action( 'plugins_loaded', array( $this, 'load_types' ), 1 );
	}

	/**
	 * Define the categories of auto-insert types.
	 *
	 * @return void
	 */
	public function define_category_label() {
		$categories_labels = array(
			'global'    => __( 'Global', 'insert-headers-and-footers' ),
			'page'      => __( 'Page-Specific', 'insert-headers-and-footers' ),
			'ecommerce' => __( 'eCommerce', 'insert-headers-and-footers' ),
		);

		// Add the labels to the $this->type_categories array.
		foreach ( $categories_labels as $key => $category ) {
			$this->type_categories[ $key ]['label'] = $category;
		}

		$this->categories_with_labels = true;
	}

	/**
	 * Load and initialize the different types of auto-insert types.
	 *
	 * @return void
	 */
	public function load_types() {
		require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-type.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-everywhere.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-site-wide.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-single.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-archive.php';
		require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-admin.php';
	}

	/**
	 * Register an auto-insert type.
	 *
	 * @param WPCode_Auto_Insert_Type $type The type to add to the available types.
	 *
	 * @return void
	 */
	public function register_type( $type ) {
		$this->types[ $type->name ] = $type;
		if ( isset( $type->category ) ) {
			$this->type_categories[ $type->category ]['types'][ $type->name ] = $type;
		}
	}

	/**
	 * Get the types of auto-insert options.
	 *
	 * @return WPCode_Auto_Insert_Type[]
	 */
	public function get_types() {
		return $this->types;
	}

	/**
	 * Get the categories of auto-insert options.
	 *
	 * @return array
	 */
	public function get_type_categories() {
		if ( ! isset( $this->categories_with_labels ) ) {
			$this->define_category_label();
		}

		return $this->type_categories;
	}

	/**
	 * Get the categories info for the sidebar admin view.
	 *
	 * @return array
	 */
	public function get_type_categories_for_sidebar() {
		$sidebar_categories = array();
		$categories         = $this->get_type_categories();

		foreach ( $categories as $key => $category ) {
			$sidebar_categories[] = array(
				'slug' => $key,
				'name' => $category['label'],
			);
		}

		return $sidebar_categories;
	}

	/**
	 * Get a location label from the class not the term.
	 *
	 * @param string $location The location slug/name.
	 *
	 * @return string
	 */
	public function get_location_label( $location ) {
		foreach ( $this->types as $type ) {
			/**
			 * Added for convenience.
			 *
			 * @var WPCode_Auto_Insert_Type $type
			 */
			$locations = $type->get_locations();
			if ( isset( $locations[ $location ] ) ) {
				if ( isset( $locations[ $location ]['label'] ) ) {
					return $locations[ $location ]['label'];
				} else {
					return $locations[ $location ];
				}
			}
		}

		return '';
	}
}
PK     «‰U] Ö¾˜÷  ÷    includes/global-output.phpnu „[µü¤        <?php
/**
 * Add hooks to output global scripts.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

add_action( 'wp_head', 'wpcode_global_frontend_header' );
add_action( 'wp_footer', 'wpcode_global_frontend_footer' );
add_action( 'wp_body_open', 'wpcode_global_frontend_body', 1 );

/**
 * Output the frontend head scripts.
 *
 * @return void
 */
function wpcode_global_frontend_header() {
	// Filter to prevent specific header output.
	if ( apply_filters( 'disable_ihaf_header', false ) ) {
		return;
	}
	wpcode_global_script_output( 'ihaf_insert_header' );
}

/**
 * Output the frontend footer scripts.
 *
 * @return void
 */
function wpcode_global_frontend_footer() {
	// Filter to prevent specific footer output.
	if ( apply_filters( 'disable_ihaf_footer', false ) ) {
		return;
	}
	wpcode_global_script_output( 'ihaf_insert_footer' );
}

/**
 * Output the frontend body scripts.
 *
 * @return void
 */
function wpcode_global_frontend_body() {
	// Filter to prevent specific body output.
	if ( apply_filters( 'disable_ihaf_body', false ) ) {
		return;
	}
	wpcode_global_script_output( 'ihaf_insert_body' );
}

/**
 * Output everything through this function to get a chance to apply some checks.
 *
 * @param string $option_name The option name to grab data from.
 *
 * @return void
 */
function wpcode_global_script_output( $option_name ) {
	// Ignore admin, feed, robots or trackbacks.
	if ( is_admin() || is_feed() || is_robots() || is_trackback() ) {
		return;
	}
	// Filter to prevent any output.
	if ( apply_filters( 'disable_ihaf', false ) ) {
		return;
	}

	$code = get_option( $option_name );
	if ( empty( $code ) || empty( trim( $code ) ) ) {
		return;
	}

	echo wp_unslash( $code );  // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
PK     «‰U]¡ˆúÈˆ  ˆ  $  includes/class-wpcode-file-cache.phpnu „[µü¤        <?php
/**
 * File cache class. Store files in the uploads folder.
 * Use the expiration in the get function to control how often a file should be refreshed.
 *
 * @package WPCode
 */

/**
 * WPCode_File_Cache class.
 */
class WPCode_File_Cache {

	/**
	 * Name of the base folder in the Uploads folder.
	 *
	 * @var string
	 */
	private $basedir = 'wpcode';

	/**
	 * Name of the module-specific folder in the base folder.
	 *
	 * @var string
	 */
	private $dirname = 'cache';

	/**
	 * Full upload path, created form the WP uploads folder.
	 *
	 * @var string
	 */
	private $upload_path;

	/**
	 * Write a file to the server with an expiration date.
	 *
	 * @param string $name The key by which to retrieve the data.
	 * @param mixed  $data The data to save - if it's a JSON it should be decoded first as it gets encoded here.
	 *
	 * @return void
	 */
	public function set( $name, $data ) {
		$this->write_file( $this->get_cache_filename_by_key( $name ), wp_json_encode( $data ) );
	}

	/**
	 * Get some data by its name. Checks if the data is expired and if so
	 * returns false so you can update it.
	 *
	 * @param string $name The key of the data to save.
	 * @param int    $ttl For how long since creation should this file be used.
	 *
	 * @return array|false
	 */
	public function get( $name, $ttl = 0 ) {
		$file = $this->get_directory_path( $this->get_cache_filename_by_key( $name ) );

		/**
		 * Filter the $ttl for a file if you want to change it.
		 *
		 * @param int    $ttl The time to live for the cache.
		 * @param string $name The name of the file.
		 *
		 * @return int
		 * @since 2.2.2
		 */
		$ttl = apply_filters( 'wpcode_file_cache_ttl', $ttl, $name );

		// If the file doesn't exist there's not much to do.
		if ( ! file_exists( $file ) ) {
			// Let's see if we have it in the database.
			$option = get_option( 'wpcode_alt_cache_' . $name, false );
			if ( false !== $option ) {
				// Let's check if the time since the option was saved is less than the TTL.
				if ( empty( $option['time'] ) || $ttl > 0 && (int) $option['time'] + $ttl < time() ) {
					// If the option expired let's delete it, so we clean up in case the file will now work.
					delete_option( 'wpcode_alt_cache_' . $name );

					return false;
				}

				return json_decode( $option['data'], true );
			}

			return false;
		}

		// If TTL is 0, always return the file.
		if ( $ttl > 0 && (int) filemtime( $file ) + $ttl < time() ) {
			return false;
		}

		return json_decode( file_get_contents( $file ), true ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_get_contents_file_get_contents
	}

	/**
	 * Delete a cached file by its key.
	 *
	 * @param string $key The key to find the file by.
	 *
	 * @return void
	 */
	public function delete( $key ) {
		$file = $this->get_directory_path( $this->get_cache_filename_by_key( $key ) );

		wp_delete_file( $file );

		delete_option( 'wpcode_alt_cache_' . $key );
	}

	/**
	 * Basically just adds JSON to the end of the key but we should use this
	 * to also make sure it's a proper filename.
	 *
	 * @param string $name The key.
	 *
	 * @return string
	 */
	private function get_cache_filename_by_key( $name ) {
		return $name . '.json';
	}

	/**
	 * Write a file to the cache folder. Data should already be processed when using this.
	 *
	 * @param string $name The name of the file.
	 * @param string $data The data to write to the file.
	 *
	 * @return void
	 */
	private function write_file( $name, $data ) {
		$written = file_put_contents( $this->get_directory_path( $name ), $data ); // phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_operations_file_put_contents
		if ( false === $written ) {
			// If we can't save the file to the file cache let's try to save it to the database.
			// This is not ideal but it prevents having endless requests.
			// phpcs:ignore WordPress.WP.AlternativeFunctions.file_system_read_file_put_contents
			$option = array(
				'time' => time(),
				'data' => $data,
			);
			// $name is the file name, in order to save it in the db we should remove the file extension.
			$name = str_replace( '.json', '', $name );
			update_option( 'wpcode_alt_cache_' . $name, $option, false );
		}
	}

	/**
	 * Get a reliable path to write files to, it also creates the folders needed if they don't exist.
	 *
	 * @param string $filename The file path.
	 *
	 * @return string
	 */
	private function get_directory_path( $filename ) {
		if ( ! isset( $this->upload_path ) ) {
			$uploads           = wp_upload_dir();
			$base_path         = trailingslashit( $uploads['basedir'] ) . $this->basedir;
			$this->upload_path = $base_path . '/' . $this->dirname;

			if ( ! file_exists( $this->upload_path ) || ! wp_is_writable( $this->upload_path ) ) {
				wp_mkdir_p( $this->upload_path );
				$this->create_index_html_file( $this->upload_path );
			}
			// Ensure the base path has an index file.
			$this->create_index_html_file( $base_path );
		}

		$filepath  = trailingslashit( $this->upload_path ) . $filename;
		$directory = dirname( $filepath );
		if ( $directory !== $this->upload_path && ! file_exists( $directory ) ) {
			wp_mkdir_p( $directory );
			$this->create_index_html_file( $directory );
		}

		$this->create_index_html_file( $this->upload_path );

		return $filepath;
	}

	/**
	 * Create index.html file in the specified directory if it doesn't exist.
	 *
	 * @param string $path The path to the directory.
	 *
	 * @return false|int
	 */
	public static function create_index_html_file( $path ) {
		if ( ! is_dir( $path ) || is_link( $path ) ) {
			return false;
		}

		$index_file = wp_normalize_path( trailingslashit( $path ) . 'index.html' );

		// Do nothing if index.html exists in the directory.
		if ( file_exists( $index_file ) ) {
			return false;
		}

		// Create empty index.html.
		return file_put_contents( $index_file, '' ); // phpcs:ignore WordPress.WP.AlternativeFunctions
	}

	/**
	 * Create .htaccess file in the specified directory if it doesn't exist.
	 *
	 * @param string $path The path to the directory.
	 *
	 * @return false|int
	 */
	public static function create_htaccess_file( $path ) {
		if ( ! is_dir( $path ) || is_link( $path ) ) {
			return false;
		}

		$htaccess_file = wp_normalize_path( trailingslashit( $path ) . '.htaccess' );

		// Do nothing if index.html exists in the directory.
		if ( file_exists( $htaccess_file ) ) {
			return false;
		}

		// Create empty index.html.
		return file_put_contents( $htaccess_file, 'deny from all' ); // phpcs:ignore WordPress.WP.AlternativeFunctions
	}
}
PK     «‰U]ú¾�Þ6  Þ6    includes/helpers.phpnu „[µü¤        <?php
/**
 * Generic helpers used in the plugin.
 *
 * @package WPCode
 */

/**
 * Get a URL with UTM parameters.
 *
 * @param string $url The URL to add the params to.
 * @param string $medium The marketing medium.
 * @param string $campaign The campaign.
 * @param string $ad_content The utm_content param.
 *
 * @return string
 */
function wpcode_utm_url( $url, $medium = '', $campaign = '', $ad_content = '' ) {
	$args = array(
		'utm_source'   => class_exists( 'WPCode_License' ) ? 'proplugin' : 'liteplugin',
		'utm_medium'   => sanitize_key( $medium ),
		'utm_campaign' => sanitize_key( $campaign )
	);

	if ( ! empty( $ad_content ) ) {
		$args['utm_content'] = sanitize_key( $ad_content );
	}

	return add_query_arg(
		$args,
		$url
	);
}

/**
 * Get a standard auto-insert location select menu.
 *
 * @param string $selected_location The location currently selected.
 * @param string $code_type The code type for the current snippet (disables some locations).
 * @param string $name The name for the select (used in the form).
 *
 * @return string
 */
function wpcode_get_auto_insert_location_picker( $selected_location, $code_type = 'html', $name = 'wpcode_auto_insert_location' ) {
	$available_types = wpcode()->auto_insert->get_types();
	ob_start();
	?>
	<select name="<?php echo esc_attr( $name ); ?>" id="<?php echo esc_attr( $name ); ?>" class="wpcode-select2 wpcode-auto-insert-location-picker">
		<?php
		foreach ( $available_types as $type ) {
			$options = $type->get_locations();
			if ( empty( $options ) ) {
				continue;
			}
			$extra_data = '';
			if ( ! empty( $type->upgrade_title ) ) {
				$extra_data = ' data-upgrade-title="' . esc_attr( $type->upgrade_title ) . '"';
			}
			if ( ! empty( $type->upgrade_text ) ) {
				$extra_data .= ' data-upgrade-text="' . esc_attr( $type->upgrade_text ) . '"';
			}
			if ( ! empty( $type->upgrade_link ) ) {
				$extra_data .= ' data-upgrade-link="' . esc_attr( $type->upgrade_link ) . '"';
			}
			if ( ! empty( $type->upgrade_button ) ) {
				$extra_data .= ' data-upgrade-button="' . esc_attr( $type->upgrade_button ) . '"';
			}
			?>
			<optgroup
					label="<?php echo esc_attr( $type->get_label() ); ?>"
					data-code-type="<?php echo esc_attr( $type->code_type ); ?>"
					data-label-pill="<?php echo esc_attr( $type->label_pill ); ?>"
				<?php echo $extra_data; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped ?>
			>
				<?php
				foreach ( $options as $key => $location ) {
					$disabled = false;
					if ( 'all' !== $type->code_type && $type->code_type !== $code_type ) {
						$disabled = true;
					}
					$label = wpcode_find_location_label( $key );
					?>
					<option value="<?php echo esc_attr( $key ); ?>" <?php selected( $selected_location, $key ); ?> <?php disabled( $disabled ); ?>>
						<?php echo esc_html( $label ); ?>
					</option>
				<?php } ?>
			</optgroup>
			<?php
		}
		?>
	</select>
	<?php
	return ob_get_clean();
}

/**
 * Get the label for an auto-insert location.
 *
 * @param $location_slug
 *
 * @return string
 */
function wpcode_find_location_label( $location_slug ) {
	$available_types = wpcode()->auto_insert->get_types();
	$location_label  = '';
	foreach ( $available_types as $type ) {
		$options = $type->get_locations();
		foreach ( $options as $key => $location ) {
			if ( $key === $location_slug ) {
				if ( isset( $location['label'] ) ) {
					$label = $location['label'];
				} else {
					$label = $location;
				}
				$location_label = $label;
				break 2;
			}
		}
	}

	return $location_label;
}

/**
 * Get a checkbox wrapped with markup to be displayed as a toggle.
 *
 * @param bool       $checked Is it checked or not.
 * @param string     $name The name for the input.
 * @param string     $description Field description (optional).
 * @param string|int $value Field value (optional).
 * @param string     $label Field label (optional).
 *
 * @return string
 */
function wpcode_get_checkbox_toggle( $checked, $name, $description = '', $value = '', $label = '' ) {
	$markup = '<label class="wpcode-checkbox-toggle">';

	$markup .= '<input type="checkbox" ' . checked( $checked, true, false ) . ' name="' . esc_attr( $name ) . '" id="' . esc_attr( $name ) . '" value="' . esc_attr( $value ) . '" />';
	$markup .= '<span class="wpcode-checkbox-toggle-slider"></span>';
	$markup .= '</label>';
	if ( ! empty( $label ) ) {
		$markup .= '<label class="wpcode-checkbox-toggle-label" for="' . esc_attr( $name ) . '">' . esc_html( $label ) . '</label>';
	}

	if ( ! empty( $description ) ) {
		$markup .= '<p class="description">' . wp_kses_post( $description ) . '</p>';
	}

	return $markup;
}

/**
 * Button that copies target input value to the clipboard.
 *
 * @param string $target The id of the input to copy from.
 * @param string $prefix If you want something prepended to the copied value.
 * @param string $suffix If you want something appended to the copied value.
 *
 * @return string
 */
function wpcode_get_copy_target_button( $target, $prefix = '', $suffix = '' ) {
	return sprintf(
		'<button class="wpcode-button wpcode-button-icon wpcode-button-secondary wpcode-copy-target" data-target="#%4$s" type="button" data-prefix="%5$s" data-suffix="%6$s"><span class="wpcode-default-icon">%1$s</span><span class="wpcode-success-icon">%2$s</span> %3$s</button>',
		get_wpcode_icon( 'copy', 16, 16 ),
		get_wpcode_icon( 'check', 16, 13 ),
		_x( 'Copy', 'Copy to clipboard', 'insert-headers-and-footers' ),
		esc_attr( $target ),
		esc_attr( $prefix ),
		esc_attr( $suffix )
	);
}

/**
 * Get a list of labels for the conditions used in conditional logic.
 *
 * @return array
 */
function wpcode_get_conditions_relation_labels() {
	return array(
		'contains'    => __( 'Contains', 'insert-headers-and-footers' ),
		'notcontains' => __( 'Doesn\'t Contain', 'insert-headers-and-footers' ),
		'='           => __( 'Is', 'insert-headers-and-footers' ),
		'!='          => __( 'Is not', 'insert-headers-and-footers' ),
		'before'      => __( 'Is Before', 'insert-headers-and-footers' ),
		'after'       => __( 'Is After', 'insert-headers-and-footers' ),
		'before-or'   => __( 'Is on or Before', 'insert-headers-and-footers' ),
		'after-or'    => __( 'Is on or After', 'insert-headers-and-footers' ),
	);
}

/**
 * Get an array of locations that support an insert number.
 *
 * @return string[]
 */
function wpcode_get_auto_insert_locations_with_number() {
	return array(
		'before_paragraph',
		'after_paragraph',
		'archive_before_post',
		'archive_after_post',
		'after_words',
		'every_words',
	);
}

/**
 * Returns the site domain.
 *
 * @return string
 */
function wpcode_get_site_domain() {
	return wp_parse_url( home_url(), PHP_URL_HOST );
}

/**
 * Check WP version and include the compatible upgrader skin.
 */
function wpcode_require_upgrader() {

	global $wp_version;

	require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';

	// WP 5.3 changes the upgrader skin.
	if ( version_compare( $wp_version, '5.3', '<' ) ) {
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-skin-legacy.php';
	} else {
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-skin.php';
	}
}

/**
 * Get timezone string if the function doesn't exist. (WP < 5.3).
 *
 * @return string
 * @since 2.0.10
 */
function wpcode_wp_timezone_string() {
	if ( function_exists( 'wp_timezone_string' ) ) {
		return wp_timezone_string();
	}
	$timezone_string = get_option( 'timezone_string' );

	if ( $timezone_string ) {
		return $timezone_string;
	}

	$offset  = (float) get_option( 'gmt_offset' );
	$hours   = (int) $offset;
	$minutes = ( $offset - $hours );

	$sign      = ( $offset < 0 ) ? '-' : '+';
	$abs_hour  = abs( $hours );
	$abs_mins  = abs( $minutes * 60 );
	$tz_offset = sprintf( '%s%02d:%02d', $sign, $abs_hour, $abs_mins );

	return $tz_offset;
}

/**
 * Add a new library username to be loaded in the WPCode Library.
 *
 * @param string $slug The username to load snippets for from the WPCode Library.
 * @param string $label The label to display for the username in the library.
 * @param string $version The version of the plugin/theme. Used to filter snippets that should not be loaded for newer versions.
 *
 * @return void
 */
function wpcode_register_library_username( $slug, $label = '', $version = '' ) {
	if ( ! is_admin() || ! isset( wpcode()->library ) ) {
		return;
	}
	wpcode()->library->register_library_username( $slug, $label, $version );
}


/**
 * Load snippets from the library by a specific username.
 * This function also loads the library if it hasn't been loaded yet so that it can be used in API endpoints.
 * It also adds links to install snippets and checks for permissions.
 *
 * @param string $username The username to load snippets for from the WPCode Library.
 *
 * @return array
 */
function wpcode_get_library_snippets_by_username( $username ) {

	wpcode_maybe_load_library();

	$snippets = wpcode()->library->get_snippets_by_username( $username );
	// Let's prepare this a bit for easier output.

	// If there are no snippets just return an empty array.
	if ( empty( $snippets['snippets'] ) ) {
		return array();
	}

	$can_install           = current_user_can( 'wpcode_edit_snippets' );
	$prepared              = array();
	$used_library_snippets = wpcode()->library->get_used_library_snippets();
	foreach ( $snippets['snippets'] as $snippet ) {
		$snippet['installed'] = false;
		// If the user can't install snippets, don't provide an install link.
		if ( ! $can_install ) {
			$url = '';
		} elseif ( ! empty( $used_library_snippets[ $snippet['library_id'] ] ) ) {
			// If the snippet is already installed link to the snippet so they can edit it.
			$snippet['installed'] = true;
			$url                  = wpcode()->library->get_edit_snippet_url( $used_library_snippets[ $snippet['library_id'] ] );
		} else {
			// If the snippet is not yet installed, add a link to install it.
			$url = wpcode()->library->get_install_snippet_url( $snippet['library_id'] );
		}
		$snippet['install'] = $url;
		$prepared[]         = $snippet;
	}

	return $prepared;
}

/**
 * Make sure the WPCode library is loaded, along with the components it needs to run.
 *
 * @return void
 */
function wpcode_maybe_load_library() {
	if ( ! isset( wpcode()->library ) ) {
		// Snippet Library.
		require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-library.php';
		// Load components needed for the library, if not loaded.
		if ( ! isset( wpcode()->file_cache ) ) {
			// File cache.
			require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-file-cache.php';
			wpcode()->file_cache = new WPCode_File_Cache();
		}
		if ( ! isset( wpcode()->library_auth ) ) {
			// Authentication for the library site.
			require_once WPCODE_PLUGIN_PATH . 'includes/class-wpcode-library-auth.php';
			wpcode()->library_auth = new WPCode_Library_Auth();
		}
		wpcode()->library = new WPCode_Library();
	}
}

/**
 * Helper function for testing mode.
 *
 * @return bool
 */
function wpcode_testing_mode_enabled() {
	if ( ! class_exists( 'WPCode_Testing_Mode' ) ) {
		return false;
	}

	return WPCode_Testing_Mode::get_instance()->testing_mode_enabled();
}

/**
 * Get the user's IP address.
 *
 * @return string
 */
function wpcode_get_user_ip() {
	$ip = '127.0.0.1';

	$address_headers = array(
		'HTTP_TRUE_CLIENT_IP',
		'HTTP_CF_CONNECTING_IP',
		'HTTP_X_REAL_IP',
		'HTTP_CLIENT_IP',
		'HTTP_X_FORWARDED_FOR',
		'HTTP_X_FORWARDED',
		'HTTP_X_CLUSTER_CLIENT_IP',
		'HTTP_FORWARDED_FOR',
		'HTTP_FORWARDED',
		'REMOTE_ADDR',
	);

	foreach ( $address_headers as $header ) {
		if ( empty( $_SERVER[ $header ] ) ) {
			continue;
		}

		/*
		 * HTTP_X_FORWARDED_FOR can contain a chain of comma-separated addresses, with or without spaces.
		 * The first address is the original client. It can't be trusted for authenticity,
		 * but we don't need to for this purpose.
		 */

		// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
		$address_chain = explode( ',', wp_unslash( $_SERVER[ $header ] ) );
		$ip            = filter_var( trim( $address_chain[0] ), FILTER_VALIDATE_IP );

		break;
	}

	/**
	 * Filter detected IP address.
	 *
	 * @param string $ip IP address.
	 */
	return filter_var( apply_filters( 'wpcode_get_user_ip', $ip ), FILTER_VALIDATE_IP );
}

/**
 * Is the ip for a localhost. Defaults to the current user ip.
 *
 * @param string $ip The IP to check.
 *
 * @return string
 */
function wpcode_is_local( $ip = null ) {
	if ( ! $ip ) {
		$ip = wpcode_get_user_ip();
	}

	return empty( $ip ) || in_array( $ip, array( '127.0.0.1', '::1' ), true );
}

/**
 * Attempts to detect popular caching plugins and clear their cache.
 *
 * @param string $context The context in which the cache is being cleared.
 *
 * @return void
 */
function wpcode_clear_all_plugins_page_cache( $context = '' ) {

	if ( apply_filters( 'wpcode_skip_clear_all_plugins_cache', false, $context ) ) {
		return;
	}

	// LiteSpeed Cache.
	if ( function_exists( 'run_litespeed_cache' ) && class_exists( 'LiteSpeed\Purge' ) && method_exists( 'LiteSpeed\Purge', 'purge_all' ) ) {
		LiteSpeed\Purge::purge_all();
	}

	// WP Super Cache.
	if ( function_exists( 'wp_cache_clear_cache' ) ) {
		wp_cache_clear_cache();
	}

	// W3 Total Cache.
	if ( function_exists( 'w3tc_flush_all' ) ) {
		w3tc_flush_all();
	}

	// WP-Optimize.
	if ( function_exists( 'WP_Optimize' ) ) {
		WP_Optimize()->get_page_cache()->purge();
	}

	// WP Rocket.
	if ( function_exists( 'rocket_clean_domain' ) ) {
		rocket_clean_domain();
	}

	// WP Fastest Cache.
	if ( function_exists( 'wpfc_clear_all_cache' ) ) {
		wpfc_clear_all_cache();
	}

	// SiteGround Optimizer.
	if ( function_exists( 'sg_cachepress_purge_cache' ) ) {
		sg_cachepress_purge_cache();
	}

	if ( class_exists( 'Swift_Performance_Cache' ) ) {
		if ( method_exists( 'Swift_Performance_Cache', 'clear_all_cache' ) ) {
			Swift_Performance_Cache::clear_all_cache();
		}
	}

	// WP Engine.
	if ( class_exists( 'WpeCommon' ) ) {
		if ( method_exists( 'WpeCommon', 'purge_varnish_cache' ) ) {
			WpeCommon::purge_varnish_cache();
		}
	}
}
PK     «‰U]ïL—›  ›    includes/legacy.phpnu „[µü¤        <?php
/**
 * Call new methods using the old class for backwards compatibility.
 *
 * @package WPCode
 */

if ( ! class_exists( 'InsertHeadersAndFooters' ) ) {
	/**
	 * Class InsertHeadersAndFooters used in the IHAF 1.x.x.
	 */
	class InsertHeadersAndFooters {

		/**
		 * Output the header code.
		 *
		 * @return void
		 */
		public function frontendHeader() {// phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
			wpcode_global_frontend_header();
		}

		/**
		 * Output the footer code.
		 *
		 * @return void
		 */
		public function frontendFooter() {// phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
			wpcode_global_frontend_footer();
		}

		/**
		 * Output the body code.
		 *
		 * @return void
		 */
		public function frontendBody() {// phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid
			wpcode_global_frontend_body();
		}

	}
}
PK     «‰U]îPcº      includes/post-type.phpnu „[µü¤        <?php
/**
 * Register custom post type and taxonomies.
 *
 * @package wpcode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

add_action( 'init', 'wpcode_register_post_type', - 5 );
add_action( 'init', 'wpcode_register_taxonomies', - 5 );
add_filter( 'update_post_term_count_statuses', 'wpcode_taxonomies_count_drafts', 10, 2 );
add_action( 'wpcode_before_snippet_save', 'wpcode_maybe_remove_core_content_filters' );
add_action( 'wpcode_snippet_after_update', 'wpcode_restore_core_content_filters' );
add_filter( 'wp_import_post_data_raw', 'wpcode_prevent_wp_importer_import' );

/**
 * Register the post type for snippets.
 *
 * @return void
 */
function wpcode_register_post_type() {
	register_post_type(
		'wpcode',
		array(
			'public'     => false,
			'show_ui'    => false,
			'can_export' => false,
		)
	);
}

/**
 * Register the custom taxonomies used for snippets.
 *
 * @return void
 */
function wpcode_register_taxonomies() {
	register_taxonomy(
		'wpcode_type',
		'wpcode',
		array(
			'public' => false,
		)
	);
	register_taxonomy(
		'wpcode_location',
		'wpcode',
		array(
			'public' => false,
		)
	);
	register_taxonomy(
		'wpcode_tags',
		'wpcode',
		array(
			'public' => false,
		)
	);
}

/**
 * Count draft (inactive) snippets as part of our custom taxonomies count.
 *
 * @param array       $statuses The statuses to include in the count.
 * @param WP_Taxonomy $taxonomy The taxonomy object.
 *
 * @return array
 */
function wpcode_taxonomies_count_drafts( $statuses, $taxonomy ) {
	$taxonomies = array(
		'wpcode_type',
		'wpcode_location',
		'wpcode_tags',
	);
	if ( in_array( $taxonomy->name, $taxonomies, true ) ) {
		$statuses[] = 'draft';
	}

	return $statuses;
}

/**
 * Remove core filters that may interfere with snippet saving.
 *
 * @param WPCode_Snippet $snippet The snippet being saved.
 *
 * @return void
 */
function wpcode_maybe_remove_core_content_filters( $snippet ) {
	// Prevent content_save_pre from modifying the snippet content.
	remove_all_filters( 'content_save_pre' );

	if ( ! function_exists( 'wp_remove_targeted_link_rel_filters' ) || version_compare( get_bloginfo( 'version' ), '6.7', '>=' ) ) {
		// This function is only available in WP 5.1+.
		return;
	}
	/**
	 * Filters the code types that should keep the core filters.
	 *
	 * @param array $code_types_to_keep_filters The code types that should keep the core filters.
	 */
	$code_types_to_keep_filters = apply_filters(
		'wpcode_code_types_to_keep_core_content_filters',
		array(
			'text',
			'html',
		)
	);
	if ( ! in_array( $snippet->get_code_type(), $code_types_to_keep_filters, true ) ) {
		wp_remove_targeted_link_rel_filters();
	}
}

/**
 * Add back the core filters that were removed when saving a snippet.
 *
 * @return void
 */
function wpcode_restore_core_content_filters() {
	if ( ! function_exists( 'wp_init_targeted_link_rel_filters' ) || version_compare( get_bloginfo( 'version' ), '6.7', '>=' ) ) {
		// This function is only available in WP 5.1+.
		return;
	}
	wp_init_targeted_link_rel_filters();
}

/**
 * Prevent the WP Importer plugin from importing snippets.
 *
 * @param array $post_data The post data.
 *
 * @return array
 */
function wpcode_prevent_wp_importer_import( $post_data ) {
	if ( 'wpcode' === $post_data['post_type'] ) {
		$post_data['post_type']    = '';
		$post_data['post_content'] = '';
	}

	return $post_data;
}
PK     «‰U]=	ÈÑÑ
  Ñ
  <  includes/conditional-logic/class-wpcode-conditional-user.phpnu „[µü¤        <?php
/**
 * Class that handles conditional logic related to users.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * The WPCode_Conditional_User class.
 */
class WPCode_Conditional_User extends WPCode_Conditional_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'user';

	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category = 'who';

	/**
	 * Set the translatable label.
	 *
	 * @return void
	 */
	protected function set_label() {
		$this->label = __( 'User', 'insert-headers-and-footers' );
	}

	/**
	 * Set the type options for the admin mainly.
	 *
	 * @return void
	 */
	public function load_type_options() {
		$this->options = array(
			'logged_in' => array(
				'label'       => __( 'Logged-in', 'insert-headers-and-footers' ),
				'description' => __( 'Check if your site visitor is logged in.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => array(
					array(
						'label' => __( 'True', 'insert-headers-and-footers' ),
						'value' => true,
					),
					array(
						'label' => __( 'False', 'insert-headers-and-footers' ),
						'value' => false,
					),
				),
				'callback'    => 'is_user_logged_in',
			),
			'user_role' => array(
				'label'       => __( 'User Role', 'insert-headers-and-footers' ),
				'description' => __( 'Target a specific user role.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => $this->get_options_user_roles(),
				'callback'    => array( $this, 'get_user_role' ),
			),
			'user_meta' => array(
				'label'       => __( 'User Meta', 'insert-headers-and-footers') . ' (PRO)' ,
				'description' => __( 'Target users based on user meta values.', 'insert-headers-and-footers' ),
				'type'        => 'text',
				'options'     => array(),
				'upgrade'     => array(
					'title' => __( 'User Meta is a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to User Meta conditional logic rules by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'user-meta' ),
				),
			),
		);
	}

	/**
	 * Get a list of options for user roles.
	 *
	 * @return array
	 */
	protected function get_options_user_roles() {
		$user_roles = wp_roles()->roles;
		$options    = array();
		foreach ( $user_roles as $key => $role ) {
			$options[] = array(
				'label' => $role['name'],
				'value' => $key,
			);
		}

		return $options;
	}

	/**
	 * Get an array of user roles for the current user.
	 *
	 * @return string[]
	 */
	public function get_user_role() {
		$user = wp_get_current_user();

		return $user->roles;
	}
}

new WPCode_Conditional_User();
PK     «‰U]î€Ýøí(  í(  <  includes/conditional-logic/class-wpcode-conditional-page.phpnu „[µü¤        <?php
/**
 * Class that handles conditional logic related to pages.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * The WPCode_Conditional_Page class.
 */
class WPCode_Conditional_Page extends WPCode_Conditional_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'page';

	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category = 'where';

	/**
	 * Set the translatable label.
	 *
	 * @return void
	 */
	protected function set_label() {
		$this->label = __( 'Page', 'insert-headers-and-footers' );
	}

	/**
	 * Set the type options for the admin mainly.
	 *
	 * @return void
	 */
	public function load_type_options() {
		$this->options = array(
			'type_of_page'  => array(
				'label'       => __( 'Type of page', 'insert-headers-and-footers' ),
				'description' => __( 'Choose a WordPress-specific type of page for your rule.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => array(
					array(
						'label' => __( 'Homepage', 'insert-headers-and-footers' ),
						'value' => 'is_front_page',
					),
					array(
						'label' => __( 'Archive', 'insert-headers-and-footers' ),
						'value' => 'is_archive',
					),
					array(
						'label' => __( 'Single post/page', 'insert-headers-and-footers' ),
						'value' => 'is_single',
					),
					array(
						'label' => __( 'Search page', 'insert-headers-and-footers' ),
						'value' => 'is_search',
					),
					array(
						'label' => __( '404 page', 'insert-headers-and-footers' ),
						'value' => 'is_404',
					),
					array(
						'label' => __( 'Author page', 'insert-headers-and-footers' ),
						'value' => 'is_author',
					),
					array(
						'label' => __( 'Blog home', 'insert-headers-and-footers' ),
						'value' => 'is_home',
					),
				),
				'callback'    => array( $this, 'get_type_of_page' ),
			),
			'post_type'     => array(
				'label'       => __( 'Post type', 'insert-headers-and-footers' ),
				'description' => __( 'Target by post type: posts, pages or custom post types.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => $this->get_post_types(),
				'callback'    => array( $this, 'get_current_post_type' ),
			),
			'referrer'      => array(
				'label'       => __( 'Referrer', 'insert-headers-and-footers' ),
				'description' => __( 'Use the page referrer/last visited page url as a condition.', 'insert-headers-and-footers' ),
				'type'        => 'text',
				'callback'    => array( $this, 'get_referer' ),
			),
			'taxonomy_page' => array(
				'label'       => __( 'Taxonomy page', 'insert-headers-and-footers' ),
				'description' => __( 'Load only on pages for a specific category/taxonomy.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => $this->get_taxonomies_options(),
				'callback'    => array( $this, 'get_taxonomy' ),
			),
			'taxonomy_term' => array(
				'label'           => __( 'Taxonomy term', 'insert-headers-and-footers' ),
				'description'     => __( 'Choose category/taxonomy terms to target for single or archive pages.', 'insert-headers-and-footers' ),
				'type'            => 'ajax',
				'options'         => 'wpcode_search_terms',
				'callback'        => array( $this, 'get_term' ),
				'labels_callback' => array( $this, 'get_taxonomy_term_labels' ),
				'multiple'        => true,
			),
			'page_url'      => array(
				'label'       => __( 'Page URL', 'insert-headers-and-footers' ),
				'description' => __( 'Use the page URL to limit where this snippet is loaded.', 'insert-headers-and-footers' ),
				'type'        => 'text',
				'callback'    => array( $this, 'get_page_url' ),
			),
            'post_meta'     => array(
                'label'       => __( 'Post meta', 'insert-headers-and-footers' ) . ' (PRO)',
                'description' => __( 'Target specific posts based on custom post meta values.', 'insert-headers-and-footers' ),
                'type'        => 'text',
                'options'     => array(),
                'upgrade'     => array(
                    'title' => __( 'Post Meta rules are a Pro feature', 'insert-headers-and-footers' ),
                    'text'  => __( 'Upgrade today to create conditional logic rules for specific pages or posts.', 'insert-headers-and-footers' ),
                    'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'post_meta' ),
                ),
            ),
			'post_id'       => array(
				'label'       => __( 'Post/Page', 'insert-headers-and-footers' ) . ' (PRO)',
				'description' => __( 'Pick specific posts or pages to load the snippet on.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => array(),
				'upgrade'     => array(
					'title' => __( 'Post specific rules are a Pro feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Upgrade today to create conditional logic rules for specific pages or posts.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'post_id' ),
				),
			),
			'page_template' => array(
				'label'       => __( 'Page Template', 'insert-headers-and-footers' ) . ' (PRO)',
				'description' => __( 'Load the snippet only on pages with a specific template.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => array(),
				'upgrade'     => array(
					'title' => __( 'Page Template rules are a Pro feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Upgrade today to create conditional logic rules for specific page templates.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'page_template' ),
				),
			),
			'post_author'   => array(
				'label'       => __( 'Author', 'insert-headers-and-footers' ) . ' (PRO)',
				'description' => __( 'Load the snippet only on pages with a specific author.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => array(),
				'upgrade'     => array(
					'title' => __( 'Post Author rules are a Pro feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Upgrade today to create conditional logic rules based on the page/post author.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'post_author' ),
				),
			),
		);
	}

	/**
	 * Get a list of options with post types.
	 *
	 * @return array
	 */
	protected function get_post_types() {
		$post_types = get_post_types( array( 'public' => true ), 'objects' );
		$options    = array();
		foreach ( $post_types as $post_type ) {
			$options[] = array(
				'label' => $post_type->label,
				'value' => $post_type->name,
			);
		}

		return $options;
	}

	/**
	 * Get a list of taxonomy types.
	 *
	 * @return array
	 */
	protected function get_taxonomies_options() {
		$taxonomies = get_taxonomies(
			array(
				'public' => true,
			),
			'objects'
		);
		$options    = array();
		foreach ( $taxonomies as $taxonomy ) {
			if ( 'post_format' === $taxonomy->name ) {
				continue;
			}
			$options[] = array(
				// Translators: this is the name of the taxonomy.
				'label' => $taxonomy->labels->singular_name,
				'value' => $taxonomy->name,
			);
		}

		return $options;
	}

	/**
	 * Get the type of page.
	 *
	 * @return string
	 */
	public function get_type_of_page() {
		global $wp_query;

		if ( ! isset( $wp_query ) ) {
			return '';
		}
		if ( is_front_page() ) {
			return 'is_front_page';
		}
		if ( is_home() ) {
			return 'is_home';
		}
		if ( is_singular() ) {
			return 'is_single';
		}
		if ( is_author() ) {
			return 'is_author';
		}
		if ( is_archive() ) {
			return 'is_archive';
		}
		if ( is_search() ) {
			return 'is_search';
		}
		if ( is_404() ) {
			return 'is_404';
		}

		return '';
	}

	/**
	 * Get the current page post type, if any.
	 *
	 * @return string
	 */
	public function get_current_post_type() {
		return get_post_type();
	}

	/**
	 * Get the referrer from PHP.
	 *
	 * @return string
	 */
	public function get_referer() {
		return isset( $_SERVER['HTTP_REFERER'] ) ? $_SERVER['HTTP_REFERER'] : '';  // phpcs:ignore WordPress.Security.ValidatedSanitizedInput.MissingUnslash, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
	}

	/**
	 * Get the page URL.
	 *
	 * @return string
	 */
	public function get_page_url() {
		global $wp;

		if ( is_admin() ) {
			$url = isset( $_SERVER['REQUEST_URI'] ) ? basename( esc_url_raw( wp_unslash( $_SERVER['REQUEST_URI'] ) ) ) : '';
			$url = admin_url( $url );
		} else {
			$url = isset( $wp->request ) ? trailingslashit( home_url( $wp->request ) ) : '';
		}

		if ( ! empty( $_GET ) ) { // phpcs:ignore
			foreach ( $_GET as $key => $value ) { // phpcs:ignore
				$key = sanitize_key( $key );
				$url = add_query_arg(
					array(
						$key => sanitize_text_field( wp_unslash( $value ) ),
					),
					$url
				);
			}
		}

		return $url;
	}

	/**
	 * Check if the current page is a taxonomy page and if yes get the taxonomy name.
	 *
	 * @return string
	 */
	public function get_taxonomy() {
		global $wp_query;
		if ( is_null( $wp_query ) ) {
			return '';
		}
		$queried_object = get_queried_object();

		return isset( $queried_object->taxonomy ) ? $queried_object->taxonomy : '';
	}

	/**
	 * Get the term of the current page, if any.
	 *
	 * @return array
	 */
	public function get_term() {
		global $wp_query;
		if ( is_null( $wp_query ) ) {
			return array();
		}
		if ( is_tax() || is_category() || is_tag() ) {
			$queried_object = get_queried_object();

			return isset( $queried_object->term_id ) ? array( $queried_object->term_id ) : array();
		}
		if ( is_singular() ) {
			return get_terms(
				array(
					'object_ids' => array( get_the_ID() ),
					'fields'     => 'ids',
				)
			);
		}

		return array();
	}

	/**
	 * Get the term labels for the taxonomy term value loading in the admin form.
	 *
	 * @param array $values The values that are selected.
	 *
	 * @return array
	 */
	public function get_taxonomy_term_labels( $values ) {
		$labels = array();
		foreach ( $values as $term_id ) {
			$term = get_term( $term_id );
			if ( is_null( $term ) || is_wp_error( $term ) ) {
				continue;
			}
			$labels[] = array(
				'value' => $term_id,
				'label' => $term->name,
			);
		}

		return $labels;
	}
}

new WPCode_Conditional_Page();
PK     «‰U]Qór¡î  î  <  includes/conditional-logic/class-wpcode-conditional-type.phpnu „[µü¤        <?php
/**
 * Base class for types of conditional logic options.
 *
 * @package WPCode
 */

/**
 * Abstract class WPCode_Conditional_Type
 */
abstract class WPCode_Conditional_Type {

	/**
	 * An array of options for this type.
	 *
	 * @var array
	 */
	protected $options;

	/**
	 * The type label.
	 *
	 * @var string
	 */
	public $label;

	/**
	 * The type name.
	 *
	 * @var string
	 */
	public $name;

	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category;

	/**
	 * Constructor.
	 */
	public function __construct() {
		$this->register_type();
		$this->hooks();
	}

	/**
	 * Register conditional-logic hooks specific to each type (e.g. ajax callbacks).
	 *
	 * @return void
	 */
	public function hooks() {
	}

	/**
	 * Register this instance to the global auto-insert types.
	 *
	 * @return void
	 */
	private function register_type() {
		wpcode()->conditional_logic->register_type( $this );
	}

	/**
	 * Get the options for this type.
	 *
	 * @return array
	 */
	public function get_type_options() {
		if ( ! isset( $this->options ) ) {
			$this->load_type_options();
		}

		return $this->options;
	}

	/**
	 * Set the type label with a translatable string.
	 *
	 * @return void
	 */
	abstract protected function set_label();

	/**
	 * Load the options for this type of conditions.
	 *
	 * @return void
	 */
	abstract public function load_type_options();

	/**
	 * Get the label.
	 *
	 * @return string
	 */
	public function get_label() {
		if ( ! isset( $this->label ) ) {
			$this->set_label();
		}

		return $this->label;
	}

	/**
	 * Get the category.
	 *
	 * @return string
	 */
	public function get_category() {
		return $this->category;
	}

	/**
	 * Get the type name.
	 *
	 * @return string
	 */
	public function get_name() {
		return $this->name;
	}

	/**
	 * Process a rule group specific to the conditions type.
	 *
	 * @param array          $rule_group An array of rules with keys option,relation and value.
	 * @param WPCode_Snippet $snippet The snippet we are evaluating the rules for.
	 *
	 * @return bool
	 */
    public function evaluate_rule_row( $rule_group, $snippet ) {
        return $this->evaluate_rule( $rule_group['option'], $rule_group['relation'], $rule_group['value'], $snippet );
    }

	/**
	 * This takes an option name from the list of options for the type
	 * and if it finds it, it executes the callback defined in the list of
	 * options and compares that value to the set value using the operator
	 * set in the settings.
	 *
	 * @param string         $option The option to evaluate.
	 * @param string         $relation The comparison relation.
	 * @param string         $value The selected value for this condition.
	 * @param WPCode_Snippet $snippet The snippet we are evaluating the rules for.
	 *
	 * @return bool
	 */
	protected function evaluate_rule( $option, $relation, $value, $snippet ) {
		$options = $this->get_type_options();
		if ( ! isset( $options [ $option ] ) ) {
			return true;
		}
		$option_details = $options[ $option ];

		if ( ! isset( $option_details['callback'] ) ) {
			return false;
		}
		$callback = $option_details['callback'];
		if ( ! is_callable( $callback ) ) {
			return false;
		}

		return $this->get_relation_comparison( $callback( $snippet ), $value, $relation );
	}

	/**
	 * Takes 2 values and an operator and finds the appropriate function
	 * to evaluate the relation between them.
	 *
	 * @param mixed  $value1 This is the first value to compare with value 2.
	 * @param mixed  $value2 This is the 2nd value.
	 * @param string $operator This is the operator string.
	 *
	 * @return bool
	 */
	protected function get_relation_comparison( $value1, $value2, $operator ) {
		switch ( $operator ) {
			case '=':
				$result = $this->equals( $value1, $value2 );
				break;
			case '!=':
				$result = $this->does_not_equal( $value1, $value2 );
				break;
			case 'contains':
				$result = $this->contains( $value1, $value2 );
				break;
			case 'notcontains':
				$result = ! $this->contains( $value1, $value2 );
				break;
			default:
				$result = true;
				break;
		}

		return $result;
	}

	/**
	 * Does an equals comparison (not strict), also handles arrays to
	 * make it easier to compare things like user roles.
	 *
	 * @param mixed $value1 Value 1.
	 * @param mixed $value2 Value to compare value 1 to.
	 *
	 * @return bool
	 */
	private function equals( $value1, $value2 ) {
		if ( is_array( $value1 ) ) {
			if ( is_array( $value2 ) ) {
				return count( array_intersect( $value1, $value2 ) ) > 0;
			}

			return in_array( $value2, $value1 );
		}
		if ( is_array( $value2 ) ) {
			return in_array( $value1, $value2 );
		}

		return $value1 == $value2;
	}

	/**
	 * Does a "does not equal" comparison (not strict), also handles arrays to
	 * make it easier to compare things like user roles.
	 *
	 * @param mixed $value1 Value 1.
	 * @param mixed $value2 Value to compare value 1 to.
	 *
	 * @return bool
	 */
	private function does_not_equal( $value1, $value2 ) {
		if ( is_array( $value1 ) ) {
			if ( is_array( $value2 ) ) {
				return count( array_intersect( $value1, $value2 ) ) === 0;
			}

			return ! in_array( $value2, $value1 );
		}

		if ( is_array( $value2 ) ) {
			return ! in_array( $value1, $value2 );
		}

		return $value1 != $value2;
	}

	/**
	 * Check if value1 contains value2.
	 *
	 * @param string $value1 Value in which to look for value 2.
	 * @param string $value2 The value to look for in value 1.
	 *
	 * @return bool
	 */
	private function contains( $value1, $value2 ) {
		if ( empty( $value2 ) ) {
			return false;
		}
		return false !== strpos( $value1, $value2 );
	}
}
PK     «‰U]°5„ûâ  â  '  includes/class-wpcode-snippet-cache.phpnu „[µü¤        <?php
/**
 * Cache active snippets in a single query.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Snippet_Cache.
 */
class WPCode_Snippet_Cache {

	/**
	 * The option name used for storing data in the db.
	 *
	 * @var string
	 */
	protected $option_name = 'wpcode_snippets';

	/**
	 * The snippets stored in the db.
	 *
	 * @var array
	 */
	protected $snippets;

	/**
	 * Get the snippets data from the cache.
	 *
	 * @return array
	 */
	public function get_cached_snippets() {
		if ( ! isset( $this->snippets ) ) {
			$all_snippets = $this->get_option();
			foreach ( $all_snippets as $location => $snippets ) {
				if ( empty( $snippets ) ) {
					continue;
				}
				if ( ! is_array( $all_snippets[ $location ] ) ) {
					$all_snippets[ $location ] = array();
				}
				// Load minimal snippet data from array.
				foreach ( $snippets as $key => $snippet ) {
					$all_snippets[ $location ][ $key ] = $this->load_snippet( $snippet );
				}

				usort( $all_snippets[ $location ], array( $this, 'priority_order' ) );
			}

			$this->snippets = $all_snippets;
		}

		return $this->snippets;
	}

	/**
	 * Load a snippet by id, WP_Post or array.
	 *
	 * @param array|int|WP_Post $snippet_data Load a snippet by id, WP_Post or array.
	 *
	 * @return WPCode_Snippet
	 */
	public function load_snippet( $snippet_data ) {
		return new WPCode_Snippet( $snippet_data );
	}

	/**
	 * Get cached snippets in an array by their id.
	 *
	 * @return WPCode_Snippet[]
	 */
	public function get_cached_snippets_by_id() {
		$snippets_by_id  = array();
		$cached_snippets = $this->get_cached_snippets();
		foreach ( $cached_snippets as $snippets ) {
			foreach ( $snippets as $snippet ) {
				$snippets_by_id[ $snippet->get_id() ] = $snippet;
			}
		}

		return $snippets_by_id;
	}

	/**
	 * Used for sorting by priority.
	 *
	 * @param WPCode_Snippet $snippet_a The first snippet.
	 * @param WPCode_Snippet $snippet_b The second snippet.
	 *
	 * @return int
	 */
	public function priority_order( $snippet_a, $snippet_b ) {
		return $snippet_a->get_priority() - $snippet_b->get_priority();
	}

	/**
	 * Delete the cache option completely.
	 *
	 * @return void
	 */
	public function delete_cache() {
		update_option( $this->option_name, array() );
	}

	/**
	 * Save all the loaded snippets in a single option.
	 *
	 * @return void
	 */
	public function cache_all_loaded_snippets() {
		if ( ! apply_filters( 'wpcode_cache_active_snippets', true ) ) {
			return;
		}
		$auto_inserts         = wpcode()->auto_insert->get_types();
		$snippets_by_location = array();
		foreach ( $auto_inserts as $auto_insert ) {
			// We don't want to use cached data when gathering stuff for cache.
			add_filter( 'wpcode_use_auto_insert_cache', '__return_false' );
			// Make sure snippets were not already loaded by earlier hooks.
			unset( $auto_insert->snippets );
			$snippets_by_location = array_merge( $auto_insert->get_snippets(), $snippets_by_location );
		}

		$data_for_cache = array();
		foreach ( $snippets_by_location as $location => $snippets ) {
			if ( empty( $snippets ) ) {
				continue;
			}
			$data_for_cache[ $location ] = $this->prepare_snippets_for_caching( $snippets );
		}

		$this->update_option( $data_for_cache );
	}

	/**
	 * Update the option with the new data.
	 *
	 * @param array $data_for_cache The data to store in the option.
	 *
	 * @return bool
	 */
	public function update_option( $data_for_cache ) {
		return update_option( $this->option_name, $data_for_cache );
	}

	/**
	 * Get the option from the db.
	 *
	 * @return array
	 */
	public function get_option() {
		return (array) get_option( $this->option_name, array() );
	}

	/**
	 * Go through an array of snippets and extract just the minimal data
	 * needed for running the snippets.
	 *
	 * @param WPCode_Snippet[] $snippets The snippets array.
	 *
	 * @return array
	 */
	private function prepare_snippets_for_caching( $snippets ) {
		$prepared_snippets = array();
		foreach ( $snippets as $snippet ) {
			$prepared_snippets[] = $snippet->get_data_for_caching();
		}

		return $prepared_snippets;
	}
}
PK     «‰U]°þþèaN  aN  $  includes/class-wpcode-smart-tags.phpnu „[µü¤        <?php
/**
 * Base class used for Smart Tags throughout the plugin.
 *
 * @package WPCode
 */

/**
 * WPCode_Smart_Tags class.
 */
class WPCode_Smart_Tags {

	/**
	 * The tags array.
	 *
	 * @var array
	 */
	protected $tags;

	/**
	 * Constructor.
	 */
	public function __construct() {
		$this->hooks();
	}

	/**
	 * Add filters to replace the tags in the snippet code.
	 *
	 * @return void
	 */
	public function hooks() {
	}

	/**
	 * Load tags in the instance.
	 *
	 * @return void
	 */
	public function load_tags() {
		$generic_tags = array(
			'id'             => array(
				'label'    => __( 'Content ID', 'insert-headers-and-footers' ),
				'function' => array( $this, 'get_the_ID' ),
			),
			'permalink'      => array(
				'label'    => __( 'Permalink', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_permalink' ),
			),
			'title'          => array(
				'label'    => __( 'Content title', 'insert-headers-and-footers' ),
				'function' => array( $this, 'get_the_title' ),
			),
			'excerpt'        => array(
				'label'    => __( 'Post excerpt', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_excerpt' ),
			),
			'content'        => array(
				'label'    => __( 'Post content', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_content' ),
			),
			'featured_image' => array(
				'label'    => __( 'URL of the featured image', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_featured_image' ),
			),
			'categories'     => array(
				'label'    => __( 'Categories', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_categories' ),
			),
			'tags'           => array(
				'label'    => __( 'Tags, comma-separated', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_tags' ),
			),
			'date_published' => array(
				'label'    => __( 'Post publish date', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_date_published' ),
			),
			'date_modified'  => array(
				'label'    => __( 'Post modification date', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_date_modified' ),
			),
			'email'          => array(
				'label'    => __( 'User\'s email', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_email' ),
			),
			'first_name'     => array(
				'label'    => __( 'User\'s first name', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_first_name' ),
			),
			'last_name'      => array(
				'label'    => __( 'User\'s last name', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_last_name' ),
			),
			'custom_field'   => array(
				'label'      => __( 'Custom Field (meta)', 'insert-headers-and-footers' ),
				'function'   => array( $this, 'tag_value_custom_field' ),
				'editor_tag' => 'custom_field="meta_key"',
			),
			'author_id'      => array(
				'label'    => __( 'Author ID', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_author_id' ),
			),
			'author_name'    => array(
				'label'    => __( 'Author Name', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_author_name' ),
			),
			'author_url'     => array(
				'label'    => __( 'Author URL', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_author_url' ),
			),
			'author_bio'     => array(
				'label'    => __( 'Author\'s bio/description', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_author_bio' ),
			),
			'site_name'      => array(
				'label'    => __( 'The website\'s name', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_site_name' ),
			),
			'site_url'       => array(
				'label'    => __( 'The website\'s home URL', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_site_url' ),
			),
			'post_type'      => array(
				'label'    => __( 'Post type', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_post_type' ),
			),
			'login_url'      => array(
				'label'    => __( 'Login URL', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_login_url' ),
			),
			'logout_url'     => array(
				'label'    => __( 'Logout URL', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_logout_url' ),
			),
		);

		$woocommerce_tags = array(
			'wc_order_number'              => array(
				'label'    => __( 'WooCommerce Order number', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_order_number' ),
			),
			'wc_order_subtotal'            => array(
				'label'    => __( 'WooCommerce Order subtotal', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_order_subtotal' ),
			),
			'wc_order_total'               => array(
				'label'    => __( 'WooCommerce Order total', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_order_total' ),
			),
			'wc_product_id'                => array(
				'label'    => __( 'WooCommerce Product ID', 'insert-headers-and-footers' ),
				'function' => array( $this, 'get_the_ID' ),
			),
			'wc_product_permalink'         => array(
				'label'    => __( 'WooCommerce Permalink', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_permalink' ),
			),
			'wc_product_title'             => array(
				'label'    => __( 'WooCommerce Product title', 'insert-headers-and-footers' ),
				'function' => array( $this, 'get_the_title' ),
			),
			'wc_product_sku'               => array(
				'label'    => __( 'WooCommerce SKU', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_sku' ),
			),
			'wc_product_price'             => array(
				'label'    => __( 'WooCommerce Regular price', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_price' ),
			),
			'wc_product_sale_price'        => array(
				'label'    => __( 'WooCommerce Sale price', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_sale_price' ),
			),
			'wc_product_price_html'        => array(
				'label'    => __( 'WooCommerce Price (with currency)', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_price_html' ),
			),
			'wc_product_in_stock'          => array(
				'label'    => __( 'WooCommerce In stock?', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_in_stock' ),
			),
			'wc_product_stock_quantity'    => array(
				'label'    => __( 'WooCommerce Inventory count', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_stock_quantity' ),
			),
			'wc_product_description'       => array(
				'label'    => __( 'WooCommerce Product Description', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_content' ),
			),
			'wc_product_short_description' => array(
				'label'    => __( 'WooCommerce Product Short Description', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_short_description' ),
			),
			'wc_product_image'             => array(
				'label'    => __( 'WooCommerce Featured image URL', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_image' ),
			),
			'wc_product_category'          => array(
				'label'    => __( 'WooCommerce Product categories', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_category' ),
			),
			'wc_product_tags'              => array(
				'label'    => __( 'WooCommerce Product tags', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_tags' ),
			),
			'wc_product_rating'            => array(
				'label'    => __( 'WooCommerce Average rating', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_rating' ),
			),
			'wc_product_review_count'      => array(
				'label'    => __( 'WooCommerce Number of reviews', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_review_count' ),
			),
			'wc_product_gallery'           => array(
				'label'    => __( 'WooCommerce Gallery image URLs', 'insert-headers-and-footers' ),
				'function' => array( $this, 'tag_value_wc_product_gallery' ),
			),
		);

		$tags = array(
			'generic' => array(
				'label' => '',
				'tags'  => $generic_tags,
			),
		);

		if ( $this->woocommerce_available() ) {
			$tags['woocommerce'] = array(
				'label' => __( 'WooCommerce', 'insert-headers-and-footers' ),
				'tags'  => $woocommerce_tags,
			);
		}

		if ( method_exists( $this, 'edd_available' ) && $this->edd_available() ) {
			$edd_tags = array(
				'edd_file_name'  => array(
					'label'      => __( 'EDD File Name', 'insert-headers-and-footers' ),
					'function'   => array( $this, 'tag_value_edd_file_name' ),
					'editor_tag' => 'edd_file_name',
				),
				'edd_file_url'   => array(
					'label'      => __( 'EDD File URL', 'insert-headers-and-footers' ),
					'function'   => array( $this, 'tag_value_edd_file_url' ),
					'editor_tag' => 'edd_file_url',
				),
				'edd_file_price' => array(
					'label'    => __( 'EDD File Price', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_edd_file_price' ),
				),
				'edd_file_notes' => array(
					'label'    => __( 'EDD File Notes', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_edd_file_notes' ),
				),
			);

			$tags['edd'] = array(
				'label' => __( 'Easy Digital Downloads', 'insert-headers-and-footers' ),
				'tags'  => $edd_tags,
			);
		}

		if ( method_exists( $this, 'yoast_seo_available' ) && $this->yoast_seo_available() ) {
			$yoast_seo_tags = array(
				'yoast_seo_title'       => array(
					'label'    => __( 'Yoast SEO Title', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_seo_title' ),
				),
				'yoast_seo_description' => array(
					'label'    => __( 'Yoast SEO Description', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_seo_description' ),
				),
			);

			$tags['yoast_seo'] = array(
				'label' => __( 'Yoast SEO', 'insert-headers-and-footers' ),
				'tags'  => $yoast_seo_tags,
			);
		}

		if ( method_exists( $this, 'aioseo_available' ) && $this->aioseo_available() ) {
			$aioseo_tags = array(
				'aioseo_title'       => array(
					'label'    => __( 'AIOSEO Title', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_aioseo_title' ),
				),
				'aioseo_description' => array(
					'label'    => __( 'AIOSEO Description', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_aioseo_description' ),
				),
			);

			$tags['aioseo'] = array(
				'label' => __( 'All in One SEO', 'insert-headers-and-footers' ),
				'tags'  => $aioseo_tags,
			);
		}

		if ( method_exists( $this, 'memberpress_courses_available' ) && $this->memberpress_courses_available() ) {
			$memberpress_courses_tags = array(
				'mepr_course_name'        => array(
					'label'    => __( 'Course Name', 'insert-headers-and-footers' ),
					'function' => array( $this, 'get_the_title' ),
				),
				'mepr_course_description' => array(
					'label'    => __( 'Course Description', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_content' ),
				),
				'mepr_course_url'         => array(
					'label'    => __( 'Course Permalink', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_permalink' ),
				),
				'mepr_course_price'       => array(
					'label'    => __( 'Course Price', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_course_price' ),
				),
				'mepr_course_stock'       => array(
					'label'    => __( 'Course Availability', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_course_stock' ),
				),
				'mepr_course_instructor'  => array(
					'label'    => __( 'Course Instructor', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_course_instructor' ),
				),
			);

			$tags['memberpress_courses'] = array(
				'label' => __( 'MemberPress Courses', 'insert-headers-and-footers' ),
				'tags'  => $memberpress_courses_tags,
			);
		}

		if ( method_exists( $this, 'memberpress_available' ) && $this->memberpress_available() ) {
			$memberpress_tags = array(
				'mepr_name'         => array(
					'label'    => __( 'Membership Name', 'insert-headers-and-footers' ),
					'function' => array( $this, 'get_the_title' ),
				),
				'mepr_price'        => array(
					'label'    => __( 'Membership Price', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_membership_price' ),
				),
				'mepr_description'  => array(
					'label'    => __( 'Membership Description', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_content' ),
				),
				'mepr_url'          => array(
					'label'    => __( 'Membership URL', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_membership_url' ),
				),
				'mepr_billing_type' => array(
					'label'    => __( 'Membership Billing Type', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_membership_billing_type' ),
				),
				'mepr_period_type'  => array(
					'label'    => __( 'Membership Period Type', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_membership_period_type' ),
				),
				'mepr_period'       => array(
					'label'    => __( 'Membership Period', 'insert-headers-and-footers' ),
					'function' => array( $this, 'tag_value_membership_period' ),
				),
			);

			$tags['memberpress'] = array(
				'label' => __( 'MemberPress', 'insert-headers-and-footers' ),
				'tags'  => $memberpress_tags,
			);
		}

		$this->tags = apply_filters( 'wpcode_smart_tags', $tags );
	}

	/**
	 * Get smart tags with labels.
	 *
	 * @return array
	 */
	public function get_tags() {
		if ( ! isset( $this->tags ) ) {
			$this->load_tags();
		}

		return $this->tags;
	}

	/**
	 * Check if WooCommerce is installed & active on the site.
	 *
	 * @return bool
	 */
	public function woocommerce_available() {
		return class_exists( 'woocommerce' );
	}

	/**
	 * Check if Yoast SEO is installed & active on the site.
	 *
	 * @return bool
	 */
	public function yoast_seo_available() {
		return class_exists( 'WPSEO_Admin' );
	}

	/**
	 * Check if All in One SEO is installed & active on the site.
	 *
	 * @return bool
	 */
	public function aioseo_available() {
		return class_exists( 'AIOSEO\Plugin\AIOSEO' );
	}

	/**
	 * Check if Easy Digital Downloads is installed & active on the site.
	 *
	 * @return bool
	 */
	public function edd_available() {
		return class_exists( 'Easy_Digital_Downloads' ) || class_exists( 'EDD_Download' );
	}

	/**
	 * Check if MemberPress Courses is installed & active on the site.
	 *
	 * @return bool
	 */
	public function memberpress_courses_available() {
		return class_exists( 'memberpress\courses\models\Course' );
	}

	/**
	 * Check if MemberPress is installed & active on the site.
	 *
	 * @return bool
	 */
	public function memberpress_available() {
		return class_exists( 'MeprProduct' );
	}

	/**
	 * Get the editor tag for a given tag.
	 *
	 * @param string $tag The tag to get the editor tag for.
	 *
	 * @return false|mixed
	 */
	public function get_tag_editor_tag( $tag ) {
		$tags = $this->get_tags();
		foreach ( $tags as $category ) {
			if ( isset( $category['tags'][ $tag ]['editor_tag'] ) ) {
				return $category['tags'][ $tag ]['editor_tag'];
			}
		}

		return $tag;
	}

	/**
	 * Get a tag in the format used in the code.
	 *
	 * @param string $tag The tag to wrap in code format.
	 *
	 * @return string
	 */
	public function get_tag_code( $tag ) {
		return "{{$tag}}";
	}

	/**
	 * Smart tags picker markup with a target id where the selected smart tag will be inserted.
	 *
	 * @param string $target The id of the textarea where the smart tag will be inserted.
	 * @param array  $predefined_tags Optional array of predefined tags to show.
	 *
	 * @return void
	 */
	public function smart_tags_picker( $target = '', $predefined_tags = array() ) {
		$tags        = $this->get_tags();
		$unavailable = ! empty( $this->upgrade_notice_data() ) ? ' wpcode-smart-tags-unavailable' : '';
		?>
		<div class="wpcode-smart-tags <?php echo esc_attr( $unavailable ); ?>">
			<?php
			// Render predefined smart tags if any are set.
			if ( ! empty( $predefined_tags ) ) {
				foreach ( $predefined_tags as $tag ) {
					$tag_code = $this->get_tag_code( $tag );
					?>
					<button type="button" class="wpcode-insert-smart-tag" data-tag="<?php echo esc_attr( $tag_code ); ?>" data-target="<?php echo esc_attr( $target ); ?>">
						<code><?php echo esc_html( $tag_code ); ?></code>
					</button>
					<?php
				}
			}
			?>
			<button class="wpcode-smart-tags-toggle" type="button">
				<?php wpcode_icon( 'tags', 20, 16, '0 0 20 16' ); ?>
				<span class="wpcode-text-default">
						<?php esc_html_e( 'Show Smart Tags', 'insert-headers-and-footers' ); ?>
					</span>
				<span class="wpcode-text-active">
						<?php esc_html_e( 'Hide Smart Tags', 'insert-headers-and-footers' ); ?>
					</span>
			</button>
			<div class="wpcode-smart-tags-dropdown" data-target="<?php echo esc_attr( $target ); ?>" <?php $this->upgrade_data_attributes(); ?>>
				<div class="wpcode-smart-tags-header">
					<h3 class="wpcode-smart-tags-title"><?php esc_html_e( 'Smart Tags', 'insert-headers-and-footers' ); ?></h3>
					<div class="wpcode-smart-tags-search">
						<input type="text" class="wpcode-smart-tags-search-input" placeholder="<?php esc_attr_e( 'Search smart tags', 'insert-headers-and-footers' ); ?>">
					</div>
				</div>
				<div class="wpcode-smart-tags-list">
					<?php
					foreach ( $tags as $tag_category ) {
						?>
						<ul class="wpcode-smart-tags-category">
							<?php
							if ( ! empty( $tag_category['label'] ) ) {
								printf(
									'<li class="wpcode-smart-tag-category-label">%s</li>',
									esc_html( $tag_category['label'] )
								);
							}
							if ( ! empty( $tag_category['tags'] ) ) {
								foreach ( $tag_category['tags'] as $tag => $tag_data ) {
									if ( empty( $tag_data['label'] ) ) {
										continue;
									}
									$this->tag_button( $tag, $tag_data['label'] );
								}
							}
							?>
						</ul>
						<?php
					}
					?>
					<div class="wpcode-smart-tags-no-results" style="display: none;">
						<p><?php esc_html_e( 'No smart tags found', 'insert-headers-and-footers' ); ?></p>
					</div>
				</div>
				<div class="wpcode-smart-tags-dropdown-footer">
					<a href="<?php echo esc_url( wpcode_utm_url( 'https://wpcode.com/docs/smart-tags', 'smart-tags', 'dropdown' ) ); ?>" target="_blank" rel="noopener noreferrer">
						<?php wpcode_icon( 'help', 21 ); ?>
						<?php esc_html_e( 'Learn more about Smart Tags', 'insert-headers-and-footers' ); ?>
					</a>
				</div>
			</div>
		</div>
		<?php
	}

	/**
	 * Print the tag button markup.
	 *
	 * @param string $tag The tag.
	 * @param string $label The tag label.
	 *
	 * @return void
	 */
	public function tag_button( $tag, $label = '' ) {
		$tag_code   = $this->get_tag_code( $tag );
		$editor_tag = $this->get_tag_code( $this->get_tag_editor_tag( $tag ) );
		printf(
			'<li><button class="wpcode-insert-smart-tag" data-tag="%3$s" type="button"><code>%1$s</code> - %2$s</button></li>',
			esc_html( $tag_code ),
			esc_html( $label ),
			esc_attr( $editor_tag )
		);
	}

	/**
	 * Get upgrade notice data.
	 *
	 * @return array
	 */
	public function upgrade_notice_data() {
		return array();
	}

	/**
	 * Print upgrade notice data attributes, if any.
	 *
	 * @return void
	 */
	public function upgrade_data_attributes() {
		$upgrade_data = $this->upgrade_notice_data();

		foreach ( $upgrade_data as $attribute => $value ) {
			printf( ' data-upgrade-%s="%s"', esc_attr( $attribute ), esc_attr( $value ) );
		}
	}
}
PK     «‰U]ZœÔl•  •  :  includes/lite/auto-insert/class-wpcode-auto-insert-edd.phpnu „[µü¤        <?php
/**
 * Easy Digital Downloads specific auto-insert locations.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class WPCode_Auto_Insert_EDD.
 */
class WPCode_Auto_Insert_EDD_Lite extends WPCode_Auto_Insert_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'edd';
	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category = 'ecommerce';

	/**
	 * Not available to select.
	 *
	 * @var string
	 */
	public $code_type = 'pro';

	/**
	 * Text to display next to optgroup label.
	 *
	 * @var string
	 */
	public $label_pill = 'PRO';

	/**
	 * Load the available options and labels.
	 *
	 * @return void
	 */
	public function init() {
	}

	/**
	 * Load the label.
	 *
	 * @return void
	 */
	public function load_label() {
		$this->label = 'Easy Digital Downloads';
	}

	/**
	 * Load the available locations.
	 *
	 * @return void
	 */
	public function load_locations() {
		$this->locations = array(
			'edd_purchase_link_top'       => array(
				'label'       => __( 'Before the Purchase Button', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the EDD purchase button.', 'insert-headers-and-footers' ),
			),
			'edd_purchase_link_end'       => array(
				'label'       => __( 'After the Purchase Button', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the EDD purchase button.', 'insert-headers-and-footers' ),
			),
			'edd_before_download_content' => array(
				'label'       => __( 'Before the Single Download', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the single EDD download content.', 'insert-headers-and-footers' ),
			),
			'edd_after_download_content'  => array(
				'label'       => __( 'After the Single Download', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the single EDD download content.', 'insert-headers-and-footers' ),
			),
			'edd_before_cart'             => array(
				'label'       => __( 'Before the Cart', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the EDD cart.', 'insert-headers-and-footers' ),
			),
			'edd_after_cart'              => array(
				'label'       => __( 'After the Cart', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the EDD cart.', 'insert-headers-and-footers' ),
			),
			'edd_before_checkout_cart'    => array(
				'label'       => __( 'Before the Checkout Cart', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the EDD cart on the checkout page.', 'insert-headers-and-footers' ),
			),
			'edd_after_checkout_cart'     => array(
				'label'       => __( 'After the Checkout Cart', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the EDD cart on the checkout page.', 'insert-headers-and-footers' ),
			),
			'edd_before_purchase_form'    => array(
				'label'       => __( 'Before the Checkout Form', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the EDD checkout form on the checkout page.', 'insert-headers-and-footers' ),
			),
			'edd_after_purchase_form'     => array(
				'label'       => __( 'After the Checkout Form', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the EDD checkout form on the checkout page', 'insert-headers-and-footers' ),
			),
		);
	}

	/**
	 * Load the upgrade strings.
	 *
	 * @return void
	 */
	public function load_upgrade_strings() {
		$this->upgrade_title = __( 'Easy Digital Downloads Locations are a PRO feature', 'insert-headers-and-footers' );
		$this->upgrade_text  = __( 'Upgrade to PRO today and get access to advanced eCommerce auto-insert locations and conditional logic rules for your needs.', 'insert-headers-and-footers' );
		$this->upgrade_link  = wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'auto-insert', 'edd' );
	}
}

new WPCode_Auto_Insert_EDD_Lite();
PK     «‰U]yK9·    >  includes/lite/auto-insert/class-wpcode-auto-insert-content.phpnu „[µü¤        <?php
/**
 * Class for auto-insert inside content.
 *
 * @package wpcode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class WPCode_Auto_Insert_Single.
 */
class WPCode_Auto_Insert_Content_Lite extends WPCode_Auto_Insert_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'content';

	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category = 'page';

	/**
	 * Not available to select.
	 *
	 * @var string
	 */
	public $code_type = 'pro';

	/**
	 * Text to display next to optgroup label.
	 *
	 * @var string
	 */
	public $label_pill = 'PRO';

	/**
	 * Load the available options and labels.
	 *
	 * @return void
	 */
	public function init() {
	}

	/**
	 * Load the label.
	 *
	 * @return void
	 */
	public function load_label() {
		$this->label = __( 'Content', 'insert-headers-and-footers' );
	}

	/**
	 * Load the available locations.
	 *
	 * @return void
	 */
	public function load_locations() {
		$this->locations = array(
			'after_words'           => array(
				'label'       => esc_html__( 'Insert After # Words', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet after a minimum number of words.', 'insert-headers-and-footers' ),
			),
			'every_words'           => array(
				'label'       => esc_html__( 'Insert Every # Words', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet every # number of words.', 'insert-headers-and-footers' ),
			),
			'content_half'          => array(
				'label'       => esc_html__( 'Insert in the Middle of the Content', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet in the middle of the post content.', 'insert-headers-and-footers' ),
			),
			'content_quarter'       => array(
				'label'       => esc_html__( 'Insert after first Quarter (25%)', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet after the first quarter of the post content.', 'insert-headers-and-footers' ),
			),
			'content_quarter_third' => array(
				'label'       => esc_html__( 'Insert after 3rd Quarter (75%)', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet after the third quarter of the post content.', 'insert-headers-and-footers' ),
			),
			'content_one_third'     => array(
				'label'       => esc_html__( 'Insert after first Third (33%)', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet after the first third of the post content.', 'insert-headers-and-footers' ),
			),
			'content_two_thirds'    => array(
				'label'       => esc_html__( 'Insert after second Third (66%)', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet after the second third of the post content.', 'insert-headers-and-footers' ),
			),
			'content_80'            => array(
				'label'       => esc_html__( 'Insert after 80%', 'insert-headers-and-footers' ),
				'description' => esc_html__( 'Insert snippet after 80% of the post content.', 'insert-headers-and-footers' ),
			),
		);
	}

	/**
	 * Load the upgrade strings.
	 *
	 * @return void
	 */
	public function load_upgrade_strings() {
		$this->upgrade_title = __( 'Word-based content locations are a PRO feature', 'insert-headers-and-footers' );
		$this->upgrade_text  = __( 'Upgrade to PRO today and get access to automatic word-count based insert locations.', 'insert-headers-and-footers' );
		$this->upgrade_link  = wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'auto-insert', 'content' );
	}

}

new WPCode_Auto_Insert_Content_Lite();
PK     «‰U]œè\oâ  â  B  includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.phpnu „[µü¤        <?php
/**
 * MemberPress-specific auto-insert locations.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class WPCode_Auto_Insert_MemberPress_Lite.
 */
class WPCode_Auto_Insert_MemberPress_Lite extends WPCode_Auto_Insert_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'memberpress';
	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category = 'ecommerce';

	/**
	 * Not available to select.
	 *
	 * @var string
	 */
	public $code_type = 'pro';

	/**
	 * Text to display next to optgroup label.
	 *
	 * @var string
	 */
	public $label_pill = 'PRO';

	/**
	 * Load the available options and labels.
	 *
	 * @return void
	 */
	public function init() {
	}

	/**
	 * Load the label.
	 *
	 * @return void
	 */
	public function load_label() {
		$this->label = 'MemberPress';
	}

	/**
	 * Load the available locations.
	 *
	 * @return void
	 */
	public function load_locations() {
		$this->locations = array(
			'mepr-above-checkout-form'          => array(
				'label'       => __( 'Before the Registration Form', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the MemberPress registration form used for checkout.', 'insert-headers-and-footers' ),
			),
			'mepr-checkout-before-submit'       => array(
				'label'       => __( 'Before Checkout Submit Button', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet right before the MemberPress checkout submit button.', 'insert-headers-and-footers' ),
			),
			'mepr-checkout-before-coupon-field' => array(
				'label'       => __( 'Before Checkout Coupon Field', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the MemberPress checkout coupon field.', 'insert-headers-and-footers' ),
			),
			'mepr-account-home-before-name'     => array(
				'label'       => __( 'Before Account First Name', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet to the Home tab of the MemberPress Account page before First Name field.', 'insert-headers-and-footers' ),
			),
			'mepr_before_account_subscriptions' => array(
				'label'       => __( 'Before Subscriptions Content', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet at the beginning of the Subscriptions tab on the MemberPress Account page.', 'insert-headers-and-footers' ),
			),
			'mepr-login-form-before-submit'     => array(
				'label'       => __( 'Before Login Form Submit', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the Remember Me checkbox on the MemberPress Login page.', 'insert-headers-and-footers' ),
			),
			'mepr_unauthorized_message_before'  => array(
				'label'       => __( 'Before the Unauthorized Message', 'insert-headers-and-footers' ),
				'description' => __( 'Insert a snippet before the notice that access to the content is unauthorized. ', 'insert-headers-and-footers' ),
			),
			'mepr_unauthorized_message_after'   => array(
				'label'       => __( 'After the Unauthorized Message', 'insert-headers-and-footers' ),
				'description' => __( 'Insert a snippet after the notice that access to the content is unauthorized. ', 'insert-headers-and-footers' ),
			),
		);
	}

	/**
	 * Load the upgrade strings.
	 *
	 * @return void
	 */
	public function load_upgrade_strings() {
		$this->upgrade_title = __( 'MemberPress Locations are a PRO feature', 'insert-headers-and-footers' );
		$this->upgrade_text  = __( 'Upgrade to PRO today and get access to advanced eCommerce auto-insert locations and conditional logic rules for your needs.', 'insert-headers-and-footers' );
		$this->upgrade_link  = wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'auto-insert', 'memberpress' );
	}
}

new WPCode_Auto_Insert_MemberPress_Lite();
PK     «‰U]ÛãfH    B  includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.phpnu „[µü¤        <?php
/**
 * WooCommerce-specific auto-insert locations.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}


/**
 * Class WPCode_Auto_Insert_WooCommerce_Lite.
 */
class WPCode_Auto_Insert_WooCommerce_Lite extends WPCode_Auto_Insert_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'woocommerce';
	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category = 'ecommerce';

	/**
	 * Not available to select.
	 *
	 * @var string
	 */
	public $code_type = 'pro';

	/**
	 * Text to display next to optgroup label.
	 *
	 * @var string
	 */
	public $label_pill = 'PRO';

	/**
	 * Load the available options and labels.
	 *
	 * @return void
	 */
	public function init() {
	}

	/**
	 * Load the label.
	 *
	 * @return void
	 */
	public function load_label() {
		$this->label = 'WooCommerce';
	}

	/**
	 * Load the available locations.
	 *
	 * @return void
	 */
	public function load_locations() {
		$this->locations = array(
			'wc_before_products_list'              => array(
				'label'       => __( 'Before the List of Products', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the list of products on a WooCommerce page.', 'insert-headers-and-footers' ),
			),
			'wc_after_products_list'               => array(
				'label'       => __( 'After the List of Products', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the list of products on a WooCommerce page.', 'insert-headers-and-footers' ),
			),
			'wc_before_single_product'             => array(
				'label'       => __( 'Before the Single Product', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the content on the single WooCommerce product page.', 'insert-headers-and-footers' ),
			),
			'wc_after_single_product'              => array(
				'label'       => __( 'After the Single Product', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the content on the single WooCommerce product page.', 'insert-headers-and-footers' ),
			),
			'wc_before_single_product_summary'     => array(
				'label'       => __( 'Before the Single Product Summary', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the product summary on the single WooCommerce product page.', 'insert-headers-and-footers' ),
			),
			'wc_after_single_product_summary'      => array(
				'label'       => __( 'After the Single Product Summary', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the product summary on the single WooCommerce product page.', 'insert-headers-and-footers' ),
			),
			'woocommerce_before_cart'              => array(
				'label'       => __( 'Before the Cart', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the cart on WooCommerce pages.', 'insert-headers-and-footers' ),
			),
			'woocommerce_after_cart'               => array(
				'label'       => __( 'After the Cart', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the cart on WooCommerce pages.', 'insert-headers-and-footers' ),
			),
			'woocommerce_before_checkout_form'     => array(
				'label'       => __( 'Before the Checkout Form', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the checkout form on the WooCommerce checkout page.', 'insert-headers-and-footers' ),
			),
			'woocommerce_after_checkout_form'      => array(
				'label'       => __( 'After the Checkout Form', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the checkout form on the WooCommerce checkout page.', 'insert-headers-and-footers' ),
			),
			'woocommerce_checkout_order_review_19' => array(
				'label'       => __( 'Before Checkout Payment Button', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the checkout payment button on the WooCommerce checkout page.', 'insert-headers-and-footers' ),
			),
			'woocommerce_checkout_order_review_21' => array(
				'label'       => __( 'After Checkout Payment Button', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the checkout payment button on the WooCommerce checkout page.', 'insert-headers-and-footers' ),
			),
			'woocommerce_before_thankyou'          => array(
				'label'       => __( 'Before the Thank You Page', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the thank you page content for WooCommerce.', 'insert-headers-and-footers' ),
			),
		);
	}

	/**
	 * Load the upgrade strings.
	 *
	 * @return void
	 */
	public function load_upgrade_strings() {
		$this->upgrade_title = __( 'WooCommerce Locations are a PRO feature', 'insert-headers-and-footers' );
		$this->upgrade_text  = __( 'Upgrade to PRO today and get access to advanced eCommerce auto-insert locations and conditional logic rules for your needs.', 'insert-headers-and-footers' );
		$this->upgrade_link  = wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'auto-insert', 'woocommerce' );
	}
}

new WPCode_Auto_Insert_WooCommerce_Lite();
PK     «‰U]=]­ül  l  ?  includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.phpnu „[µü¤        <?php
/**
 * Class to auto-insert snippets anywhere by a CSS selector.
 *
 * @package wpcode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * Class WPCode_Auto_Insert_Anywhere.
 */
class WPCode_Auto_Insert_Anywhere_Lite extends WPCode_Auto_Insert_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'anywhere';
	/**
	 * The category of this type.
	 *
	 * @var string
	 */
	public $category = 'global';

	/**
	 * Not available to select.
	 *
	 * @var string
	 */
	public $code_type = 'pro';

	/**
	 * Text to display next to optgroup label.
	 *
	 * @var string
	 */
	public $label_pill = 'PRO';

	/**
	 * Load the available options and labels.
	 *
	 * @return void
	 */
	public function init() {
	}

	/**
	 * Load the label.
	 *
	 * @return void
	 */
	public function load_label() {
		$this->label = __( 'Anywhere (CSS Selector)', 'insert-headers-and-footers' );
	}

	/**
	 * Load the available locations.
	 *
	 * @return void
	 */
	public function load_locations() {
		$this->locations = array(
			'before_css_selector'  => array(
				'label'       => __( 'Before HTML Element', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the HTML element specified by the CSS selector.', 'insert-headers-and-footers' ),
			),
			'after_css_selector'   => array(
				'label'       => __( 'After HTML Element', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the HTML element specified by the CSS selector.', 'insert-headers-and-footers' ),
			),
			'start_css_selector'   => array(
				'label'       => __( 'At the start of HTML Element', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet before the content of the HTML element specified by CSS selector.', 'insert-headers-and-footers' ),
			),
			'end_css_selector'     => array(
				'label'       => __( 'At the end of HTML Element', 'insert-headers-and-footers' ),
				'description' => __( 'Insert snippet after the content of the HTML element specified by CSS selector.', 'insert-headers-and-footers' ),
			),
			'replace_css_selector' => array(
				'label'       => __( 'Replace HTML Element', 'insert-headers-and-footers' ),
				'description' => __( 'Completely replace the HTML element specified by the CSS selector with the output of this snippet.', 'insert-headers-and-footers' ),
			),
		);
	}

	/**
	 * Load the upgrade strings.
	 *
	 * @return void
	 */
	public function load_upgrade_strings() {
		$this->upgrade_title = __( 'Insert Anywhere by CSS Selector is a Premium feature', 'insert-headers-and-footers' );
		$this->upgrade_text  = __( 'Upgrade to PRO today and insert snippets anywhere on your site using CSS selectors to target any HTML element.', 'insert-headers-and-footers' );
		$this->upgrade_link  = wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'auto-insert', 'anywhere' );
	}
}

new WPCode_Auto_Insert_Anywhere_Lite();
PK     «‰U]W7C    2  includes/lite/class-wpcode-admin-bar-info-lite.phpnu „[µü¤        <?php
/**
 * WPCode_Admin_Bar_Info_Lite class.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Admin_Bar_Info_Lite.
 *
 * @extends WPCode_Admin_Bar_Info
 */
class WPCode_Admin_Bar_Info_Lite extends WPCode_Admin_Bar_Info {

	/**
	 * Add the WPCode info to the admin bar.
	 *
	 * @param WP_Admin_Bar $wp_admin_bar The WP_Admin_Bar instance.
	 */
	public function add_admin_bar_info( $wp_admin_bar ) {
		parent::add_admin_bar_info( $wp_admin_bar );

		// Only show this on pages where the page scripts is an option.
		if ( is_singular() ) {
			$wp_admin_bar->add_menu(
				array(
					'id'     => 'wpcode-page-scripts',
					'parent' => 'wpcode-admin-bar-info',
					'title'  => esc_html__( 'Page Scripts', 'insert-headers-and-footers' ) . $this->get_pro_indicator(),
					'meta'   => array(
						'class' => 'wpcode-admin-bar-has-upsell-submenu',
					),
				)
			);
			$wp_admin_bar->add_menu(
				array(
					'id'     => 'wpcode-page-scripts-upgrade',
					'parent' => 'wpcode-page-scripts',
					'meta'   => array(
						'class' => 'wpcode-admin-bar-upsell-submenu',
						'html'  => $this->get_upsell_markup(),
					),
				)
			);
		}
	}

	/**
	 * Get the pro indicator.
	 *
	 * @return string
	 */
	public function get_pro_indicator() {
		return ' <span class="wpcode-pro-indicator">PRO</span>';
	}

	/**
	 * Add upgrade link to the admin bar.
	 *
	 * @param WP_Admin_Bar $wp_admin_bar The admin bar instance.
	 *
	 * @return void
	 */
	public function add_admin_bar_quick_links( $wp_admin_bar ) {
		parent::add_admin_bar_quick_links( $wp_admin_bar );

		$wp_admin_bar->add_menu(
			array(
				'id'     => 'wpcode-upgrade',
				'parent' => 'wpcode-admin-bar-info',
				'title'  => esc_html__( 'Upgrade to Pro', 'insert-headers-and-footers' ),
				'meta'   => array(
					'class'  => 'wpcode-admin-bar-info-submenu',
					'target' => '_blank',
					'rel'    => 'noopener noreferrer',
				),
				'href'   => wpcode_utm_url( 'https://wpcode.com/lite/', 'admin-bar', 'upgrade-to-pro' ),
			)
		);
	}

	/**
	 * Get the upsell markup.
	 *
	 * @return string
	 */
	public function get_upsell_markup() {

		$html = '<div class="wpcode-admin-bar-submenu-upsell">';

		$html .= '<span class="wpcode-heading">' . esc_html__( 'Page Scripts is a Pro Feature', 'insert-headers-and-footers' ) . '</span>';
		$html .= '<p>' . esc_html__( 'While you can always use global snippets, in the PRO version you can easily add page-specific scripts and snippets directly from the post edit screen.', 'insert-headers-and-footers' ) . '</p>';
		$html .= '<a class="wpcode-button" href="' . esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'admin-bar', 'page-scripts' ) ) . '" target="_blank" rel="noopener noreferrer">' . esc_html__( 'Upgrade to Pro and Unlock Page Scripts', 'insert-headers-and-footers' ) . '</a>';

		$html .= '</div>';

		return $html;
	}

}PK     ¬‰U]´©Þ±  ±  .  includes/lite/class-wpcode-smart-tags-lite.phpnu „[µü¤        <?php
/**
 * Smart tags class for the lite version.
 *
 * @package WPCode
 */

/**
 * WPCode_Smart_Tags_Lite class.
 */
class WPCode_Smart_Tags_Lite extends WPCode_Smart_Tags {

	/**
	 * UTM medium parameter.
	 *
	 * @var string
	 */
	public $utm_medium = 'snippet-manager';

	/**
	 * UTM content parameter.
	 *
	 * @var string
	 */
	public $utm_content = 'upgrade-cta';

	/**
	 * Upgrade notice data.
	 *
	 * @return array
	 */
	public function upgrade_notice_data() {
		return array(
			'title'  => __( 'Smart Tags are a Premium feature', 'insert-headers-and-footers' ),
			'text'   => __( 'Upgrade to PRO today and simplify the way you write advanced snippets using smart tags without having to write any PHP code.', 'insert-headers-and-footers' ),
			'button' => __( 'Upgrade to PRO', 'insert-headers-and-footers' ),
			'link'   => wpcode_utm_url( 'https://wpcode.com/lite/', $this->utm_medium, 'smart-tags', $this->utm_content ),
		);
	}
}
PK     ¬‰U]£ÜK¤  ¤  %  includes/lite/admin/admin-scripts.phpnu „[µü¤        <?php
/**
 * Load lite-specific scripts here.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

add_action( 'admin_enqueue_scripts', 'wpcode_admin_scripts_global_lite' );
add_action( 'admin_head', 'wpcode_listen_for_deploy_message' );

/**
 * Load version-specific global scripts.
 *
 * @return void
 */
function wpcode_admin_scripts_global_lite() {
	// Don't load global admin scripts if headers & footers mode is enabled.
	if ( wpcode()->settings->get_option( 'headers_footers_mode' ) ) {
		return;
	}
	wpcode_admin_scripts_global();
}

/**
 * This is loaded after the plugin is activated and if the installation process was initiated
 * from the WPCode Library site it will redirect the user to the appropriate page to continue
 * that process.
 *
 * @return void
 */
function wpcode_listen_for_deploy_message() {
	// Load this only in the plugins list.
	$screen  = get_current_screen();
	$screens = array(
		'plugins',
		'plugin-install',
	);
	if ( ! isset( $screen->id ) || ! in_array( $screen->id, $screens, true ) ) {
		return;
	}
	$click_page = add_query_arg(
		array(
			'page' => 'wpcode-click',
		),
		admin_url( 'admin.php' )
	)
	?>
	<script>
		if ( window.opener ) {
			window.opener.postMessage(
				'wpcode-plugin-installed',
				'<?php echo esc_url( wpcode()->library_auth->library_url ); ?>'
			);
		}
		window.addEventListener(
			'message',
			( event ) => {
				if ( !event.isTrusted || '<?php echo esc_url( wpcode()->library_auth->library_url ); ?>' !== event.origin || 'wpcode-show-connect' !== event.data ) {
					return;
				}
				window.location.href = '<?php echo esc_url( $click_page ); ?>&message=wpcode-deploy';
			},
			false
		);
	</script>
	<?php
}
PK     ¬‰U]Vùn    ;  includes/lite/admin/class-wpcode-admin-page-loader-lite.phpnu „[µü¤        <?php
/**
 * Lite-specific admin page loader.
 * Extends the default pages with lite-specific items.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Admin_Page_Loader_Lite.
 */
class WPCode_Admin_Page_Loader_Lite extends WPCode_Admin_Page_Loader {

	/**
	 * Load menu items from parent class and add class-specific ones.
	 *
	 * @return void
	 */
	public function hooks() {
		parent::hooks();

		add_action( 'admin_menu', array( $this, 'add_upgrade_menu_item' ), 40 );
		add_action( 'admin_head', array( $this, 'adjust_pro_menu_item_class' ) );
		add_action( 'admin_head', array( $this, 'admin_menu_styles' ), 11 );
	}

	/**
	 * Require lite-specific files.
	 *
	 * @return void
	 */
	public function require_files() {
		require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/trait-wpcode-library-refresh-button.php';
		parent::require_files();
	}

	/**
	 * Add lite-specific upgrade to pro menu item.
	 *
	 * @return void
	 */
	public function add_upgrade_menu_item() {
		add_submenu_page(
			'wpcode',
			esc_html__( 'Upgrade to Pro', 'insert-headers-and-footers' ),
			esc_html__( 'Upgrade to Pro', 'insert-headers-and-footers' ),
			'wpcode_edit_snippets',
			esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'wpcode-admin', 'admin-side-menu' ) )
		);
	}

	/**
	 * Add the PRO badge to left sidebar menu item.
	 *
	 * @since 1.7.8
	 */
	public function adjust_pro_menu_item_class() {

		global $submenu;

		// Bail if plugin menu is not registered.
		if ( ! isset( $submenu['wpcode'] ) ) {
			return;
		}

		$upgrade_link_position = key(
			array_filter(
				$submenu['wpcode'],
				static function ( $item ) {
					return strpos( $item[2], 'https://wpcode.com/lite' ) !== false;
				}
			)
		);

		// Bail if "Upgrade to Pro" menu item is not registered.
		if ( is_null( $upgrade_link_position ) ) {
			return;
		}

		$screen = get_current_screen();
		// Let's make sure we have an ID and the link is set in the menu.
		if ( isset( $screen->id ) && isset( $submenu['wpcode'][ $upgrade_link_position ][2] ) ) {
			// Let's clean up the screen id a bit.
			$screen_id = str_replace(
				array(
					'code-snippets_page_',
					'toplevel_page_',
				),
				'',
				$screen->id
			);

			$submenu['wpcode'][ $upgrade_link_position ][2] = str_replace( 'wpcode-admin', $screen_id, $submenu['wpcode'][ $upgrade_link_position ][2] );
		}

		// Prepare a HTML class.
		// phpcs:disable WordPress.WP.GlobalVariablesOverride.Prohibited
		if ( isset( $submenu['wpcode'][ $upgrade_link_position ][4] ) ) {
			$submenu['wpcode'][ $upgrade_link_position ][4] .= ' wpcode-sidebar-upgrade-pro';
		} else {
			$submenu['wpcode'][ $upgrade_link_position ][] = 'wpcode-sidebar-upgrade-pro';
		}
		// phpcs:enable WordPress.WP.GlobalVariablesOverride.Prohibited
	}


	/**
	 * Output inline styles for the admin menu.
	 */
	public function admin_menu_styles() {
		$styles = 'a.wpcode-sidebar-upgrade-pro { background-color: #59A56D !important; color: #fff !important; font-weight: 600 !important; }';

		// phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
		printf( '<style>%s</style>', $styles );
	}
}
PK     ¬‰U]Ùî^S
  
  8  includes/lite/admin/class-wpcode-usage-tracking-lite.phpnu „[µü¤        <?php
/**
 * WPCode Usage Tracking Lite
 *
 * @package WPCode
 * @since 2.0.10
 */

/**
 * Class WPCode_Usage_Tracking_Lite
 */
class WPCode_Usage_Tracking_Lite extends WPCode_Usage_Tracking {

	/**
	 * Get the type for the request.
	 *
	 * @return string The plugin type.
	 * @since 2.0.10
	 */
	public function get_type() {
		return 'lite';
	}

	/**
	 * Is the usage tracking enabled?
	 *
	 * @return bool
	 */
	public function is_enabled() {
		return boolval( wpcode()->settings->get_option( 'usage_tracking' ) );
	}
}
PK     ¬‰U]J~±x6  x6  :  includes/lite/admin/class-wpcode-metabox-snippets-lite.phpnu „[µü¤        <?php
/**
 * Class used for the lite-specific metabox.
 *
 * @package WPCode
 */

/**
 * Class WPCode_Metabox_Snippets_Lite.
 */
class WPCode_Metabox_Snippets_Lite extends WPCode_Metabox_Snippets {
	use WPCode_Revisions_Display_Lite;

	/**
	 * Override the header tab content to make it specific to this class.
	 *
	 * @param WP_Post $post The post object.
	 *
	 * @return void
	 */
	public function output_tab_header( $post ) {
		$this->form_for_scripts(
			__( 'Header', 'insert-headers-and-footers' )
		);
	}

	/**
	 * Override the footer tab content to make it specific to this class.
	 *
	 * @param WP_Post $post The post object.
	 *
	 * @return void
	 */
	public function output_tab_footer( $post ) {
		$this->form_for_scripts(
			__( 'Footer', 'insert-headers-and-footers' )
		);
	}

	/**
	 * Override the body tab content to make it specific to this class.
	 *
	 * @param WP_Post $post The post object.
	 *
	 * @return void
	 */
	public function output_tab_body( $post ) {
		$this->form_for_scripts(
			__( 'Body', 'insert-headers-and-footers' )
		);
	}

	/**
	 * Override the code tab content to make it specific to this class.
	 *
	 * @param WP_Post $post The post object.
	 *
	 * @return void
	 */
	public function output_tab_code( $post ) {
		?>
		<div class="wpcode-blur-area">
			<p>
				<?php esc_html_e( 'Choose the snippets you want to run on this page. Please note: only active snippets will be executed.', 'insert-headers-and-footers' ); ?>
			</p>
			<div class="wpcode-metabox-snippets">
				<div id="wpcode-snippet-chooser">
					<h3>
						<?php esc_html_e( 'Select snippets', 'insert-headers-and-footers' ); ?>
						<button class="wpcode-button-just-icon wpcode-drawer-toggle" id="wpcode-close-drawer">
							<?php wpcode_icon( 'close' ); ?>
						</button>
					</h3>
					<div class="wpcode-snippets-search">
						<input type="text" id="wpcode-search-snippets" class="wpcode-input-text" placeholder="<?php esc_attr_e( 'Search snippets', 'insert-headers-and-footers' ); ?>"/>
						<span class="wpcode-loading-spinner" id="wpcode-chooser-spinner"></span>
					</div>
					<div class="wpcode-chooser-fixed-height">
						<div id="wpcode-choose-snippets"></div>
						<div class="wpcode-choose-actions">
							<button type="button" class="wpcode-button wpcode-button-secondary" id="wpcode-metabox-load-more"><?php esc_html_e( 'Load more snippets', 'insert-headers-and-footers' ); ?></button>
						</div>
					</div>
				</div>
				<div class="wpcode-picked-snippets-area">
					<h3>
						<button class="wpcode-button wpcode-drawer-toggle" id="wpcode-add-snippet-toggle" type="button">
							<?php esc_html_e( '+ Choose Snippet', 'insert-headers-and-footers' ); ?>
						</button>
					</h3>
					<div id="wpcode-picked-snippets">
						<div class="wpcode-list-item wpcode-selected-snippet-item wpcode-list-item-has-pill">
							<h3>Show site currency</h3>
							<label>Page location</label>
							<select>
								<option>Insert After Post</option>
							</select>
						</div>
						<div class="wpcode-list-item wpcode-selected-snippet-item wpcode-list-item-has-pill">
							<h3>Banner Ad</h3>
							<label>Page location</label>
							<select>
								<option>Insert Before Post</option>
							</select>
						</div>
						<div class="wpcode-list-item wpcode-selected-snippet-item wpcode-list-item-has-pill">
							<h3>Subscribe Reminder</h3>
							<label>Page location</label>
							<select>
								<option>Insert Before Content</option>
							</select>
						</div>
						<div class="wpcode-list-item wpcode-selected-snippet-item wpcode-list-item-has-pill">
							<h3>Event Countdown</h3>
							<label>Page location</label>
							<select>
								<option>Insert After Post</option>
							</select>
						</div>
						<div class="wpcode-list-item wpcode-selected-snippet-item wpcode-list-item-has-pill">
							<h3>Banner Ad 2</h3>
							<label>Page location</label>
							<select>
								<option>Insert After Content</option>
							</select>
						</div>
						<div class="wpcode-list-item wpcode-selected-snippet-item wpcode-list-item-has-pill">
							<h3>Free Download Button</h3>
							<label>Page location</label>
							<select>
								<option>Insert After Post</option>
							</select>
						</div>
					</div>
				</div>
			</div>
		</div>
		<?php
		echo WPCode_Admin_Page::get_upsell_box( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			__( 'Page Scripts is a Pro Feature', 'insert-headers-and-footers' ),
			sprintf(
				'<p>%s</p>',
				esc_html__( 'While you can always use global snippets, in the PRO version you can easily add page-specific scripts and snippets directly from the post edit screen.', 'insert-headers-and-footers' )
			),
			array(
				'text' => esc_html__( 'Upgrade to Pro and Unlock Page Scripts', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'post-editor-metabox', 'custom-snippets', 'upgrade-to-pro' ) ),
			),
			array(
				'text' => esc_html__( 'Learn more about all the features', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'post-editor-metabox', 'custom-snippets', 'features' ) ),
			)
		);
	}

	/**
	 * Get the markup for a form using a disabled CodeMirror instance (to avoid loading a script that won't be used).
	 *
	 * @param string $label The label for this tab section.
	 *
	 * @return void
	 */
	public function form_for_scripts( $label ) {
		wp_enqueue_style( 'code-editor' );
		?>
		<div class="wpcode-blur-area">
			<p>
				<?php
				printf(
				// Translators: placeholder for the name of the section (header or footer).
					esc_html__( 'Add scripts below to the %s section of this page.', 'insert-headers-and-footers' ),
					esc_html( $label )
				);
				?>
			</p>
			<p>
				<label>
					<input type="checkbox"/>
					<?php
					printf(
					// Translators: placeholder for the name of the section (header or footer).
						esc_html__( 'Disable global %s scripts on this page', 'insert-headers-and-footers' ),
						esc_html( $label )
					);
					?>
				</label>
			</p>
			<div class="wpcode-input-row">
				<label>
					<?php
					printf(
					// Translators: placeholder for the name of the section (header or footer).
						esc_html__( '%s - any device type', 'insert-headers-and-footers' ),
						esc_html( $label )
					);
					?>
				</label>
				<div class="wpcode-smart-tags">
					<button class="wpcode-smart-tags-toggle">
						<?php wpcode_icon( 'tags', 20, 16, '0 0 20 16' ); ?>
						<span class="wpcode-text-default">
					<?php esc_html_e( 'Show Smart Tags', 'insert-headers-and-footers' ); ?>
					</span>
					</button>
				</div>
				<div class="CodeMirror cm-s-default CodeMirror-wrap">
					<div class="CodeMirror-vscrollbar" style="width: 18px; pointer-events: none;">
						<div style="min-width: 1px; height: 0;"></div>
					</div>
					<div class="CodeMirror-hscrollbar" style="height: 18px; pointer-events: none;">
						<div style="height: 100%; min-height: 1px; width: 0;"></div>
					</div>
					<div class="CodeMirror-scrollbar-filler"></div>
					<div class="CodeMirror-gutter-filler"></div>
					<div class="CodeMirror-scroll" tabindex="-1">
						<div class="CodeMirror-sizer" style="margin-left: 50px; margin-bottom: 0; border-right-width: 30px; min-height: 165px; padding-right: 0; padding-bottom: 0;">
							<div style="position: relative; top: 0;">
								<div class="CodeMirror-lines" role="presentation">
									<div role="presentation" style="position: relative; outline: none;">
										<div class="CodeMirror-measure"></div>
										<div class="CodeMirror-measure"></div>
										<div style="position: relative; z-index: 1;"></div>
										<div class="CodeMirror-cursors"></div>
										<div class="" role="presentation" tabindex="0" style="">
											<div class="CodeMirror-activeline" style="position: relative;">
												<div class="CodeMirror-activeline-background CodeMirror-linebackground"></div>
												<div class="CodeMirror-gutter-background CodeMirror-activeline-gutter" style="left: -46px; width: 46px;"></div>
												<div class="CodeMirror-gutter-wrapper CodeMirror-activeline-gutter" style="left: -46px;">
													<div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 16px; width: 21px;">
														1
													</div>
												</div>
												<pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket CodeMirror-matchingtag">&lt;</span><span class="cm-tag CodeMirror-matchingtag">script</span><span class=" CodeMirror-matchingtag"> </span><span class="cm-attribute CodeMirror-matchingtag">type</span><span class=" CodeMirror-matchingtag">=</span><span class="cm-string CodeMirror-matchingtag">"text/javascript"</span><span class="cm-tag cm-bracket CodeMirror-matchingtag">&gt;</span></span></pre>
											</div>
											<div style="position: relative;">
												<div class="CodeMirror-gutter-wrapper" style="left: -46px;">
													<div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 16px; width: 21px;">
														2
													</div>
												</div>
												<pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tab" role="presentation">    </span><span class="cm-variable">console</span>.<span class="cm-property">log</span>( <span class="cm-string">'header'</span> );</span></pre>
											</div>
											<div style="position: relative;">
												<div class="CodeMirror-gutter-wrapper" style="left: -46px;">
													<div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 16px; width: 21px;">
														3
													</div>
												</div>
												<pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"><span class="cm-tag cm-bracket CodeMirror-matchingtag">&lt;/</span><span class="cm-tag CodeMirror-matchingtag">script</span><span class="cm-tag cm-bracket CodeMirror-matchingtag">&gt;</span></span></pre>
											</div>
											<div style="position: relative;">
												<div class="CodeMirror-gutter-wrapper" style="left: -46px;">
													<div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 16px; width: 21px;">
														4
													</div>
												</div>
												<pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"></pre>
											</div>
											<div style="position: relative;">
												<div class="CodeMirror-gutter-wrapper" style="left: -46px;">
													<div class="CodeMirror-linenumber CodeMirror-gutter-elt" style="left: 16px; width: 21px;">
														5
													</div>
												</div>
												<pre class="CodeMirror-line" role="presentation"><span role="presentation" style="padding-right: 0.1px;"></pre>
											</div>
										</div>
									</div>
								</div>
							</div>
						</div>
						<div style="position: absolute; height: 30px; width: 1px; border-bottom: 0 solid transparent; top: 165px;"></div>
						<div class="CodeMirror-gutters" style="height: 195px;">
							<div class="CodeMirror-gutter CodeMirror-lint-markers"></div>
							<div class="CodeMirror-gutter CodeMirror-linenumbers" style="width: 29px;"></div>
						</div>
					</div>
				</div>
			</div>
		</div>
		<?php
		echo WPCode_Admin_Page::get_upsell_box( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			__( 'Page Scripts is a Pro Feature', 'insert-headers-and-footers' ),
			sprintf(
				'<p>%s</p>',
				esc_html__( 'While you can always use global snippets, in the PRO version you can easily add page-specific scripts and snippets directly from the post edit screen.', 'insert-headers-and-footers' )
			),
			array(
				'text' => esc_html__( 'Upgrade to Pro and Unlock Page Scripts', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'post-editor-metabox', 'main-' . sanitize_title( $label ), 'upgrade-to-pro' ) ),
			),
			array(
				'text' => esc_html__( 'Learn more about all the features', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'post-editor-metabox', 'main-' . sanitize_title( $label ), 'features' ) ),
			)
		);
	}

	/**
	 * Override the revisions tab content to make it specific to this class.
	 *
	 * @param WP_Post $post The post object.
	 *
	 * @return void
	 */
	public function output_tab_revisions( $post ) {
		printf(
			'<p>%s</p>',
			esc_html__( 'As you make changes to your page scripts and save, you will get a list of previous versions with all the changes made in each revision. You can compare revisions to the current version or see changes as they have been saved by going through each revision. Any of the revisions can then be restored as needed without interfering with your post/page.', 'insert-headers-and-footers' )
		);

		echo $this->code_revisions_list_with_notice( // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
			esc_html__( 'Code Revisions is a Pro Feature', 'insert-headers-and-footers' ),
			sprintf(
				'<p>%s</p>',
				esc_html__( 'Upgrade to WPCode Pro today and start tracking revisions and see exactly who, when and which changes were made to your page scripts.', 'insert-headers-and-footers' )
			),
			array(
				'text' => esc_html__( 'Upgrade to Pro and Unlock Revisions', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'post-editor-metabox', 'revisions', 'upgrade-to-pro' ) ),
			),
			array(
				'text' => esc_html__( 'Learn more about all the features', 'insert-headers-and-footers' ),
				'url'  => esc_url( wpcode_utm_url( 'https://wpcode.com/lite/', 'post-editor-metabox', 'revisions', 'features' ) ),
			)
		);
	}
}
PK     ¬‰U]b‚§  §  ,  includes/lite/admin/class-wpcode-connect.phpnu „[µü¤        <?php

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * WPCode Connect.
 *
 * WPCode Connect is our service that makes it easy to upgrade to WPCode Pro
 * without having to manually install the WPCode Pro plugin.
 *
 * @since 2.0.9
 */
class WPCode_Connect {

	/**
	 * Constructor.
	 *
	 * @since 2.0.9
	 */
	public function __construct() {
		$this->hooks();
	}

	/**
	 * Hooks.
	 *
	 * @since 2.0.9
	 */
	public function hooks() {
		add_action( 'wpcode_admin_page_content_wpcode-settings', array( $this, 'settings_enqueues' ) );
		add_action( 'wp_ajax_wpcode_connect_url', array( $this, 'generate_url' ) );
		add_action( 'wp_ajax_nopriv_wpcode_connect_process', array( $this, 'process' ) );
	}

	/**
	 * Settings page enqueues.
	 *
	 * @since 2.0.9
	 */
	public function settings_enqueues() {

		$admin_asset_file = WPCODE_PLUGIN_PATH . 'build/connect.asset.php';

		if ( ! file_exists( $admin_asset_file ) ) {
			return;
		}

		$asset = require $admin_asset_file;

		wp_enqueue_script( 'wpcode-connect-js', WPCODE_PLUGIN_URL . 'build/connect.js', $asset['dependencies'], $asset['version'], true );
	}

	/**
	 * Generate and return the WPCode Connect URL.
	 *
	 * @since 2.0.9
	 */
	public function generate_url() {

		// Run a security check.
		check_ajax_referer( 'wpcode_admin' );

		// Check for permissions.
		if ( ! current_user_can( 'install_plugins' ) ) {
			wp_send_json_error( array( 'message' => esc_html__( 'You are not allowed to install plugins.', 'insert-headers-and-footers' ) ) );
		}

		$key = ! empty( $_POST['key'] ) ? sanitize_text_field( wp_unslash( $_POST['key'] ) ) : '';

		if ( empty( $key ) ) {
			wp_send_json_error( array( 'message' => esc_html__( 'Please enter your license key to connect.', 'insert-headers-and-footers' ) ) );
		}

		if ( class_exists( 'WPCode_Premium' ) ) {
			wp_send_json_error( array( 'message' => esc_html__( 'Only the Lite version can be upgraded.', 'insert-headers-and-footers' ) ) );
		}

		// Verify pro version is not installed.
		$active = activate_plugin( 'wpcode-premium/wpcode.php', false, false, true );

		if ( ! is_wp_error( $active ) ) {

			update_option( 'wpcode_install', 1 ); // Run install routines.
			// Deactivate Lite.
			$plugin = plugin_basename( WPCODE_FILE );

			deactivate_plugins( $plugin );

			do_action( 'wpcode_plugin_deactivated', $plugin );

			wp_send_json_success(
				array(
					'message' => esc_html__( 'WPCode Pro is installed but not activated.', 'insert-headers-and-footers' ),
					'reload'  => true,
				)
			);
		}

		// Generate URL.
		$oth        = hash( 'sha512', wp_rand() );
		$hashed_oth = hash_hmac( 'sha512', $oth, wp_salt() );

		update_option( 'wpcode_connect_token', $oth );
		update_option( 'wpcode_connect', $key );

		$version  = WPCODE_VERSION;
		$endpoint = admin_url( 'admin-ajax.php' );
		$redirect = admin_url( 'admin.php?page=wpcode-settings' );
		$url      = add_query_arg(
			array(
				'key'      => $key,
				'oth'      => $hashed_oth,
				'endpoint' => $endpoint,
				'version'  => $version,
				'siteurl'  => admin_url(),
				'homeurl'  => home_url(),
				'redirect' => rawurldecode( base64_encode( $redirect ) ), // phpcs:ignore
				'v'        => 2,
				'php'      => phpversion(),
				'wp'       => get_bloginfo( 'version' ),
			),
			'https://upgrade.wpcode.com/'
		);

		wp_send_json_success(
			array(
				'url'      => $url,
				'back_url' => add_query_arg(
					array(
						'action' => 'wpcode_connect',
						'oth'    => $oth,
					),
					$endpoint
				),
			)
		);
	}

	/**
	 * Process WPCode Connect.
	 *
	 * @since 2.0.9
	 */
	public function process() {

		$error = esc_html__( 'There was an error while installing an upgrade. Please download the plugin from wpcode.com and install it manually.', 'insert-headers-and-footers' );

		// Verify params present (oth & download link).
		$post_oth = ! empty( $_REQUEST['oth'] ) ? sanitize_text_field( wp_unslash( $_REQUEST['oth'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification
		$post_url = ! empty( $_REQUEST['file'] ) ? esc_url_raw( wp_unslash( $_REQUEST['file'] ) ) : ''; // phpcs:ignore WordPress.Security.NonceVerification

		if ( empty( $post_oth ) || empty( $post_url ) ) {
			wp_send_json_error( $error );
		}

		// Verify oth.
		$oth = get_option( 'wpcode_connect_token' );

		if ( hash_hmac( 'sha512', $oth, wp_salt() ) !== $post_oth ) {
			wp_send_json_error( $error );
		}

		// Delete so cannot replay.
		delete_option( 'wpcode_connect_token' );

		// Set the current screen to avoid undefined notices.
		set_current_screen( 'wpcode_page_wpcode-settings' );

		// Prepare variables.
		$url = esc_url_raw(
			add_query_arg(
				array( 'page' => 'wpcode-settings' ),
				admin_url( 'admin.php' )
			)
		);

		// Verify pro not activated.
		if ( class_exists( 'WPCode_Premium' ) ) {
			wp_send_json_success( esc_html__( 'Plugin installed & activated.', 'insert-headers-and-footers' ) );
		}

		// Verify pro not installed.
		$active = activate_plugin( 'wpcode-premium/wpcode.php', $url, false, true );

		if ( ! is_wp_error( $active ) ) {
			$plugin = plugin_basename( WPCODE_FILE );

			deactivate_plugins( $plugin );

			do_action( 'wpcode_plugin_deactivated', $plugin );

			wp_send_json_success( esc_html__( 'Plugin installed & activated.', 'insert-headers-and-footers' ) );
		}

		$creds = request_filesystem_credentials( $url, '', false, false, null );

		// Check for file system permissions.
		if ( false === $creds || ! WP_Filesystem( $creds ) ) {
			wp_send_json_error(
				esc_html__( 'There was an error while installing an upgrade. Please check file system permissions and try again. Also, you can download the plugin from wpcode.com and install it manually.', 'insert-headers-and-footers' )
			);
		}

		/*
		 * We do not need any extra credentials if we have gotten this far, so let's install the plugin.
		 */
		// 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 );

		wpcode_require_upgrader();

		// Create the plugin upgrader with our custom skin.
		$installer = new Plugin_Upgrader( new WPCode_Skin() );

		// Error check.
		if ( ! method_exists( $installer, 'install' ) ) {
			wp_send_json_error( $error );
		}

		// Check license key.
		$key = get_option( 'wpcode_connect', false );

		if ( empty( $key ) ) {
			wp_send_json_error(
				new WP_Error(
					'403',
					esc_html__( 'No key provided.', 'insert-headers-and-footers' )
				)
			);
		}

		$installer->install( $post_url ); // phpcs:ignore

		// Flush the cache and return the newly installed plugin basename.
		wp_cache_flush();

		$plugin_basename = $installer->plugin_info();

		if ( $plugin_basename ) {

			// Deactivate the lite version first.
			$plugin = plugin_basename( WPCODE_FILE );

			deactivate_plugins( $plugin );

			do_action( 'wpcode_plugin_deactivated', $plugin );

			// Activate the plugin silently.
			$activated = activate_plugin( $plugin_basename, '', false, true );

			if ( ! is_wp_error( $activated ) ) {
				add_option( 'wpcode_install', 1 );
				wp_send_json_success( esc_html__( 'Plugin installed & activated.', 'insert-headers-and-footers' ) );
			} else {
				// Reactivate the lite plugin if pro activation failed.
				activate_plugin( plugin_basename( WPCODE_FILE ), '', false, true );
				wp_send_json_error( esc_html__( 'Pro version installed but needs to be activated on the Plugins page inside your WordPress admin.', 'insert-headers-and-footers' ) );
			}
		}

		wp_send_json_error( $error );
	}
}

new WPCode_Connect();
PK     ¬‰U]GÆ	*›  ›    includes/lite/admin/notices.phpnu „[µü¤        <?php
/**
 * Lite-specific admin notices.
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

add_action( 'admin_init', 'wpcode_maybe_add_library_connect_notice' );
add_action( 'wpcode_admin_page', 'wpcode_maybe_add_lite_top_bar_notice', 4 );
add_action( 'wpcode_admin_page_content_wpcode-headers-footers', 'wpcode_headers_footers_bottom_notice', 250 );

/**
 * Show a prompt to connect to the WPCode Library to get access to more snippets.
 *
 * @return void
 */
function wpcode_maybe_add_library_connect_notice() {
	if ( wpcode()->library_auth->has_auth() || ! isset( $_GET['page'] ) || 0 !== strpos( $_GET['page'], 'wpcode' ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash
		return;
	}
	// Don't show if in headers & footers mode only.
	if ( wpcode()->settings->get_option( 'headers_footers_mode' ) ) {
		return;
	}

	$settings_url = add_query_arg(
		array(
			'page' => 'wpcode-settings',
		),
		admin_url( 'admin.php' )
	);

	$snippets_count = wpcode()->library->get_snippets_count();
	// Translators: more here is used in the sense of "get access to more snippets" and gets replaced with the number of snippets if the library items are loaded correctly.
	$more = $snippets_count > 0 ? $snippets_count : __( 'more', 'insert-headers-and-footers' );

	WPCode_Notice::info(
		sprintf(
		// Translators: %1$s and %2$s add a link to the settings page. %3$s and %4$s make the text bold. %6$s is replaced with the number of snippets and %5$s adds a "new" icon.
			__( '%5$s%1$sConnect to the WPCode Library%2$s to get access to %3$s%6$s FREE snippets%4$s!', 'insert-headers-and-footers' ),
			'<a href="' . $settings_url . '" class="wpcode-start-auth">',
			'</a>',
			'<strong>',
			'</strong>',
			'<span class="wpcode-icon-new">&nbsp;NEW!</span>',
			$more
		),
		array(
			'dismiss' => WPCode_Notice::DISMISS_GLOBAL,
			'slug'    => 'wpcode-library-connect-lite',
		)
	);
}

/**
 * Add a notice to consider more features with offer.
 *
 * @return void
 */
function wpcode_maybe_add_lite_top_bar_notice() {
	// Only add this to the WPCode pages.
	if ( ! isset( $_GET['page'] ) || 0 !== strpos( $_GET['page'], 'wpcode' ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Recommended, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized, WordPress.Security.ValidatedSanitizedInput.MissingUnslash
		return;
	}
	// Don't show in H&F mode.
	if ( wpcode()->settings->get_option( 'headers_footers_mode' ) ) {
		return;
	}

	$screen = get_current_screen();
	if ( isset( $screen->id ) && false !== strpos( $screen->id, 'code-snippets_page_wpcode-' ) ) {
		$screen = str_replace( 'code-snippets_page_wpcode-', '', $screen->id );
	} else {
		$screen = 'snippets-list';
	}

	$upgrade_url = wpcode_utm_url(
		'https://wpcode.com/lite/',
		'top-notice',
		$screen
	);

	WPCode_Notice::top(
		sprintf(
		// Translators: %1$s and %2$s add a link to the upgrade page. %3$s and %4$s make the text bold.
			__( '%3$sYou\'re using WPCode Lite%4$s. To unlock more features consider %1$supgrading to Pro%2$s.', 'insert-headers-and-footers' ),
			'<a href="' . $upgrade_url . '" target="_blank" rel="noopener noreferrer">',
			'</a>',
			'<strong>',
			'</strong>'
		),
		array(
			'dismiss' => WPCode_Notice::DISMISS_USER,
			'slug'    => 'consider-upgrading',
		)
	);
}

/**
 * Show a notice with more features at the bottom of the Headers & Footers page.
 *
 * @return void
 */
function wpcode_headers_footers_bottom_notice() {
	// Don't show if in headers & footers mode only.
	if ( wpcode()->settings->get_option( 'headers_footers_mode' ) ) {
		return;
	}
	// Don't show if other notices were already displayed on the page.
	if ( ! empty( wpcode()->notice->notices ) ) {
		return;
	}

	$html = '<h3>' . esc_html__( 'Get WPCode Pro and Unlock all the Powerful Features', 'insert-headers-and-footers' ) . '</h3>';
	$html .= '<div class="wpcode-features-list">';
	$html .= '<ul>';
	$html .= '<li>' . esc_html__( 'Save & Reuse snippets in your private Cloud Library', 'insert-headers-and-footers' ) . '</li>';
	$html .= '<li>' . esc_html__( 'Add page-specific scripts when editing a post/page.', 'insert-headers-and-footers' ) . '</li>';
	$html .= '<li>' . esc_html__( 'Track all snippet changes with Advanced Code Revisions', 'insert-headers-and-footers' ) . '</li>';
	$html .= '</ul>';
	$html .= '<ul>';
	$html .= '<li>' . esc_html__( 'Load snippets by device (mobile/desktop) with 1-click.', 'insert-headers-and-footers' ) . '</li>';
	$html .= '<li>' . esc_html__( 'Easily insert and reuse content with Custom Shortcodes.', 'insert-headers-and-footers' ) . '</li>';
	$html .= '<li>' . esc_html__( 'Precisely track eCommerce conversions for WooCommerce and EDD.', 'insert-headers-and-footers' ) . '</li>';
	$html .= '</ul>';
	$html .= '</div>';
	$html .= sprintf(
		'<p><a href="%1$s" target="_blank" rel="noopener noreferrer">%2$s</a></p>',
		wpcode_utm_url( 'https://wpcode.com/lite/', 'headers-footers', 'notice', 'get-wpcode-pro' ),
		esc_html__( 'Get WPCode Pro Today and Unlock all the Powerful Features Â»', 'insert-headers-and-footers' )
	);
	$html .= '<p>';
	$html .= sprintf(
	// Translators: Placeholders make the text bold.
		esc_html__( '%1$sBonus:%2$s WPCode Lite users get %3$s$50 off regular price%4$s, automatically applied at checkout', 'insert-headers-and-footers' ),
		'<strong>',
		'</strong>',
		'<strong style="color:#59A56D;">',
		'</strong>'
	);
	$html .= '</p>';

	// Add our custom notice for this page.
	WPCode_Notice::info(
		$html,
		array(
			'slug'    => 'ihaf-snippets',
			'dismiss' => WPCode_Notice::DISMISS_USER,
		)
	);
	// Display notice we just added so that scripts are loaded.
	wpcode()->notice->display();
}
PK     ¬‰U]µps
  s
  H  includes/lite/conditional-logic/class-wpcode-conditional-memberpress.phpnu „[µü¤        <?php
/**
 * Class that handles conditional logic related to MemberPress.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}


/**
 * The WPCode_Conditional_MemberPress class.
 */
class WPCode_Conditional_MemberPress_Lite extends WPCode_Conditional_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'memberpress';

	/**
	 * The type category.
	 *
	 * @var string
	 */
	public $category = 'ecommerce';

	/**
	 * Set the translatable label.
	 *
	 * @return void
	 */
	protected function set_label() {
		$this->label = 'MemberPress (PRO)';
	}

	/**
	 * Set the type options for the admin mainly.
	 *
	 * @return void
	 */
	public function load_type_options() {
		$this->options = array(
			'memberpress_page' => array(
				'label'       => __( 'MemberPress Page', 'insert-headers-and-footers' ),
				'description' => __( 'Load the snippet on specific MemberPress pages.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'upgrade'     => array(
					'title' => __( 'MemberPress Page Rules is a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to advanced conditional logic rules for MemberPress by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'memberpress-page' ),
				),
				'options'     => array(
					array(
						'label' => __( 'Registration Page', 'insert-headers-and-footers' ),
						'value' => 'registration',
					),
					array(
						'label' => __( 'Thank You Page', 'insert-headers-and-footers' ),
						'value' => 'thankyou',
					),
					array(
						'label' => __( 'Account Page', 'insert-headers-and-footers' ),
						'value' => 'account',
					),
					array(
						'label' => __( 'Login Page', 'insert-headers-and-footers' ),
						'value' => 'login',
					),
				),
			),
			'memberpress_user' => array(
				'label'       => __( 'User active membership', 'insert-headers-and-footers' ),
				'description' => __( 'Check if the current user has a specific MemberPress subscription active.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => array(),
				'upgrade'     => array(
					'title' => __( 'MemberPress Active Membership Rules is a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to advanced conditional logic rules for MemberPress by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'memberpress-user' ),
				),
			),
		);
	}
}

new WPCode_Conditional_MemberPress_Lite();
PK     ¬‰U],õZLë  ë  H  includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.phpnu „[µü¤        <?php
/**
 * Class that handles conditional logic related to WooCommerce.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * The WPCode_Conditional_WooCommerce class.
 */
class WPCode_Conditional_WooCommerce_Lite extends WPCode_Conditional_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'woocommerce';

	/**
	 * The type category.
	 *
	 * @var string
	 */
	public $category = 'ecommerce';

	/**
	 * Set the translatable label.
	 *
	 * @return void
	 */
	protected function set_label() {
		$this->label = 'WooCommerce (PRO)';
	}

	/**
	 * Set the type options for the admin mainly.
	 *
	 * @return void
	 */
	public function load_type_options() {
		$this->options = array(
			'wc_page' => array(
				'label'       => __( 'WooCommerce Page', 'insert-headers-and-footers' ),
				'description' => __( 'Load the snippet on specific WooCommerce pages.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'upgrade'     => array(
					'title' => __( 'WooCommerce Page Rules is a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to advanced conditional logic rules for WooCommerce by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'woocommerce-page' ),
				),
				'options'     => array(
					array(
						'label'    => __( 'Checkout Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
					array(
						'label'    => __( 'Thank You Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
					array(
						'label'    => __( 'Cart Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
					array(
						'label'    => __( 'Single Product Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
					array(
						'label'    => __( 'Shop Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
					array(
						'label'    => __( 'Product Category Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
					array(
						'label'    => __( 'Product Tag Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
					array(
						'label'    => __( 'My Account Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
				),
			),
			'wc_cart' => array(
				'label'       => __( 'WooCommerce Cart', 'insert-headers-and-footers' ),
				'description' => __( 'Load the snippet based on the WooCommerce Cart Contents.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => array(),
				'upgrade'     => array(
					'title' => __( 'WooCommerce Cart Contents Rule is a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to advanced conditional logic rules for WooCommerce by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'woocommerce-cart' ),
				),
			),
		);
	}
}

new WPCode_Conditional_WooCommerce_Lite();
PK     ¬‰U]û`iÔ@  @  E  includes/lite/conditional-logic/class-wpcode-conditional-location.phpnu „[µü¤        <?php
/**
 * Placeholder class that handles conditional logic based on location.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}


/**
 * The WPCode_Conditional_Location class.
 */
class WPCode_Conditional_Location_Lite extends WPCode_Conditional_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'location';

	/**
	 * The type category.
	 *
	 * @var string
	 */
	public $category = 'who';

	/**
	 * Set the type options for the admin mainly.
	 *
	 * @return void
	 */
	public function load_type_options() {
		$this->options = array(
			'country'   => array(
				'label'       => __( 'Country', 'insert-headers-and-footers' ),
				'description' => __( 'Limit loading the snippet based on the visitor\'s country.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => array(),
				'upgrade'     => array(
					'title' => __( 'Location Rules are a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to location-based conditional logic rules by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'location-country' ),
				),
			),
			'continent' => array(
				'label'       => __( 'Continent', 'insert-headers-and-footers' ),
				'description' => __( 'Target entire continents with ease.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => array(),
				'upgrade'     => array(
					'title' => __( 'Location Rules are a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to location-based conditional logic rules by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'location-continent' ),
				),
			),
		);
	}

	/**
	 * Set the translatable label.
	 *
	 * @return void
	 */
	protected function set_label() {
		$this->label = __( 'Location', 'insert-headers-and-footers' ) . ' (PRO)';
	}
}

new WPCode_Conditional_Location_Lite();
PK     ¬‰U]té=È  È  E  includes/lite/conditional-logic/class-wpcode-conditional-schedule.phpnu „[µü¤        <?php
/**
 * Class that handles conditional logic for scheduling snippets.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * The WPCode_Conditional_Schedule_Lite class.
 */
class WPCode_Conditional_Schedule_Lite extends WPCode_Conditional_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'schedule';

	/**
	 * The type category.
	 *
	 * @var string
	 */
	public $category = 'advanced';

	/**
	 * Set the translatable label.
	 *
	 * @return void
	 */
	protected function set_label() {
		$this->label = __( 'Schedule', 'insert-headers-and-footers' ) . ' (PRO)';
	}

	/**
	 * Set the type options for the admin mainly.
	 *
	 * @return void
	 */
	public function load_type_options() {
		$this->options = array(
			'date_is' => array(
				'label'       => __( 'Date', 'insert-headers-and-footers' ),
				'description' => __( 'Check whether today is before or after a date.', 'insert-headers-and-footers' ),
				'type'        => 'date',
			),
			'time_is' => array(
				'label'       => __( 'Date & Time', 'insert-headers-and-footers' ),
				'description' => __( 'Get more specific by also including a specific time.', 'insert-headers-and-footers' ),
				'type'        => 'datetime',
			),
			'weekday' => array(
				'label'       => __( 'Day of the Week', 'insert-headers-and-footers' ),
				'description' => __( 'Load the snippet on specific days of the week.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'multiple'    => true,
			),
			'time'    => array(
				'label'       => __( 'Current time', 'insert-headers-and-footers' ),
				'description' => __( 'Check whether it\'s before or after a specific time', 'insert-headers-and-footers' ),
				'type'        => 'time',
			),
		);

		foreach ( $this->options as $key => $value ) {
			$this->options[ $key ]['upgrade'] = array(
				'title' => __( 'Scheduling rules are a Pro Feature', 'insert-headers-and-footers' ),
				'text'  => __( 'Upgrade today and get access to advanced scheduling conditional logic rules.', 'insert-headers-and-footers' ),
				'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'schedule' ),
			);
		}
	}
}

new WPCode_Conditional_Schedule_Lite();
PK     ¬‰U]â|U:Ï  Ï  D  includes/lite/conditional-logic/class-wpcode-conditional-snippet.phpnu „[µü¤        <?php
/**
 * Class that handles conditional logic for snippets type
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * The WPCode_Conditional_Snippet class.
 */
class WPCode_Conditional_Snippet_Lite extends WPCode_Conditional_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'snippet';

	/**
	 * The type category.
	 *
	 * @var string
	 */
	public $category = 'advanced';

	/**
	 * Set the translatable label.
	 *
	 * @return void
	 */
	protected function set_label() {
		$this->label = __( 'Snippet', 'insert-headers-and-footers' ) . ' (PRO)';
	}

	/**
	 * Set the type options for the admin mainly.
	 *
	 * @return void
	 */
	public function load_type_options() {
		$this->options = array(
			'snippet_loaded' => array(
				'label'       => __( 'WPCode Snippet', 'insert-headers-and-footers' ),
				'description' => __( 'Load this snippet based on another snippet being loaded.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'options'     => array(),
				'upgrade'     => array(
					'title' => __( 'WPCode Snippet Loaded Rules are a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Upgrade today and use conditional logic rules based on other WPCode snippets being loaded.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'snippet' ),
				),
			),
		);

	}
}

new WPCode_Conditional_Snippet_Lite();
PK     ¬‰U]ß"™¤  ¤  @  includes/lite/conditional-logic/class-wpcode-conditional-edd.phpnu „[µü¤        <?php
/**
 * Class that handles conditional logic related to Easy Digital Downloads.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * The WPCode_Conditional_EDD class.
 */
class WPCode_Conditional_EDD_Lite extends WPCode_Conditional_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'edd';

	/**
	 * The type category.
	 *
	 * @var string
	 */
	public $category = 'ecommerce';

	/**
	 * Set the translatable label.
	 *
	 * @return void
	 */
	protected function set_label() {
		$this->label = 'Easy Digital Downloads (PRO)';
	}

	/**
	 * Set the type options for the admin mainly.
	 *
	 * @return void
	 */
	public function load_type_options() {
		$this->options = array(
			'edd_page' => array(
				'label'       => __( 'EDD Page', 'insert-headers-and-footers' ),
				'description' => __( 'Load the snippet on specific Easy Digital Downloads pages.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'upgrade'     => array(
					'title' => __( 'Easy Digital Downloads Page Rules is a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to advanced conditional logic rules for Easy Digital Downloads by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'edd-page' ),
				),
				'options'     => array(
					array(
						'label'    => __( 'Checkout Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
					array(
						'label'    => __( 'Confirmation Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
					array(
						'label'    => __( 'Single Download Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
					array(
						'label'    => __( 'Download Category Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
					array(
						'label'    => __( 'Download Tag Page', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
				),
			),
		);
	}
}

new WPCode_Conditional_EDD_Lite();
PK     ¬‰U]RŒÙús  s  C  includes/lite/conditional-logic/class-wpcode-conditional-device.phpnu „[µü¤        <?php
/**
 * Placeholder Class that handles conditional logic for device type
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

/**
 * The WPCode_Conditional_Device_Lite class.
 */
class WPCode_Conditional_Device_Lite extends WPCode_Conditional_Type {

	/**
	 * The type unique name (slug).
	 *
	 * @var string
	 */
	public $name = 'device';

	/**
	 * The type category.
	 *
	 * @var string
	 */
	public $category = 'who';

	/**
	 * Set the translatable label.
	 *
	 * @return void
	 */
	protected function set_label() {
		$this->label = __( 'Device', 'insert-headers-and-footers' ) . ' (PRO)';
	}

	/**
	 * Set the type options for the admin mainly.
	 *
	 * @return void
	 */
	public function load_type_options() {
		$this->options = array(
			'device_type'  => array(
				'label'       => __( 'Device Type', 'insert-headers-and-footers' ),
				'description' => __( 'Target either desktop or mobile devices.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'upgrade'     => array(
					'title' => __( 'Device Type Rules are a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to advanced device type conditional logic rules by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'device-type' ),
				),
				'options'     => array(
					array(
						'label'    => __( 'Desktop', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
					array(
						'label'    => __( 'Mobile', 'insert-headers-and-footers' ),
						'value'    => '',
						'disabled' => true,
					),
				),
			),
			'browser'      => array(
				'label'       => __( 'Browser Type', 'insert-headers-and-footers' ),
				'description' => __( 'Target specific visitor web browsers.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'upgrade'     => array(
					'title' => __( 'Browser Type Rules are a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to advanced device conditional logic rules by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'browser' ),
				),
			),
			'os'           => array(
				'label'       => __( 'Operating System', 'insert-headers-and-footers' ),
				'description' => __( 'Target operating systems like Windows, Mac OS or Linux.', 'insert-headers-and-footers' ),
				'type'        => 'select',
				'upgrade'     => array(
					'title' => __( 'Operating System Rules are a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to advanced operating system conditional logic rules by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'os' ),
				),
			),
			'cookie_name'  => array(
				'label'       => __( 'Cookie Name', 'insert-headers-and-footers' ),
				'description' => __( 'Load or hide a snippet by cookie name.', 'insert-headers-and-footers' ),
				'type'        => 'text',
				'upgrade'     => array(
					'title' => __( 'Cookie-based Rules are a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to advanced cookie conditional logic rules by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'cookie-name' ),
				),
			),
			'cookie_value' => array(
				'label'       => __( 'Cookie Value', 'insert-headers-and-footers' ),
				'description' => __( 'Load or hide a snippet by cookie value.', 'insert-headers-and-footers' ),
				'type'        => 'text',
				'upgrade'     => array(
					'title' => __( 'Cookie-based Rules are a Pro Feature', 'insert-headers-and-footers' ),
					'text'  => __( 'Get access to advanced cookie conditional logic rules by upgrading to PRO today.', 'insert-headers-and-footers' ),
					'link'  => wpcode_utm_url( 'https://wpcode.com/lite/', 'edit-snippet', 'conditional-logic', 'cookie-value' ),
				),
			),
		);
	}
}

new WPCode_Conditional_Device_Lite();
PK     ¬‰U]ä–Ë8[  [    includes/lite/loader.phpnu „[µü¤        <?php
/**
 * File used for importing lite-only files.
 *
 * @package WPCode
 */

if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

if ( is_admin() || defined( 'DOING_CRON' ) && DOING_CRON ) {
	// Revisions display trait lite.
	require_once WPCODE_PLUGIN_PATH . 'includes/admin/pages/trait-wpcode-revisions-display.php';
	// Class used for loading the scripts metabox.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/admin/class-wpcode-metabox-snippets-lite.php';
	// Load lite-specific scripts.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/admin/admin-scripts.php';
	// Load lite notices.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/admin/notices.php';
	// Lite-specific admin page loader.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/admin/class-wpcode-admin-page-loader-lite.php';
	// Connect to upgrade.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/admin/class-wpcode-connect.php';
	// Usage tracking abstract.
	require_once WPCODE_PLUGIN_PATH . 'includes/admin/class-wpcode-usage-tracking.php';
	// Usage tracking lite.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/admin/class-wpcode-usage-tracking-lite.php';
	// Load smart tags class.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/class-wpcode-smart-tags-lite.php';
}
// Load the admin bar info.
require_once WPCODE_PLUGIN_PATH . 'includes/lite/class-wpcode-admin-bar-info-lite.php';

add_action( 'plugins_loaded', 'wpcode_plugins_loaded_load_lite_files', 2 );

/**
 * Require files on plugins_loaded.
 *
 * @return void
 */
function wpcode_plugins_loaded_load_lite_files() {
	// Make sure this is loaded in older versions of WP.
	require_once WPCODE_PLUGIN_PATH . 'includes/auto-insert/class-wpcode-auto-insert-type.php';
	// Load WooCommerce auto-insert locations.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.php';
	// Load EDD auto-insert locations.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/auto-insert/class-wpcode-auto-insert-edd.php';
	// Load MemberPress auto-insert locations.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.php';
	// Load the insert-anywhere class.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.php';
	// Load the content class.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/auto-insert/class-wpcode-auto-insert-content.php';
	// Load Device type conditional logic.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/conditional-logic/class-wpcode-conditional-device.php';
	// Load Location conditional logic.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/conditional-logic/class-wpcode-conditional-location.php';
	// Load WooCommerce conditional logic.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.php';
	// Load EDD conditional logic.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/conditional-logic/class-wpcode-conditional-edd.php';
	// Load MemberPress conditional logic.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/conditional-logic/class-wpcode-conditional-memberpress.php';
	// Load Snippet conditional logic.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/conditional-logic/class-wpcode-conditional-snippet.php';
	// Load Schedule conditional logic.
	require_once WPCODE_PLUGIN_PATH . 'includes/lite/conditional-logic/class-wpcode-conditional-schedule.php';
}
PK     ¬‰U]ú�²�ù
  ù
    includes/capabilities.phpnu „[µü¤        <?php
/**
 * Map capabilites with backwards compatibility.
 *
 * @package WPCode
 */

// Prevent direct access.
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

add_filter( 'map_meta_cap', 'wpcode_map_meta_cap', 10, 4 );

/**
 * Map capabilites with backwards compatibility.
 *
 * @param string[] $caps Primitive capabilities required of the user.
 * @param string   $cap Capability being checked.
 * @param int      $user_id The user ID.
 * @param array    $args Adds context to the capability check, typically
 *                          starting with an object ID.
 *
 * @return array
 */
function wpcode_map_meta_cap( $caps, $cap, $user_id, $args ) {

	$custom_capabilities = array(
		'wpcode_edit_php_snippets',
		'wpcode_edit_html_snippets',
		'wpcode_manage_conversion_pixels',
		'wpcode_file_editor',
		'wpcode_manage_settings',
	);

	if ( in_array( $cap, $custom_capabilities, true ) ) {
		return array( 'wpcode_edit_snippets' );
	}

	return $caps;
}

/**
 * Get an array of the custom capabilities that WPCode uses.
 *
 * @return array[]
 */
function wpcode_custom_capabilities() {
	return array(
		'wpcode_edit_text_snippets'       => array(
			'label'       => __( 'Edit Text/Blocks Snippets', 'insert-headers-and-footers' ),
			'description' => __( 'This enables users to edit just text & blocks snippets, no HTML code is allowed.', 'insert-headers-and-footers' ),
		),
		'wpcode_edit_html_snippets'       => array(
			'label'       => __( 'Edit HTML, JavaScript & CSS Snippets', 'insert-headers-and-footers' ),
			'description' => __( 'This enables users to add and manage HTML, JavaScript & CSS snippets but also Text & Blocks snippets.', 'insert-headers-and-footers' ),
		),
		'wpcode_edit_php_snippets'        => array(
			'label'       => __( 'Edit PHP Snippets', 'insert-headers-and-footers' ),
			'description' => __( 'This enables users to add and manage PHP snippets and all the other types of snippets.', 'insert-headers-and-footers' ),
		),
		'wpcode_manage_conversion_pixels' => array(
			'label'       => __( 'Manage Conversion Pixels Settings', 'insert-headers-and-footers' ),
			'description' => __( 'This enables users to manage the conversion pixels settings.', 'insert-headers-and-footers' ),
		),
		'wpcode_file_editor'              => array(
			'label'       => __( 'Use the File Editor', 'insert-headers-and-footers' ),
			'description' => __( 'This enables users to use the file editor.', 'insert-headers-and-footers' ),
		),
	);
}

/**
 * Return just the keys to avoid a gettext call that causes an endless loop with TranslatePress.
 *
 * @return string[]
 */
function wpcode_custom_capabilities_keys() {
	return array(
		'wpcode_edit_text_snippets',
		'wpcode_edit_html_snippets',
		'wpcode_edit_php_snippets',
		'wpcode_manage_conversion_pixels',
		'wpcode_file_editor',
	);
}

PK     ¬‰U]Åýl�xo  xo  !  includes/class-wpcode-snippet.phpnu „[µü¤        <?php
/**
 * The main class to work with single WPCode snippets.
 *
 * @package wpcode
 */

/**
 * WPCode_Snippet class.
 */
class WPCode_Snippet {

	/**
	 * Post type used to store.
	 *
	 * @var string
	 */
	public $post_type = 'wpcode';
	/**
	 * Location taxonomy name.
	 *
	 * @var string
	 */
	public $location_taxonomy = 'wpcode_location';
	/**
	 * Code type taxonomy name.
	 *
	 * @var string
	 */
	public $code_type_taxonomy = 'wpcode_type';
	/**
	 * Tags taxonomy name.
	 *
	 * @var string
	 */
	public $tags_taxonomy = 'wpcode_tags';
	/**
	 * The snippet id.
	 *
	 * @var int
	 */
	public $id;
	/**
	 * The WP_Post object for the snippet.
	 *
	 * @var WP_Post
	 */
	public $post_data;
	/**
	 * The snippet title.
	 *
	 * @var string
	 */
	public $title;
	/**
	 * The actual snippet code.
	 *
	 * @var string
	 */
	public $code;
	/**
	 * The code language/type.
	 *
	 * @var string
	 */
	public $code_type;
	/**
	 * The location where the snippet is added.
	 *
	 * @var string
	 */
	public $location;
	/**
	 * Auto-insert or use shortcode?
	 *
	 * @var int
	 */
	public $auto_insert;
	/**
	 * The insert number for paragraphs or posts in an archive.
	 *
	 * @var int
	 */
	public $insert_number;
	/**
	 * If the snippet is active or not, for now this is handled by the post status draft vs published.
	 *
	 * @var bool
	 */
	public $active;
	/**
	 * An array of tags.
	 *
	 * @var string[]
	 */
	public $tags;
	/**
	 * When we load the location from the terms let's store the object here.
	 *
	 * @var WP_Term
	 */
	private $location_term;
	/**
	 * When we load the code type from the terms let's store the object here.
	 *
	 * @var WP_Term
	 */
	private $code_type_term;
	/**
	 * The tag terms.
	 *
	 * @var WP_Term[]
	 */
	private $tags_terms;
	/**
	 * Whether the conditional rules are enabled or disabled.
	 *
	 * @var bool
	 */
	private $use_rules;
	/**
	 * The conditional logic rules.
	 *
	 * @var array
	 */
	private $rules;
	/**
	 * The priority for loading.
	 *
	 * @var int
	 */
	private $priority;

	/**
	 * The library id, if the snippet is created from the snippet library.
	 *
	 * @var int
	 */
	private $library_id;

	/**
	 * The cloud id, if the snippet has been saved to the user's cloud.
	 *
	 * @var string
	 */
	private $cloud_id;

	/**
	 * The custom shortcode name.
	 *
	 * @var string
	 */
	public $custom_shortcode;

	/**
	 * The version of the snippet from the library.
	 *
	 * @var string
	 */
	private $library_version;

	/**
	 * The snippet note.
	 *
	 * @var string
	 */
	private $note;
	/**
	 * The name of the generator used for this snippet (if any).
	 *
	 * @var string
	 */
	private $generator;
	/**
	 * The generator fields.
	 *
	 * @var array
	 */
	private $generator_data;

	/**
	 * Compress code output.
	 *
	 * @var bool
	 */
	public $compress_output;
	/**
	 * The type of device to load this snippet on.
	 *
	 * @var string
	 */
	public $device_type;

	/**
	 * Schedule parameters for this snippet.
	 *
	 * @var array
	 */
	public $schedule;

	/**
	 * Compiled code.
	 *
	 * @var string
	 */
	public $compiled_code;

	/**
	 * Location extra parameters.
	 * This is used to store extra parameters for the location.
	 *
	 * @var array
	 */
	public $location_extra;

	/**
	 * Get an array of the shortcode attributes for this snippet.
	 *
	 * @var array
	 */
	public $shortcode_attributes;

	/**
	 * Used to store the shortcode attributes values.
	 *
	 * @var array
	 */
	public $attributes;

	/**
	 * Whether this snippet should be loaded as a file, specific to CSS and JS snippets.
	 *
	 * @var bool
	 */
	public $load_as_file;

	/**
	 * The last time the snippet was modified.
	 *
	 * @var int
	 */
	public $modified;

	/**
	 * Constructor. If the post passed is not the correct post type
	 * the object will clear itself.
	 *
	 * @param array|int|WP_Post $snippet Load a snippet by id, WP_Post or array.
	 */
	public function __construct( $snippet ) {
		$snippet = apply_filters( 'wpcode_load_snippet', $snippet );

		if ( is_int( $snippet ) ) {
			$this->load_from_id( $snippet );
		} elseif ( $snippet instanceof WP_Post ) {
			$this->post_data = $snippet;
		} elseif ( is_array( $snippet ) ) {
			$this->load_from_array( $snippet );
		}
		if ( isset( $this->post_data ) && $this->post_type !== $this->post_data->post_type ) {
			unset( $this->post_data );
			unset( $this->id );
		}
	}

	/**
	 * Load a snippet by its ID.
	 *
	 * @param int $snippet_id The snippet id.
	 *
	 * @return void
	 */
	public function load_from_id( $snippet_id ) {
		$this->post_data = get_post( $snippet_id );
		if ( $this->post_data ) {
			$this->id = $this->post_data->ID;
		}
	}

	/**
	 * Load snippet from array - useful for creating a new snippet.
	 *
	 * @param array $snippet_data The array of data to load.
	 *
	 * @return void
	 */
	public function load_from_array( $snippet_data ) {
		$available_options = get_object_vars( $this );
		foreach ( $available_options as $key => $value ) {
			if ( isset( $snippet_data[ $key ] ) ) {
				$this->$key = $snippet_data[ $key ];
			}
		}
	}

	/**
	 * Get the snippet location.
	 *
	 * @return string
	 */
	public function get_location() {
		if ( ! isset( $this->location ) ) {
			$this->set_location();
		}

		return $this->location;
	}

	/**
	 * Grab and set the location term and location string.
	 *
	 * @return void
	 */
	public function set_location() {
		// If something below fails, let's not try again.
		$this->location      = '';
		$this->location_term = $this->get_single_term( $this->location_taxonomy );
		if ( $this->location_term ) {
			$this->location = $this->location_term->slug;
		}
	}

	/**
	 * Get a single term for this snippet based on the taxonomy.
	 *
	 * @param string $taxonomy The taxonomy to grab data for.
	 *
	 * @return false|WP_Term
	 */
	public function get_single_term( $taxonomy ) {
		if ( ! isset( $this->post_data ) ) {
			return false;
		}
		$taxonomy_terms = wp_get_post_terms( $this->post_data->ID, $taxonomy );
		if ( ! empty( $taxonomy_terms ) && ! is_wp_error( $taxonomy_terms ) ) {
			return $taxonomy_terms[0];
		}

		return false;
	}

	/**
	 * Get the author from the post object.
	 *
	 * @return int
	 */
	public function get_snippet_author() {
		if ( isset( $this->post_data ) ) {
			return $this->post_data->post_author;
		}

		return 0;
	}

	/**
	 * Get the post data object.
	 *
	 * @return WP_Post
	 */
	public function get_post_data() {
		return isset( $this->post_data ) ? $this->post_data : null;
	}

	/**
	 * Get the snippet title.
	 *
	 * @return string
	 */
	public function get_title() {
		if ( ! isset( $this->title ) ) {
			$this->title = isset( $this->post_data ) ? $this->post_data->post_title : '';
		}

		return $this->title;
	}

	/**
	 * Get the snippet code.
	 *
	 * @return string
	 */
	public function get_code() {
		if ( ! isset( $this->code ) ) {
			$this->code = isset( $this->post_data ) ? $this->post_data->post_content : '';
		}

		return $this->code;
	}

	/**
	 * Get location term.
	 *
	 * @return WP_Term
	 */
	public function get_location_term() {
		if ( ! isset( $this->location_term ) ) {
			$this->set_location();
		}

		return $this->location_term;
	}

	/**
	 * Get the code type term.
	 *
	 * @return WP_Term
	 */
	public function get_code_type_term() {
		if ( ! isset( $this->code_type_term ) ) {
			$this->set_code_type();
		}

		return $this->code_type_term;
	}

	/**
	 * Is the snippet active?
	 *
	 * @return boolean
	 */
	public function is_active() {
		if ( ! isset( $this->active ) ) {
			$this->active = isset( $this->post_data->post_status ) && 'publish' === $this->post_data->post_status;
		}

		return $this->active;
	}

	/**
	 * Shorthand for activating.
	 *
	 * @return void
	 */
	public function activate() {
		$this->active = true;
		$this->get_id();
		$this->save();
	}

	/**
	 * Get the snippet id.
	 *
	 * @return int
	 */
	public function get_id() {
		if ( ! isset( $this->id ) ) {
			$this->id = isset( $this->post_data ) ? $this->post_data->ID : 0;
		}

		return $this->id;
	}

	/**
	 * Store current object in the db.
	 *
	 * @return int|false
	 */
	public function save() {

		// Allow to prevent saving the snippet.
		$pre_save = apply_filters( 'wpcode_pre_save_snippet', false, $this );
		if ( false !== $pre_save ) {
			return $pre_save;
		}

		$post_args = array(
			'post_type' => $this->post_type,
		);
		if ( isset( $this->id ) && 0 !== $this->id ) {
			$post_args['ID'] = $this->id;
			$this->load_from_id( $this->id );
		}
		if ( isset( $this->title ) ) {
			$post_args['post_title'] = $this->title;
		}
		if ( isset( $this->code ) ) {
			$post_args['post_content'] = $this->code;
		}

		// If the user is not allowed to activate/deactivate snippets, prevent it and show error.
		if ( ! current_user_can( 'wpcode_activate_snippets', $this ) ) {
			wpcode()->error->add_error(
				array(
					'message' => __( 'You are not allowed to change snippet status, please contact your webmaster.', 'insert-headers-and-footers' ),
					'type'    => 'permissions',
				)
			);
			unset( $this->active );
		}

		if ( isset( $this->active ) ) {
			// If we're going to activate a snippet let's check if errors will be thrown.
			$this->run_activation_checks();
			$post_args['post_status'] = $this->active ? 'publish' : 'draft';
		}

		do_action( 'wpcode_before_snippet_save', $this );

		if ( isset( $post_args['ID'] ) ) {
			$insert_result = wp_update_post( $post_args );
		} else {
			if ( empty( $post_args['post_title'] ) ) {
				$post_args['post_title'] = $this->get_untitled_title();
			}
			$insert_result = wp_insert_post( $post_args );
		}

		if ( 0 === $insert_result || is_wp_error( $insert_result ) ) {
			return false;
		}
		$this->id = $insert_result;

		// Reset the last error.
		$this->reset_last_error();

		if ( isset( $this->code_type ) ) {
			wp_set_post_terms( $this->id, $this->code_type, $this->code_type_taxonomy );
		}
		if ( isset( $this->auto_insert ) ) {
			// Save this value for reference, but we never query by it.
			update_post_meta( $this->id, '_wpcode_auto_insert', $this->auto_insert );
		}
		if ( isset( $this->location ) && 1 === $this->auto_insert ) {
			wp_set_post_terms( $this->id, $this->location, $this->location_taxonomy );
		} elseif ( isset( $this->auto_insert ) ) {
			// If auto insert is disabled we just empty the taxonomy.
			wp_set_post_terms( $this->id, array(), $this->location_taxonomy );
		}
		if ( isset( $this->tags ) ) {
			wp_set_post_terms( $this->id, $this->tags, $this->tags_taxonomy );
		}
		if ( isset( $this->insert_number ) ) {
			update_post_meta( $this->id, '_wpcode_auto_insert_number', $this->insert_number );
		}
		if ( isset( $this->use_rules ) ) {
			update_post_meta( $this->id, '_wpcode_conditional_logic_enabled', $this->use_rules );
		}
		if ( isset( $this->rules ) ) {
			update_post_meta( $this->id, '_wpcode_conditional_logic', $this->rules );
		}
		if ( isset( $this->priority ) ) {
			update_post_meta( $this->id, '_wpcode_priority', $this->priority );
		}
		if ( isset( $this->library_id ) ) {
			update_post_meta( $this->id, '_wpcode_library_id', $this->library_id );
		}
		if ( isset( $this->library_version ) ) {
			update_post_meta( $this->id, '_wpcode_library_version', $this->library_version );
		}
		if ( isset( $this->note ) ) {
			update_post_meta( $this->id, '_wpcode_note', $this->note );
		}
		if ( isset( $this->generator ) ) {
			update_post_meta( $this->id, '_wpcode_generator', $this->generator );
		}
		if ( isset( $this->generator_data ) ) {
			update_post_meta( $this->id, '_wpcode_generator_data', $this->generator_data );
		}
		if ( isset( $this->location_extra ) ) {
			update_post_meta( $this->id, '_wpcode_location_extra', $this->location_extra );
		}
		if ( isset( $this->cloud_id ) ) {
			$auth_username = wpcode()->library_auth->get_auth_username();
			$cloud_ids     = get_post_meta( $this->id, '_wpcode_cloud_id', true );
			if ( empty( $cloud_ids ) || ! is_array( $cloud_ids ) ) {
				$cloud_ids = array();
			}
			if ( empty( $this->cloud_id ) && isset( $cloud_ids[ $auth_username ] ) ) {
				unset( $cloud_ids[ $auth_username ] );
			} elseif ( ! empty( $this->cloud_id ) ) {
				$cloud_ids[ $auth_username ] = $this->cloud_id;
			}
			update_post_meta(
				$this->id,
				'_wpcode_cloud_id',
				$cloud_ids
			);
		}
		if ( isset( $this->custom_shortcode ) ) {
			if ( empty( $this->custom_shortcode ) ) {
				// Delete this meta if empty because we query by it.
				delete_post_meta( $this->id, '_wpcode_custom_shortcode' );
			} else {
				update_post_meta( $this->id, '_wpcode_custom_shortcode', $this->custom_shortcode );
			}
		}
		if ( isset( $this->device_type ) ) {
			update_post_meta( $this->id, '_wpcode_device_type', $this->device_type );
		}
		if ( isset( $this->schedule ) ) {
			update_post_meta( $this->id, '_wpcode_schedule', $this->schedule );
		}
		if ( isset( $this->shortcode_attributes ) ) {
			update_post_meta( $this->id, '_wpcode_shortcode_attributes', $this->shortcode_attributes );
		}
		if ( isset( $this->load_as_file ) && in_array( $this->get_code_type(), array( 'css', 'js', 'scss' ), true ) ) {
			update_post_meta( $this->id, '_wpcode_load_as_file', $this->load_as_file );
		}
		if ( isset( $this->compress_output ) ) {
			update_post_meta( $this->id, '_wpcode_compress_output', true );
		} else {
			delete_post_meta( $this->id, '_wpcode_compress_output' );
		}

		if ( isset( $this->compiled_code ) ) {
			update_post_meta( $this->id, '_wpcode_compiled_code', $this->compiled_code );
		}

		/**
		 * Run extra logic after the snippet is saved.
		 *
		 * @param int            $id The id of the updated snippet.
		 * @param WPCode_Snippet $snippet The snippet object.
		 */
		do_action( 'wpcode_snippet_after_update', $this->id, $this );

		$this->rebuild_cache();

		return $this->id;
	}

	/**
	 * Method for rebuilding all snippets cache.
	 *
	 * @return void
	 */
	public function rebuild_cache() {
		wpcode()->cache->cache_all_loaded_snippets();
	}

	/**
	 * Check if a snippet can be run without errors before activating it.
	 *
	 * @return void
	 */
	public function run_activation_checks() {
		$executed_types = array(
			'php',
			'universal',
		);
		if ( ! in_array( $this->get_code_type(), $executed_types, true ) ) {
			// If the code is not getting executed just skip.
			return;
		}
		if ( false === $this->active ) {
			// If we're not trying to activate or the snippet is already active, bail.
			return;
		}

		// Make sure no errors are added by something else.
		wpcode()->error->clear_errors();
		// Try running the code.
		// Grab the executor class specific to the code type.
		$executor = wpcode()->execute->get_type_execute_class( $this->get_code_type() );
		// Mark this as an activation attempt.
		wpcode()->execute->doing_activation();
		/**
		 * Added for convenience.
		 *
		 * @var WPCode_Snippet_Execute_Type $executor
		 */
		$execute = new $executor( $this );
		// Grab the output that executes the code.
		$execute->get_output();
		// If any errors are caught, prevent the status from being changed.
		$has_error = wpcode()->error->has_error();
		if ( $has_error ) {
			$this->active = false;
		}

		wpcode()->execute->not_doing_activation();
	}

	/**
	 * Return the code type.
	 *
	 * @return string
	 */
	public function get_code_type() {
		if ( ! isset( $this->code_type ) ) {
			$this->set_code_type();
		}

		return $this->code_type;
	}

	/**
	 * Grab the code type from the taxonomy.
	 *
	 * @return void
	 */
	public function set_code_type() {
		// If something below fails, let's not try again.
		$this->code_type      = '';
		$this->code_type_term = $this->get_single_term( $this->code_type_taxonomy );
		if ( $this->code_type_term ) {
			$this->code_type = $this->code_type_term->slug;
		}
	}

	/**
	 * Get the default title for snippets with no title set.
	 *
	 * @return string
	 */
	public function get_untitled_title() {
		return __( 'Untitled Snippet', 'insert-headers-and-footers' );
	}

	/**
	 * Shorthand for deactivating a snippet.
	 *
	 * @return void
	 */
	public function deactivate() {
		$this->active = false;
		$this->get_id();
		$this->save();
	}

	/**
	 * This deactivates the snippet without regardless of user permissions.
	 * Should only be used for unattended auto-deactivation when a snippet throws a potentially blocking error.
	 *
	 * @return void
	 */
	public function force_deactivate() {
		global $wpdb;

		// Add a filter so we can hijack the deactivate logic if needed.
		$force_deactivate = apply_filters( 'wpcode_force_deactivate_snippet', false, $this );
		if ( false !== $force_deactivate ) {
			return;
		}

		// We need to make a direct call as using wp_update_post will load the post content and if the current user
		// doesn't have the unfiltered_html capability, the code will be changed unexpectedly.
		$update = $wpdb->update( // phpcs:ignore WordPress.DB.DirectDatabaseQuery.DirectQuery, WordPress.DB.DirectDatabaseQuery.NoCaching
			$wpdb->posts,
			array(
				'post_status' => 'draft',
			),
			array(
				'ID' => $this->get_id(),
			)
		);

		if ( $update ) {
			// Rebuild cache to avoid the snippet being loaded again.
			$this->rebuild_cache();

			wpcode()->error->add_error(
				array(
					'message' => sprintf(
					/* translators: %s: Snippet title and ID used in the error log for clarity. */
						esc_html__( 'Snippet %s was automatically deactivated due to a fatal error.', 'insert-headers-and-footers' ),
						sprintf( '"%s" (#%d)', $this->get_title(), $this->get_id() )
					),
				)
			);
		}
	}

	/**
	 * Set the last error for this snippet.
	 *
	 * @param array $error The error details.
	 *
	 * @return void
	 */
	public function set_last_error( $error ) {
		if ( ! isset( $error['message'] ) ) {
			return;
		}
		update_post_meta( $this->get_id(), '_wpcode_last_error', $error );
	}

	/**
	 * Get the last error for this snippet.
	 *
	 * @return array|false
	 */
	public function get_last_error() {
		$error = get_post_meta( $this->get_id(), '_wpcode_last_error', true );

		if ( empty( $error ) || ! is_array( $error ) ) {
			return false;
		}

		return $error;
	}

	/**
	 * Remove the meta that stores the last error.
	 *
	 * @return void
	 */
	public function reset_last_error() {
		delete_post_meta( $this->get_id(), '_wpcode_last_error' );
		wpcode()->error->clear_snippets_errors();
	}

	/**
	 * Get the auto insert number.
	 *
	 * @return int
	 */
	public function get_auto_insert_number() {
		if ( ! isset( $this->insert_number ) ) {
			$this->insert_number = absint( get_post_meta( $this->get_id(), '_wpcode_auto_insert_number', true ) );
			// Default value should be 1.
			if ( 0 === $this->insert_number ) {
				$this->insert_number = 1;
			}
		}

		return $this->insert_number;
	}

	/**
	 * Get the auto-insert value.
	 *
	 * @return int
	 */
	public function get_auto_insert() {
		if ( ! isset( $this->auto_insert ) ) {
			$this->auto_insert = absint( get_post_meta( $this->get_id(), '_wpcode_auto_insert', true ) );
		}

		return $this->auto_insert;
	}

	/**
	 * Get the array of tag slugs.
	 *
	 * @return string[]
	 */
	public function get_tags() {
		if ( ! isset( $this->tags ) ) {
			$this->set_tags();
		}

		return $this->tags;
	}

	/**
	 * Set the tags for the current snippet.
	 *
	 * @return void
	 */
	public function set_tags() {
		$tags      = wp_get_post_terms( $this->get_id(), $this->tags_taxonomy );
		$tag_slugs = array();
		foreach ( $tags as $tag ) {
			/**
			 * The tag term object.
			 *
			 * @var WP_Term $tag
			 */
			$tag_slugs[] = $tag->slug;
		}
		$this->tags       = $tag_slugs;
		$this->tags_terms = $tags;
	}

	/**
	 * Get the conditional logic rules from the db.
	 *
	 * @return array
	 */
	public function get_conditional_rules() {
		if ( ! isset( $this->rules ) ) {
			$rules = get_post_meta( $this->get_id(), '_wpcode_conditional_logic', true );
			if ( empty( $rules ) ) {
				$rules = array();
			}
			$this->rules = $rules;
		}

		return $this->rules;
	}

	/**
	 * Are the conditional logic rules enabled?
	 *
	 * @return bool
	 */
	public function conditional_rules_enabled() {
		if ( ! isset( $this->use_rules ) ) {
			$enabled = get_post_meta( $this->get_id(), '_wpcode_conditional_logic_enabled', true );
			if ( '' === $enabled ) {
				$enabled = false;
			}
			$this->use_rules = boolval( $enabled );
		}

		return $this->use_rules;
	}

	/**
	 * Get the note for this snippet.
	 *
	 * @return string
	 */
	public function get_note() {
		if ( ! isset( $this->note ) ) {
			$this->note = get_post_meta( $this->get_id(), '_wpcode_note', true );
		}

		return $this->note;
	}

	/**
	 * Get the priority number for this snippet.
	 *
	 * @return int
	 */
	public function get_priority() {
		if ( ! isset( $this->priority ) ) {
			$priority = get_post_meta( $this->get_id(), '_wpcode_priority', true );
			if ( '' === $priority ) {
				$priority = 10;
			}
			$this->priority = intval( $priority );
		}

		return $this->priority;
	}

	/**
	 * Get essential data for caching.
	 *
	 * @return array
	 */
	public function get_data_for_caching() {
		$modified  = 0;
		$post_data = $this->get_post_data();
		if ( ! is_null( $post_data ) ) {
			$modified = $post_data->post_modified;
		}

		return array(
			'id'                   => $this->get_id(),
			'title'                => $this->get_title(),
			'code'                 => $this->get_code(),
			'code_type'            => $this->get_code_type(),
			'location'             => $this->get_location(),
			'auto_insert'          => $this->get_auto_insert(),
			'insert_number'        => $this->get_auto_insert_number(),
			'use_rules'            => $this->conditional_rules_enabled(),
			'rules'                => $this->get_conditional_rules(),
			'priority'             => $this->get_priority(),
			'location_extra'       => $this->get_location_extra(),
			'shortcode_attributes' => $this->get_shortcode_attributes(),
			'compiled_code'        => $this->get_compiled_code(),
			'modified'             => $modified,
		);
	}

	/**
	 * Get the cloud id for this snippet.
	 *
	 * @return string
	 */
	public function get_cloud_id() {
		if ( ! isset( $this->cloud_id ) ) {
			if ( wpcode()->library_auth->has_auth() ) {
				$cloud_id = get_post_meta( $this->get_id(), '_wpcode_cloud_id', true );
				if ( empty( $cloud_id ) || ! is_array( $cloud_id ) ) {
					$cloud_id = array();
				}
				$auth_username  = wpcode()->library_auth->get_auth_username();
				$this->cloud_id = isset( $cloud_id[ $auth_username ] ) ? $cloud_id[ $auth_username ] : false;
			} else {
				$this->cloud_id = false;
			}
		}

		return $this->cloud_id;
	}

	/**
	 * Set the cloud id.
	 *
	 * @param string $cloud_id The cloud id to use.
	 *
	 * @return void
	 */
	public function set_cloud_id( $cloud_id ) {
		$this->cloud_id = $cloud_id;
	}

	/**
	 * Get the custom shortcode value.
	 *
	 * @return string
	 */
	public function get_custom_shortcode() {
		if ( ! isset( $this->custom_shortcode ) ) {
			$this->custom_shortcode = get_post_meta( $this->get_id(), '_wpcode_custom_shortcode', true );
		}

		return $this->custom_shortcode;
	}

	/**
	 * Get the device type for this snippet.
	 *
	 * @return string
	 */
	public function get_device_type() {
		if ( ! isset( $this->device_type ) ) {
			$this->device_type = get_post_meta( $this->get_id(), '_wpcode_device_type', true );
			if ( empty( $this->device_type ) ) {
				$this->device_type = 'any';
			}
		}

		return $this->device_type;
	}

	/**
	 * Get the schedule data for this snippet.
	 *
	 * @return array
	 */
	public function get_schedule() {
		if ( ! isset( $this->schedule ) ) {
			$this->schedule = wp_parse_args(
				get_post_meta( $this->get_id(), '_wpcode_schedule', true ),
				array(
					'start' => '',
					'end'   => '',
				)
			);
		}

		return $this->schedule;
	}

	/**
	 * Get the generator data for this snippet, if any.
	 *
	 * @return array|false
	 */
	public function get_generator_data() {
		if ( ! isset( $this->generator_data ) ) {
			$generator_data       = get_post_meta( $this->get_id(), '_wpcode_generator_data', true );
			$this->generator_data = empty( $generator_data ) ? false : $generator_data;
		}

		return $this->generator_data;
	}

	/**
	 * Get the generator name for this snippet.
	 *
	 * @return array|false
	 */
	public function get_generator() {
		if ( ! isset( $this->generator ) ) {
			$generator_name  = get_post_meta( $this->get_id(), '_wpcode_generator', true );
			$this->generator = empty( $generator_name ) ? false : $generator_name;
		}

		return $this->generator;
	}

	/**
	 * Check if the snippet is generated using a WPCode generator..
	 *
	 * @return bool
	 */
	public function is_generated() {
		return ! empty( $this->get_generator() );
	}

	/**
	 * Is this snippet scheduled?
	 *
	 * @return bool
	 */
	public function is_scheduled() {
		$schedule = $this->get_schedule();

		return ! empty( $schedule['start'] ) || ! empty( $schedule['end'] );
	}

	/**
	 * Extra data for the selected auto-insert location.
	 *
	 * @return array
	 */
	public function get_location_extra() {
		if ( ! isset( $this->location_extra ) ) {
			$this->location_extra = get_post_meta( $this->get_id(), '_wpcode_location_extra', true );
		}

		return $this->location_extra;
	}

	/**
	 * Load compiled Code.
	 *
	 * @return string
	 */
	public function get_compiled_code() {
		if ( ! isset( $this->compiled_code ) ) {
			$this->compiled_code = get_post_meta( $this->get_id(), '_wpcode_compiled_code', true );
		}
		return $this->compiled_code;
	}

	/**
	 * Maybe the output be compressed?
	 *
	 * @return bool
	 */
	public function maybe_compress_output() {
		if ( ! isset( $this->compress_output ) ) {
			$this->compress_output = boolval( get_post_meta( $this->get_id(), '_wpcode_compress_output', true ) );
		}

		return $this->compress_output;
	}

	/**
	 * Load the shortcode attributes and return.
	 *
	 * @return array
	 */
	public function get_shortcode_attributes() {
		if ( ! isset( $this->shortcode_attributes ) ) {
			$attributes = get_post_meta( $this->get_id(), '_wpcode_shortcode_attributes', true );
			if ( ! is_array( $attributes ) ) {
				$attributes = array();
			}
			$this->shortcode_attributes = $attributes;
		}

		return $this->shortcode_attributes;
	}

	/**
	 * Set shortcode attribute value.
	 *
	 * @param string $key The attribute key.
	 * @param string $value The value for the attribute.
	 *
	 * @return void
	 */
	public function set_attribute( $key, $value ) {
		$this->attributes[ $key ] = $value;
	}

	/**
	 * Duplicates a snippet with all its data.
	 *
	 * @return void
	 */
	public function duplicate() {
		$this->get_data_for_caching();
		$this->get_note();
		$this->get_tags();
		$this->get_custom_shortcode();
		$this->get_device_type();
		$this->get_schedule();
		// Add a suffix to the title.
		$this->title = $this->get_title() . ' - Copy';
		// Make sure the snippet is not active.
		$this->post_data->post_status = 'draft';

		// Let's make sure the slashes don't get removed from the code.
		$this->code = wp_slash( $this->code );
		/**
		 * Fires before a snippet that is about to be duplicated is saved.
		 *
		 * @param WPCode_Snippet $snippet The snippet object.
		 */
		do_action( 'wpcode_before_snippet_duplicated', $this );
		// Remove the id to create a new snippet.
		unset( $this->id );
		// Save the new snippet.
		$this->save();
		/**
		 * Fires after a snippet has been duplicated.
		 *
		 * @param WPCode_Snippet $snippet The snippet object.
		 */
		do_action( 'wpcode_after_snippet_duplicated', $this );
	}

	/**
	 * Get the edit url for this snippet.
	 *
	 * @return string
	 */
	public function get_edit_url() {
		return admin_url( 'admin.php?page=wpcode-snippet-manager&snippet_id=' . absint( $this->get_id() ) );
	}

	/**
	 * Whether this snippet should be load as a file (for JS or CSS snippets, returns false for other code types).
	 *
	 * @return bool
	 */
	public function get_load_as_file() {
		if ( ! isset( $this->load_as_file ) ) {
			$this->load_as_file = in_array( $this->get_code_type(), array( 'js', 'css', 'scss' ), true );
			if ( $this->load_as_file ) {
				$this->load_as_file = boolval( get_post_meta( $this->get_id(), '_wpcode_load_as_file', true ) );
			}
		}

		return $this->load_as_file;
	}

	/**
	 * Execute a snippet on demand.
	 *
	 * @param bool $ignore_conditional_logic Whether to ignore the conditional logic rules.
	 *
	 * @return void
	 */
	public function execute( $ignore_conditional_logic = false ) {

		if ( ! $ignore_conditional_logic ) {
			if ( $this->conditional_rules_enabled() && ! wpcode()->conditional_logic->are_snippet_rules_met( $this ) ) {
				return;
			}
		}

		wpcode()->execute->get_snippet_output( $this );
	}
}
PK     ¬‰U]_p	XÌ   Ì     includes/ihaf.phpnu „[µü¤        <?php


/**
 * Get the main instance of WPCode.
 *
 * @return WPCode
 */
function WPCode() {// phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid
	return WPCode::instance();
}
PK     ­‰U]­Dâ       6  includes/execute/class-wpcode-snippet-execute-type.phpnu „[µü¤        <?php
/**
 * Abstract class for executing different type of snippets.
 *
 * @package wpcode
 */

/**
 * WPCode_Snippet_Execute_Type class.
 */
abstract class WPCode_Snippet_Execute_Type {

	/**
	 * The type of snippet.
	 *
	 * @var string
	 */
	public $type;

	/**
	 * Loaded post data.
	 *
	 * @var WPCode_Snippet
	 */
	public $snippet;

	/**
	 * Load the snippet by id or post object.
	 *
	 * @param WPCode_Snippet $snippet The snippet post or the id.
	 */
	public function __construct( $snippet ) {
		if ( empty( $snippet->attributes ) ) {
			$shortcode_attributes = $snippet->get_shortcode_attributes();
			foreach ( $shortcode_attributes as $attribute ) {
				$snippet->set_attribute( $attribute, '' );
			}
		}

		$this->snippet = $snippet;

	}

	/**
	 * Get the snippet prepared code and run it through a filter
	 * before returning it.
	 *
	 * @return string
	 */
	public function get_output() {
		if ( ! $this->has_snippet() ) {
			return '';
		}

		$code = $this->prepare_snippet_output();

		$output = apply_filters( "wpcode_snippet_output_{$this->type}", $code, $this->snippet );

		return apply_filters( 'wpcode_snippet_output', $output, $this->snippet );
	}

	/**
	 * Check if the snippet object is set.
	 *
	 * @return bool
	 */
	public function has_snippet() {
		return isset( $this->snippet );
	}

	/**
	 * Override this in child classes to add specific logic for each snippet type.
	 *
	 * @return string
	 */
	protected function prepare_snippet_output() {
		return '';
	}

	/**
	 * Get the snippet code.
	 *
	 * @return string
	 */
	public function get_snippet_code() {
		return $this->snippet->get_code();
	}

	/**
	 * Get the scss snippet code.
	 *
	 * @return string
	 */
	public function get_snippet_compiled_code() {
		return $this->snippet->get_compiled_code();
	}
}
PK     ®‰U]aÁ+x_  _  4  includes/execute/class-wpcode-snippet-execute-js.phpnu „[µü¤        <?php
/**
 * Execute JavaScript snippets and return their output.
 *
 * @package wpcode
 */

/**
 * WPCode_Snippet_Execute_JS class.
 */
class WPCode_Snippet_Execute_JS extends WPCode_Snippet_Execute_Type {

	/**
	 * The snippet type, JavaScript for this one.
	 *
	 * @var string
	 */
	public $type = 'js';

	/**
	 * Grab snippet code and return its output.
	 *
	 * @return string
	 */
	protected function prepare_snippet_output() {
		$code = $this->get_snippet_code();

		if ( ! empty( $code ) ) {
			// Wrap our code in a script tag.
			$code = '<script>' . $code . '</script>';
		}

		return $code;
	}
}
PK     ®‰U]O9ñ…  …  6  includes/execute/class-wpcode-snippet-execute-text.phpnu „[µü¤        <?php
/**
 * Execute text snippets and return their output.
 *
 * @package wpcode
 */

/**
 * WPCode_Snippet_Execute_Text class.
 */
class WPCode_Snippet_Execute_Text extends WPCode_Snippet_Execute_Type {

	/**
	 * The snippet type, Text for this one.
	 *
	 * @var string
	 */
	public $type = 'text';

	/**
	 * Grab snippet code and return its output.
	 *
	 * @return string
	 */
	protected function prepare_snippet_output() {
		// There's nothing to prepare here at this point.
		if ( apply_filters( 'wpcode_text_execute_shortcodes', true ) ) {
			return do_shortcode( $this->get_snippet_code() );
		}

		return $this->get_snippet_code();
	}
}
PK     ®‰U]Øn_R  R  5  includes/execute/class-wpcode-snippet-execute-php.phpnu „[µü¤        <?php
/**
 * Execute php snippets and return their output.
 *
 * @package wpcode
 */

/**
 * WPCode_Snippet_Execute_PHP class.
 */
class WPCode_Snippet_Execute_PHP extends WPCode_Snippet_Execute_Type {

	/**
	 * The snippet type, PHP for this one.
	 *
	 * @var string
	 */
	public $type = 'php';

	/**
	 * Grab snippet code and return its output.
	 *
	 * @return string
	 */
	protected function prepare_snippet_output() {
		$code = $this->get_snippet_code();
		// If we're doing the activation, unslash the code similar to how it will be unslashed before saving in wp_insert_post.
		if ( wpcode()->execute->is_doing_activation() && isset( $_POST['wpcode_snippet_code'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Missing
			$code = wp_unslash( $code );
		}

		return wpcode()->execute->safe_execute_php( $code, $this->snippet );
	}
}
PK     ®‰U]jÈËs  s  5  includes/execute/class-wpcode-snippet-execute-css.phpnu „[µü¤        <?php
/**
 * Execute CSS snippets and return their output.
 *
 * @package wpcode
 */

/**
 * WPCode_Snippet_Execute_CSS class.
 */
class WPCode_Snippet_Execute_CSS extends WPCode_Snippet_Execute_Type {

	/**
	 * The snippet type, JavaScript for this one.
	 *
	 * @var string
	 */
	public $type = 'css';

	/**
	 * Grab snippet code and return its output.
	 *
	 * @return string
	 */
	protected function prepare_snippet_output() {
		$code = $this->get_snippet_code();

		if ( ! empty( $code ) ) {
			// Wrap our code in a style tag.
			$code = '<style class="wpcode-css-snippet">' . $code . '</style>';
		}

		return $code;
	}
}
PK     ®‰U]êÔ°9.  .  ;  includes/execute/class-wpcode-snippet-execute-universal.phpnu „[µü¤        <?php
/**
 * Execute universal snippets and return their output.
 * This type handles both HTML and PHP at the same time in the same way
 * you can write both in a .php file.
 *
 * @package wpcode
 */

/**
 * WPCode_Snippet_Execute_Universal class.
 */
class WPCode_Snippet_Execute_Universal extends WPCode_Snippet_Execute_Type {

	/**
	 * The snippet type, Universal for this one.
	 *
	 * @var string
	 */
	public $type = 'universal';

	/**
	 * Grab snippet code and return its output.
	 *
	 * @return string
	 */
	protected function prepare_snippet_output() {

		$code = $this->get_snippet_code();
		// If we're doing the activation, unslash the code similar to how it will be unslashed before saving in wp_insert_post.
		if ( wpcode()->execute->is_doing_activation() && isset( $_POST['wpcode_snippet_code'] ) ) {  // phpcs:ignore WordPress.Security.NonceVerification.Missing
			$code = wp_unslash( $code );
		}

		// Wrap code with PHP tags, so it gets executed correctly.
		return wpcode()->execute->safe_execute_php( '?>' . $code . '<?php ', $this->snippet );
	}
}
PK     ®‰U]\	°ú  ú  6  includes/execute/class-wpcode-snippet-execute-html.phpnu „[µü¤        <?php
/**
 * Execute html snippets and return their output.
 * This is probably the simplest one.
 *
 * @package wpcode
 */

/**
 * WPCode_Snippet_Execute_HTML class.
 */
class WPCode_Snippet_Execute_HTML extends WPCode_Snippet_Execute_Type {

	/**
	 * The snippet type, HTML for this one.
	 *
	 * @var string
	 */
	public $type = 'html';

	/**
	 * Grab snippet code and return its output.
	 *
	 * @return string
	 */
	protected function prepare_snippet_output() {
		return $this->get_snippet_code();
	}
}
PK     ®‰U]QAjW�  �    includes/pluggable.phpnu „[µü¤        <?php
/**
 * Pluggable functions for WPCode.
 *
 * @package WPCode
 * @since 2.1.9
 */

// Exit if accessed directly.
if ( ! defined( 'ABSPATH' ) ) {
	exit;
}

if ( ! function_exists( 'wpcode_get_snippet' ) ) {
	/**
	 * Load a snippet by id, WP_Post or array.
	 *
	 * @param array|int|WP_Post $snippet Load a snippet by id, WP_Post or array.
	 *
	 * @return WPCode_Snippet
	 */
	function wpcode_get_snippet( $snippet ) {
		return new WPCode_Snippet( $snippet );
	}
}

if ( ! function_exists( 'wpcode_get_post_type' ) ) {
	/**
	 * Get the post type we use for snippets.
	 *
	 * @return string
	 */
	function wpcode_get_post_type() {
		return 'wpcode';
	}
}
PK     ®‰U]	±›‘m  m    build/connect.jsnu „[µü¤        (()=>{"use strict";(window.WPCodeConnect||function(n,o,t){jconfirm.defaults={closeIcon:!1,backgroundDismiss:!1,escapeKey:!0,animationBounce:1,useBootstrap:!1,theme:"modern",boxWidth:"560px",type:"blue",animateFromElement:!1,scrollToPreviousElement:!1};var e={$connectBtn:t("#wpcode-settings-connect-btn"),$connectKey:t("#wpcode-settings-upgrade-license-key")},c="<div class='excl-mark'>!</div>",i={init:function(){console.log("WPCodeConnect: init"),t(i.ready)},ready:function(){i.events()},events:function(){i.connectBtnClick()},connectBtnClick:function(){e.$connectBtn.on("click",function(){i.gotoUpgradeUrl()})},proAlreadyInstalled:function(n){const e=WPCodeSVG.WPCodeIcon("checkmark",88,88,"0 0 130.2 130.2","iconId","path circle");t.confirm({title:e+wpcode.almost_done,content:n.data.message,type:"blue",buttons:{confirm:{text:wpcode.plugin_activate_btn,btnClass:"wpcode-btn-confirm",action:function(){o.location.reload()}}}})},gotoUpgradeUrl:function(){var n={action:"wpcode_connect_url",key:e.$connectKey.val(),_wpnonce:wpcode.nonce};t.post(ajaxurl,n).done(function(n){if(n.success)return n.data.reload?void i.proAlreadyInstalled(n):void(o.location.href=n.data.url);t.confirm({title:c+wpcode.oops,closeIcon:!1,content:n.data.message,type:"blue",buttons:{ok:{text:wpcode.ok,btnClass:"wpcode-btn-confirm",action:function(){}}}})}).fail(function(n){i.failAlert(n)})},failAlert:function(n){t.confirm({title:c+wpcode.oops,content:wpcode.server_error+"<br>"+n.status+" "+n.statusText+" "+n.responseText,type:"blue",buttons:{ok:{text:wpcode.ok,btnClass:"wpcode-btn-confirm",action:function(){}}}})}};return i}(document,window,jQuery)).init()})();PK     ¯‰U]v¶èk\   \     build/admin.asset.phpnu „[µü¤        <?php return array('dependencies' => array('jquery'), 'version' => 'ea1876020f040c7c3371');
PK     ¯‰U]ø‘4T   T     build/notices.asset.phpnu „[µü¤        <?php return array('dependencies' => array(), 'version' => '0b691f4bb2185cdcf818');
PK     ¯‰U]HÍt_¸” ¸”   build/admin.cssnu „[µü¤        :root{--wpcode-background-gray:#F8F8F8;--wpcode-background-highlight:#F6FAFF;--wpcode-background-light:#F3F4F5;--wpcode-background-red:#DF2A35;--wpcode-background-white:#fff;--wpcode-border-color:#ddd;--wpcode-button-disabled-bg:#F5F5F5;--wpcode-button-disabled-border:1px solid #DDDDDD;--wpcode-button-disabled-text:#bbb;--wpcode-button-primary-bg:var(--wpcode-color-primary);--wpcode-button-primary-bg-hover:#397EEB;--wpcode-button-primary-text:#fff;--wpcode-button-primary-text-hover:#fff;--wpcode-button-secondary-bg:#F8F8F8;--wpcode-button-secondary-bg-hover:#fff;--wpcode-button-secondary-border:1px solid #DDDDDD;--wpcode-button-secondary-text:#777;--wpcode-button-orange-bg:#E06B44;--wpcode-button-orange-bg-hover:#e17f5e;--wpcode-button-secondary-text-hover:#454545;--wpcode-color-primary:#3568B7;--wpcode-color-red:#DF2A35;--wpcode-color-red-darker:#AB2028;--wpcode-font-size-l:18px;--wpcode-font-size-m:16px;--wpcode-font-size-s:14px;--wpcode-font-size-xl:22px;--wpcode-font-size-xs:12px;--wpcode-font-size-xxl:24px;--wpcode-input-border:1px solid #DDD;--wpcode-input-border-active:#3568B7;--wpcode-input-text-color:#454545;--wpcode-notice-success-bg:#09A347;--wpcode-notice-success-text:#fff;--wpcode-space-h:36px;--wpcode-space-v:24px;--wpcode-text-color-heading:#454545;--wpcode-text-color-highlight:#3568B7;--wpcode-text-color-light-bg:#848A8A;--wpcode-text-color-paragraph:#777777;--wpcode-text-color-placeholder:#bbb}@media screen and (max-width:782px){:root{--wpcode-space-h:24px}}:root .wpcode-dark-mode.wpcode-admin-page{--wpcode-background-gray:#2B2B2B;--wpcode-background-highlight:#1E293B;--wpcode-background-light:#3A3A3A;--wpcode-background-red:#A63239;--wpcode-background-white:#1E1E1E;--wpcode-border-color:#555;--wpcode-button-disabled-bg:#424242;--wpcode-button-disabled-border:1px solid #555;--wpcode-button-disabled-text:#777;--wpcode-button-primary-text:#fff;--wpcode-button-primary-text-hover:#fff;--wpcode-button-secondary-bg:#2B2B2B;--wpcode-button-secondary-bg-hover:#3A3A3A;--wpcode-button-secondary-border:1px solid #555;--wpcode-button-secondary-text:#ccc;--wpcode-button-orange-bg:#D97049;--wpcode-button-orange-bg-hover:#e59572;--wpcode-button-secondary-text-hover:#ddd;--wpcode-color-red:#fa525e;--wpcode-color-red-darker:#ec7d83;--wpcode-input-border:1px solid #555;--wpcode-input-border-active:#4A90E2;--wpcode-input-text-color:#ccc;--wpcode-notice-success-bg:#0BA858;--wpcode-notice-success-text:#fff;--wpcode-text-color-heading:#ccc;--wpcode-text-color-highlight:#4A90E2;--wpcode-text-color-light-bg:#A0A4A4;--wpcode-text-color-paragraph:#aaa;--wpcode-text-color-placeholder:#777}:root .wpcode-dark-mode.wpcode-admin-page table.widefat{background-color:var(--wpcode-background-white);border-color:var(--wpcode-border-color)}:root .wpcode-dark-mode.wpcode-admin-page .widefat td,:root .wpcode-dark-mode.wpcode-admin-page .widefat th{color:var(--wpcode-text-color-paragraph)}:root .wpcode-dark-mode.wpcode-admin-page .widefat tfoot tr td,:root .wpcode-dark-mode.wpcode-admin-page .widefat tfoot tr th,:root .wpcode-dark-mode.wpcode-admin-page .widefat thead tr td,:root .wpcode-dark-mode.wpcode-admin-page .widefat thead tr th{color:var(--wpcode-text-color-heading);border-color:var(--wpcode-border-color)}:root .wpcode-dark-mode.wpcode-admin-page.wp-core-ui select{background-color:var(--wpcode-background-gray);color:var(--wpcode-text-color-light-bg)}:root .wpcode-dark-mode.wpcode-admin-page.wpcode .button,:root .wpcode-dark-mode.wpcode-admin-page .button{background-color:var(--wpcode-button-secondary-bg);border-color:var(--wpcode-button-secondary-border);color:var(--wpcode-button-secondary-text)}:root .wpcode-dark-mode.wpcode-admin-page .button.button-primary{background-color:var(--wpcode-color-primary);border-color:var(--wpcode-border-color);color:var(--wpcode-button-primary-text)}:root .wpcode-dark-mode.wpcode-admin-page .wpcode-checkbox-toggle .wpcode-checkbox-toggle-slider{background-color:#555}:root .wpcode-dark-mode.wpcode-admin-page .wpcode-checkbox-toggle .wpcode-checkbox-toggle-slider:before{background-color:#ccc}:root .wpcode-dark-mode.wpcode-admin-page .wpcode-checkbox-toggle input:checked+.wpcode-checkbox-toggle-slider{background-color:var(--wpcode-color-primary)}:root .wpcode-dark-mode.wpcode-admin-page #wpfooter{color:var(--wpcode-text-color-paragraph)}:root .wpcode-dark-mode.wpcode-admin-page #wpfooter a{color:var(--wpcode-color-primary)}:root .wpcode-dark-mode.wpcode-admin-page input[type=color],:root .wpcode-dark-mode.wpcode-admin-page input[type=date],:root .wpcode-dark-mode.wpcode-admin-page input[type=datetime-local],:root .wpcode-dark-mode.wpcode-admin-page input[type=datetime],:root .wpcode-dark-mode.wpcode-admin-page input[type=email],:root .wpcode-dark-mode.wpcode-admin-page input[type=month],:root .wpcode-dark-mode.wpcode-admin-page input[type=number],:root .wpcode-dark-mode.wpcode-admin-page input[type=password],:root .wpcode-dark-mode.wpcode-admin-page input[type=search],:root .wpcode-dark-mode.wpcode-admin-page input[type=tel],:root .wpcode-dark-mode.wpcode-admin-page input[type=text],:root .wpcode-dark-mode.wpcode-admin-page input[type=time],:root .wpcode-dark-mode.wpcode-admin-page input[type=url],:root .wpcode-dark-mode.wpcode-admin-page input[type=week],:root .wpcode-dark-mode.wpcode-admin-page select,:root .wpcode-dark-mode.wpcode-admin-page textarea{background-color:var(--wpcode-background-gray);border-color:var(--wpcode-input-border);color:var(--wpcode-input-text-color)}:root .wpcode-dark-mode.wpcode-admin-page h3{color:var(--wpcode-text-color-heading)}:root .wpcode-dark-mode.wpcode-admin-page ul#adminmenu a.wp-has-current-submenu:after,:root .wpcode-dark-mode.wpcode-admin-page ul#adminmenu>li.current>a.current:after{border-right-color:var(--wpcode-background-light)}:root .wpcode-dark-mode.wpcode-admin-page input[type=checkbox],:root .wpcode-dark-mode.wpcode-admin-page input[type=radio]{background-color:var(--wpcode-background-gray);border-color:var(--wpcode-input-border);color:var(--wpcode-input-text-color)}:root .wpcode-dark-mode.wpcode-admin-page.wp-core-ui .button-disabled,:root .wpcode-dark-mode.wpcode-admin-page.wp-core-ui .button-secondary.disabled,:root .wpcode-dark-mode.wpcode-admin-page.wp-core-ui .button-secondary:disabled,:root .wpcode-dark-mode.wpcode-admin-page.wp-core-ui .button-secondary[disabled],:root .wpcode-dark-mode.wpcode-admin-page.wp-core-ui .button.disabled,:root .wpcode-dark-mode.wpcode-admin-page.wp-core-ui .button:disabled,:root .wpcode-dark-mode.wpcode-admin-page.wp-core-ui .button[disabled]{background-color:var(--wpcode-button-disabled-bg) !important;border-color:var(--wpcode-button-disabled-border) !important;color:var(--wpcode-button-disabled-text) !important}:root .wpcode-dark-mode.wpcode-admin-page a{color:var(--wpcode-text-color-light-bg)}:root .wpcode-dark-mode.wpcode-admin-page a:hover{color:var(--wpcode-input-border-active)}:root .wpcode-dark-mode.wpcode-admin-page .ac_match,:root .wpcode-dark-mode.wpcode-admin-page .subsubsub a.current{color:var(--wpcode-button-primary-text)}:root .wpcode-dark-mode.wpcode-admin-page .subsubsub a .count,:root .wpcode-dark-mode.wpcode-admin-page .subsubsub a.current .count{color:var(--wpcode-button-secondary-text)}:root .wpcode-dark-mode.wpcode-admin-page .wpcode-button{color:var(--wpcode-button-primary-text)}:root .wpcode-dark-mode.wpcode-admin-page .wpcode-button:hover{color:var(--wpcode-button-primary-text-hover)}:root .wpcode-dark-mode.wpcode-admin-page .wp-list-table.wpcode-snippets td.column-tags a{color:var(--wpcode-text-color-light-bg)}:root .wpcode-dark-mode.wpcode-admin-page{color:var(--wpcode-text-color-paragraph)}:root .wpcode-dark-mode.wpcode-admin-page #wpcode-header-between #screen-meta-links .show-settings{color:var(--wpcode-text-color-light-bg)}:root .wpcode-dark-mode.wpcode-admin-page #wpcode-header-between #screen-meta-links .show-settings:hover{color:var(--wpcode-input-border-active)}:root .wpcode-dark-mode.wpcode-admin-page .notice{background:var(--wpcode-background-white);border-color:var(--wpcode-border-color)}:root .wpcode-dark-mode.wpcode-admin-page .select2-container--default .select2-selection--multiple,:root .wpcode-dark-mode.wpcode-admin-page .select2-dropdown{background-color:var(--wpcode-background-gray);border-color:var(--wpcode-input-border);color:var(--wpcode-input-text-color)}:root .wpcode-dark-mode.wpcode-admin-page .wpcode-content .select2-container.select2-container--default .select2-selection--multiple{border-color:var(--wpcode-input-border)}:root .wpcode-dark-mode.wpcode-admin-page .wpcode-button-toggle svg path{fill:var(--wpcode-text-color-light-bg)}:root .wpcode-dark-mode.wpcode-admin-page .flatpickr-calendar{background-color:var(--wpcode-background-gray);border-color:var(--wpcode-input-border);color:var(--wpcode-input-text-color)}:root .wpcode-dark-mode.wpcode-admin-page .flatpickr-day{color:var(--wpcode-input-text-color)}:root .wpcode-dark-mode.wpcode-admin-page .flatpickr-time .flatpickr-time-separator,:root .wpcode-dark-mode.wpcode-admin-page .flatpickr-time .flatpickr-am-pm,:root .wpcode-dark-mode.wpcode-admin-page span.flatpickr-weekday{color:var(--wpcode-text-color-paragraph)}:root .wpcode-dark-mode.wpcode-admin-page .flatpickr-months .flatpickr-prev-month,:root .wpcode-dark-mode.wpcode-admin-page .flatpickr-months .flatpickr-next-month{color:var(--wpcode-text-color-paragraph);fill:var(--wpcode-text-color-paragraph)}:root .wpcode-dark-mode.wpcode-admin-page .flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:var(--wpcode-text-color-paragraph)}:root .wpcode-dark-mode.wpcode-admin-page .flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:var(--wpcode-text-color-paragraph)}:root .wpcode-dark-mode.wpcode-admin-page .wpcode-admin-tabs li button,:root .wpcode-dark-mode.wpcode-admin-page .wpcode-admin-tabs li a{border-bottom-color:var(--wpcode-border-color)}:root .wpcode-dark-mode.wpcode-admin-page .wpcode-admin-tabs li button.active,:root .wpcode-dark-mode.wpcode-admin-page .wpcode-admin-tabs li a.active{border-color:var(--wpcode-color-primary)}:root .wpcode-dark-mode.wpcode-admin-page table.diff .diff-deletedline{background-color:#3b0309}:root .wpcode-dark-mode.wpcode-admin-page table.diff .diff-addedline{background-color:#042a04}.wpcode-button{background-color:var(--wpcode-button-primary-bg);border:1px solid var(--wpcode-button-primary-bg);border-radius:4px;color:var(--wpcode-button-primary-text);cursor:pointer;display:inline-block;font-size:var(--wpcode-font-size-s);font-weight:700;line-height:1;padding:10px 16px;text-decoration:none}.wpcode-button.wpcode-button-icon{align-items:center;display:inline-flex;padding-bottom:12px;padding-top:12px}.wpcode-button.wpcode-button-icon svg{margin-right:5px}.wpcode-button.wpcode-button-icon.wpcode-copy-target{padding-bottom:10px;padding-top:10px}.wpcode-button.wpcode-button-wide{padding-left:50px;padding-right:50px}.wpcode-button:hover,.wpcode-button:focus{background-color:var(--wpcode-button-primary-bg-hover);border-color:var(--wpcode-button-primary-bg-hover);color:var(--wpcode-button-primary-text-hover)}.wpcode-button.wpcode-button-secondary{background-color:var(--wpcode-button-secondary-bg);border:var(--wpcode-button-secondary-border);color:var(--wpcode-button-secondary-text)}.wpcode-button.wpcode-button-secondary:hover,.wpcode-button.wpcode-button-secondary:focus{background-color:var(--wpcode-button-secondary-bg-hover);color:var(--wpcode-button-secondary-text-hover)}.wpcode-button.wpcode-button-secondary.wpcode-button-secondary-inactive{background-color:var(--wpcode-button-disabled-bg);border-color:var(--wpcode-button-disabled-bg)}.wpcode-button.wpcode-button-secondary.wpcode-button-secondary-selected{border-color:var(--wpcode-button-primary-bg)}.wpcode-button.wpcode-button-orange{background-color:var(--wpcode-button-orange-bg);border-color:var(--wpcode-button-orange-bg);color:var(--wpcode-button-primary-text)}.wpcode-button.wpcode-button-orange:hover,.wpcode-button.wpcode-button-orange:focus{background-color:var(--wpcode-button-orange-bg-hover);color:var(--wpcode-button-primary-text)}.wpcode-button.wpcode-button-large{align-items:center;display:inline-flex;font-size:var(--wpcode-font-size-m);height:56px;justify-content:center;padding-left:var(--wpcode-space-h);padding-right:var(--wpcode-space-h);text-align:center}.wpcode-button.wpcode-button-large svg{margin-right:7px}.wpcode-button.wpcode-button-small{font-size:var(--wpcode-font-size-xs);padding:9px}.wpcode-button:disabled:hover,.wpcode-button:disabled{background-color:var(--wpcode-button-disabled-bg);border:var(--wpcode-button-disabled-border);color:var(--wpcode-button-disabled-text)}.wpcode-button-toggle{align-items:center;display:flex;justify-content:space-between}@media screen and (min-width:783px){.wpcode-button-toggle{min-width:424px}}.wpcode-button-toggle .wpcode-button{width:calc(50% - 5px);background:var(--wpcode-background-white);color:var(--wpcode-input-text-color)}.wpcode-button-toggle .wpcode-button-secondary{border:2px solid var(--wpcode-color-primary)}.wpcode-success-icon{display:none}.wpcode-show-success-icon .wpcode-success-icon{display:inline-block}.wpcode-show-success-icon .wpcode-default-icon{display:none}.wpcode-button-just-icon{background:none;border:none;cursor:pointer;padding:0}.wpcode-button-just-icon .wpcode-icon{display:block}.wpcode-text-button-icon{align-items:center;background:none;border:none;color:var(--wpcode-text-color-paragraph);cursor:pointer;display:inline-flex;font-size:var(--wpcode-font-size-s);font-weight:600;padding:0}.wpcode-text-button-icon:hover{color:var(--wpcode-text-color-heading)}.wpcode-text-button-icon:hover path{fill:var(--wpcode-text-color-heading)}.wpcode-text-button-icon .wpcode-icon{margin-right:5px}.wpcode-just-icon-button{background:none;border:none;cursor:pointer}.wpcode-button-text{background:none;border:none;color:var(--wpcode-text-color-paragraph);cursor:pointer;font-size:var(--wpcode-font-size-xs);padding:0;text-decoration:underline}.wpcode-button-text .wpcode-icon{margin-right:11px}.wpcode-button-text:focus,.wpcode-button-text:hover{text-decoration:none;background:none;color:var(--wpcode-text-color-heading)}.wpcode-button-text:focus svg path,.wpcode-button-text:hover svg path{fill:var(--wpcode-text-color-heading)}#wpbody-content .wpcode-button-ai-generate{position:relative;background:var(--wpcode-color-primary);border:none;color:white;cursor:pointer;overflow:hidden;z-index:1;border-radius:5px;transition:background-color 0.5s ease 0s,color 0.5s ease 0s}#wpbody-content .wpcode-button-ai-generate svg path{fill:#fff;transition:fill 0.5s ease 0s}#wpbody-content .wpcode-button-ai-generate .wpcode-button-ai-text-done,#wpbody-content .wpcode-button-ai-generate .wpcode-button-ai-text-loading{display:none}#wpbody-content .wpcode-button-ai-generate:focus,#wpbody-content .wpcode-button-ai-generate:hover{background:var(--wpcode-color-primary);color:#fff}#wpbody-content .wpcode-button-ai-generate:focus:before,#wpbody-content .wpcode-button-ai-generate:hover:before{opacity:0}#wpbody-content .wpcode-button-ai-generate:before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,#6e2dfb 0%,#a01cfd 100%);transition:opacity 0.5s ease;z-index:-1}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading{background:white;color:#a01cfd}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done:before,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading:before{display:none}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done svg path,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading svg path{fill:#a01cfd;animation-name:wpcode-shape-scale;animation-duration:2s;animation-iteration-count:infinite;transform-origin:center center;transform-box:fill-box}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done g:nth-child(2) path,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading g:nth-child(2) path{animation-delay:0.75s}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done g:nth-child(3) path,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading g:nth-child(3) path{animation-delay:1.5s}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done .wpcode-button-ai-text-default,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading .wpcode-button-ai-text-default{display:none}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done .wpcode-button-ai-text-loading,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading .wpcode-button-ai-text-loading{display:block}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done .wpcode-button-ai-text-done{display:block}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done .wpcode-button-ai-text-default,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done .wpcode-button-ai-text-loading{display:none}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-not-available{filter:grayscale(1)}.wpcode-ai-improve{margin-right:14px;padding:10px 10px}.wpcode-ai-improve svg path{fill:#a01cfd}.wpcode-headers-footers #wpcontent,.wpcode-admin-page #wpcontent{padding-left:0 !important}.wpcode-headers-footers #wpwrap,.wpcode-admin-page #wpwrap{background:var(--wpcode-background-light)}.wpcode-header-top{align-items:center;background:var(--wpcode-background-gray);display:flex;justify-content:space-between;padding:var(--wpcode-space-v) var(--wpcode-space-h)}.wpcode-header-right{display:flex;flex-flow:wrap;justify-content:flex-end}@media screen and (min-width:783px){.wpcode-header-right{display:block}}.wpcode-header-right .wpcode-toggle-testing-mode-wrap{order:3;margin-top:14px}@media screen and (min-width:783px){.wpcode-header-right .wpcode-toggle-testing-mode-wrap{margin-top:0}}.wpcode-header-right button{margin-left:18px;vertical-align:middle;order:1}.wpcode-header-left svg{display:block}.wpcode-header-bottom{align-items:center;background:var(--wpcode-background-white);border-color:var(--wpcode-border-color);border-style:solid;border-width:1px 0;display:flex;justify-content:space-between;min-height:60px;padding:0 var(--wpcode-space-h)}@media screen and (max-width:782px){.wpcode-header-bottom{flex-flow:wrap;padding-top:calc(var(--wpcode-space-v) / 2);padding-bottom:calc(var(--wpcode-space-v) / 2)}}.wpcode-header-bottom h1{color:var(--wpcode-text-color-heading);font-size:var(--wpcode-font-size-xl);margin:0}@media screen and (min-width:783px){.wpcode-header-bottom.wpcode-sticky{left:160px;position:fixed;right:0;top:32px;z-index:1055}}.folded .wpcode-header-bottom.wpcode-sticky{left:36px}.wpcode-column{align-items:center;display:flex;flex-flow:row;margin:6px 0}@media screen and (min-width:783px){.wpcode-column{margin:0}}#wpcode-header-logo{display:block}.wpcode-notifications-inbox{position:relative}.wpcode-notifications-inbox[data-count]:after{background:var(--wpcode-color-red);border-radius:50%;bottom:100%;color:#fff;content:attr(data-count);display:block;font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:12px;font-weight:700;height:16px;left:100%;line-height:18px;min-width:16px;position:absolute;text-align:center;transform:translate(-50%,50%)}.toplevel_page_wpcode .wpcode-header-top{margin-top:40px}@media screen and (min-width:783px){.toplevel_page_wpcode .wpcode-header-top{margin-top:0}}.wpcode-snippet-manager .wpcode-header-bottom .wpcode-column .wpcode-button{margin-left:12px}.wpcode-snippet-manager .wpcode-header-bottom .wpcode-column .wpcode-button.wpcode-button-save-to-library{margin-left:0}@media screen and (max-width:782px){.wpcode-title-button h1{margin-right:20px}}.wpcode-mobile-dropdown-toggle{display:none}@media screen and (max-width:1160px){.wpcode-mobile-dropdown-toggle{display:block}}@media screen and (max-width:1160px){#wpcode-snippet-type-buttons.wpcode-admin-tabs{display:block;overflow:hidden;height:60px}#wpcode-snippet-type-buttons.wpcode-admin-tabs li{float:none !important;display:block}#wpcode-snippet-type-buttons.wpcode-admin-tabs.wpcode-open{height:auto}.wpcode-title-button{display:flex;align-items:flex-start}.wpcode-title-button>.wpcode-button{margin-top:10px}.wpcode-title-button>.wpcode-mobile-dropdown-toggle{margin-top:15px;margin-right:20px}}.wpcode-help-tooltip .wpcode-help-tooltip-text.wpcode-check-updates-tooltip:before{height:14px}.wpcode-admin-tabs{font-size:14px;list-style:none;margin:0;overflow:auto;padding:0}.wpcode-admin-tabs li{float:left;margin:0 30px 0 0;padding:0}.wpcode-admin-tabs li button{border:none;background:transparent;cursor:pointer}.wpcode-admin-tabs li button,.wpcode-admin-tabs li a{border-bottom:4px solid #fff;box-shadow:none;color:var(--wpcode-text-color-paragraph);display:block;font-weight:600;padding:20px 0 18px 0;text-decoration:none;transition:border 300ms ease}.wpcode-admin-tabs li button.wpcode_pro_type_lite,.wpcode-admin-tabs li a.wpcode_pro_type_lite{opacity:0.5}.wpcode-admin-tabs li button.wpcode_pro_type_lite:hover,.wpcode-admin-tabs li a.wpcode_pro_type_lite:hover{border:none}.wpcode-admin-tabs li button.wpcode_pro_type_lite:focus,.wpcode-admin-tabs li a.wpcode_pro_type_lite:focus{border:none}.wpcode-admin-tabs li button.active,.wpcode-admin-tabs li a.active{border-color:var(--wpcode-color-primary);color:var(--wpcode-text-color-heading)}.wpcode-admin-tabs li button:focus,.wpcode-admin-tabs li a:focus{border-color:var(--wpcode-color-primary)}.wpcode-admin-tabs li button:hover,.wpcode-admin-tabs li a:hover{border-color:var(--wpcode-text-color-paragraph)}.wpcode-admin-tab-content{display:none;position:relative}.wpcode-admin-tab-content.active{display:block}.wpcode-content{padding:28px var(--wpcode-space-h)}.wpcode-content *{box-sizing:border-box}.wpcode-content h2{color:var(--wpcode-text-color-heading);font-size:var(--wpcode-font-size-l)}.wpcode-content p{color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-s)}.wpcode-add-snippet .wpcode-content{padding-top:20px}.wpcode-content>hr{margin-bottom:36px;margin-top:36px}.wpcode-code-textarea h2{margin:12px 0 20px}.wrap{margin:0;padding:0 var(--wpcode-space-h)}.wrap div.error,.wrap div.updated{margin-bottom:0;position:relative}.wrap div:first-child{margin-top:28px}#wpcontent .wrap .wpcode-review-step{margin-top:0}#wpfooter{padding-left:var(--wpcode-space-h);padding-right:var(--wpcode-space-h)}.wpcode-modal-overlay{background:rgba(0,0,0,0.3);bottom:0;display:none;left:0;position:fixed;right:0;top:0;z-index:1000}.admin-bar .wpcode-modal-overlay{top:32px}.wpcode-show-modal .wpcode-modal-overlay{display:block}.wpcode-modal{background:#fff;border:1px solid var(--wpcode-border-color);border-radius:8px;display:none;left:50%;max-width:100%;padding:25px;position:fixed;top:50%;transform:translate(-50%,-50%);width:752px;z-index:1050}.wpcode-show-modal .wpcode-modal{display:block}@media screen and (min-width:783px){.wpcode-modal{margin-left:18px}}@media screen and (min-width:961px){.wpcode-modal{margin-left:80px}.folded .wpcode-modal{margin-left:18px}}.wpcode-content .CodeMirror{border:1px solid var(--wpcode-border-color);border-radius:3px 3px 0 0;font-size:var(--wpcode-font-size-s);line-height:25px}.wpcode-content .CodeMirror .CodeMirror-matchingbracket{background:rgba(219,166,23,.3);color:inherit}.wpcode-content .CodeMirror-linenumber{color:var(--wpcode-text-color-light-bg);font-size:var(--wpcode-font-size-xs)}.wpcode-content .CodeMirror-lines{padding:20px 0}.wpcode-content .CodeMirror-gutters{background-color:var(--wpcode-button-disabled-bg)}.wpcode-content .CodeMirror-focused .cm-matchhighlight{background-color:var(--wpcode-border-color)}.wpcode-editor-auto .CodeMirror{height:auto;min-height:300px;border-radius:3px}.wpcode-editor-auto .CodeMirror-sizer{min-height:300px !important}.CodeMirror-sizer:before{color:var(--wpcode-text-color-light-bg);position:absolute}[data-code-type="php"] .CodeMirror-sizer:before{content:"<?php"}[data-code-type="js"] .CodeMirror-sizer:before{content:"<script>"}.wpcode-dark-mode .CodeMirror{background:#1c1b1b;color:#fff}.wpcode-dark-mode div.CodeMirror-selected{background:#545167 !important}.wpcode-dark-mode .CodeMirror-gutters{background:#1c1b1b;border-right:0}.wpcode-dark-mode .CodeMirror-linenumber{color:#545167}.wpcode-dark-mode .CodeMirror-cursor{border-left:1px solid #ffad5c;border-right:.5em solid #ffad5c;opacity:.5}.wpcode-dark-mode .CodeMirror-activeline-background{background:#363342;opacity:.5}.wpcode-dark-mode .cm-fat-cursor .CodeMirror-cursor{background:#ffad5c;opacity:.5}.wpcode-dark-mode span.cm-atom,.wpcode-dark-mode span.cm-attribute,.wpcode-dark-mode span.cm-hr,.wpcode-dark-mode span.cm-keyword,.wpcode-dark-mode span.cm-link,.wpcode-dark-mode span.cm-quote,.wpcode-dark-mode span.cm-variable{color:#fff}.wpcode-dark-mode span.cm-keyword{color:#88aece}.wpcode-dark-mode span.cm-number{color:#f08d49}.wpcode-dark-mode span.cm-property{color:#9a86fd}.wpcode-dark-mode span.cm-negative,.wpcode-dark-mode span.cm-punctuation,.wpcode-dark-mode span.cm-unit{color:#e09142}.wpcode-dark-mode span.cm-string{color:#b5bd68}.wpcode-dark-mode span.cm-operator{color:#fff}.wpcode-dark-mode span.cm-positive{color:#6a51e6}.wpcode-dark-mode span.cm-string-2,.wpcode-dark-mode span.cm-type,.wpcode-dark-mode span.cm-url,.wpcode-dark-mode span.cm-variable-2,.wpcode-dark-mode span.cm-variable-3{color:#fff}.wpcode-dark-mode span.cm-builtin,.wpcode-dark-mode span.cm-def,.wpcode-dark-mode span.cm-em,.wpcode-dark-mode span.cm-header,.wpcode-dark-mode span.cm-qualifier,.wpcode-dark-mode span.cm-tag{color:#eeebff}.wpcode-dark-mode span.cm-bracket,.wpcode-dark-mode span.cm-comment{color:#999}.wpcode-dark-mode span.cm-error,.wpcode-dark-mode span.cm-invalidchar{color:red}.wpcode-dark-mode span.cm-header{font-weight:400}.wpcode-dark-mode .CodeMirror-matchingbracket{color:#eeebff !important;text-decoration:underline}.wpcode-resize-handle{background:#f7f7f7;height:20px;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:row-resize;border-bottom:1px solid #ddd;border-left:1px solid #ddd;border-right:1px solid #ddd;margin-bottom:var(--wpcode-space-h);border-radius:0 0 3px 3px}.wpcode-resize-handle:before{content:'\2261';color:#999;position:absolute;left:50%}.wpcode-resize-handle:hover{background:#f0f0f0}.wpcode-resize-handle:hover:before{color:#000}.wpcode-resizing .CodeMirror{min-height:200px !important}.wpcode-editor-auto .wpcode-resize-handle,.wpcode-code-type-blocks .wpcode-resize-handle,.wpcode-code-type-text .wpcode-resize-handle{display:none}.wpcode-editor-auto .wpcode-code-textarea,.wpcode-code-type-blocks .wpcode-code-textarea,.wpcode-code-type-text .wpcode-code-textarea{margin-bottom:var(--wpcode-space-h)}.wpcode-input-title input.wpcode-input-text{font-size:var(--wpcode-font-size-m)}input.wpcode-input-number,input.wpcode-input-text,input.wpcode-input-date,input.wpcode-input-date-only{border:var(--wpcode-input-border);border-radius:4px;color:var(--wpcode-input-text-color);font-size:var(--wpcode-font-size-s);height:40px}input.wpcode-input-number:focus,input.wpcode-input-text:focus,input.wpcode-input-date:focus,input.wpcode-input-date-only:focus{border-color:var(--wpcode-input-border-active)}input.wpcode-input-text,input.wpcode-input-date,input.wpcode-input-date-only{width:100%}.wpcode-input-textarea{border:var(--wpcode-input-border);border-radius:4px;color:var(--wpcode-input-text-color);font-size:var(--wpcode-font-size-s);max-width:100%;resize:none;width:424px}.wpcode-input-select{align-items:center;display:flex}.wpcode-input-select label{color:var(--wpcode-text-color-heading);font-size:var(--wpcode-font-size-s);font-weight:600}.wpcode-input-select .wpcode-checkbox-toggle,.wpcode-input-select select{margin-left:13px}.wpcode-metabox-form-row-input{width:100%;position:relative}.wpcode-metabox-form-row-input select{min-width:424px}@media screen and (max-width:782px){.wpcode-metabox-form-row-input select{min-width:0;width:100%}}.wpcode-inline-select select{min-width:98px}.wpcode-inline-select>label{color:var(--wpcode-text-color-paragraph);display:inline-block;font-size:13px;margin-left:12px}.wpcode-separator{border-color:var(--wpcode-border-color);border-style:solid;border-width:1px 0 0;margin:var(--wpcode-space-v) 0}.wpcode-checkbox-toggle{display:inline-block;height:20px;position:relative;width:36px}.wpcode-checkbox-toggle input{opacity:0;height:100%;width:100%;position:absolute}.wpcode-checkbox-toggle input:checked+.wpcode-checkbox-toggle-slider{background-color:var(--wpcode-color-primary)}.wpcode-checkbox-toggle input:checked+.wpcode-checkbox-toggle-slider:before{transform:translateX(16px)}.wpcode-checkbox-toggle input:focus+.wpcode-checkbox-toggle-slider{outline:1px dotted #212121;outline:1px auto -webkit-focus-ring-color}.wpcode-checkbox-toggle input:focus:not(:focus-visible)+.wpcode-checkbox-toggle-slider{outline:none}.wpcode-checkbox-toggle .wpcode-checkbox-toggle-slider{background-color:#ccc;border-radius:20px;bottom:0;cursor:pointer;left:0;position:absolute;right:0;top:0;transition:.4s}.wpcode-checkbox-toggle .wpcode-checkbox-toggle-slider:before{background-color:white;border-radius:50%;bottom:3px;content:"";height:14px;left:3px;position:absolute;transition:.4s;width:14px}.wpcode-checkbox-toggle-label{margin-left:14px;color:var(--wpcode-text-color-heading);font-size:14px;font-weight:600}.wpcode-checkbox-row{margin-bottom:25px}.wpcode-checkbox-row.wpcode-checkbox-row-disabled{opacity:0.7;cursor:not-allowed;pointer-events:none}.wpcode-checkbox-row .description{margin:14px 0}.wpcode-input-radio{margin-right:20px;flex:1 1;text-align:center}.wpcode-input-radio label{display:flex;flex-flow:column;border-radius:4px;justify-content:center;padding:20px;background-color:var(--wpcode-button-disabled-bg);border:2px solid var(--wpcode-button-disabled-bg);color:var(--wpcode-text-color-paragraph)}.wpcode-input-radio label:hover{color:var(--wpcode-text-color-heading)}.wpcode-input-radio label:hover svg path{fill:var(--wpcode-text-color-heading)}.wpcode-input-radio input[type="radio"]{opacity:0;position:absolute}.wpcode-input-radio input[type="radio"]:checked+label{border-color:var(--wpcode-color-primary);background:var(--wpcode-background-white);color:var(--wpcode-text-color-heading)}.wpcode-input-radio input[type="radio"]:checked+label svg path{fill:var(--wpcode-text-color-heading)}.wpcode-input-radio input[type="radio"]:disabled+label{opacity:0.9}.wpcode-input-radio input[type="radio"]:disabled+label:hover{color:var(--wpcode-text-color-paragraph)}.wpcode-input-radio input[type="radio"]:disabled+label:hover svg path{fill:var(--wpcode-text-color-paragraph)}.wpcode-input-radio .wpcode-input-radio-icon{text-align:center}.wpcode-input-radio .wpcode-input-radio-label{font-size:16px;font-weight:600;margin-top:10px;display:block}.wpcode-input-with-button{display:flex;width:100%}.wpcode-input-with-button .wpcode-input-text{margin-right:10px;width:100%}.wpcode-input-with-button .wpcode-button{padding-bottom:10px;padding-top:10px}.wpcode-snippet-manager.wp-core-ui select,.wpcode-tools.wp-core-ui select,.wpcode-generator.wp-core-ui select{background-position-x:calc(100% - 13px);border-color:var(--wpcode-border-color);border-radius:4px;color:var(--wpcode-text-color-heading);line-height:38px;min-height:40px;padding-left:12px;padding-right:32px}.wpcode-content .select2-container .select2-search--inline{margin:0}.wpcode-content .select2-container .select2-search--inline .select2-search__field{color:var(--wpcode-text-color-heading);font-size:14px;margin:5px 5px 0}.wpcode-content .select2-container.select2-container--default .select2-selection--multiple{border-color:var(--wpcode-border-color)}.wpcode-content .select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:var(--wpcode-button-disabled-bg);border:none;border-radius:3px;color:var(--wpcode-text-color-heading);font-size:14px;margin:9px 8px 9px 0;padding:1px 4px}.wpcode-content .select2-container.select2-container--default .select2-selection--multiple .select2-selection__rendered{display:block;padding:0 8px}.wpcode-content .select2-container.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{margin-right:4px}.wpcode-content .select2-container .select2-selection--single{height:40px;font-size:var(--wpcode-font-size-s);border-color:var(--wpcode-border-color)}.wpcode-content .select2-container .select2-selection--single .select2-selection__rendered{padding:0 8px;line-height:40px}.wpcode-content .select2-container .select2-selection--single .select2-selection__arrow{height:40px;width:30px}.wpcode-admin-page .select2-dropdown{border-color:var(--wpcode-border-color);color:var(--wpcode-text-color-heading)}.wpcode-admin-page .select2-results .wpcode-pro-pill{margin-left:7px;vertical-align:middle}.wpcode-admin-page .select2-results>.select2-results__options>.select2-results__option[role="list"]{padding:0}.wpcode-checkboxes-list label{display:block;margin-bottom:16px}.wpcode-checkboxes-list input{margin-right:12px}.wpcode-file-upload .wpcode-file-field{background-color:var(--wpcode-background-white);border:1px solid #ddd;border-radius:3px;box-shadow:none;color:var(--wpcode-text-color-paragraph);display:inline-block;margin:0 10px 0 0;min-height:40px;overflow:hidden;padding:10px 10px;text-overflow:ellipsis;vertical-align:middle;white-space:nowrap;width:400px}.wpcode-file-upload input[type=file]{height:0.1px;opacity:0;overflow:hidden;position:absolute;width:0.1px;z-index:-1}.wpcode-file-upload label{cursor:pointer;display:inline-flex;outline:none;padding:0;text-overflow:ellipsis;white-space:nowrap}.wpcode-checkbox-multiselect-columns{max-width:600px;position:relative}.wpcode-checkbox-multiselect-columns:after{clear:both;content:".";display:block;font-size:0;height:0;line-height:0;min-height:0;visibility:hidden}.wpcode-checkbox-multiselect-columns:before{background-image:url("data:image/svg+xml,%3Csvg width=%2718%27 height=%2714%27 viewBox=%270 0 18 14%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M3.99 6L0 10L3.99 14V11H11V9H3.99V6ZM18 4L14.01 0V3H7V5H14.01V8L18 4Z%27 fill=%27%23999%27/%3E%3C/svg%3E%0A");color:#999;content:"";display:block;height:14px;left:50%;margin:0 0 0 -10px;position:absolute;top:130px;width:18px}.wpcode-checkbox-multiselect-columns .header{font-size:13px;font-weight:600;margin:0;padding:0 0 5px 0;text-align:center}.wpcode-checkbox-multiselect-columns .first-column,.wpcode-checkbox-multiselect-columns .second-column{float:left;width:45%}.wpcode-checkbox-multiselect-columns .second-column{float:right}.wpcode-checkbox-multiselect-columns .second-column ul li{padding:10px}.wpcode-checkbox-multiselect-columns ul{background-color:#fff;border:1px solid #ddd;border-radius:3px;height:250px;list-style-type:none;margin:0;overflow-y:auto;padding:0;position:relative}.wpcode-checkbox-multiselect-columns ul li{border-bottom:1px #eee solid;color:var(--wpcode-text-color-paragraph);font-size:14px;margin:0}.wpcode-checkbox-multiselect-columns ul li label{display:block;padding:10px 10px 10px 32px;position:relative;vertical-align:baseline}.wpcode-checkbox-multiselect-columns ul li label:hover{background-color:var(--wpcode-color-primary);color:#fff}.wpcode-checkbox-multiselect-columns ul li label:before{color:#ddd;content:"\f0c8";font:normal normal normal 16px/1 Georgia;-webkit-font-smoothing:antialiased;left:10px;-moz-osx-font-smoothing:grayscale;position:absolute;text-rendering:auto;top:12px}.wpcode-checkbox-multiselect-columns ul li label.checked{color:rgba(119,119,119,0.6)}.wpcode-checkbox-multiselect-columns ul li label.checked:hover{color:#fff}.wpcode-checkbox-multiselect-columns ul li label.checked:before{background-image:url("data:image/svg+xml,%3Csvg width=%2710%27 height=%278%27 viewBox=%270 0 10 8%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M1.38462 3.03448L0 4.13793L3.23077 8H4.46154L10 0.965517L8.76923 0L3.69231 4.96552L1.38462 3.03448Z%27 fill=%27%234982BF%27/%3E%3C/svg%3E%0A");background-position:3px 3px;background-repeat:no-repeat;background-size:10px 8px}.wpcode-checkbox-multiselect-columns ul li label input{display:none}.wpcode-checkbox-multiselect-columns .all{color:#999;display:inline-block;font-size:13px;margin:10px 0 0}.wpcode-admin-page .select2-container--default{font-size:12px;font-weight:500}.wpcode-admin-page .select2-container--default .select2-results__option .select2-results__option{padding-left:30px;color:var(--wpcode-text-color-heading);font-weight:500;margin-bottom:0}.wpcode-admin-page .select2-container--default .select2-results__option .select2-results__option[aria-disabled=true]{color:var(--wpcode-text-color-paragraph);opacity:0.5}.wpcode-admin-page .select2-container--default .select2-results__option .select2-results__option[aria-selected=true]{background-color:var(--wpcode-button-primary-bg);color:#fff}.wpcode-admin-page .select2-container--default .select2-results__option--highlighted[aria-selected]{background:var(--wpcode-button-disabled-bg);color:var(--wpcode-text-color-light-bg)}.wpcode-admin-page .select2-container--default .select2-results__group{padding-left:16px;color:var(--wpcode-text-color-paragraph);font-weight:500}label .wpcode-icon-mobile{transform:scale(0.86)}.wpcode-wide-text{width:100%;max-width:500px}.wpcode-metabox-form-row-input .wpcode-alert{max-width:800px}.wpcode-label-text-row p:first-child{margin-top:0}.wpcode-input-row-schedule{display:flex;justify-content:space-between}.wpcode-input-row-schedule .wpcode-input-row-input{width:calc(50% - 10px);position:relative}.wpcode-input-row-schedule+.wpcode-help-tooltip,.wpcode-input-with-button+.wpcode-help-tooltip{position:absolute;left:100%;top:10px;margin-left:15px}@media screen and (max-width:782px){.wpcode-input-row-schedule+.wpcode-help-tooltip,.wpcode-input-with-button+.wpcode-help-tooltip{display:none}}.wpcode-input-button-clear{position:absolute;right:7px;top:15px;width:14px;height:14px;border:none;text-align:center;margin:0;padding:0;background:transparent;cursor:pointer;border-radius:50%}.wpcode-input-button-clear svg{width:14px;height:14px;display:block}.wpcode-input-button-clear svg path{}.wpcode-flex{display:flex}.wpcode-code-textarea>.wpcode-flex{justify-content:space-between}@media screen and (max-width:782px){.wpcode-code-textarea>.wpcode-flex{flex-flow:wrap}}.wpcode-input-title{margin-bottom:8px}#wpcode_snippet_code{display:none}.wpcode-syntax-highlighting-disabled #wpcode_snippet_code{display:block}.wpcode-status-text{color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-s);margin-right:8px;min-width:51px}#wpcode_block_editor,#wp-wpcode_snippet_text-wrap{display:none}.wpcode-code-type-text #wpcode_block_editor,.wpcode-code-type-text #wpcode_snippet_code,.wpcode-code-type-text .wpcode-code-textarea .CodeMirror{display:none}.wpcode-code-type-text #wp-wpcode_snippet_text-wrap{display:block}.wpcode-code-type-blocks #wp-wpcode_snippet_text-wrap,.wpcode-code-type-blocks .wpcode-code-textarea .CodeMirror{display:none}.wpcode-code-type-blocks .wpcode-code-textarea{margin:0}.wpcode-code-type-blocks #wpcode_block_editor{display:block}.wpcode-add-snippet-description{padding:var(--wpcode-space-v);background:var(--wpcode-background-white);border:1px solid var(--wpcode-border-color);border-bottom:0;border-radius:0 4px 0 0;font-size:var(--wpcode-font-size-s);color:var(--wpcode-text-color-paragraph)}.wpcode-add-snippet-description a:hover{text-decoration:none}.wpcode-add-snippet-description+.wpcode-metabox{border-radius:0 0 4px 4px}.wpcode-button-save-to-library{margin-right:14px;text-decoration:none;font-size:var(--wpcode-font-size-s);font-weight:600;color:var(--wpcode-text-color-paragraph)}.wpcode-button-save-to-library svg{vertical-align:middle}.wpcode-button-save-to-library svg path{fill:var(--wpcode-text-color-paragraph)}.wpcode-button-save-to-library:hover{text-decoration:underline;color:var(--wpcode-text-color-heading)}.wpcode-button-save-to-library:hover svg path{fill:var(--wpcode-text-color-heading)}.wpcode-button-save-to-library:disabled{background-color:transparent;border:none}.wpcode-button-save-to-library#wpcode_save_to_library{opacity:0.5}.wpcode-device-type-picker{margin:0 0 20px;display:flex;max-width:600px}@media screen and (max-width:782px){.wpcode-device-type-picker{display:block}.wpcode-device-type-picker .wpcode-input-radio{width:100%;margin-bottom:12px}.wpcode-device-type-picker .wpcode-input-radio label{flex-flow:row;justify-content:start;padding:12px;align-items:center}.wpcode-device-type-picker .wpcode-input-radio label .wpcode-input-radio-icon{margin-right:12px}.wpcode-device-type-picker .wpcode-input-radio label .wpcode-input-radio-icon svg{max-width:24px;height:auto}.wpcode-device-type-picker .wpcode-input-radio label .wpcode-input-radio-label{margin-top:0}}.wpcode-device-type-area{position:relative;display:flex;margin-bottom:20px}@media (max-width:1442px){.wpcode-device-type-area{flex-flow:column}}.wpcode-device-type-area .wpcode-blur-area{flex-shrink:0;flex-grow:0;width:600px}.wpcode-device-type-area .wpcode-blur-area .wpcode-device-type-picker{margin-bottom:0}.wpcode-device-type-area .wpcode-upsell-box{padding:20px;width:580px;position:relative;transform:none;left:auto;top:auto;background:var(--wpcode-background-white);border:none;text-align:left;display:flex;justify-content:space-between;align-items:center}@media (max-width:1442px){.wpcode-device-type-area .wpcode-upsell-box{margin-top:20px;width:580px}}.wpcode-device-type-area .wpcode-upsell-box h2{margin-bottom:10px}.wpcode-device-type-area .wpcode-upsell-box .wpcode-upsell-text{margin-bottom:0}.wpcode-device-type-area .wpcode-upsell-box .wpcode-upsell-text p{margin-bottom:0}.wpcode-device-type-area .wpcode-upsell-box .wpcode-upsell-buttons{flex-shrink:0;padding-left:20px}.wpcode-block-editor-area{height:400px;width:100%;display:flex;align-items:center;justify-content:center;background:#fff;border:1px solid var(--wpcode-border-color);border-radius:4px;text-align:center;margin-bottom:var(--wpcode-space-h)}.wpcode-code-textarea .wpcode-smart-tags{margin-right:16px}.wpcode-code-type-css .wpcode-code-textarea .wpcode-smart-tags,.wpcode-code-type-blocks .wpcode-code-textarea .wpcode-smart-tags,.wpcode-code-type-php .wpcode-code-textarea .wpcode-smart-tags{display:none}.wpcode-shortcode-attributes-list ul{max-width:272px}.wpcode-shortcode-attributes-list li{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;color:var(--wpcode-text-color-paragraph)}.wpcode-shortcode-locations-list{width:100%}.wpcode-shortcode-locations-list .wpcode-button-row{margin-bottom:13px}.wpcode-shortcode-locations-list ul{max-width:none;width:100%;margin:0;padding:0}.wpcode-shortcode-locations-list li{display:flex;align-items:center;justify-content:space-between;margin-bottom:14px;color:var(--wpcode-text-color-paragraph);width:100%;padding:0}.wpcode-shortcode-locations-list li a{flex-grow:1;margin-right:10px}.wpcode-shortcode-locations-list li .wpcode-post-type{flex-shrink:0}.wpcode-line-error-code{background:rgba(250,152,152,0.3)}.wpcode-line-error-icon{background-image:url("data:image/svg+xml,<svg width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\"><path d=\"M15.73 3H8.27L3 8.27V15.73L8.27 21H15.73L21 15.73V8.27L15.73 3ZM19 14.9L14.9 19H9.1L5 14.9V9.1L9.1 5H14.9L19 9.1V14.9ZM14.83 7.76L12 10.59L9.17 7.76L7.76 9.17L10.59 12L7.76 14.83L9.17 16.24L12 13.41L14.83 16.24L16.24 14.83L13.41 12L16.24 9.17L14.83 7.76Z\" fill=\"red\"/></svg>");width:20px;height:20px;background-size:cover;margin-left:5px;margin-top:2px}.wpcode-error-preview{overflow:auto;max-width:100%}#wpcode_compress_output_option .wpcode-checkbox-toggle{opacity:0.6}#wpcode_snippet_as_file_option .wpcode-checkbox-toggle{opacity:0.6}#wpcode_snippet_as_file_option_pro .wpcode-checkbox-toggle+p{display:inline-block;margin:0 0 0 15px}.wpcode-ai-questions label{width:100%;display:block}.wpcode-ai-questions input{width:100%;max-width:600px}.wpcode-metabox{background:var(--wpcode-background-white);border:1px solid var(--wpcode-border-color);border-radius:4px;margin-bottom:var(--wpcode-space-h)}.wpcode-metabox-title{align-items:center;border-bottom:1px solid var(--wpcode-border-color);display:flex;justify-content:space-between}.wpcode-metabox-title-text{color:var(--wpcode-text-color-heading);font-size:var(--wpcode-font-size-m);font-weight:600;padding:0 var(--wpcode-space-v)}.wpcode-metabox-button-toggle{background-color:var(--wpcode-background-white);border:none;cursor:pointer;height:60px;margin:0;text-align:center;width:60px}.wpcode-metabox-collapsed .wpcode-metabox-button-toggle svg{transform:rotate(180deg)}.wpcode-metabox-content{padding:var(--wpcode-space-v);padding-bottom:0}.wpcode-metabox-collapsed .wpcode-metabox-content{display:none}.wpcode-metabox-content p:first-child{margin-top:0}.wpcode-metabox-content .notice{margin:24px 0}.wpcode-metabox-content .notice p{margin:0.5em 0}.wpcode-metabox-form .wpcode-metabox-form-row{max-width:670px}.wpcode-metabox-form-row{display:flex;margin-bottom:var(--wpcode-space-v)}@media screen and (max-width:782px){.wpcode-metabox-form-row{flex-flow:wrap}}.wpcode-metabox-form-row-label{flex-shrink:0;width:245px}@media screen and (max-width:782px){.wpcode-metabox-form-row-label{margin-bottom:6px}}.wpcode-metabox-form-row-label label{color:var(--wpcode-text-color-heading);font-size:var(--wpcode-font-size-s);font-weight:600}.wp-list-table.wpcode-snippets .column-status{width:177px}@media screen and (min-width:783px){.wp-list-table.wpcode-snippets .column-status{text-align:right;vertical-align:middle}}.wp-list-table.wpcode-snippets .column-status .wpcode-checkbox-toggle{float:right}.wp-list-table.wpcode-snippets .column-name a{color:var(--wpcode-text-color-heading);font-size:14px;text-decoration:none}.wp-list-table.wpcode-snippets .column-name a:hover,.wp-list-table.wpcode-snippets .column-name a:focus{color:var(--wpcode-text-color-paragraph)}.wp-list-table.wpcode-snippets .column-name .delete a,.wp-list-table.wpcode-snippets .column-name .trash a{color:var(--wpcode-background-red)}.wp-list-table.wpcode-snippets .column-name .delete a:hover,.wp-list-table.wpcode-snippets .column-name .delete a:focus,.wp-list-table.wpcode-snippets .column-name .trash a:hover,.wp-list-table.wpcode-snippets .column-name .trash a:focus{color:var(--wpcode-color-red-darker)}.wp-list-table.wpcode-snippets .column-location a,.wp-list-table.wpcode-snippets .column-author a{color:var(--wpcode-text-color-paragraph)}.wp-list-table.wpcode-snippets .column-location a:hover,.wp-list-table.wpcode-snippets .column-location a:focus,.wp-list-table.wpcode-snippets .column-author a:hover,.wp-list-table.wpcode-snippets .column-author a:focus{color:var(--wpcode-text-color-heading)}.wp-list-table.wpcode-snippets th.column-created a{color:var(--wpcode-text-color-heading)}.wp-list-table.wpcode-snippets th.column-created a:hover,.wp-list-table.wpcode-snippets th.column-created a:focus{color:var(--wpcode-text-color-paragraph)}.wp-list-table.wpcode-snippets .column-created{color:var(--wpcode-text-color-paragraph)}.wp-list-table.wpcode-snippets td.column-tags{color:var(--wpcode-color-primary)}.wp-list-table.wpcode-snippets td.column-tags a{color:var(--wpcode-color-primary);text-decoration:underline}.wp-list-table.wpcode-snippets td.column-tags a:hover,.wp-list-table.wpcode-snippets td.column-tags a:focus{text-decoration:none}.wp-list-table.wpcode-snippets .alternate,.wp-list-table.wpcode-snippets.striped>tbody>:nth-child(odd),.wp-list-table.wpcode-snippets ul.striped>:nth-child(odd){background-color:var(--wpcode-background-gray)}.wp-list-table.wpcode-snippets .column-id{width:4.5em}.wp-list-table.wpcode-snippets .wpcode-copy{cursor:pointer;position:relative}.wp-list-table.wpcode-snippets .wpcode-copy .wpcode-icon-copy{display:none;position:absolute;left:100%;top:2px}.wp-list-table.wpcode-snippets .wpcode-copy.wpcode-show-success-icon .wpcode-icon-copy{display:block}.tablenav.bottom form{display:inline}.wpcode-admin-page.wpcode .tablenav.top{margin-bottom:16px}.wpcode-admin-page.wpcode .tablenav.bottom{margin-top:11px}.wpcode-admin-page.wpcode .wpcode-content a{}.wpcode-admin-page.wpcode .button{background:var(--wpcode-background-light);border-color:var(--wpcode-color-primary);color:var(--wpcode-color-primary)}.wpcode-content .has_error a,.wpcode-content .deactivated a{color:var(--wpcode-color-red)}.wpcode-content .has_error a:hover,.wpcode-content .has_error a:focus,.wpcode-content .deactivated a:hover,.wpcode-content .deactivated a:focus{color:var(--wpcode-color-red-darker)}.wpcode-table-status-icon{margin-right:10px;display:inline-block}.wpcode-table-status-icon-deactivated path{fill:var(--wpcode-color-red)}.wpcode-header-bottom .wpcode-sync-button{margin:4px 0px 0px 10px;padding:9px 16px 5px 16px !important;font-weight:700;height:22px;font-size:var(--wpcode-font-size-s);text-align:center}.wpcode-sync-button{background-color:#efc851;border:#efc851;border-radius:5px;color:#333;text-decoration:none;width:auto;margin:10px 0px 0px 0px;cursor:pointer;font-size:15px;vertical-align:middle;padding:7px 10px 7px 10px !important;position:relative;bottom:1px}.wpcode-sync-button:hover{background-color:#f0d36b;border:#f0d36b;color:#333}#wpcode-check-for-updates{margin:0px 0 2px;padding:0 14px}.wpcode-lite-version #wpcode-check-for-updates{opacity:0.6}@keyframes wpcode-rotate{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.wpcode-spin{animation:wpcode-rotate 1s infinite linear}.wpcode-scheduled-icon .wpcode-icon-scheduled{width:20px;height:20px;display:inline-block}.wpcode-scheduled-icon .wpcode-icon-scheduled path{fill:var(--wpcode-color-primary)}#wpcode-header{position:relative}.wpcode-admin-page.wpcode #screen-meta-links{display:none}#wpcode-header-between{position:absolute;right:14px;z-index:92;top:46px}@media screen and (min-width:783px){#wpcode-header-between{top:auto}}#wpcode-header-between #screen-meta{border-color:var(--wpcode-border-color)}#wpcode-header-between #screen-meta-links .show-settings{border-color:var(--wpcode-border-color);background:var(--wpcode-background-gray)}#wpcode-header-between #screen-options-wrap{background:var(--wpcode-background-gray);border-color:var(--wpcode-border-color)}#wpbody-content{position:relative}#wpbody-content #wpcode-loader{display:none;position:absolute;top:0;left:0;z-index:99;right:0;bottom:0;background:transparent}#wpbody-content #wpcode-loader .wpcode-loader-overlay{position:absolute;left:36px;right:36px;background:rgba(255,255,255,0.8)}#wpbody-content #wpcode-loader .wpcode-loader-overlay img{height:20px;width:20px;align-items:center;position:absolute;top:50px;animation:spin 1s linear infinite;left:50%;transform:translateX(-50%)}@keyframes spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.wpcode-cl-group{background:var(--wpcode-button-disabled-bg);border-radius:4px;margin-top:50px;padding:16px;position:relative}.wpcode-cl-group:first-child{margin-top:0}.wpcode-cl-group:first-child .wpcode-cl-group-or{display:none}#wpcode-conditions-holder{margin:16px 0;max-width:710px}.wpcode-cl-group-or{bottom:100%;height:50px;left:0;position:absolute;right:0}.wpcode-cl-group-or .wpcode-cl-group-or-line{background-color:var(--wpcode-button-disabled-bg);height:2px;left:0;position:absolute;right:0;top:50%}.wpcode-cl-group-or .wpcode-cl-group-or-text{background:#F5F5F5;border-radius:10px;color:var(--wpcode-text-color-heading);font-size:12px;font-weight:500;left:50%;padding:2px 9px;position:absolute;top:50%;transform:translate(-50%,-50%)}.wpcode-cl-rules-row{align-items:center;display:flex;justify-content:space-between;margin-bottom:8px}@media screen and (max-width:782px){.wpcode-cl-rules-row{margin-bottom:16px}}.wpcode-cl-rules-row .wpcode-cl-rules-row-options{align-items:flex-start;display:flex;max-width:661px;padding-right:15px;gap:10px}.wpcode-cl-rules-row .wpcode-cl-rules-row-options .wpcode-cl-rule-value{width:145px}.wpcode-cl-rules-row .wpcode-cl-rules-row-options .wpcode-cl-rule-meta-key-container,.wpcode-cl-rules-row .wpcode-cl-rules-row-options .wpcode-cl-rule-user-meta-key-container{width:145px}@media screen and (max-width:782px){.wpcode-cl-rules-row .wpcode-cl-rules-row-options{flex-flow:wrap}}.wpcode-metabox-form-row-input .wpcode-cl-rules-row .wpcode-cl-rule-type-container{cursor:pointer}@media screen and (max-width:782px){.wpcode-metabox-form-row-input .wpcode-cl-rules-row .wpcode-cl-rule-type-container{margin-bottom:6px;width:100%}}.wpcode-metabox-form-row-input .wpcode-cl-rules-row .wpcode-cl-rule-type-container select{pointer-events:none;margin:0}.wpcode-metabox-form-row-input .wpcode-cl-rules-row select{margin:0;min-width:0;width:145px}@media screen and (max-width:782px){.wpcode-metabox-form-row-input .wpcode-cl-rules-row select{width:100%;margin-bottom:6px}}.wpcode-metabox-form-row-input .wpcode-cl-rules-row select.wpcode-cl-rule-relation{width:145px}@media screen and (max-width:782px){.wpcode-metabox-form-row-input .wpcode-cl-rules-row select.wpcode-cl-rule-relation{width:100%}}.wpcode-cl-rules-row .wpcode-cl-remove-row{flex-shrink:0}@media screen and (max-width:782px){.wpcode-cl-rules-row .wpcode-cl-rule-value{display:inline-block;width:100%;margin-right:16px}}#wpcode_cl_picker{margin-left:-258px;margin-right:-16px;margin-top:20px;background-color:var(--wpcode-background-highlight);border-radius:4px 0 0 4px}@media screen and (max-width:782px){#wpcode_cl_picker{margin-left:-16px;margin-right:-16px}#wpcode_cl_picker .wpcode-list-item .wpcode-list-item-description{opacity:1}}#wpcode_cl_picker.wpcode-hidden{display:none}#wpcode_cl_picker .wpcode-items-list:before{left:158px;border-bottom:10px solid var(--wpcode-background-highlight)}@media screen and (max-width:782px){#wpcode_cl_picker .wpcode-items-list:before{display:none}}#wpcode_cl_picker .wpcode-items-sidebar{border-radius:4px 0 0 4px}#wpcode_cl_picker .wpcode-list-item label{cursor:pointer}.wpcode-items-metabox{display:flex;padding:0}@media screen and (max-width:782px){.wpcode-items-metabox{flex-flow:column}}.wpcode-items-sidebar{flex-shrink:0;padding:var(--wpcode-space-v);width:242px}@media screen and (max-width:782px){.wpcode-items-sidebar{width:100%}}.wpcode-items-list{border-left:1px solid var(--wpcode-border-color);min-height:400px;padding:calc(var(--wpcode-space-v) / 2) 12px;width:100%}@media screen and (max-width:782px){.wpcode-items-list{border-top:1px solid var(--wpcode-border-color);border-left:0}}.wpcode-items-categories-list{margin:0}.wpcode-items-categories-list li{margin:0}.wpcode-items-categories-list button{background:transparent;border:none;color:var(--wpcode-text-color-paragraph);cursor:pointer;display:block;font-size:var(--wpcode-font-size-m);font-weight:500;padding:12px 8px;position:relative;text-align:left;width:100%}.wpcode-items-categories-list button:focus,.wpcode-items-categories-list button.wpcode-active{background:var(--wpcode-background-highlight);color:var(--wpcode-text-color-highlight)}.wpcode-items-categories-list button:hover{text-decoration:underline}.wpcode-items-categories-list button .wpcode-items-count{float:right;color:var(--wpcode-text-color-paragraph);opacity:0.5}.wpcode-items-categories-list button.wpcode-active{font-weight:700}.wpcode-items-categories-list button.wpcode-active:hover{text-decoration:none}.wpcode-items-categories-list button.wpcode-active .wpcode-items-count{opacity:1;color:var(--wpcode-text-color-highlight);font-weight:700}.wpcode-items-list-category{align-content:stretch;display:flex;flex-wrap:wrap;justify-content:flex-start}.wpcode-list-item{border:1px solid var(--wpcode-border-color);border-radius:4px;margin-bottom:24px;margin-right:12px;margin-left:12px;max-width:100%;padding:16px 20px;position:relative;width:100%}@media (min-width:961px){.wpcode-list-item{width:calc(50% - 24px)}}@media (min-width:1440px){.wpcode-list-item{width:calc(100% / 3 - 24px)}}.wpcode-list-item h3,.wpcode-list-item .wpcode-list-item-title{font-size:var(--wpcode-font-size-m);line-height:1.2;margin:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.wpcode-list-item p{margin-bottom:0}.wpcode-list-item:hover .wpcode-list-item-description,.wpcode-list-item:focus .wpcode-list-item-description{opacity:0}.wpcode-list-item:hover .wpcode-list-item-buttons,.wpcode-list-item:focus .wpcode-list-item-buttons{opacity:1}@media (hover:none){.wpcode-list-item .wpcode-list-item-description{opacity:0}.wpcode-list-item .wpcode-list-item-buttons{opacity:1}}.wpcode-list-item .wpcode-list-item-pill{position:absolute;top:10px;right:10px;font-size:8px;font-weight:700;text-transform:uppercase;line-height:1;padding:4px 8px;border-radius:40px}.wpcode-list-item .wpcode-list-item-pill.wpcode-list-item-pill-blue{background:var(--wpcode-color-primary);color:#fff}.wpcode-list-item .wpcode-list-item-pill.wpcode-list-item-pill-green{background:var(--wpcode-notice-success-bg);color:#fff}.wpcode-list-item .wpcode-list-item-pill.wpcode-list-item-pill-gray{background:var(--wpcode-text-color-heading);color:#fff}.wpcode-list-item .wpcode-list-item-pill.wpcode-list-item-pill-light{background:var(--wpcode-text-color-placeholder);color:#fff}.wpcode-list-item.wpcode-list-item-has-pill h3{max-width:calc(100% - 60px)}.wpcode-list-item.wpcode-custom-snippet,.wpcode-list-item.wpcode-library-item-ai{background:var(--wpcode-background-highlight)}.wpcode-list-item-actions{position:relative}.wpcode-list-item-description{min-height:40px}.wpcode-list-item-buttons{display:flex;justify-content:space-between;opacity:0;position:absolute;top:0;width:100%;z-index:10}.wpcode-list-item-buttons .wpcode-button{flex-grow:1;margin-left:10px;text-align:center}.wpcode-list-item-buttons .wpcode-button:first-child{margin-left:0}.wpcode-items-search{margin-bottom:20px;position:relative}.wpcode-items-search input{border-color:var(--wpcode-border-color);font-size:var(--wpcode-font-size-s);height:38px;padding-left:32px;width:100%}.wpcode-items-search input::-moz-placeholder{color:var(--wpcode-text-color-placeholder)}.wpcode-items-search input::placeholder{color:var(--wpcode-text-color-placeholder)}.wpcode-items-search label{left:10px;position:absolute;top:11px}.wpcode-library-preview-header{padding-bottom:25px}.wpcode-library-preview-header h2{margin:0}.wpcode-library-preview-header .wpcode-close-modal{float:right}.wpcode-library-preview-content .CodeMirror{background:var(--wpcode-background-gray)}.wpcode-library-preview-content .CodeMirror-activeline-background{background:transparent !important}.wpcode-library-preview-content .CodeMirror-focused .CodeMirror-activeline-background{background:rgba(100,100,100,0.1) !important}.wpcode-library-preview-buttons{margin-top:25px}.wpcode-item-use-button.wpcode-start-auth{padding-top:6px;padding-bottom:6px;justify-content:center}.wpcode-item-use-button.wpcode-start-auth svg{margin-right:9px}#wpcode-library-connect-banner{background:var(--wpcode-button-disabled-bg);margin-bottom:24px;margin-left:12px;border-radius:6px;display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding-right:20px;margin-right:12px}@media (min-width:961px){#wpcode-library-connect-banner{flex-direction:row}}#wpcode-library-connect-banner .wpcode-template-content{padding:20px;color:#444444}@media (min-width:961px){#wpcode-library-connect-banner .wpcode-template-content{width:80%}}#wpcode-library-connect-banner .wpcode-template-upgrade-button{text-align:right;flex-shrink:0;padding-bottom:20px}@media (min-width:961px){#wpcode-library-connect-banner .wpcode-template-upgrade-button{padding-bottom:0}}#wpcode-library-connect-banner .wpcode-template-upgrade-button button{white-space:pre}#wpcode-library-connect-banner h3{margin:0 0 5px}#wpcode-library-connect-banner p{margin:0}.wpcode-library-item-ai-not-available .wpcode-button{opacity:0.7;pointer-events:none}.wpcode-library-tab-navigation{position:relative;z-index:10}.wpcode-library-tab-navigation:before{content:'';width:1px;height:1px;background-color:var(--wpcode-border-color);position:absolute;top:100%;left:0;display:block}.wpcode-library-tab-button{border:1px solid var(--wpcode-border-color);margin-bottom:-1px;padding:10px 25px;font-size:var(--wpcode-font-size-m);border-radius:0 0 0 0;display:inline-block;margin-right:-5px;cursor:pointer;transition:background-color 300ms ease 0s,color 300ms ease;background-color:var(--wpcode-button-secondary-bg);font-weight:400;color:var(--wpcode-button-secondary-text)}.wpcode-library-tab-button.wpcode-library-tab-button-active{border-bottom-color:#fff;background:#fff;color:var(--wpcode-button-secondary-text-hover)}.wpcode-library-tab-button:first-child{border-radius:4px 0 0 0}.wpcode-library-tab-button:last-child{border-radius:0 4px 0 0}.wpcode-library-tab-button:hover,.wpcode-library-tab-button:focus{background:#fff;color:var(--wpcode-button-secondary-text-hover)}.wpcode-library-tab{position:relative;display:none}.wpcode-library-tab .wpcode-items-metabox{border-radius:0 4px 4px 4px}.wpcode-library-tab .wpcode-add-snippet-description+.wpcode-items-metabox{border-radius:0 0 4px 4px}.wpcode-library-tab.wpcode-library-tab-active{display:block}.wpcode-snippet-manager .wpcode-content .wpcode-library-suggest-plugins{padding:var(--wpcode-space-v)}.wpcode-snippet-manager .wpcode-content .wpcode-library-suggest-plugins .wpcode-suggestions-title{margin-bottom:var(--wpcode-space-v);margin-top:0}.wpcode-snippet-manager .wpcode-content .wpcode-library-suggest-plugins .wpcode-plugin-suggestions{flex-flow:wrap}.wpcode-snippet-manager .wpcode-content .wpcode-library-suggest-plugins .wpcode-plugin-suggestion-plugin{width:33.3333%;margin-bottom:var(--wpcode-space-h)}.wpcode-metabox .wpcode-alert{margin:var(--wpcode-space-v)}.wpcode-metabox .wpcode-alert h4{margin-bottom:0}.wpcode-generator .wpcode-items-metabox{margin-bottom:0}.wpcode-generator .wpcode-generator-preview .CodeMirror{height:auto}.wpcode-generator-preview{background-color:var(--wpcode-background-highlight);border-color:var(--wpcode-border-color);border-style:solid;border-width:0 1px 1px;padding:15px 28px 24px}.wpcode-generator-preview-header{align-items:center;display:flex;margin-bottom:14px}.wpcode-generator-preview-header h2{margin:0 8px 0 0}.wpcode-generator-preview-header .wpcode-button{margin-left:12px}.wpcode-form-tab:after{clear:both;content:'';display:table}.wpcode-generator-column{float:left;padding:14px 14px;width:calc(100% / 3)}.wpcode-generator-actions{padding:28px 14px 14px;text-align:center}.wpcode-generator-field{margin-bottom:24px}.wpcode-generator-field label{color:var(--wpcode-text-color-heading);display:block;font-size:var(--wpcode-font-size-s);font-weight:600;margin-bottom:8px}.wpcode-generator-field input[type="text"]{width:100%}.wpcode-generator-field select{max-width:100%;width:100%}.wpcode-field-description{margin-top:8px}.wpcode-generator-field-list ul{color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-s);list-style:disc;padding-left:18px}.wpcode-checkbox-line{margin-bottom:14px}.wpcode-checkbox-line .wpcode-checkbox-toggle{margin-right:8px}.wpcode-checkbox-line label{display:inline-block}.wpcode-repeater-group{border-top:1px solid var(--wpcode-border-color);padding-top:24px}.wpcode-repeater-group .wpcode-remove-row{margin-bottom:24px}#wpcode-importer-process{display:none}#wpcode-importer-process .process-completed{display:none}#wpcode-importer-process .status{background-color:#fff;border:1px solid #ddd;border-radius:3px;display:none;margin:20px 0 30px;max-height:800px;overflow-y:scroll}#wpcode-importer-process .item{border-bottom:1px solid #ddd;padding:20px}#wpcode-importer-process .item:last-of-type{border:none}#wpcode-importer-process .item .name{float:left;font-size:14px}#wpcode-importer-process .item .name svg{display:inline-block;margin:0 10px 0 0}#wpcode-importer-process .item .actions{float:right;font-size:14px}.wpcode-clear:after{clear:both;content:" ";display:table}#wpcode-plugins-importer{margin-bottom:20px;max-width:100%;width:400px}.wpcode-tools .pre-error,.wpcode-tools .info-area{background:#fff;border:1px solid #ddd;box-shadow:none;display:block;font-family:Menlo,Monaco,monospace;font-size:12px;height:450px;max-width:1000px;overflow:auto;padding:20px;white-space:pre;width:100%}.wpcode-admin-page .wpcode-alert{border:1px solid transparent;margin-bottom:18px;padding:16px}.wpcode-admin-page .wpcode-alert h4{color:inherit;margin-top:0}.wpcode-admin-page .wpcode-alert p{margin:0 0 15px 0}.wpcode-admin-page .wpcode-alert p:last-of-type{margin:0}.wpcode-admin-page .wpcode-alert.wpcode-alert-nomargin{margin:0}.wpcode-admin-page .wpcode-alert.wpcode-alert-small{font-size:12px}.wpcode-admin-page .wpcode-alert.wpcode-alert-success{background-color:#dff0d8;border-color:#d6e9c6;color:#3c763d}.wpcode-admin-page .wpcode-alert.wpcode-alert-info{background-color:#d9edf7;border-color:#bce8f1;color:#31708f}.wpcode-admin-page .wpcode-alert.wpcode-alert-warning{background-color:#fcf8e3;border-color:#faebcc;color:#8a6d3b}.wpcode-admin-page .wpcode-alert.wpcode-alert-danger{background-color:#f2dede;border-color:#ebccd1;color:#a94442}#wpcode-log-data{margin-top:25px;background:var(--wpcode-background-white);border:1px solid var(--wpcode-border-color);padding:5px 20px}#wpcode-log-data pre{font-family:monospace;white-space:pre-wrap;word-wrap:break-word;color:var(--wpcode-text-color-heading)}.wpcode-docs-overlay{background-color:var(--wpcode-background-white);bottom:0;display:none;left:0;max-height:100vh;opacity:1;overflow-y:auto;position:fixed;right:0;top:46px;z-index:100100}.wpcode-docs-overlay *{box-sizing:border-box}@media screen and (min-width:783px){.wpcode-docs-overlay{left:36px;top:32px}}@media screen and (min-width:961px){.wpcode-docs-overlay{left:160px}.folded .wpcode-docs-overlay{left:36px}}#wpcode-help-logo{left:36px;position:absolute;top:24px}#wpcode-help-close{cursor:pointer;display:inline-block;height:30px;padding:5px;position:absolute;right:37px;top:25px;transition:all 0.05s ease-out;width:30px;z-index:10}.wpcode-docs-content{background-color:var(--wpcode-background-white);margin:0 auto 50px auto;max-width:100%;padding:0 30px;width:760px}.wpcode-help-docs{margin-bottom:20px;padding:0 18px}.wpcode-help-docs a{color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-m);text-decoration:none}.wpcode-help-docs a:hover,.wpcode-help-docs a:focus{color:var(--wpcode-text-color-heading);text-decoration:underline}.wpcode-help-docs .wpcode-icon-file-text{margin-right:14px}.wpcode-help-docs li{margin-bottom:18px}.wpcode-help-categories-toggle{border-bottom:1px solid var(--wpcode-border-color);margin-bottom:40px}.wpcode-help-category{border-top:1px solid var(--wpcode-border-color);margin:0}.wpcode-help-category header{align-items:center;color:var(--wpcode-text-color-heading);cursor:pointer;display:flex;flex-direction:row;font-size:var(--wpcode-font-size-l);font-weight:600;justify-content:flex-start;padding-left:18px;padding-right:25px}.wpcode-help-category header:hover{color:var(--wpcode-color-primary)}.wpcode-help-category .wpcode-icon-folder{margin:23px 11px 23px 0}.wpcode-help-category .wpcode-icon-arrow{margin-left:auto;transform-origin:center;transition:transform 300ms ease}.wpcode-help-category.open .wpcode-icon-arrow{transform:rotate(90deg)}.wpcode-help-category .wpcode-help-docs{display:none}#wpcode-help-search{padding:74px 0 50px 0;position:relative;text-align:center;top:0}#wpcode-help-search .wpcode-icon-search{display:none;left:17px;position:absolute;top:92px}#wpcode-help-search input{background-image:none;background-position:22px center;background-repeat:no-repeat;background-size:20px 20px;border:1px solid var(--wpcode-border-color);border-radius:3px;color:var(--wpcode-text-color-heading);font-size:20px;letter-spacing:0;line-height:20px;min-height:48px;padding:10px 10px 10px 42px;text-align:left;width:100%}#wpcode-help-search #wpcode-help-search-clear{cursor:pointer;left:17px;opacity:.7;position:absolute;top:92px}#wpcode-help-search.wpcode-search-empty #wpcode-help-search-clear{display:none}#wpcode-help-search.wpcode-search-empty .wpcode-icon-search{display:block}#wpcode-help-no-result li span{color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-s)}.wpcode-help-footer{align-items:center;display:flex;justify-content:space-between}.wpcode-help-footer .wpcode-help-footer-box{border:1px solid var(--wpcode-border-color);border-radius:8px;padding:40px 38px;text-align:center;width:calc(50% - 18px)}.wpcode-help-footer .wpcode-help-footer-box h3{font-size:var(--wpcode-font-size-l)}.wpcode-help-footer .wpcode-help-footer-box p{color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-m)}.wpcode-notifications-drawer{background:var(--wpcode-background-white);border-left:1px solid var(--wpcode-border-color);bottom:0;position:fixed;right:-375px;top:32px;transition:right 300ms ease 0s,visibility 0s ease 400ms;visibility:hidden;width:375px;z-index:1100}.wpcode-notifications-open .wpcode-notifications-drawer{right:0;transition:right 300ms ease 0s,visibility 0s ease 0ms;visibility:visible}.wpcode-notifications-overlay{background-color:rgba(0,0,0,0.3);bottom:0;display:none;left:0;opacity:.5;position:fixed;right:0;top:46px;transition:.5s;z-index:1052}.folded .wpcode-notifications-overlay{left:36px}.wpcode-notifications-open .wpcode-notifications-overlay{display:block}@media screen and (min-width:783px){.wpcode-notifications-overlay{left:36px}.admin-bar .wpcode-notifications-overlay{top:32px}}@media screen and (min-width:961px){.wpcode-notifications-overlay{left:160px}.folded .wpcode-notifications-overlay{left:36px}}.wpcode-notifications-header{background:var(--wpcode-background-highlight);border-bottom:1px solid var(--wpcode-border-color);padding:18px 40px 18px 20px}.wpcode-notifications-header .wpcode-notifications-close{position:absolute;right:18px;top:22px}.wpcode-notifications-header .wpcode-notifications-close path{fill:var(--wpcode-text-color-heading)}.wpcode-notifications-header h3{color:var(--wpcode-text-color-heading);display:inline-block;font-size:var(--wpcode-font-size-s);font-weight:700;line-height:21px;margin:0 10px 0 0}.wpcode-notifications-list{height:calc(100% - 130px);overflow:auto}.wpcode-notifications-list ul{margin:0}.wpcode-notifications-list li{border-top:1px solid var(--wpcode-border-color);display:flex;margin:0;padding:24px}.wpcode-notifications-list li:first-child{border-top:none}.wpcode-notifications-list li h4{color:var(--wpcode-text-color-heading);font-size:var(--wpcode-font-size-s);font-weight:600;line-height:21px;margin:0}.wpcode-notifications-list p{color:var(--wpcode-text-color-light-bg);font-size:var(--wpcode-font-size-s);margin:8px 0}.wpcode-notifications-list p.wpcode-start{font-size:var(--wpcode-font-size-xs)}.wpcode-notification-actions .wpcode-button{margin-right:10px}.wpcode-notifications-footer{border-top:1px solid var(--wpcode-border-color);padding:24px 27px;text-align:right}#wpcode-dismissed-title,#wpcode-notifications-show-active,.wpcode-notifications-dismissed{display:none}.show-dismissed #wpcode-notifications-show-dismissed,.show-dismissed .wpcode-notifications-active,.show-dismissed #wpcode-active-title{display:none}.show-dismissed #wpcode-notifications-show-active,.show-dismissed #wpcode-dismissed-title{display:inline-block}.show-dismissed .wpcode-notifications-dismissed{display:block}.wpcode-notifications-dismissed .wpcode-notification-dismiss{display:none}.wpcode-notification-icon{margin-right:10px}.wpcode-help-tooltip{cursor:help;display:inline-block;position:relative;vertical-align:middle}.wpcode-help-tooltip .wpcode-help-tooltip-text{background-color:var(--wpcode-color-primary);border-radius:6px;bottom:100%;color:#fff;font-size:var(--wpcode-font-size-s);font-weight:400;left:50%;margin-bottom:12px;margin-left:-90px;padding:12px 12px;position:absolute;text-align:center;visibility:hidden;width:180px;z-index:500}.wpcode-help-tooltip .wpcode-help-tooltip-text:after{border-color:var(--wpcode-color-primary) transparent transparent transparent;border-style:solid;border-width:10px 9px 0 9px;content:'';height:0;left:50%;margin-left:-9px;position:absolute;top:100%;width:0}.wpcode-help-tooltip .wpcode-help-tooltip-text:before{content:'';top:100%;height:20px;left:0;right:0;position:absolute;background:transparent}.wpcode-help-tooltip .wpcode-help-tooltip-text a{color:#fff}.wpcode-help-tooltip .wpcode-help-tooltip-text-down{top:100%;margin-top:14px;margin-left:-101px;bottom:auto}.wpcode-help-tooltip .wpcode-help-tooltip-text-down:before{top:auto;bottom:100%}.wpcode-help-tooltip .wpcode-help-tooltip-text-down:after{border-color:transparent transparent var(--wpcode-color-primary) transparent;top:auto;border-width:0 9px 10px 9px;bottom:100%}.wpcode-help-tooltip:hover .wpcode-help-tooltip-text{visibility:visible}.wpcode-help-tooltip .wpcode-icon-help{margin-top:1px}.wpcode-help-tooltip .wpcode-icon-help path{fill:#8A8A8A}.wpcode-upgrade-welcome{background:#f3f4f5}.wpcode-welcome-content{max-width:1168px;margin:24px auto;clear:both}.wpcode-welcome-content *{box-sizing:border-box}.wpcode-welcome-content h2{font-size:22px;font-weight:600;margin-top:0;line-height:1.2}.wpcode-welcome-content h3{font-size:1.5em}.wpcode-welcome-content p{font-size:1.2em}.wpcode-welcome-box{background:#fff;padding:40px;border:1px solid #ddd;border-radius:4px;margin-bottom:30px}@media (max-width:767px){.wpcode-welcome-box{padding:26px}}.wpcode-welcome-logo{margin:4px 0 28px}.wpcode-welcome-text{width:700px;margin:32px auto;max-width:100%}.wpcode-welcome-features{display:flex;justify-content:space-between;flex-wrap:wrap;margin-top:42px}.wpcode-welcome-features .wpcode-welcome-feature{width:calc(33.3% - 16px);text-align:center;margin-bottom:32px;display:flex}@media (max-width:782px){.wpcode-welcome-features .wpcode-welcome-feature{width:100%}}.wpcode-welcome-features .wpcode-welcome-feature p{font-size:16px}.wpcode-welcome-features .wpcode-welcome-feature h3{font-size:18px;margin-top:6px}.wpcode-welcome-features .wpcode-welcome-feature .wpcode-welcome-feature-text{text-align:left;margin-left:16px}.wpcode-welcome-features .wpcode-welcome-feature-icon-icon path{fill:var(--wpcode-color-primary)}.wpcode-welcome-highlight{grid-template-columns:1fr 1fr;display:grid}@media (max-width:767px){.wpcode-welcome-highlight{grid-template-columns:1fr}}.wpcode-welcome-highlight .wpcode-welcome-highlight-column{padding:16px 0;align-self:center;grid-column-start:2}@media (min-width:768px){.wpcode-welcome-highlight .wpcode-welcome-highlight-column{padding:16px 20px}.wpcode-welcome-highlight .wpcode-welcome-highlight-column:nth-of-type(2n+1){grid-column-start:1}.wpcode-welcome-highlight .wpcode-welcome-highlight-column:nth-of-type(2n){grid-column-start:2}}.wpcode-welcome-highlight img{max-width:100%;width:100%;height:auto}.wpcode-buttons-row{text-align:left}.wpcode-welcome-syed-mircea{font-size:1.2em}.wpcode-welcome-syed-mircea .wpcode-welcome-person{display:inline-flex;align-items:center;margin-right:60px;margin-top:32px}.wpcode-welcome-syed-mircea .wpcode-welcome-person-image{margin-right:15px}.wpcode-welcome-syed-mircea .wpcode-welcome-person-text{font-size:13px;color:var(--wpcode-text-color-paragraph)}.wpcode-welcome-syed-mircea h4{color:var(--wpcode-text-color-heading);margin:0 0 4px;font-size:16px;font-weight:600}.wpcode-welcome-syed-mircea img{display:block;margin-bottom:0}.wpcode-welcome-syed-mircea span{align-self:end}.wpcode-upgrade-welcome #wpcontent{padding-right:10px}@media screen and (min-width:783px){.wpcode-upgrade-welcome #wpcontent{padding-right:20px}}.wpcode-loading-spinner{animation:wpcode-spinner-rotation 0.8s linear infinite;background-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA4MCA4MCI+CiAgICA8cGF0aCBkPSJNNDAgMEMxNy45IDAgMCAxNy45IDAgNDBzMTcuOSA0MCA0MCA0MCA0MC0xNy45IDQwLTQwUzYyLjEgMCA0MCAwem0wIDcyQzIyLjMgNzIgOCA1Ny43IDggNDBTMjIuMyA4IDQwIDhzMzIgMTQuMyAzMiAzMi0xNC4zIDMyLTMyIDMyeiIKICAgICAgICAgIG9wYWNpdHk9Ii4xNSIvPgogICAgPHBhdGggZmlsbD0iIzM1NjhCNyIKICAgICAgICAgIGQ9Ik03NS44IDQ3LjRoLS40Yy0yLjItLjItMy44LTIuMi0zLjYtNC40LjEtMSAuMS0yIC4xLTNDNzIgMjIuNCA1Ny42IDggNDAgOGMtMi4yIDAtNC0xLjgtNC00czEuOC00IDQtNGMyMi4xIDAgNDAgMTcuOSA0MCA0MCAwIDEuMy0uMSAyLjUtLjIgMy44LS4yIDIuMS0xLjkgMy42LTQgMy42eiIvPgo8L3N2Zz4K);background-repeat:no-repeat;background-size:16px 16px;display:none;height:16px;margin:0 10px;position:absolute;width:16px;z-index:40}@keyframes wpcode-spinner-rotation{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}.wpcode-pro-pill{background:#bbb;color:var(--wpcode-background-white);text-transform:uppercase;padding:4px 7px;border-radius:9px;font-size:8px;line-height:1;display:inline-block;vertical-align:text-top}.wpcode-revisions-list-area{margin:24px 0 24px;position:relative}.wpcode-revisions-list-area #wpcode-show-all-snippets{margin-top:24px}.wpcode-revisions-list{border-left:1px solid var(--wpcode-border-color);padding-left:22px;margin:0}.wpcode-revisions-list.wpcode-revisions-list-collapsed{display:none}.wpcode-revisions-list.wpcode-revisions-list-extra{margin-top:0}.wpcode-revisions-list.wpcode-revisions-list-extra .wpcode-revision-list-item:first-child{background-color:var(--wpcode-button-disabled-bg)}.wpcode-revision-list-item{background:var(--wpcode-button-disabled-bg);padding:6px 9px;font-size:var(--wpcode-font-size-s);position:relative}.wpcode-revision-list-item .avatar{border-radius:50%;vertical-align:middle}.wpcode-revision-list-item:before{position:absolute;content:'';width:7px;height:7px;border-radius:50%;background-color:#C4C4C4;border:2px solid #FFF;right:100%;margin-right:17px;top:50%;margin-top:-5px}.wpcode-revision-list-item:first-child{background-color:var(--wpcode-background-highlight)}.wpcode-revision-list-author{display:inline-block;margin:0 10px 0 12px;font-weight:600;color:var(--wpcode-text-color-heading)}.wpcode-revision-list-date{color:var(--wpcode-text-color-light-bg)}.wpcode-remote-icon{background:#c5c5c6;border-radius:50%;display:inline-block;width:30px;height:30px;vertical-align:middle;text-align:center;line-height:30px}.wpcode-remote-icon svg path{fill:#fff}.wpcode-revision-list-item-actions{float:right;display:inline-flex;vertical-align:middle;align-items:center;margin-top:7px;margin-right:6px}.wpcode-revision-list-item-actions span,.wpcode-revision-list-item-actions a{font-size:12px;color:var(--wpcode-text-color-paragraph);margin-left:14px}.wpcode-revision-list-item-actions span:hover,.wpcode-revision-list-item-actions a:hover{text-decoration:none}.wpcode-blur-area{filter:blur(2px);pointer-events:none}.wpcode-library .wpcode-content{position:relative}#poststuff .wpcode-upsell-box,.wpcode-upsell-box{position:absolute;z-index:20;background:var(--wpcode-background-white);width:662px;max-width:100%;top:50%;left:50%;transform:translate(-50%,-50%);padding:40px;text-align:center;border-radius:8px;border:1px solid var(--wpcode-border-color)}#poststuff .wpcode-upsell-box *,.wpcode-upsell-box *{box-sizing:border-box}#poststuff .wpcode-upsell-box h2,.wpcode-upsell-box h2{font-size:var(--wpcode-font-size-xxl);margin-top:0;line-height:1.2}#poststuff .wpcode-upsell-box .wpcode-button,.wpcode-upsell-box .wpcode-button{margin-top:6px}#poststuff .wpcode-upsell-box .wpcode-upsell-button-text,.wpcode-upsell-box .wpcode-upsell-button-text{margin-top:16px;display:inline-block;font-size:var(--wpcode-font-size-s);color:var(--wpcode-text-color-light-bg)}#poststuff .wpcode-upsell-box .wpcode-upsell-button-text:hover,.wpcode-upsell-box .wpcode-upsell-button-text:hover{text-decoration:none}#poststuff .wpcode-upsell-box p,.wpcode-upsell-box p{color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-m);line-height:1.5}#poststuff .wpcode-upsell-box.wpcode-upsell-box-with-features,.wpcode-upsell-box.wpcode-upsell-box-with-features{width:892px;padding:56px}#poststuff .wpcode-upsell-box.wpcode-upsell-box-with-features .wpcode-upsell-text,.wpcode-upsell-box.wpcode-upsell-box-with-features .wpcode-upsell-text{max-width:600px;margin:0 auto}#poststuff .wpcode-upsell-box .wpcode-upsell-features,.wpcode-upsell-box .wpcode-upsell-features{display:flex;flex-wrap:wrap;justify-content:space-between;margin-top:40px;margin-bottom:24px;text-align:left}#poststuff .wpcode-upsell-box .wpcode-upsell-features .wpcode-upsell-feature,.wpcode-upsell-box .wpcode-upsell-features .wpcode-upsell-feature{width:50%;color:var(--wpcode-text-color-heading);font-size:var(--wpcode-font-size-m);margin-bottom:16px;line-height:1.5;padding-left:34px;position:relative;padding-right:10px}#poststuff .wpcode-upsell-box .wpcode-upsell-features .wpcode-upsell-feature:before,.wpcode-upsell-box .wpcode-upsell-features .wpcode-upsell-feature:before{content:'';background-image:url("data:image/svg+xml,%3Csvg width=%2719%27 height=%2718%27 viewBox=%270 0 19 18%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath fill-rule=%27evenodd%27 clip-rule=%27evenodd%27 d=%27M9.5 0.416016C4.67 0.416016 0.75 4.33602 0.75 9.16602C0.75 13.996 4.67 17.916 9.5 17.916C14.33 17.916 18.25 13.996 18.25 9.16602C18.25 4.33602 14.33 0.416016 9.5 0.416016ZM9.5 16.166C5.64125 16.166 2.5 13.0248 2.5 9.16602C2.5 5.30727 5.64125 2.16602 9.5 2.16602C13.3587 2.16602 16.5 5.30727 16.5 9.16602C16.5 13.0248 13.3587 16.166 9.5 16.166ZM7.75 11.0648L13.5163 5.29852L14.75 6.54102L7.75 13.541L4.25 10.041L5.48375 8.80727L7.75 11.0648Z%27 fill=%27%2309A347%27/%3E%3C/svg%3E");display:block;width:19px;height:18px;position:absolute;left:0;top:3px}.wpcode-pixel .wpcode-upsell-box .wpcode-upsell-text{max-width:750px}@media (max-width:1440px){.wpcode-library .wpcode-upsell-box{top:100px;transform:translate(-50%,0)}}.wpcode-hide{display:none}.wpcode-setting-license-wrapper .wpcode-input-text{max-width:400px}.wpcode-settings .wpcode-metabox-form-row-input input[type="number"]{width:80px;margin-right:10px}.wpcode-settings .wpcode-metabox-form-row-input input[type="number"]+label{margin-right:10px}.wpcode-settings .wpcode-metabox-form-row-input>label{color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-s)}.wpcode-settings .wpcode-metabox-form-row-input input[type="password"]{width:400px}.wpcode-settings #wpcode-notice-global-emailsmtp{margin-left:0;margin-right:0}.wpcode-settings #wpcode-notice-global-emailsmtp h3{margin-bottom:5px}.wpcode-notice-top-area .notice-top{margin:0;border:0;box-shadow:none;background-color:#dddddd;color:var(--wpcode-text-color-heading);text-align:center}.wpcode-notice-top-area .notice-top a{color:var(--wpcode-color-primary)}.wpcode-icon-new{color:var(--wpcode-notice-success-bg);vertical-align:super;font-size:9px;font-weight:600;padding-left:2px}.wpcode-notice .wpcode-icon-new{margin-right:5px}.wpcode-features-list{display:flex;justify-content:space-between;max-width:1000px}@media (max-width:1200px){.wpcode-features-list{flex-direction:column}}.wpcode-features-list ul{margin:0}.wpcode-features-list li{color:var(--wpcode-text-color-heading);font-size:14px;margin-bottom:15px}.wpcode-features-list li:before{content:'+';margin-right:5px;vertical-align:center}#wpcode-notice-ihaf-snippets{margin:0 0 36px;border-left:1px solid #c3c4c7}#wpcode-notice-ihaf-snippets p{color:var(--wpcode-text-color-heading)}#wpcode-notice-global-wpconsent_pixel{margin-left:0;margin-right:0;margin-bottom:30px}.wpcode-modal-area{border:1px solid var(--wpcode-border-color);padding:26px;width:752px;max-width:100%;margin:60px auto;background:#fff;border-radius:8px}.wpcode-modal-area .notice{margin:0}.wpcode-buttons-row{margin:40px 0 0;text-align:center}.wpcode-modal-header{text-align:center}.wpcode-items-metabox-inside{background-color:var(--wpcode-background-gray);margin-bottom:var(--wpcode-space-v);margin-left:-24px;margin-right:-24px;border-top:1px solid #F5F5F5;border-bottom:1px solid #F5F5F5}.wpcode-items-metabox-inside .wpcode-list-item-location{cursor:pointer}.wpcode-items-metabox-inside .wpcode-list-item-location *{cursor:pointer}.wpcode-items-metabox-inside .wpcode-list-item{padding:0;border:none;font-size:14px;margin-top:12px;margin-bottom:12px}.wpcode-items-metabox-inside .wpcode-list-item.wpcode-list-item-disabled .wpcode-list-item-title{color:#848A8A}.wpcode-items-metabox-inside .wpcode-list-item.wpcode-list-item-disabled .wpcode-list-item-description{color:rgba(119,119,119,0.50)}@media (min-width:961px){.wpcode-items-metabox-inside .wpcode-list-item{width:calc(50% - 24px)}}.wpcode-items-metabox-inside .wpcode-list-item.wpcode-list-item-separator{width:100%;color:var(--wpcode-text-color-heading);font-size:var(--wpcode-font-size-m);font-weight:700;padding:0;border:none;margin-top:16px}.wpcode-items-metabox-inside .wpcode-list-item .wpcode-list-item-title{font-size:var(--wpcode-font-size-s);color:var(--wpcode-text-color-heading);font-weight:700;display:block}.wpcode-items-metabox-inside .wpcode-list-item:hover .wpcode-list-item-description,.wpcode-items-metabox-inside .wpcode-list-item:focus .wpcode-list-item-description{opacity:1}.wpcode-items-metabox-inside .wpcode-list-item input{opacity:0;position:absolute}.wpcode-items-metabox-inside .wpcode-list-item.wpcode-list-item-selected .wpcode-list-item-title:after{content:attr(data-selected-label);display:inline-block;position:absolute;left:auto;top:0;margin-left:5px;vertical-align:middle;background-color:var(--wpcode-color-primary);color:#fff;font-size:8px;font-weight:700;text-transform:uppercase;line-height:1;padding:4px 8px;border-radius:40px}.wpcode-items-metabox-inside .wpcode-list-item-description{margin-top:8px;display:block;min-height:0;color:var(--wpcode-text-color-paragraph)}.wpcode-items-metabox-inside .wpcode-items-list-category{margin-top:0}.wpcode-items-metabox-inside .wpcode-items-list{padding:5px 12px;position:relative}.wpcode-items-metabox-inside .wpcode-items-list:before{content:'';display:block;position:absolute;top:-10px;left:417px;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:10px solid var(--wpcode-background-gray);z-index:10}.wpcode-items-metabox-inside .wpcode-items-list:after{content:'';display:block;position:absolute;top:-11px;left:417px;width:0;height:0;border-left:10px solid transparent;border-right:10px solid transparent;border-bottom:10px solid #F5F5F5;z-index:5}.wpcode-items-metabox-inside .wpcode-keywords{display:none}.wpcode-items-metabox-inside .wpcode-list-item-pill{display:inline-block;position:relative;right:0;top:0;margin-left:5px;vertical-align:middle;color:#fff}.wpcode-items-metabox-inside .wpcode-items-categories-list .wpcode-active:after{background-image:url("data:image/svg+xml,%3Csvg width=%2716%27 height=%2712%27 viewBox=%270 0 16 12%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath d=%27M5.33329 9.25326L1.83329 5.75326L0.666626 6.91992L5.33329 11.5866L15.3333 1.58659L14.1666 0.419922L5.33329 9.25326Z%27 fill=%27%233568B7%27/%3E%3C/svg%3E%0A");content:'';height:12px;position:absolute;right:10px;top:50%;transform:translateY(-50%);width:16px}.wpcode-faux-select{border-color:var(--wpcode-border-color);border-radius:4px;border-width:1px;border-style:solid;color:var(--wpcode-text-color-heading);cursor:pointer;line-height:38px;min-height:40px;padding-left:12px;padding-right:32px;font-size:14px;background:var(--wpcode-background-white) url("data:image/svg+xml;charset=US-ASCII,%3Csvg%20width%3D%2220%22%20height%3D%2220%22%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%3E%3Cpath%20d%3D%22M5%206l5%205%205-5%202%201-7%207-7-7%202-1z%22%20fill%3D%22%23555%22%2F%3E%3C%2Fsvg%3E") no-repeat right 13px top 55%;max-width:424px;width:100%}.wpcode-faux-select:focus{outline:none;box-shadow:0 0 0 1px var(--wpcode-color-primary)}.wpcode-auto-insert-form-fields .wpcode-metabox-form-row{max-width:100%}.wpcode-auto-insert-form-fields .wpcode-metabox-form-row-input{display:flex;align-items:center;flex-flow:wrap}@media (min-width:1470px){.wpcode-auto-insert-form-fields .wpcode-metabox-form-row-input{flex-flow:row}}.wpcode-auto-insert-form-fields .wpcode-metabox-form-row-input .wpcode-extra-location-fields{display:flex;align-items:center;margin-top:24px;width:100%}@media (min-width:1470px){.wpcode-auto-insert-form-fields .wpcode-metabox-form-row-input .wpcode-extra-location-fields{margin-top:0}}.wpcode-auto-insert-form-fields .wpcode-metabox-form-row-input .wpcode-extra-location-input{display:flex;align-items:center;position:relative;margin-right:18px}@media (min-width:1470px){.wpcode-auto-insert-form-fields .wpcode-metabox-form-row-input .wpcode-extra-location-input{margin-right:0}}.wpcode-auto-insert-form-fields .wpcode-metabox-form-row-input .wpcode-extra-location-input .wpcode-location-extra-input-description{flex-shrink:0}.wpcode-auto-insert-form-fields .wpcode-metabox-form-row-input .wpcode-extra-location-input .wpcode-help-tooltip{margin-left:10px}.wpcode-auto-insert-form-fields .wpcode-location-extra-input-description{color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-s);margin:0 18px 0 0}@media (min-width:1470px){.wpcode-auto-insert-form-fields .wpcode-location-extra-input-description{margin-left:18px}}.wpcode-auto-insert-form-fields .wpcode-input-number{max-width:75px}#wpcode_auto_insert_location .wpcode-list-item-description{opacity:1}.wpcode-smart-tags{position:relative;display:inline-block;vertical-align:top}.wpcode-smart-tags.wpcode-smart-tags-unavailable .wpcode-smart-tags-toggle{opacity:0.6}.wpcode-smart-tags .wpcode-smart-tags-toggle{background:none;border:none;color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-s);cursor:pointer}.wpcode-smart-tags .wpcode-smart-tags-toggle svg{vertical-align:middle}.wpcode-smart-tags .wpcode-smart-tags-toggle span{text-decoration:underline}.wpcode-smart-tags .wpcode-smart-tags-toggle:hover span{text-decoration:none}.wpcode-smart-tags .wpcode-text-active{display:none}.wpcode-smart-tags .wpcode-smart-tags-dropdown{border:1px solid var(--wpcode-border-color);border-radius:4px;display:none;left:0;position:absolute;top:100%;z-index:1050;background:#fff;width:400px;margin-top:7px}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tags-header{position:sticky;top:0;background:#fff;z-index:10;border-bottom:1px solid var(--wpcode-border-color);padding:10px 15px}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tags-title{margin:0 0 10px 0;font-size:16px;font-weight:600;color:var(--wpcode-text-color-paragraph)}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tags-search .wpcode-smart-tags-search-input{width:100%;padding:8px 10px;border:1px solid var(--wpcode-border-color);border-radius:4px;font-size:var(--wpcode-font-size-s);color:var(--wpcode-text-color-paragraph)}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tags-search .wpcode-smart-tags-search-input:focus{outline:none;border-color:var(--wpcode-color-primary)}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tags-list{max-height:400px;overflow-y:auto;padding-top:5px}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tags-no-results{padding:15px;text-align:center;color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-s)}.wpcode-smart-tags .wpcode-smart-tags-dropdown ul{border-top:1px solid var(--wpcode-border-color)}.wpcode-smart-tags .wpcode-smart-tags-dropdown ul:first-child{border-top:none}.wpcode-smart-tags .wpcode-smart-tags-dropdown ul li{padding:0 15px;margin:12px 0}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tag-category-label{font-weight:600;font-size:var(--wpcode-font-size-s);color:var(--wpcode-text-color-paragraph)}.wpcode-smart-tags.wpcode-smart-tags-open .wpcode-text-active{display:inline-block}.wpcode-smart-tags.wpcode-smart-tags-open .wpcode-text-default{display:none}.wpcode-smart-tags.wpcode-smart-tags-open .wpcode-smart-tags-dropdown{max-height:500px;overflow-y:auto;display:block}.wpcode-insert-smart-tag{border:0;color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-s);padding:0;text-align:left;background:none;cursor:pointer}.wpcode-insert-smart-tag:hover code{background-color:rgba(0,0,0,0.15)}.wpcode-smart-tags-dropdown-footer{padding:12px 15px;border-top:1px solid var(--wpcode-border-color);display:flex}.wpcode-smart-tags-dropdown-footer a{color:var(--wpcode-text-color-paragraph);display:inline-flex}.wpcode-smart-tags-dropdown-footer a .wpcode-icon{margin-right:5px}.wpcode-toggle-testing-mode-wrap{opacity:0.6}.wpcode-plugin-page{margin:50px auto;width:700px;max-width:100%;text-align:center}.wpcode-plugin-page-image{margin-bottom:38px}.wpcode-plugin-screenshot{display:flex;text-align:left;margin:50px 0}.wpcode-plugin-screenshot ul{margin-left:30px;margin-top:0}.wpcode-plugin-screenshot ul li{margin:16px 0;padding:0 0 0 24px;font-size:15px;color:var(--wpcode-text-color-paragraph);background-image:url("data:image/svg+xml,%3Csvg width=%2719%27 height=%2718%27 viewBox=%270 0 19 18%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath fill-rule=%27evenodd%27 clip-rule=%27evenodd%27 d=%27M9.5 0.416016C4.67 0.416016 0.75 4.33602 0.75 9.16602C0.75 13.996 4.67 17.916 9.5 17.916C14.33 17.916 18.25 13.996 18.25 9.16602C18.25 4.33602 14.33 0.416016 9.5 0.416016ZM9.5 16.166C5.64125 16.166 2.5 13.0248 2.5 9.16602C2.5 5.30727 5.64125 2.16602 9.5 2.16602C13.3587 2.16602 16.5 5.30727 16.5 9.16602C16.5 13.0248 13.3587 16.166 9.5 16.166ZM7.75 11.0648L13.5163 5.29852L14.75 6.54102L7.75 13.541L4.25 10.041L5.48375 8.80727L7.75 11.0648Z%27 fill=%27%2309A347%27/%3E%3C/svg%3E");background-position:left 3px;background-repeat:no-repeat;background-size:14px}.wpcode-plugin-screenshot-image{width:315px;padding:5px;background:#fff;box-shadow:0 2px 5px 0 rgba(0,0,0,0.05);border-radius:3px;position:relative}.wpcode-plugin-screenshot-image img{max-width:100%;display:block}.wpcode-plugin-screenshot-image a{position:absolute;opacity:0;height:100%;width:100%;top:0;left:0;border:5px solid #ffffff;background-color:rgba(0,0,0,0.15);background-repeat:no-repeat;background-position:center;background-size:50px;transition:all 0.3s;display:flex;justify-content:center;align-items:center}.wpcode-plugin-screenshot-image a:before{content:'';position:absolute;width:50px;height:50px;border-radius:50%;background-color:var(--wpcode-color-primary);opacity:1;top:50%;left:50%;transform:translate(-50%,-50%)}.wpcode-plugin-screenshot-image a svg{position:relative;z-index:10}.wpcode-plugin-screenshot-image a svg path{fill:#fff}.wpcode-plugin-screenshot-image a:hover{opacity:1}.wpcode-plugin-step{background-color:#f9f9f9;box-shadow:0 2px 5px 0 rgba(0,0,0,0.05);border:1px solid #e5e5e5;margin:0 0 25px 0;text-align:left}.wpcode-plugin-step>*{vertical-align:middle}.wpcode-plugin-step .wpcode-plugin-page-step-num{display:inline-block;position:relative;width:100px;height:50px;text-align:center}.wpcode-plugin-step .wpcode-plugin-page-step-num .wpcode-icon-step-1{background-color:#ccc;border-radius:50%}.wpcode-plugin-step div{display:inline-block;width:calc(100% - 104px);background-color:#ffffff;padding:30px;border-left:1px solid #eeeeee}.wpcode-plugin-step div h2{margin-top:0}.wpcode-plugin-page-step-loader{margin:0 auto;position:relative;text-indent:-9999em;border-top:4px solid #969696;border-right:4px solid #969696;border-bottom:4px solid #969696;border-left:4px solid #404040;transform:translateZ(0);animation:wpcoderotate1 1.1s infinite linear;background-color:transparent;display:block;border-radius:50%;width:50px;height:50px;margin-top:-54px}.wpcode-plugin-page-step-loader.wpcode-plugin-page-step-loader-hidden{opacity:0}.wpcode-plugin-page-step-loader:after{display:block;border-radius:50%;width:50px;height:50px}@keyframes wpcoderotate1{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}/*! Lity - v2.4.1 - 2020-04-26
* http://sorgalla.com/lity/
* Copyright (c) 2015-2020 Jan Sorgalla; Licensed MIT */.lity{z-index:9990;position:fixed;top:0;right:0;bottom:0;left:0;white-space:nowrap;background:#0b0b0b;background:rgba(0,0,0,0.9);outline:none !important;opacity:0;transition:opacity 0.3s ease}.lity.lity-opened{opacity:1}.lity.lity-closed{opacity:0}.lity *{box-sizing:border-box}.lity-wrap{z-index:9990;position:fixed;top:0;right:0;bottom:0;left:0;text-align:center;outline:none !important}.lity-wrap:before{content:'';display:inline-block;height:100%;vertical-align:middle;margin-right:-0.25em}.lity-loader{z-index:9991;color:#fff;position:absolute;top:50%;margin-top:-0.8em;width:100%;text-align:center;font-size:14px;font-family:Arial,Helvetica,sans-serif;opacity:0;transition:opacity 0.3s ease}.lity-loading .lity-loader{opacity:1}.lity-container{z-index:9992;position:relative;text-align:left;vertical-align:middle;display:inline-block;white-space:normal;max-width:100%;max-height:100%;outline:none !important}.lity-content{z-index:9993;width:100%;transform:scale(1);transition:transform 0.3s ease}.lity-loading .lity-content,.lity-closed .lity-content{transform:scale(0.8)}.lity-content:after{content:'';position:absolute;left:0;top:0;bottom:0;display:block;right:0;width:auto;height:auto;z-index:-1;box-shadow:0 0 8px rgba(0,0,0,0.6)}.lity-close{z-index:9994;width:35px;height:35px;position:fixed;right:0;top:0;-webkit-appearance:none;cursor:pointer;text-decoration:none;text-align:center;padding:0;color:#fff;font-style:normal;font-size:35px;font-family:Arial,Baskerville,monospace;line-height:35px;text-shadow:0 1px 2px rgba(0,0,0,0.6);border:0;background:none;outline:none;box-shadow:none}.lity-close::-moz-focus-inner{border:0;padding:0}.lity-close:hover,.lity-close:focus,.lity-close:active,.lity-close:visited{text-decoration:none;text-align:center;padding:0;color:#fff;font-style:normal;font-size:35px;font-family:Arial,Baskerville,monospace;line-height:35px;text-shadow:0 1px 2px rgba(0,0,0,0.6);border:0;background:none;outline:none;box-shadow:none}.lity-close:active{top:1px}.lity-image img{max-width:100%;display:block;line-height:0;border:0}.lity-iframe .lity-container,.lity-youtube .lity-container,.lity-vimeo .lity-container,.lity-facebookvideo .lity-container,.lity-googlemaps .lity-container{width:100%;max-width:964px}.lity-iframe-container{width:100%;height:0;padding-top:56.25%;overflow:auto;pointer-events:auto;transform:translateZ(0);-webkit-overflow-scrolling:touch}.lity-iframe-container iframe{position:absolute;display:block;top:0;left:0;width:100%;height:100%;box-shadow:0 0 8px rgba(0,0,0,0.6);background:#000}.lity-hide{display:none}.wpcode-admin-page .lity{z-index:100000;padding:20px}.wpcode-admin-page .lity-content img{max-height:80vh !important;max-width:80vw !important}.wpcode-content .wpcode-plugin-suggestions,.wrap .wpcode-plugin-suggestions{display:flex;align-items:center;margin-top:0}.wpcode-content .wpcode-plugin-suggestions h3,.wrap .wpcode-plugin-suggestions h3{margin-top:0;margin-bottom:5px}.wpcode-content .wpcode-plugin-suggestions p,.wrap .wpcode-plugin-suggestions p{padding:0}@media (max-width:782px){.wpcode-content .wpcode-plugin-suggestions,.wrap .wpcode-plugin-suggestions{flex-direction:column;align-items:flex-start}}.wpcode-content .wpcode-plugin-suggestions:first-child,.wpcode-content .wpcode-plugin-suggestions div:first-child,.wrap .wpcode-plugin-suggestions:first-child,.wrap .wpcode-plugin-suggestions div:first-child{margin-top:0}.wpcode-content .wpcode-plugin-suggestions .wpcode-plugin-suggestion-plugin,.wrap .wpcode-plugin-suggestions .wpcode-plugin-suggestion-plugin{width:33%;margin:0 0 20px;display:flex}.wpcode-content .wpcode-plugin-suggestions .wpcode-plugin-suggestion-plugin .wpcode-plugin-suggestion-plugin-icon,.wrap .wpcode-plugin-suggestions .wpcode-plugin-suggestion-plugin .wpcode-plugin-suggestion-plugin-icon{margin-right:12px}@media (max-width:782px){.wpcode-content .wpcode-plugin-suggestions .wpcode-plugin-suggestion-plugin,.wrap .wpcode-plugin-suggestions .wpcode-plugin-suggestion-plugin{width:100%}}.wpcode-content .wpcode-suggestions-title,.wrap .wpcode-suggestions-title{padding:0;margin-bottom:12px;margin-top:20px}.wpcode-code-type-picker{position:fixed;left:160px;right:0;z-index:1100;background:#f0f0f1;text-align:left;padding:30px 40px 30px;bottom:-1000px;border-top:1px solid var(--wpcode-border-color);transition:bottom 0.30s ease}.folded .wpcode-code-type-picker{left:36px}@media (max-width:768px){.wpcode-code-type-picker{left:0}.wp-responsive-open .wpcode-code-type-picker{display:none}}.wpcode-code-type-picker .wpcode-code-types-list{display:grid;grid-gap:40px;padding:0 40px;grid-template-columns:repeat(auto-fill,minmax(Max(150px,200px),1fr));max-width:1100px;margin:0 auto}@media (max-width:1239px){.wpcode-code-type-picker .wpcode-code-types-list{padding:0;grid-gap:20px}}@media (max-height:480px) OR (max-width:768px){.wpcode-code-type-picker .wpcode-code-types-list .wpcode-code-type-desc{display:none}}.wpcode-code-textarea{position:relative}.wpcode-code-type{border-radius:6px;height:100%;overflow:hidden;padding:0 0 15px;position:relative;box-shadow:0 0 0 1px #cccccc;transition:box-shadow 0.15s;background:#fff;cursor:pointer}.wpcode-code-type h3{font-size:16px;font-weight:600;line-height:18px;padding:20px 30px 2px;margin:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap;color:#444444}.wpcode-code-type .wpcode-code-type-desc{color:#777777;font-size:14px;line-height:18px;margin:10px 0 0;padding:5px 30px}.wpcode-code-type.wpcode-code-type-selected{box-shadow:0 0 0 2px var(--wpcode-color-primary)}.wpcode-code-type-picker-backdrop{left:160px;top:0;z-index:-100;bottom:0;right:0;background:rgba(0,0,0,0.7);position:fixed;opacity:0;transition:opacity 0.30s ease}.folded .wpcode-code-type-picker-backdrop{left:36px}@media (max-width:768px){.wpcode-code-type-picker-backdrop{left:0}.wp-responsive-open .wpcode-code-type-picker-backdrop{display:none}}.wpcode-code-type-picker-header{display:flex;justify-content:space-between;margin:0 auto 20px;width:1020px;max-width:100%}.wpcode-code-type-picker-visible .wpcode-code-type-picker-backdrop{opacity:1;z-index:1070}.wpcode-code-type-picker-visible .wpcode-code-type-picker{bottom:0}#wpcode_snippet_type-holder select{pointer-events:none}/*!
 * jquery-confirm v3.3.4 (http://craftpip.github.io/jquery-confirm/)
 * Author: boniface pereira
 * Website: www.craftpip.com
 * Contact: hey@craftpip.com
 *
 * Copyright 2013-2019 jquery-confirm
 * Licensed under MIT (https://github.com/craftpip/jquery-confirm/blob/master/LICENSE)
 */@keyframes jconfirm-spin{from{transform:rotate(0deg)}to{transform:rotate(360deg)}}body[class*=jconfirm-no-scroll-]{overflow:hidden !important}.jconfirm{position:fixed;top:0;left:0;right:0;bottom:0;z-index:99999999;font-family:inherit;overflow:hidden}.jconfirm .jconfirm-bg{position:fixed;top:0;left:0;right:0;bottom:0;transition:opacity .4s}.jconfirm .jconfirm-bg.jconfirm-bg-h{opacity:0 !important}.jconfirm .jconfirm-scrollpane{perspective:500px;perspective-origin:center;display:table;width:100%;height:100%}.jconfirm .jconfirm-row{display:table-row;width:100%}.jconfirm .jconfirm-cell{display:table-cell;vertical-align:middle}.jconfirm .jconfirm-holder{max-height:100%;padding:50px 0}.jconfirm .jconfirm-box-container{transition:transform}.jconfirm .jconfirm-box-container.jconfirm-no-transition{transition:none !important}.jconfirm .jconfirm-box{background:white;border-radius:4px;position:relative;outline:0;padding:15px 15px 0;overflow:hidden;margin-left:auto;margin-right:auto}@keyframes type-blue{1%,100%{border-color:#3498db}50%{border-color:#5faee3}}@keyframes type-green{1%,100%{border-color:#2ecc71}50%{border-color:#54d98c}}@keyframes type-red{1%,100%{border-color:#e74c3c}50%{border-color:#ed7669}}@keyframes type-orange{1%,100%{border-color:#f1c40f}50%{border-color:#f4d03f}}@keyframes type-purple{1%,100%{border-color:#9b59b6}50%{border-color:#b07cc6}}@keyframes type-dark{1%,100%{border-color:#34495e}50%{border-color:#46627f}}.jconfirm .jconfirm-box.jconfirm-type-animated{animation-duration:2s;animation-iteration-count:infinite}.jconfirm .jconfirm-box.jconfirm-type-blue{border-top:solid 7px #3498db;animation-name:type-blue}.jconfirm .jconfirm-box.jconfirm-type-green{border-top:solid 7px #2ecc71;animation-name:type-green}.jconfirm .jconfirm-box.jconfirm-type-red{border-top:solid 7px #e74c3c;animation-name:type-red}.jconfirm .jconfirm-box.jconfirm-type-orange{border-top:solid 7px #f1c40f;animation-name:type-orange}.jconfirm .jconfirm-box.jconfirm-type-purple{border-top:solid 7px #9b59b6;animation-name:type-purple}.jconfirm .jconfirm-box.jconfirm-type-dark{border-top:solid 7px #34495e;animation-name:type-dark}.jconfirm .jconfirm-box.loading{height:120px}.jconfirm .jconfirm-box.loading:before{content:'';position:absolute;left:0;background:white;right:0;top:0;bottom:0;border-radius:10px;z-index:1}.jconfirm .jconfirm-box.loading:after{opacity:.6;content:'';height:30px;width:30px;border:solid 3px transparent;position:absolute;left:50%;margin-left:-15px;border-radius:50%;animation:jconfirm-spin 1s infinite linear;border-bottom-color:dodgerblue;top:50%;margin-top:-15px;z-index:2}.jconfirm .jconfirm-box div.jconfirm-closeIcon{height:20px;width:20px;position:absolute;top:10px;right:10px;cursor:pointer;opacity:.6;text-align:center;font-size:27px !important;line-height:14px !important;display:none;z-index:1}.jconfirm .jconfirm-box div.jconfirm-closeIcon:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-closeIcon .fa{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon .glyphicon{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon .zmdi{font-size:16px}.jconfirm .jconfirm-box div.jconfirm-closeIcon:hover{opacity:1}.jconfirm .jconfirm-box div.jconfirm-title-c{display:block;font-size:22px;line-height:20px;-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:default;padding-bottom:15px}.jconfirm .jconfirm-box div.jconfirm-title-c.jconfirm-hand{cursor:move}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{font-size:inherit;display:inline-block;vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c i{vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title{-webkit-user-select:none;-moz-user-select:none;user-select:none;font-size:inherit;font-family:inherit;display:inline-block;vertical-align:middle}.jconfirm .jconfirm-box div.jconfirm-title-c .jconfirm-title:empty{display:none}.jconfirm .jconfirm-box div.jconfirm-content-pane{margin-bottom:15px;height:auto;transition:height .4s ease-in;display:inline-block;width:100%;position:relative;overflow-x:hidden;overflow-y:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane.no-scroll{overflow-y:hidden}.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar{width:3px}.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar-track{background:rgba(0,0,0,0.1)}.jconfirm .jconfirm-box div.jconfirm-content-pane::-webkit-scrollbar-thumb{background:#666;border-radius:3px}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content{overflow:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content img{max-width:100%;height:auto}.jconfirm .jconfirm-box div.jconfirm-content-pane .jconfirm-content:empty{display:none}.jconfirm .jconfirm-box .jconfirm-buttons{padding-bottom:11px}.jconfirm .jconfirm-box .jconfirm-buttons>button{margin-bottom:4px;margin-left:2px;margin-right:2px}.jconfirm .jconfirm-box .jconfirm-buttons button{display:inline-block;padding:6px 12px;font-size:14px;font-weight:400;line-height:1.42857143;text-align:center;white-space:nowrap;vertical-align:middle;touch-action:manipulation;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-radius:4px;min-height:1em;transition:opacity .1s ease,background-color .1s ease,color .1s ease,box-shadow .1s ease,background .1s ease;-webkit-tap-highlight-color:transparent;border:0;background-image:none}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue{background-color:#3498db;color:#FFF;text-shadow:none;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-blue:hover{background-color:#2980b9;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green{background-color:#2ecc71;color:#FFF;text-shadow:none;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-green:hover{background-color:#27ae60;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red{background-color:#e74c3c;color:#FFF;text-shadow:none;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-red:hover{background-color:#c0392b;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange{background-color:#f1c40f;color:#FFF;text-shadow:none;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-orange:hover{background-color:#f39c12;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default{background-color:#ecf0f1;color:#000;text-shadow:none;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-default:hover{background-color:#bdc3c7;color:#000}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple{background-color:#9b59b6;color:#FFF;text-shadow:none;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-purple:hover{background-color:#8e44ad;color:#FFF}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark{background-color:#34495e;color:#FFF;text-shadow:none;transition:background .2s}.jconfirm .jconfirm-box .jconfirm-buttons button.btn-dark:hover{background-color:#2c3e50;color:#FFF}.jconfirm .jconfirm-box.jconfirm-type-red .jconfirm-title-c .jconfirm-icon-c{color:#e74c3c !important}.jconfirm .jconfirm-box.jconfirm-type-blue .jconfirm-title-c .jconfirm-icon-c{color:#3498db !important}.jconfirm .jconfirm-box.jconfirm-type-green .jconfirm-title-c .jconfirm-icon-c{color:#2ecc71 !important}.jconfirm .jconfirm-box.jconfirm-type-purple .jconfirm-title-c .jconfirm-icon-c{color:#9b59b6 !important}.jconfirm .jconfirm-box.jconfirm-type-orange .jconfirm-title-c .jconfirm-icon-c{color:#f1c40f !important}.jconfirm .jconfirm-box.jconfirm-type-dark .jconfirm-title-c .jconfirm-icon-c{color:#34495e !important}.jconfirm .jconfirm-clear{clear:both}.jconfirm.jconfirm-rtl{direction:rtl}.jconfirm.jconfirm-rtl div.jconfirm-closeIcon{left:5px;right:auto}.jconfirm.jconfirm-white .jconfirm-bg,.jconfirm.jconfirm-light .jconfirm-bg{background-color:#444;opacity:.2}.jconfirm.jconfirm-white .jconfirm-box,.jconfirm.jconfirm-light .jconfirm-box{box-shadow:0 2px 6px rgba(0,0,0,0.2);border-radius:5px}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons{float:right}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button{text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default{box-shadow:none;color:#333}.jconfirm.jconfirm-white .jconfirm-box .jconfirm-buttons button.btn-default:hover,.jconfirm.jconfirm-light .jconfirm-box .jconfirm-buttons button.btn-default:hover{background:#ddd}.jconfirm.jconfirm-white.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-light.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-black .jconfirm-bg,.jconfirm.jconfirm-dark .jconfirm-bg{background-color:darkslategray;opacity:.4}.jconfirm.jconfirm-black .jconfirm-box,.jconfirm.jconfirm-dark .jconfirm-box{box-shadow:0 2px 6px rgba(0,0,0,0.2);background:#444;border-radius:5px;color:white}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons{float:right}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button{border:0;background-image:none;text-transform:uppercase;font-size:14px;font-weight:bold;text-shadow:none;transition:background .1s;color:white}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default{box-shadow:none;color:#fff;background:0}.jconfirm.jconfirm-black .jconfirm-box .jconfirm-buttons button.btn-default:hover,.jconfirm.jconfirm-dark .jconfirm-box .jconfirm-buttons button.btn-default:hover{background:#666}.jconfirm.jconfirm-black.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c,.jconfirm.jconfirm-dark.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm .jconfirm-box.hilight.jconfirm-hilight-shake{animation:shake .82s cubic-bezier(0.36,0.07,0.19,0.97) both;transform:translate3d(0,0,0)}.jconfirm .jconfirm-box.hilight.jconfirm-hilight-glow{animation:glow .82s cubic-bezier(0.36,0.07,0.19,0.97) both;transform:translate3d(0,0,0)}@keyframes shake{10%,90%{transform:translate3d(-2px,0,0)}20%,80%{transform:translate3d(4px,0,0)}30%,50%,70%{transform:translate3d(-8px,0,0)}40%,60%{transform:translate3d(8px,0,0)}}@keyframes glow{0%,100%{box-shadow:0 0 0 red}50%{box-shadow:0 0 30px red}}.jconfirm{perspective:400px}.jconfirm .jconfirm-box{opacity:1;transition-property:all}.jconfirm .jconfirm-box.jconfirm-animation-top,.jconfirm .jconfirm-box.jconfirm-animation-left,.jconfirm .jconfirm-box.jconfirm-animation-right,.jconfirm .jconfirm-box.jconfirm-animation-bottom,.jconfirm .jconfirm-box.jconfirm-animation-opacity,.jconfirm .jconfirm-box.jconfirm-animation-zoom,.jconfirm .jconfirm-box.jconfirm-animation-scale,.jconfirm .jconfirm-box.jconfirm-animation-none,.jconfirm .jconfirm-box.jconfirm-animation-rotate,.jconfirm .jconfirm-box.jconfirm-animation-rotatex,.jconfirm .jconfirm-box.jconfirm-animation-rotatey,.jconfirm .jconfirm-box.jconfirm-animation-scaley,.jconfirm .jconfirm-box.jconfirm-animation-scalex{opacity:0}.jconfirm .jconfirm-box.jconfirm-animation-rotate{transform:rotate(90deg)}.jconfirm .jconfirm-box.jconfirm-animation-rotatex{transform:rotateX(90deg);transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotatexr{transform:rotateX(-90deg);transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotatey{transform:rotatey(90deg);transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-rotateyr{transform:rotatey(-90deg);transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-scaley{transform:scaley(1.5);transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-scalex{transform:scalex(1.5);transform-origin:center}.jconfirm .jconfirm-box.jconfirm-animation-top{transform:translate(0px,-100px)}.jconfirm .jconfirm-box.jconfirm-animation-left{transform:translate(-100px,0px)}.jconfirm .jconfirm-box.jconfirm-animation-right{transform:translate(100px,0px)}.jconfirm .jconfirm-box.jconfirm-animation-bottom{transform:translate(0px,100px)}.jconfirm .jconfirm-box.jconfirm-animation-zoom{transform:scale(1.2)}.jconfirm .jconfirm-box.jconfirm-animation-scale{transform:scale(0.5)}.jconfirm .jconfirm-box.jconfirm-animation-none{visibility:hidden}.jconfirm.jconfirm-supervan .jconfirm-bg{background-color:rgba(54,70,93,0.95)}.jconfirm.jconfirm-supervan .jconfirm-box{background-color:transparent}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-blue{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-green{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-red{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-orange{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-purple{border:0}.jconfirm.jconfirm-supervan .jconfirm-box.jconfirm-type-dark{border:0}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-closeIcon{color:white}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c{text-align:center;color:white;font-size:28px;font-weight:normal}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c>*{padding-bottom:25px}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content-pane{margin-bottom:25px}.jconfirm.jconfirm-supervan .jconfirm-box div.jconfirm-content{text-align:center;color:white}.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons{text-align:center}.jconfirm.jconfirm-supervan .jconfirm-box .jconfirm-buttons button{font-size:16px;border-radius:2px;background:#303f53;text-shadow:none;border:0;color:white;padding:10px;min-width:100px}.jconfirm.jconfirm-supervan.jconfirm-rtl .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-material .jconfirm-bg{background-color:rgba(0,0,0,0.67)}.jconfirm.jconfirm-material .jconfirm-box{background-color:white;box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 25px 10px 25px}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold}.jconfirm.jconfirm-material .jconfirm-box div.jconfirm-content{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons{text-align:right}.jconfirm.jconfirm-material .jconfirm-box .jconfirm-buttons button{text-transform:uppercase;font-weight:500}.jconfirm.jconfirm-material.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-bootstrap .jconfirm-bg{background-color:rgba(0,0,0,0.21)}.jconfirm.jconfirm-bootstrap .jconfirm-box{background-color:white;box-shadow:0 3px 8px 0 rgba(0,0,0,0.2);border:solid 1px rgba(0,0,0,0.4);padding:15px 0 0}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{margin-right:8px;margin-left:0}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87)}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:22px;font-weight:bold;padding-left:15px;padding-right:15px}.jconfirm.jconfirm-bootstrap .jconfirm-box div.jconfirm-content{color:rgba(0,0,0,0.87);padding:0 15px}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons{text-align:right;padding:10px;margin:-5px 0 0;border-top:solid 1px #ddd;overflow:hidden;border-radius:0 0 4px 4px}.jconfirm.jconfirm-bootstrap .jconfirm-box .jconfirm-buttons button{font-weight:500}.jconfirm.jconfirm-bootstrap.jconfirm-rtl .jconfirm-title-c .jconfirm-icon-c{margin-left:8px;margin-right:0}.jconfirm.jconfirm-modern .jconfirm-bg{background-color:slategray;opacity:.6}.jconfirm.jconfirm-modern .jconfirm-box{background-color:white;box-shadow:0 7px 8px -4px rgba(0,0,0,0.2),0 13px 19px 2px rgba(0,0,0,0.14),0 5px 24px 4px rgba(0,0,0,0.12);padding:30px 30px 15px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-closeIcon{color:rgba(0,0,0,0.87);top:15px;right:15px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c{color:rgba(0,0,0,0.87);font-size:24px;font-weight:bold;text-align:center;margin-bottom:10px}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-title-c .jconfirm-icon-c{transition:transform .5s;transform:scale(0);display:block;margin-right:0;margin-left:0;margin-bottom:10px;font-size:69px;color:#aaa}.jconfirm.jconfirm-modern .jconfirm-box div.jconfirm-content{text-align:center;font-size:15px;color:#777;margin-bottom:25px}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons{text-align:center}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button{font-weight:bold;text-transform:uppercase;transition:background .1s;padding:10px 20px}.jconfirm.jconfirm-modern .jconfirm-box .jconfirm-buttons button+button{margin-left:4px}.jconfirm.jconfirm-modern.jconfirm-open .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{transform:scale(1)}body div.jconfirm *,body div.jconfirm *::before,body div.jconfirm *::after{box-sizing:border-box;font-size:14px;color:#777777;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif}.jconfirm.jconfirm-modern .jconfirm-bg{background:rgba(0,0,0,0.4);opacity:1}.jconfirm .jconfirm-box .jconfirm-buttons{padding:0px}body div.jconfirm .jconfirm-box-container .jconfirm-box{display:grid;grid-template-columns:repeat(2,1fr);justify-items:center;animation:none;background:#ffffff;border-radius:0px;border-top-style:solid;border-top-width:4px;box-shadow:0 3px 6px rgba(0,0,0,0.15);padding:36px 36px 17px}body div.jconfirm.loader-spinner .jconfirm-box-container .jconfirm-box{padding:10px 0 0 0}body div.jconfirm.no-content .jconfirm-box-container .jconfirm-box .jconfirm-title-c .jconfirm-icon-c+.jconfirm-title{margin:0px}body div.jconfirm.no-content .jconfirm-box-container .jconfirm-box .jconfirm-content-pane{display:none}body div.jconfirm.loader-spinner-completed .jconfirm-box-container .jconfirm-box .lds-dual-ring{display:block;text-align:center;margin:20px auto 0px auto}body div.jconfirm.no-content .jconfirm-box-container .jconfirm-box .jconfirm-content-pane{display:none}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-title-c,body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane,body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons{grid-column:1/-1}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-default{border-top-width:0}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-default .jconfirm-title-c{margin-bottom:20px}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-default .jconfirm-title-c .jconfirm-icon-c{font-size:44px;margin-bottom:-6px}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-default button.wpcode-btn-confirm{background-color:#e27730;border-color:#e27730}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons button.btn.wpcode-btn-reject{background-color:#d63638;border-color:#d63638;color:#fff}body div.jconfirm.save-to-cloud .jconfirm-box-container .jconfirm-box .jconfirm-buttons button.btn.wpcode-btn-reject{line-height:15px}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-default button.wpcode-btn-confirm{background-color:#e27730;border-color:#e27730}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-default button.wpcode-btn-confirm:hover{background-color:#cd6622;border-color:#cd6622}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-red{border-top:none}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-red .jconfirm-title-c .jconfirm-icon-c{color:#d63638 !important}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-red button.wpcode-btn-confirm{background-color:#d63638;border-color:#d63638}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-red button.wpcode-btn-confirm:hover{background-color:#b32d2e;border-color:#b32d2e}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-orange{border-top-color:#e27730 !important;border-top:none}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-orange .jconfirm-title-c .jconfirm-icon-c{color:#e27730 !important}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-orange button.wpcode-btn-confirm{background-color:#e27730;border-color:#e27730}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-orange button.wpcode-btn-confirm:hover{background-color:#cd6622;border-color:#cd6622}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-yellow{border-top-color:#ffb900 !important}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-yellow .jconfirm-title-c .jconfirm-icon-c{color:#ffb900 !important}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-yellow button.wpcode-btn-confirm{background-color:#ffb900;border-color:#ffb900}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-yellow button.wpcode-btn-confirm:hover{background-color:#ffaa00;border-color:#ffaa00}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-blue{border-top:0 !important}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-blue .jconfirm-title-c .jconfirm-icon-c{color:var(--wpcode-color-primary) !important}body div.jconfirm.width560px .jconfirm-box-container .jconfirm-box{max-width:560px}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-blue button.wpcode-btn-confirm{background-color:#3085d6;border-color:#3085d6}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-blue button.wpcode-btn-confirm:focus{box-shadow:0 0 0 3px rgb(53 104 183/50%)}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-blue button.wpcode-btn-confirm:hover{background-color:#2b77c0;border-color:#2b77c0}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-blue button.wpcode-btn-reject:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-blue button.wpcode-btn-cancel:hover{background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-green{border-top-color:#00a32a !important}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-green .jconfirm-title-c .jconfirm-icon-c{color:#00a32a !important}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-green button.wpcode-btn-confirm{background-color:#00a32a;border-color:#00a32a}body div.jconfirm .jconfirm-box-container .jconfirm-box.jconfirm-type-green button.wpcode-btn-confirm:hover{background-color:#008a20;border-color:#008a20}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-closeIcon{font-family:inherit;height:14px;opacity:1;right:17px !important;font-weight:700;right:10px;color:#c1c1c1;top:10px;width:14px}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-closeIcon:after{}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-closeIcon:hover:after{color:#777777 !important}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-title-c{margin:0 0 20px 0;padding:0;font-weight:600}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-title-c .jconfirm-icon-c{font-size:47px;margin:0;transform:none !important;transition:none !important}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-title-c .jconfirm-icon-c+.jconfirm-title{margin-top:0px;margin-bottom:10px}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-title-c .jconfirm-title{color:#444444;display:block;line-height:30px}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane{display:block;margin-bottom:20px}body div.jconfirm.loader-spinner-completed .jconfirm-box-container .jconfirm-box .jconfirm-content-pane{margin-bottom:0px}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content{color:#444444;font-size:16px;line-height:24px;margin-bottom:0;overflow:inherit}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content.lite-upgrade p{color:#777777;font-size:18px;padding:0 20px}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content p{font-size:inherit;line-height:inherit;margin:0 0 16px}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content p:last-of-type{margin:0}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content p.large{font-size:18px}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content p.small{font-size:14px}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content input[type=text],body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content input[type=number],body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content input[type=email],body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content input[type=url],body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content input[type=password],body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content input[type=search],body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content input[type=tel],body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content textarea,body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content select{margin:10px 2px;width:calc(100% - 4px)}body div.jconfirm .jconfirm-box-container .jconfirm-box .feature-video{margin:30px 0 0 0}body div.jconfirm .jconfirm-box-container .jconfirm-box .pro-feature-video{margin:15px 0 10px 0}body div.jconfirm .jconfirm-box-container .jconfirm-box input[type=text]:not(.choices__input){display:block;width:99%;border:1px solid #d6d6d6;padding:10px !important;box-shadow:none;margin:10px 1px 1px 1px !important;line-height:1 !important;outline:0}body div.jconfirm .jconfirm-box-container .jconfirm-box input[type=text]:not(.choices__input):focus{border-color:#007cba;box-shadow:0 0 0 1px #007cba}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons{margin-top:0px}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons button{background:#f8f8f8;border:1px solid #cccccc;border-radius:4px;color:#777777;font-size:14px;font-weight:600;line-height:14px;outline:none;padding:10px 16px;text-transform:none;margin:5px;transition-property:all;transition-duration:0.15s;transition-timing-function:ease-out}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-title-c .jconfirm-title .excl-mark,body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content .excl-mark{height:88px;width:88px;text-align:center;margin:auto;font-weight:400;margin-bottom:30px;font-size:55px;color:#f8bb86c9;border:4px solid #f8bb86c9;border-radius:50%;line-height:66px}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-title-c .jconfirm-title .excl-mark{margin-top:20px}body div.jconfirm.disable-testing-mode .jconfirm-box-container .jconfirm-content-pane p{text-align:left}body div.jconfirm .jconfirm-box-container .jconfirm-content .lds-dual-ring,body div.jconfirm .jconfirm-box-container .jconfirm-content .lds-dual-ring:after{box-sizing:border-box}body div.jconfirm .jconfirm-box-container .jconfirm-content .lds-dual-ring{color:var(--wpcode-color-primary);display:inline-block;width:54px;height:54px}body div.jconfirm .jconfirm-box-container .jconfirm-content .lds-dual-ring:after{content:" ";display:block;color:var(--wpcode-color-primary);width:38px;height:38px;margin:8px;border-radius:50%;border:4px solid var(--wpcode-color-primary);border-color:var(--wpcode-color-primary) transparent var(--wpcode-color-primary) transparent;animation:lds-dual-ring 1.2s linear infinite}@keyframes lds-dual-ring{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons button:hover{background:#eeeeee;border-color:#cccccc}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons .wpcode-btn-orange{background:var(--wpcode-button-orange-bg);border-color:var(--wpcode-button-orange-bg);color:#fff;height:56px;font-size:var(--wpcode-font-size-m);justify-content:center;padding-left:var(--wpcode-space-h);padding-right:var(--wpcode-space-h);text-align:center}body div.jconfirm .jconfirm-box-container .jconfirm-box .footer-link{grid-column:1/-1;border-top:1px solid #eee;padding-top:16px;margin-top:20px;width:100%;text-align:center}body div.jconfirm .jconfirm-box-container .jconfirm-box .footer-link a{color:#135e96}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons .wpcode-btn-orange:hover{background:var(--wpcode-button-orange-bg-hover);border-color:var(--wpcode-button-orange-bg-hover);background-image:linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.1))}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons button[disabled]{cursor:no-drop;pointer-events:none;opacity:.25}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons button.wpcode-btn-confirm{color:#ffffff}body div.jconfirm.disable-testing-mode .jconfirm-box-container .jconfirm-box .jconfirm-buttons button.wpcode-btn-confirm,body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons button.wpcode-btn-cancel,body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons button.wpcode-btn-reject{font-size:16px;line-height:19px}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons button.wpcode-btn-cancel{background-color:#757575;color:#fff}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane a{color:#135e96}body div.jconfirm.disable-testing-mode .jconfirm-box-container .jconfirm-box .jconfirm-content-pane{padding:0 40px}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons button.hidden+button{margin-left:0;margin-right:0}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons button.btn-block{display:block;margin:0 0 10px 0 !important;text-align:center;width:100%}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons button.btn-normal-case{text-transform:none !important}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-buttons button i{margin:0 10px 0 0}body div.jconfirm .jconfirm-box-container .jconfirm-box .error{color:#d63638;display:none}body div.jconfirm .jconfirm-box-container .jconfirm-box button[disabled]{cursor:no-drop}.choices{font-size:16px;text-align:start}body .jconfirm.has-video div.jconfirm-box-container .jconfirm-box{padding-bottom:0;padding-top:30px}body .jconfirm.has-video div.jconfirm-box-container .feature-video,body .jconfirm.has-video div.jconfirm-box-container .pro-feature-video{grid-row:1/span 4;grid-column-start:2;margin-top:0;margin-left:15px}body .jconfirm.has-video div.jconfirm-box-container .jconfirm-title-c,body .jconfirm.has-video div.jconfirm-box-container .jconfirm-content-pane,body .jconfirm.has-video div.jconfirm-box-container .jconfirm-buttons{grid-column:1/2}body .jconfirm.upgrade-modal .jconfirm-box-container div.jconfirm-box{padding-bottom:30px}body .jconfirm.upgrade-modal .jconfirm-box-container div.jconfirm-box .pro-feature-video{margin-bottom:0}body .jconfirm.upgrade-modal .jconfirm-box-container div.jconfirm-box .jconfirm-buttons{padding-bottom:0}.jconfirm-content-pane svg,.jconfirm-title svg{width:100px;display:block;margin:22px auto 54px auto}.upsell-box .jconfirm-content-pane svg,.jconfirm-title svg{margin:0px auto 10px auto}.jconfirm-content-pane svg circle,.jconfirm-title svg circle{stroke:rgba(165,220,134,.3)}.jconfirm-content-pane svg polyline,.jconfirm-title svg polyline{background-color:#a5dc86;stroke:#a5dc86;stroke-width:7px}.jconfirm-content-pane .path,.jconfirm-title .path{stroke-dasharray:1000;stroke-dashoffset:0}.jconfirm-content-pane .path.circle,.jconfirm-title .path.circle{animation:dash .9s ease-in-out}.jconfirm-content-pane .path.line,.jconfirm-title .path.line{stroke-dashoffset:1000;animation:dash .9s .35s ease-in-out forwards}.jconfirm-content-pane .path.check,.jconfirm-title .path.check{stroke-dashoffset:-100;animation:dash-check .9s .35s ease-in-out forwards}.jconfirm-content-pane p,.jconfirm-title p{text-align:center;margin:20px 0 60px;font-size:1.25em}.jconfirm-content-pane p.success,.jconfirm-title p.success{color:#73AF55}.jconfirm-content-pane p.error,.jconfirm-title p.error{color:#D06079}body div.jconfirm .jconfirm-box-container .wpcode-already-purchased{grid-column:1/-1}body div.jconfirm .jconfirm-box-container .wpcode-discount-note{grid-column:1/-1;text-align:center;background-color:#fcf9e8;color:#777777;font-size:16px;line-height:24px;margin:25px -36px 17px;padding:22px 52px 12px 52px;position:relative}body div.jconfirm .jconfirm-box-container .wpcode-discount-note span{font-weight:700;color:#00a32a}body div.jconfirm .jconfirm-box-container .jconfirm-box .jconfirm-content-pane .jconfirm-content.wpcode-lite-upgrade div{font-size:17px}body div.jconfirm .jconfirm-box-container .wpcode-discount-note strong{font-weight:700;font-size:16px}body div.jconfirm .jconfirm-box-container .wpcode-discount-note:after{background-color:#ffffff;border-radius:50%;background-color:#00a32a;content:"";display:inline-block;font:normal normal normal 14px FontAwesome;margin-inline-end:-15px;padding:11px 11px;border:6px solid #fff;position:absolute;inset-inline-end:50%;text-rendering:auto;top:-16px;-webkit-font-smoothing:antialiased}body div.jconfirm .jconfirm-box-container .wpcode_check{grid-column:1/-1;grid-row:4;display:inline-block;transform:rotate(45deg);height:13px;width:8px;position:relative;top:31px;left:-2px;border-bottom:3px solid #ffffff;border-right:3px solid #ffffff}body div.jconfirm .jconfirm-box-container .wpcode-already-purchased{grid-column:1/-1}body div.jconfirm .jconfirm-box-container .wpcode-already-purchased a{color:#bbb}body div.jconfirm .jconfirm-box-container .wpcode-already-purchased a:hover{color:#777}@keyframes dash{0%{stroke-dashoffset:1000}100%{stroke-dashoffset:0}}@keyframes dash-check{0%{stroke-dashoffset:-100}100%{stroke-dashoffset:900}}@media screen and (max-width:1023px){body .jconfirm.has-video div.jconfirm-box{grid-template-columns:repeat(1,1fr)}body .jconfirm.has-video .feature-video,body .jconfirm.has-video .pro-feature-video{display:none}}.wpcode-generator-column .wpcode-smart-tags{margin-bottom:10px}.wpcode-media-library-button{margin-top:8px}

.select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;-moz-user-select:none;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir="rtl"] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;-moz-user-select:none;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:white;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;-moz-user-select:none;user-select:none;-webkit-user-select:none}.select2-results__option[data-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0 !important;clip:rect(0 0 0 0) !important;height:1px !important;margin:-1px !important;overflow:hidden !important;padding:0 !important;position:absolute !important;width:1px !important}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir="rtl"] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--default .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__placeholder,.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-search--inline{float:right}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:solid black 1px;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--single,.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--single,.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:transparent;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[data-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[data-selected]{background-color:#5897fb;color:white}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF',endColorstr='#FFEEEEEE',GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:bold;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE',endColorstr='#FFCCCCCC',GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent transparent;border-style:solid;border-width:5px 4px 0 4px;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir="rtl"] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:0;border-top-left-radius:4px;border-bottom-left-radius:4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:transparent;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888 transparent;border-width:0 4px 5px 4px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:linear-gradient(to bottom,#fff 0%,#eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF',endColorstr='#FFEEEEEE',GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE',endColorstr='#FFFFFFFF',GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:white;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:bold;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{float:right}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--classic[dir="rtl"] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[data-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}

.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08)}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px)}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.arrowRight:before,.flatpickr-calendar.rightMost:after,.flatpickr-calendar.arrowRight:after{left:auto;right:22px}.flatpickr-calendar.arrowCenter:before,.flatpickr-calendar.arrowCenter:after{left:50%;right:50%}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1 1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9)}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{left:0}.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{right:0}.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05)}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1 1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1 1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1}.dayContainer+.dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange+.endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange+.endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1 1;width:40%;height:40px;float:left}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}
PK     ¯‰U]›ØÚe  e    build/admin-global-lite.jsnu „[µü¤        (()=>{var e={744:()=>{jQuery(function(e){e(".wpcode-admin-tabs-navigation").on("click",".wpcode-admin-tabs button",function(t){t.preventDefault();const r=e(this).data("target");e(this).addClass("active").parent().siblings().find("button").removeClass("active"),e(document.getElementById(r)).addClass("active").siblings().removeClass("active"),e(document).trigger("wpcode-tab-change",r),window.wpcode_editor&&jQuery.each(window.wpcode_editor,function(e,t){t.codemirror.refresh()})})})}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}};return e[o](a,a.exports,r),a.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{"use strict";r(744)})()})();PK     ¯‰U]±þT   T     build/connect.asset.phpnu „[µü¤        <?php return array('dependencies' => array(), 'version' => '23af03e215b7a990b5ad');
PK     ¯‰U]”bÅZ      build/admin-bar.jsnu „[µü¤        (()=>{"use strict";document.addEventListener("DOMContentLoaded",function(){!function(){if(window.wpcode_admin_bar_info){var e=document.getElementById("wp-admin-bar-wpcode-loaded-on-this-page");if(e){var a=e.querySelector(".ab-submenu");a.innerHTML="",wpcode_admin_bar_info.forEach(function(e){var n=document.createElement("li");n.className="wpcode-admin-bar-info-location menupop",n.setAttribute("data-location-id",e.location_id),n.innerHTML='<a class="ab-item" aria-haspopup="true" href="'+e.href+'"><span class="wp-admin-bar-arrow" aria-hidden="true"></span>'+e.label+"</a>";var i=document.createElement("ul");i.className="ab-submenu",e.snippets.forEach(function(e){var a=document.createElement("li");a.className="wpcode-admin-bar-info-snippet",a.setAttribute("data-snippet-id",e.id),a.innerHTML='<a href="'+e.edit_link+'" class="ab-item">'+e.title+"</a>",i.appendChild(a)});var t=document.createElement("div");t.className="ab-sub-wrapper",t.appendChild(i),n.appendChild(t),a.appendChild(n)})}if(0===wpcode_admin_bar_info_count){var n=document.querySelector("#wp-admin-bar-wpcode-loaded-on-this-page .wp-admin-bar-arrow");n&&(n.style.display="none")}var i=document.querySelector("#wp-admin-bar-wpcode-loaded-on-this-page > .ab-item");i&&(i.innerHTML+=" ("+wpcode_admin_bar_info_count+")")}}()})})();PK     ¯‰U]õèT   T   !  build/admin-global-lite.asset.phpnu „[µü¤        <?php return array('dependencies' => array(), 'version' => '3e78c5d74724a976f7f9');
PK     ¯‰U]©¶}"š  š    build/admin-bar.cssnu „[µü¤        #wpadminbar .wpcode-admin-bar-info-separator-top{margin-top:5px;padding-top:5px;border-top:1px solid}#wpadminbar .wpcode-admin-bar-description .ab-item{font-weight:700}#wpadminbar .wpcode-pro-indicator{background:#bbb;color:#333 !important;text-transform:uppercase;padding:4px 7px;border-radius:9px;font-size:8px;line-height:1;display:inline-block;vertical-align:text-top;font-weight:600}#wpadminbar #wp-admin-bar-wpcode-upgrade a{background-color:#59A56D !important;color:#fff !important}#wpadminbar .quicklinks .wpcode-admin-bar-upsell-submenu .ab-empty-item{display:none}#wpadminbar .quicklinks .wpcode-admin-bar-has-upsell-submenu .ab-sub-wrapper{background:transparent;box-shadow:none}#wpadminbar .wpcode-admin-bar-submenu-upsell{min-width:660px;border-radius:8px;box-shadow:0 2px 5px rgba(0,0,0,.2);background:#fff;color:#1d2327;padding:40px;text-align:center}#wpadminbar .wpcode-admin-bar-submenu-upsell .wpcode-heading{font-size:24px;padding:8px 12px;line-height:1.5}#wpadminbar .wpcode-admin-bar-submenu-upsell p{color:#777777;font-size:16px;margin:16px 0;line-height:1.5}#wpadminbar .wpcode-admin-bar-submenu-upsell .wpcode-button{margin-top:6px !important;background-color:#E06B44;color:#fff !important;font-size:16px;display:inline-block;border-radius:4px;padding:10px 36px;font-weight:700;height:auto}#wpadminbar .wpcode-menu-notification-counter{display:inline-block !important;min-width:18px !important;height:18px !important;border-radius:9px !important;margin:7px 0 0 2px !important;vertical-align:top !important;font-size:11px !important;line-height:1.6 !important;text-align:center !important}#wpadminbar .wpcode-admin-bar-info-submenu .wpcode-menu-notification-counter{float:right;margin-top:5px !important}body:not(.wp-admin) .wpcode-menu-notification-counter{background-color:#d63638 !important;color:#ffffff !important}.wpcode-testing-mode #wp-admin-bar-wpcode-admin-bar-info>.ab-item{color:#fff;background-color:#09A347}

PK     ¯‰U]µ²¿¾i  i    build/notices.jsnu „[µü¤        (()=>{"use strict";(window.WPCodeAdminWideNotices||function(i,e,c){var o={init:function(){c(o.ready)},ready:function(){o.events()},events:function(){c(i).on("click",".wpcode-notice .notice-dismiss, .wpcode-notice .wpcode-notice-dismiss",o.dismissNotice)},dismissNotice:function(i){i.target.classList.contains("wpcode-notice-dismiss")&&c(this).closest(".wpcode-notice").slideUp(),c.post(wpcode_admin_notices.ajax_url,{action:"wpcode_notice_dismiss",_wpnonce:wpcode_admin_notices.nonce,id:(c(this).closest(".wpcode-notice").attr("id")||"").replace("wpcode-notice-","")})}};return o}(document,window,jQuery)).init()})();PK     ¯‰U]¹
K—f  f    build/admin-global-lite.cssnu „[µü¤        :root{--wpcode-background-gray:#F8F8F8;--wpcode-background-highlight:#F6FAFF;--wpcode-background-light:#F3F4F5;--wpcode-background-red:#DF2A35;--wpcode-background-white:#fff;--wpcode-border-color:#ddd;--wpcode-button-disabled-bg:#F5F5F5;--wpcode-button-disabled-border:1px solid #DDDDDD;--wpcode-button-disabled-text:#bbb;--wpcode-button-primary-bg:var(--wpcode-color-primary);--wpcode-button-primary-bg-hover:#397EEB;--wpcode-button-primary-text:#fff;--wpcode-button-primary-text-hover:#fff;--wpcode-button-secondary-bg:#F8F8F8;--wpcode-button-secondary-bg-hover:#fff;--wpcode-button-secondary-border:1px solid #DDDDDD;--wpcode-button-secondary-text:#777;--wpcode-button-orange-bg:#E06B44;--wpcode-button-orange-bg-hover:#e17f5e;--wpcode-button-secondary-text-hover:#454545;--wpcode-color-primary:#3568B7;--wpcode-color-red:#DF2A35;--wpcode-color-red-darker:#AB2028;--wpcode-font-size-l:18px;--wpcode-font-size-m:16px;--wpcode-font-size-s:14px;--wpcode-font-size-xl:22px;--wpcode-font-size-xs:12px;--wpcode-font-size-xxl:24px;--wpcode-input-border:1px solid #DDD;--wpcode-input-border-active:#3568B7;--wpcode-input-text-color:#454545;--wpcode-notice-success-bg:#09A347;--wpcode-notice-success-text:#fff;--wpcode-space-h:36px;--wpcode-space-v:24px;--wpcode-text-color-heading:#454545;--wpcode-text-color-highlight:#3568B7;--wpcode-text-color-light-bg:#848A8A;--wpcode-text-color-paragraph:#777777;--wpcode-text-color-placeholder:#bbb}@media screen and (max-width:782px){:root{--wpcode-space-h:24px}}.wpcode-admin-tabs{font-size:14px;list-style:none;margin:0;overflow:auto;padding:0}.wpcode-admin-tabs li{float:left;margin:0 30px 0 0;padding:0}.wpcode-admin-tabs li button{border:none;background:transparent;cursor:pointer}.wpcode-admin-tabs li button,.wpcode-admin-tabs li a{border-bottom:4px solid #fff;box-shadow:none;color:var(--wpcode-text-color-paragraph);display:block;font-weight:600;padding:20px 0 18px 0;text-decoration:none;transition:border 300ms ease}.wpcode-admin-tabs li button.wpcode_pro_type_lite,.wpcode-admin-tabs li a.wpcode_pro_type_lite{opacity:0.5}.wpcode-admin-tabs li button.wpcode_pro_type_lite:hover,.wpcode-admin-tabs li a.wpcode_pro_type_lite:hover{border:none}.wpcode-admin-tabs li button.wpcode_pro_type_lite:focus,.wpcode-admin-tabs li a.wpcode_pro_type_lite:focus{border:none}.wpcode-admin-tabs li button.active,.wpcode-admin-tabs li a.active{border-color:var(--wpcode-color-primary);color:var(--wpcode-text-color-heading)}.wpcode-admin-tabs li button:focus,.wpcode-admin-tabs li a:focus{border-color:var(--wpcode-color-primary)}.wpcode-admin-tabs li button:hover,.wpcode-admin-tabs li a:hover{border-color:var(--wpcode-text-color-paragraph)}.wpcode-admin-tab-content{display:none;position:relative}.wpcode-admin-tab-content.active{display:block}.wpcode-smart-tags{position:relative;display:inline-block;vertical-align:top}.wpcode-smart-tags.wpcode-smart-tags-unavailable .wpcode-smart-tags-toggle{opacity:0.6}.wpcode-smart-tags .wpcode-smart-tags-toggle{background:none;border:none;color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-s);cursor:pointer}.wpcode-smart-tags .wpcode-smart-tags-toggle svg{vertical-align:middle}.wpcode-smart-tags .wpcode-smart-tags-toggle span{text-decoration:underline}.wpcode-smart-tags .wpcode-smart-tags-toggle:hover span{text-decoration:none}.wpcode-smart-tags .wpcode-text-active{display:none}.wpcode-smart-tags .wpcode-smart-tags-dropdown{border:1px solid var(--wpcode-border-color);border-radius:4px;display:none;left:0;position:absolute;top:100%;z-index:1050;background:#fff;width:400px;margin-top:7px}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tags-header{position:sticky;top:0;background:#fff;z-index:10;border-bottom:1px solid var(--wpcode-border-color);padding:10px 15px}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tags-title{margin:0 0 10px 0;font-size:16px;font-weight:600;color:var(--wpcode-text-color-paragraph)}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tags-search .wpcode-smart-tags-search-input{width:100%;padding:8px 10px;border:1px solid var(--wpcode-border-color);border-radius:4px;font-size:var(--wpcode-font-size-s);color:var(--wpcode-text-color-paragraph)}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tags-search .wpcode-smart-tags-search-input:focus{outline:none;border-color:var(--wpcode-color-primary)}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tags-list{max-height:400px;overflow-y:auto;padding-top:5px}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tags-no-results{padding:15px;text-align:center;color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-s)}.wpcode-smart-tags .wpcode-smart-tags-dropdown ul{border-top:1px solid var(--wpcode-border-color)}.wpcode-smart-tags .wpcode-smart-tags-dropdown ul:first-child{border-top:none}.wpcode-smart-tags .wpcode-smart-tags-dropdown ul li{padding:0 15px;margin:12px 0}.wpcode-smart-tags .wpcode-smart-tags-dropdown .wpcode-smart-tag-category-label{font-weight:600;font-size:var(--wpcode-font-size-s);color:var(--wpcode-text-color-paragraph)}.wpcode-smart-tags.wpcode-smart-tags-open .wpcode-text-active{display:inline-block}.wpcode-smart-tags.wpcode-smart-tags-open .wpcode-text-default{display:none}.wpcode-smart-tags.wpcode-smart-tags-open .wpcode-smart-tags-dropdown{max-height:500px;overflow-y:auto;display:block}.wpcode-insert-smart-tag{border:0;color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-s);padding:0;text-align:left;background:none;cursor:pointer}.wpcode-insert-smart-tag:hover code{background-color:rgba(0,0,0,0.15)}.wpcode-smart-tags-dropdown-footer{padding:12px 15px;border-top:1px solid var(--wpcode-border-color);display:flex}.wpcode-smart-tags-dropdown-footer a{color:var(--wpcode-text-color-paragraph);display:inline-flex}.wpcode-smart-tags-dropdown-footer a .wpcode-icon{margin-right:5px}.wpcode-blur-area{filter:blur(2px);pointer-events:none}.wpcode-library .wpcode-content{position:relative}#poststuff .wpcode-upsell-box,.wpcode-upsell-box{position:absolute;z-index:20;background:var(--wpcode-background-white);width:662px;max-width:100%;top:50%;left:50%;transform:translate(-50%,-50%);padding:40px;text-align:center;border-radius:8px;border:1px solid var(--wpcode-border-color)}#poststuff .wpcode-upsell-box *,.wpcode-upsell-box *{box-sizing:border-box}#poststuff .wpcode-upsell-box h2,.wpcode-upsell-box h2{font-size:var(--wpcode-font-size-xxl);margin-top:0;line-height:1.2}#poststuff .wpcode-upsell-box .wpcode-button,.wpcode-upsell-box .wpcode-button{margin-top:6px}#poststuff .wpcode-upsell-box .wpcode-upsell-button-text,.wpcode-upsell-box .wpcode-upsell-button-text{margin-top:16px;display:inline-block;font-size:var(--wpcode-font-size-s);color:var(--wpcode-text-color-light-bg)}#poststuff .wpcode-upsell-box .wpcode-upsell-button-text:hover,.wpcode-upsell-box .wpcode-upsell-button-text:hover{text-decoration:none}#poststuff .wpcode-upsell-box p,.wpcode-upsell-box p{color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-m);line-height:1.5}#poststuff .wpcode-upsell-box.wpcode-upsell-box-with-features,.wpcode-upsell-box.wpcode-upsell-box-with-features{width:892px;padding:56px}#poststuff .wpcode-upsell-box.wpcode-upsell-box-with-features .wpcode-upsell-text,.wpcode-upsell-box.wpcode-upsell-box-with-features .wpcode-upsell-text{max-width:600px;margin:0 auto}#poststuff .wpcode-upsell-box .wpcode-upsell-features,.wpcode-upsell-box .wpcode-upsell-features{display:flex;flex-wrap:wrap;justify-content:space-between;margin-top:40px;margin-bottom:24px;text-align:left}#poststuff .wpcode-upsell-box .wpcode-upsell-features .wpcode-upsell-feature,.wpcode-upsell-box .wpcode-upsell-features .wpcode-upsell-feature{width:50%;color:var(--wpcode-text-color-heading);font-size:var(--wpcode-font-size-m);margin-bottom:16px;line-height:1.5;padding-left:34px;position:relative;padding-right:10px}#poststuff .wpcode-upsell-box .wpcode-upsell-features .wpcode-upsell-feature:before,.wpcode-upsell-box .wpcode-upsell-features .wpcode-upsell-feature:before{content:'';background-image:url("data:image/svg+xml,%3Csvg width=%2719%27 height=%2718%27 viewBox=%270 0 19 18%27 fill=%27none%27 xmlns=%27http://www.w3.org/2000/svg%27%3E%3Cpath fill-rule=%27evenodd%27 clip-rule=%27evenodd%27 d=%27M9.5 0.416016C4.67 0.416016 0.75 4.33602 0.75 9.16602C0.75 13.996 4.67 17.916 9.5 17.916C14.33 17.916 18.25 13.996 18.25 9.16602C18.25 4.33602 14.33 0.416016 9.5 0.416016ZM9.5 16.166C5.64125 16.166 2.5 13.0248 2.5 9.16602C2.5 5.30727 5.64125 2.16602 9.5 2.16602C13.3587 2.16602 16.5 5.30727 16.5 9.16602C16.5 13.0248 13.3587 16.166 9.5 16.166ZM7.75 11.0648L13.5163 5.29852L14.75 6.54102L7.75 13.541L4.25 10.041L5.48375 8.80727L7.75 11.0648Z%27 fill=%27%2309A347%27/%3E%3C/svg%3E");display:block;width:19px;height:18px;position:absolute;left:0;top:3px}.wpcode-pixel .wpcode-upsell-box .wpcode-upsell-text{max-width:750px}@media (max-width:1440px){.wpcode-library .wpcode-upsell-box{top:100px;transform:translate(-50%,0)}}.wpcode-button{background-color:var(--wpcode-button-primary-bg);border:1px solid var(--wpcode-button-primary-bg);border-radius:4px;color:var(--wpcode-button-primary-text);cursor:pointer;display:inline-block;font-size:var(--wpcode-font-size-s);font-weight:700;line-height:1;padding:10px 16px;text-decoration:none}.wpcode-button.wpcode-button-icon{align-items:center;display:inline-flex;padding-bottom:12px;padding-top:12px}.wpcode-button.wpcode-button-icon svg{margin-right:5px}.wpcode-button.wpcode-button-icon.wpcode-copy-target{padding-bottom:10px;padding-top:10px}.wpcode-button.wpcode-button-wide{padding-left:50px;padding-right:50px}.wpcode-button:hover,.wpcode-button:focus{background-color:var(--wpcode-button-primary-bg-hover);border-color:var(--wpcode-button-primary-bg-hover);color:var(--wpcode-button-primary-text-hover)}.wpcode-button.wpcode-button-secondary{background-color:var(--wpcode-button-secondary-bg);border:var(--wpcode-button-secondary-border);color:var(--wpcode-button-secondary-text)}.wpcode-button.wpcode-button-secondary:hover,.wpcode-button.wpcode-button-secondary:focus{background-color:var(--wpcode-button-secondary-bg-hover);color:var(--wpcode-button-secondary-text-hover)}.wpcode-button.wpcode-button-secondary.wpcode-button-secondary-inactive{background-color:var(--wpcode-button-disabled-bg);border-color:var(--wpcode-button-disabled-bg)}.wpcode-button.wpcode-button-secondary.wpcode-button-secondary-selected{border-color:var(--wpcode-button-primary-bg)}.wpcode-button.wpcode-button-orange{background-color:var(--wpcode-button-orange-bg);border-color:var(--wpcode-button-orange-bg);color:var(--wpcode-button-primary-text)}.wpcode-button.wpcode-button-orange:hover,.wpcode-button.wpcode-button-orange:focus{background-color:var(--wpcode-button-orange-bg-hover);color:var(--wpcode-button-primary-text)}.wpcode-button.wpcode-button-large{align-items:center;display:inline-flex;font-size:var(--wpcode-font-size-m);height:56px;justify-content:center;padding-left:var(--wpcode-space-h);padding-right:var(--wpcode-space-h);text-align:center}.wpcode-button.wpcode-button-large svg{margin-right:7px}.wpcode-button.wpcode-button-small{font-size:var(--wpcode-font-size-xs);padding:9px}.wpcode-button:disabled:hover,.wpcode-button:disabled{background-color:var(--wpcode-button-disabled-bg);border:var(--wpcode-button-disabled-border);color:var(--wpcode-button-disabled-text)}.wpcode-button-toggle{align-items:center;display:flex;justify-content:space-between}@media screen and (min-width:783px){.wpcode-button-toggle{min-width:424px}}.wpcode-button-toggle .wpcode-button{width:calc(50% - 5px);background:var(--wpcode-background-white);color:var(--wpcode-input-text-color)}.wpcode-button-toggle .wpcode-button-secondary{border:2px solid var(--wpcode-color-primary)}.wpcode-success-icon{display:none}.wpcode-show-success-icon .wpcode-success-icon{display:inline-block}.wpcode-show-success-icon .wpcode-default-icon{display:none}.wpcode-button-just-icon{background:none;border:none;cursor:pointer;padding:0}.wpcode-button-just-icon .wpcode-icon{display:block}.wpcode-text-button-icon{align-items:center;background:none;border:none;color:var(--wpcode-text-color-paragraph);cursor:pointer;display:inline-flex;font-size:var(--wpcode-font-size-s);font-weight:600;padding:0}.wpcode-text-button-icon:hover{color:var(--wpcode-text-color-heading)}.wpcode-text-button-icon:hover path{fill:var(--wpcode-text-color-heading)}.wpcode-text-button-icon .wpcode-icon{margin-right:5px}.wpcode-just-icon-button{background:none;border:none;cursor:pointer}.wpcode-button-text{background:none;border:none;color:var(--wpcode-text-color-paragraph);cursor:pointer;font-size:var(--wpcode-font-size-xs);padding:0;text-decoration:underline}.wpcode-button-text .wpcode-icon{margin-right:11px}.wpcode-button-text:focus,.wpcode-button-text:hover{text-decoration:none;background:none;color:var(--wpcode-text-color-heading)}.wpcode-button-text:focus svg path,.wpcode-button-text:hover svg path{fill:var(--wpcode-text-color-heading)}#wpbody-content .wpcode-button-ai-generate{position:relative;background:var(--wpcode-color-primary);border:none;color:white;cursor:pointer;overflow:hidden;z-index:1;border-radius:5px;transition:background-color 0.5s ease 0s,color 0.5s ease 0s}#wpbody-content .wpcode-button-ai-generate svg path{fill:#fff;transition:fill 0.5s ease 0s}#wpbody-content .wpcode-button-ai-generate .wpcode-button-ai-text-done,#wpbody-content .wpcode-button-ai-generate .wpcode-button-ai-text-loading{display:none}#wpbody-content .wpcode-button-ai-generate:focus,#wpbody-content .wpcode-button-ai-generate:hover{background:var(--wpcode-color-primary);color:#fff}#wpbody-content .wpcode-button-ai-generate:focus:before,#wpbody-content .wpcode-button-ai-generate:hover:before{opacity:0}#wpbody-content .wpcode-button-ai-generate:before{content:'';position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,#6e2dfb 0%,#a01cfd 100%);transition:opacity 0.5s ease;z-index:-1}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading{background:white;color:#a01cfd}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done:before,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading:before{display:none}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done svg path,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading svg path{fill:#a01cfd;animation-name:wpcode-shape-scale;animation-duration:2s;animation-iteration-count:infinite;transform-origin:center center;transform-box:fill-box}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done g:nth-child(2) path,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading g:nth-child(2) path{animation-delay:0.75s}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done g:nth-child(3) path,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading g:nth-child(3) path{animation-delay:1.5s}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done .wpcode-button-ai-text-default,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading .wpcode-button-ai-text-default{display:none}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done .wpcode-button-ai-text-loading,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-loading .wpcode-button-ai-text-loading{display:block}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done .wpcode-button-ai-text-done{display:block}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done .wpcode-button-ai-text-default,#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-done .wpcode-button-ai-text-loading{display:none}#wpbody-content .wpcode-button-ai-generate.wpcode-button-ai-not-available{filter:grayscale(1)}.wpcode-ai-improve{margin-right:14px;padding:10px 10px}.wpcode-ai-improve svg path{fill:#a01cfd}.wpcode-items-metabox{display:flex;padding:0}@media screen and (max-width:782px){.wpcode-items-metabox{flex-flow:column}}.wpcode-items-sidebar{flex-shrink:0;padding:var(--wpcode-space-v);width:242px}@media screen and (max-width:782px){.wpcode-items-sidebar{width:100%}}.wpcode-items-list{border-left:1px solid var(--wpcode-border-color);min-height:400px;padding:calc(var(--wpcode-space-v) / 2) 12px;width:100%}@media screen and (max-width:782px){.wpcode-items-list{border-top:1px solid var(--wpcode-border-color);border-left:0}}.wpcode-items-categories-list{margin:0}.wpcode-items-categories-list li{margin:0}.wpcode-items-categories-list button{background:transparent;border:none;color:var(--wpcode-text-color-paragraph);cursor:pointer;display:block;font-size:var(--wpcode-font-size-m);font-weight:500;padding:12px 8px;position:relative;text-align:left;width:100%}.wpcode-items-categories-list button:focus,.wpcode-items-categories-list button.wpcode-active{background:var(--wpcode-background-highlight);color:var(--wpcode-text-color-highlight)}.wpcode-items-categories-list button:hover{text-decoration:underline}.wpcode-items-categories-list button .wpcode-items-count{float:right;color:var(--wpcode-text-color-paragraph);opacity:0.5}.wpcode-items-categories-list button.wpcode-active{font-weight:700}.wpcode-items-categories-list button.wpcode-active:hover{text-decoration:none}.wpcode-items-categories-list button.wpcode-active .wpcode-items-count{opacity:1;color:var(--wpcode-text-color-highlight);font-weight:700}.wpcode-items-list-category{align-content:stretch;display:flex;flex-wrap:wrap;justify-content:flex-start}.wpcode-list-item{border:1px solid var(--wpcode-border-color);border-radius:4px;margin-bottom:24px;margin-right:12px;margin-left:12px;max-width:100%;padding:16px 20px;position:relative;width:100%}@media (min-width:961px){.wpcode-list-item{width:calc(50% - 24px)}}@media (min-width:1440px){.wpcode-list-item{width:calc(100% / 3 - 24px)}}.wpcode-list-item h3,.wpcode-list-item .wpcode-list-item-title{font-size:var(--wpcode-font-size-m);line-height:1.2;margin:0;overflow:hidden;position:relative;text-overflow:ellipsis;white-space:nowrap}.wpcode-list-item p{margin-bottom:0}.wpcode-list-item:hover .wpcode-list-item-description,.wpcode-list-item:focus .wpcode-list-item-description{opacity:0}.wpcode-list-item:hover .wpcode-list-item-buttons,.wpcode-list-item:focus .wpcode-list-item-buttons{opacity:1}@media (hover:none){.wpcode-list-item .wpcode-list-item-description{opacity:0}.wpcode-list-item .wpcode-list-item-buttons{opacity:1}}.wpcode-list-item .wpcode-list-item-pill{position:absolute;top:10px;right:10px;font-size:8px;font-weight:700;text-transform:uppercase;line-height:1;padding:4px 8px;border-radius:40px}.wpcode-list-item .wpcode-list-item-pill.wpcode-list-item-pill-blue{background:var(--wpcode-color-primary);color:#fff}.wpcode-list-item .wpcode-list-item-pill.wpcode-list-item-pill-green{background:var(--wpcode-notice-success-bg);color:#fff}.wpcode-list-item .wpcode-list-item-pill.wpcode-list-item-pill-gray{background:var(--wpcode-text-color-heading);color:#fff}.wpcode-list-item .wpcode-list-item-pill.wpcode-list-item-pill-light{background:var(--wpcode-text-color-placeholder);color:#fff}.wpcode-list-item.wpcode-list-item-has-pill h3{max-width:calc(100% - 60px)}.wpcode-list-item.wpcode-custom-snippet,.wpcode-list-item.wpcode-library-item-ai{background:var(--wpcode-background-highlight)}.wpcode-list-item-actions{position:relative}.wpcode-list-item-description{min-height:40px}.wpcode-list-item-buttons{display:flex;justify-content:space-between;opacity:0;position:absolute;top:0;width:100%;z-index:10}.wpcode-list-item-buttons .wpcode-button{flex-grow:1;margin-left:10px;text-align:center}.wpcode-list-item-buttons .wpcode-button:first-child{margin-left:0}.wpcode-items-search{margin-bottom:20px;position:relative}.wpcode-items-search input{border-color:var(--wpcode-border-color);font-size:var(--wpcode-font-size-s);height:38px;padding-left:32px;width:100%}.wpcode-items-search input::-moz-placeholder{color:var(--wpcode-text-color-placeholder)}.wpcode-items-search input::placeholder{color:var(--wpcode-text-color-placeholder)}.wpcode-items-search label{left:10px;position:absolute;top:11px}.wpcode-library-preview-header{padding-bottom:25px}.wpcode-library-preview-header h2{margin:0}.wpcode-library-preview-header .wpcode-close-modal{float:right}.wpcode-library-preview-content .CodeMirror{background:var(--wpcode-background-gray)}.wpcode-library-preview-content .CodeMirror-activeline-background{background:transparent !important}.wpcode-library-preview-content .CodeMirror-focused .CodeMirror-activeline-background{background:rgba(100,100,100,0.1) !important}.wpcode-library-preview-buttons{margin-top:25px}.wpcode-item-use-button.wpcode-start-auth{padding-top:6px;padding-bottom:6px;justify-content:center}.wpcode-item-use-button.wpcode-start-auth svg{margin-right:9px}#wpcode-library-connect-banner{background:var(--wpcode-button-disabled-bg);margin-bottom:24px;margin-left:12px;border-radius:6px;display:flex;flex-direction:column;justify-content:space-between;align-items:center;padding-right:20px;margin-right:12px}@media (min-width:961px){#wpcode-library-connect-banner{flex-direction:row}}#wpcode-library-connect-banner .wpcode-template-content{padding:20px;color:#444444}@media (min-width:961px){#wpcode-library-connect-banner .wpcode-template-content{width:80%}}#wpcode-library-connect-banner .wpcode-template-upgrade-button{text-align:right;flex-shrink:0;padding-bottom:20px}@media (min-width:961px){#wpcode-library-connect-banner .wpcode-template-upgrade-button{padding-bottom:0}}#wpcode-library-connect-banner .wpcode-template-upgrade-button button{white-space:pre}#wpcode-library-connect-banner h3{margin:0 0 5px}#wpcode-library-connect-banner p{margin:0}.wpcode-library-item-ai-not-available .wpcode-button{opacity:0.7;pointer-events:none}.wpcode-content *{box-sizing:border-box}.wpcode-metabox-snippets:after{display:table;clear:both;content:''}#wpcode-picked-snippets{align-content:stretch;display:flex;flex-wrap:wrap;justify-content:flex-start}.wpcode-snippet-picker-item{border-bottom:1px solid var(--wpcode-border-color);padding:15px 0;display:flex;justify-content:space-between;color:var(--wpcode-text-color-paragraph);font-size:var(--wpcode-font-size-m)}.wpcode-snippet-picker-item .wpcode-checkbox-toggle{flex-shrink:0;flex-grow:0}.wpcode-selected-snippet-item h4{margin-top:12px}.wpcode-selected-snippet-item label{margin:5px 0;display:block}#wpcode-snippet-chooser{width:30%;float:left}#wpcode-snippet-chooser .wpcode-chooser-fixed-height{height:400px;overflow:auto}.wpcode-picked-snippets-area{margin-left:30%;padding-left:16px}.wpcode-picked-snippets-area>h3{margin-left:12px}.wpcode-snippet-chooser-closed #wpcode-snippet-chooser{width:0;overflow:hidden}.wpcode-snippet-chooser-closed .wpcode-picked-snippets-area{margin-left:0;padding-left:0}.wpcode-snippet-chooser-closed .wpcode-picked-snippets-area>h3{margin-left:0}.wpcode-snippet-chooser-closed #wpcode-picked-snippets{margin:0 -12px}.wpcode-snippets-search{padding-bottom:16px;position:relative}.wpcode-snippets-search input{width:100%}#wpcode-close-drawer{float:right}.wpcode-input-row{margin:24px 0}.wpcode-input-row label{font-size:var(--wpcode-font-size-s);color:var(--wpcode-text-color-heading);margin-bottom:20px;display:inline-block;font-weight:600}#wpcode-no-snippets-selected{margin-left:12px}.wpcode-choose-actions{text-align:center}#wpcode-metabox-load-more{margin:15px 0}#wpcode-chooser-spinner{right:0;top:12px}.wpcode-auto-insert-number-wrap.wpcode-hidden{display:none}.wpcode-list-item-location-details{display:flex}.wpcode-list-item-location-details .wpcode-auto-insert-location-wrap{width:100%}.wpcode-list-item-location-details .wpcode-auto-insert-number-wrap input{width:100px}.wpcode-input-row textarea{width:100%;min-height:300px}.wpcode-admin-tabs .wpcode-page-scripts-testing-mode-indicator{float:right;margin-right:0}.wpcode-admin-tabs .wpcode-page-scripts-testing-mode-indicator a{background:#09A347;color:#fff;padding-left:10px;padding-right:10px}#wpcode-tab-revisions .wpcode-revisions-list-area{min-height:250px}#wpcode-tab-revisions .wpcode-loading-spinner{display:block;top:50%;left:50%;width:48px;height:48px;background-size:48px 48px;transform:translate(-50%,-50%)}.wpcode-revisions-list-area{margin:24px 0 24px;position:relative}.wpcode-revisions-list-area #wpcode-show-all-snippets{margin-top:24px}.wpcode-revisions-list{border-left:1px solid var(--wpcode-border-color);padding-left:22px;margin:0}.wpcode-revisions-list.wpcode-revisions-list-collapsed{display:none}.wpcode-revisions-list.wpcode-revisions-list-extra{margin-top:0}.wpcode-revisions-list.wpcode-revisions-list-extra .wpcode-revision-list-item:first-child{background-color:var(--wpcode-button-disabled-bg)}.wpcode-revision-list-item{background:var(--wpcode-button-disabled-bg);padding:6px 9px;font-size:var(--wpcode-font-size-s);position:relative}.wpcode-revision-list-item .avatar{border-radius:50%;vertical-align:middle}.wpcode-revision-list-item:before{position:absolute;content:'';width:7px;height:7px;border-radius:50%;background-color:#C4C4C4;border:2px solid #FFF;right:100%;margin-right:17px;top:50%;margin-top:-5px}.wpcode-revision-list-item:first-child{background-color:var(--wpcode-background-highlight)}.wpcode-revision-list-author{display:inline-block;margin:0 10px 0 12px;font-weight:600;color:var(--wpcode-text-color-heading)}.wpcode-revision-list-date{color:var(--wpcode-text-color-light-bg)}.wpcode-remote-icon{background:#c5c5c6;border-radius:50%;display:inline-block;width:30px;height:30px;vertical-align:middle;text-align:center;line-height:30px}.wpcode-remote-icon svg path{fill:#fff}.wpcode-revision-list-item-actions{float:right;display:inline-flex;vertical-align:middle;align-items:center;margin-top:7px;margin-right:6px}.wpcode-revision-list-item-actions span,.wpcode-revision-list-item-actions a{font-size:12px;color:var(--wpcode-text-color-paragraph);margin-left:14px}.wpcode-revision-list-item-actions span:hover,.wpcode-revision-list-item-actions a:hover{text-decoration:none}

PK     ¯‰U]céïšT   T     build/admin-bar.asset.phpnu „[µü¤        <?php return array('dependencies' => array(), 'version' => 'c95624a69c80301272a0');
PK     ¯‰U]�K¯TC C   build/admin.jsnu „[µü¤        (()=>{var e={18:()=>{!function(e,t,n){const o={l10n:wpcode,isAjaxInProgress:!1,init:function(){o.should_init()&&(o.init_status_toggle(),o.move_screen_options(),o.init_copy(),o.init_type_filter(),o.init_pagination(),o.init_code_type_mobile())},init_type_filter:function(){n("#wpcode-snippet-type-buttons a").click(function(e){if(n(this).hasClass("active")||n(this).hasClass("wpcode_pro_type_lite"))return;e.preventDefault();const t=n(this).data("type");n(this).closest("ul").find("a").removeClass("active"),n(this).addClass("active"),o.show_loader(),o.update_url_and_filter(t)}),n("#wpcode-snippet-type-buttons a.wpcode_pro_type_lite").click(function(e){e.preventDefault(),"blocks"===n(this).data("type")?WPCodeAdminNotices.show_pro_notice(o.l10n.blocks_title,o.l10n.blocks_description,o.l10n.blocks_snippet_upgrade_url,o.l10n.button_text):WPCodeAdminNotices.show_pro_notice(o.l10n.scss_title,o.l10n.scss_description,o.l10n.scss_snippet_upgrade_url,o.l10n.button_text)})},show_loader(){try{const e=n("#wpcode-code-snippets-table .wp-list-table");if(0===e.length)throw new Error("Table element not found");const t=e.offset().top-n("#wpadminbar").outerHeight(),o=e.outerHeight();n("#wpcode-loader .wpcode-loader-overlay").css({top:t,height:o}),n("#wpcode-loader").show()}catch(e){console.error("Failed to show loader:",e.message)}},init_pagination:function(){n(e).on("click",".pagination-links a",function(e){e.preventDefault();const t=n(this).attr("href").split("paged=")[1];o.changePage(t)}),n(e).on("blur","#current-page-selector",function(){const e=parseInt(n(this).val(),10);isNaN(e)||o.changePage(e)}),n(e).on("keypress","#current-page-selector",function(e){"Enter"===e.key&&(e.preventDefault(),n(this).blur())})},changePage:function(e){const n=new URLSearchParams(t.location.search).get("type")||"",i=new URLSearchParams(t.location.search).get("location")||"",s=new URLSearchParams(t.location.search).get("s")||"";o.show_loader(),o.filter_by_type(n,i,s,e).done(function(n){if(n.success){const n=new URL(t.location);n.searchParams.set("paged",e),history.replaceState({},"",n)}})},update_url_and_filter:function(e){const i=new URL(t.location),s=new URLSearchParams(t.location.search),r=n("#total_pages").val(),a=s.get("s")||"",c=s.get("location")||"",l=s.get("view")||"all",d=s.get("filter_action")||"Filter";e?i.searchParams.set("type",e):i.searchParams.delete("type"),parseInt(r)>1?i.searchParams.set("paged",s.get("paged")||"1"):i.searchParams.delete("paged"),i.searchParams.delete("action"),i.searchParams.delete("action2"),i.searchParams.set("page","wpcode"),i.searchParams.set("view",l),i.searchParams.set("filter_action",d),i.searchParams.set("s",a),i.searchParams.set("location",c),history.pushState({},"",i),o.filter_by_type(e,c,a)},show_button_spinner(e){t.WPCodeSpinner.show_button_spinner(e)},filter_by_type:function(e,t,i,s="1"){if(!o.isAjaxInProgress)return o.isAjaxInProgress=!0,n.post(ajaxurl,{_wpnonce:wpcode.nonce,action:"wpcode_filter_snippets_by_type",snippet_type:e,location:t,s:i,paged:s}).done(function(e){n("#wpcode-loader").hide(),e.success?(n("#wpbody-content #wpcode-code-snippets-table").html(e.data.html),n("#wpbody-content .wpcode-content > table").remove()):console.error("Failed to update snippets:",e.data)}).fail(function(e,t,o){n("#wpcode-loader").hide(),console.error("AJAX request failed:",t,o)}).always(function(){o.isAjaxInProgress=!1})},should_init:function(){return null!==e.getElementById("wpcode-code-snippets-table")},init_status_toggle:function(){n("#wpbody-content").on("change",".wpcode-status-toggle",function(){const e=n(this),t=e.is(":checked"),i=e.data("id");o.update_status(t,i).fail(function(){e.prop("checked",!1)}).done(function(n){!1===n.success&&(e.prop("checked",!t),n.data.message&&WPCodeAdminNotices.add_notice(n.data.message,"error"))}).fail(function(e){e.responseText&&WPCodeAdminNotices.add_notice(e.responseText,"error")})})},update_status:function(e,t){return n.post(ajaxurl,{_wpnonce:o.l10n.nonce,action:"wpcode_update_snippet_status",snippet_id:t,active:e,multisite:o.l10n.multisite})},move_screen_options:function(){n("#screen-meta-links, #screen-meta").prependTo("#wpcode-header-between").show()},init_copy:function(){n("#wpbody-content").on("click",".wpcode-copy",function(e){e.preventDefault();const t=n(this).data("copy-value"),o=n(this);t&&(navigator.clipboard.writeText(t),o.addClass("wpcode-show-success-icon"),setTimeout(function(){o.removeClass("wpcode-show-success-icon")},500))})},init_code_type_mobile:function(){n(".wpcode-mobile-dropdown-toggle").on("click",function(){const e=n(this).data("target");n(e).toggleClass("wpcode-open"),n(e).one("click","a",function(){n(e).removeClass("wpcode-open")})})}};t.WPCodeSnippetsTable=o,o.init()}(document,window,jQuery)},75:()=>{jconfirm.defaults={closeIcon:!1,backgroundDismiss:!1,escapeKey:!0,animationBounce:1,useBootstrap:!1,theme:"modern",boxWidth:"560px",type:"blue",animateFromElement:!1,scrollToPreviousElement:!1}},132:()=>{(window.WPCodeLibraryTabs||function(e,t,n){const o={init:function(){o.find_elements(),o.should_init()&&o.add_events()},find_elements:function(){o.tabs=n(".wpcode-library-tab"),o.buttons=n(".wpcode-library-tab-button")},should_init:function(){return o.tabs.length>0},add_events:function(){o.buttons.on("click",function(e){e.preventDefault(),o.switch_tab(n(this))})},switch_tab:function(e){const t=e.data("tab");o.buttons.removeClass("wpcode-library-tab-button-active"),e.addClass("wpcode-library-tab-button-active"),o.tabs.removeClass("wpcode-library-tab-active"),o.tabs.filter('[data-tab="'+t+'"]').addClass("wpcode-library-tab-active")}};return o}(document,window,jQuery)).init()},145:()=>{(window.WPCodeAdminCodeEditor||function(e,t,n){const o={l18n:wpcode,init(){t.WPCodeAdminCodeEditor=o},switch_code_mode(e,t){const n=o.get_editor(e);if(void 0===n)return!1;n.setOption("mode",o.get_mime_for_code_type(t)),n.setOption("lint",o.get_lint_for_code_type(t)),jQuery(n.getTextArea()).closest(".wpcode-code-textarea").attr("data-code-type",t)},get_editor(e){if("undefined"!=typeof wpcode_editor)return wpcode_editor[e]?wpcode_editor[e].codemirror:void 0},set_value(e,t){const n=o.get_editor(e);if(void 0===n)return!1;n.getDoc().setValue(t)},get_mime_for_code_type:e=>o.l18n.code_type_options[e].mime,get_lint_for_code_type:e=>o.l18n.code_type_options[e].lint,refresh(e){"undefined"!=typeof wpcode_editor&&o.get_editor(e).refresh()},get_value:e=>void 0===o.get_editor(e)?n("#"+e).val():o.get_editor(e).getValue(),refresh_all(){"undefined"!=typeof wpcode_editor&&n.each(wpcode_editor,function(e,t){t.codemirror.refresh()})}};return o}(document,window,jQuery)).init()},197:()=>{window.WPCodeItemsList||function(e,t,n){const o=function(e){this.container=n(e),this.category="*",this.search_term="",this.categories_list=this.container.find(".wpcode-items-filters"),this.search_input=this.container.find(".wpcode-items-search-input"),this.items=this.container.find(".wpcode-list-item"),this.banner=null,this.init()};o.prototype={init:function(){this.should_init()&&(this.init_category_switch(),this.init_search(),this.show_connect_banner(),this.init_custom_event_handlers())},init_custom_event_handlers(){this.container.on("wpcode_reset_items",()=>{this.reset_items()}),this.container.on("wpcode_select_item",(e,t)=>{this.set_item(t)})},set_item(e){this.reset_items();const t=this.items.filter(function(){return n(this).data("id")===e});this.items.removeClass("wpcode-list-item-selected"),t.addClass("wpcode-list-item-selected");const o=t.data("categories"),i=o.length>0?o[0]:"*";this.switch_to_category(i);const s=this.categories_list.find(`button[data-category="${i}"]`);this.switch_category_button(s);const r=t.find('input[type="radio"]');r.length>0&&r.prop("checked",!0)},reset_items(){this.search_input.val(""),this.search_term="";const e=this.categories_list.find("button").first();this.switch_to_category(e.data("category")),this.switch_category_button(e)},should_init:function(){return this.categories_list.length>0},init_category_switch:function(){const e=this;this.categories_list.on("click","button",function(){const t=n(this);t.hasClass("wpcode-active")||(e.switch_to_category(t.data("category")),e.switch_category_button(t))})},switch_category_button:function(e){this.categories_list.find("button").removeClass("wpcode-active"),e.addClass("wpcode-active")},switch_to_category:function(e){this.category=e,this.filter_items()},filter_items:function(){let e;const t=this,o=this.items.filter(function(){return"*"===t.category||n(this).data("categories").indexOf(t.category)>-1});if(t.search_term.length>2){const o=t.search_term.toLowerCase();e=this.items.filter(function(){return n(this).text().toLowerCase().indexOf(o)>-1})}else e=o;t.items.hide(),e.show(),this.update_banner_position()},init_search:function(){const e=this;this.search_input.on("keyup change search",function(){const t=n(this).val();e.search_term=t.length<3?"":t,e.filter_items()})},show_connect_banner:function(){const e=n("#tmpl-wpcode-library-connect-banner");if(!e.length)return;const t=this.container.find(".wpcode-items-list-category .wpcode-list-item:visible");t.length>5?t.eq(5).after(e.html()):t.last().after(e.html()),this.banner=this.container.find("#wpcode-library-connect-banner")},update_banner_position:function(){const e=this.container.find(".wpcode-items-list-category .wpcode-list-item:visible");this.banner&&this.banner.length>0&&(e.length>5?this.banner.insertAfter(e.eq(5)):this.banner.insertAfter(e.last()))}},n(e).ready(function(){n(".wpcode-items-metabox").each(function(){new o(this)})})}(document,window,jQuery)},209:()=>{(window.WPCodeAdminNotices||function(e,t,n){const o={l10n:wpcode,init:function(){t.WPCodeAdminNotices=o,o.notice_holder=n(e.getElementById("wpcode-notice-area")),o.document=n(e)},add_notice(e,t="updated"){const n=o.get_notice(e,t);o.notice_holder.append(n),o.document.trigger("wp-updates-notice-added"),n.find("button").focus()},get_notice(e,t){const o=n("<div />"),i=n("<p />");return i.html(e),o.addClass("fade notice is-dismissible"),o.addClass(t),o.append(i),o},show_pro_notice(e,i,s,r){const a=s.startsWith("wpcode-"),c=WPCodeSVG.WPCodeIcon("lock",22,28,"0 0 22 28","iconId");n.confirm({title:c+e,content:i,boxWidth:"560px",theme:"modern upsell-box",onOpenBefore(){this.$btnc.after('<div class="wpcode_check"></div>'),o.l10n.purchased&&this.$btnc.after('<div class="wpcode-already-purchased"><a href=" '+o.l10n.upgrade_link+' ">'+o.l10n.purchased+"</a></div>"),o.l10n.wpcode_lite_users&&(this.$btnc.after('<div class="wpcode-discount-note"><strong> '+o.l10n.bonus+":</strong> "+o.l10n.wpcode_lite_users+"<span> "+o.l10n.price+" </span> "+o.l10n.regular_price+" </div>"),this.$body.find(".jconfirm-content").addClass("wpcode-lite-upgrade"))},buttons:{confirm:{text:r||o.l10n.upgrade_button,btnClass:"wpcode-btn-orange",action:function(){a?a&&WPCodeAddons&&n.confirm({title:o.l10n.please_wait,content:function(){this.showLoading(),WPCodeAddons.install_addon(n("<button></button>").data("addon",s))}}):t.open(s,"_blank","noopener noreferrer")}}},closeIcon:!0,backgroundDismiss:!0,useBootstrap:!1})}};return o}(document,window,jQuery)).init()},327:()=>{(window.WPCodeHeader||function(e,t,n){const o={init(){o.should_init()&&n(e).ready(function(){o.init_sticky_header()})},should_init:()=>n("#wpcode_snippet_code").length>0||n("#ihaf_insert_header").length>0,init_sticky_header(){const e=n(".wpcode-header-bottom"),o=e.height(),i=e.offset().top,s=e.parent();n(t).scroll(function(){const r=n(t).scrollTop();i<r+32?(e.addClass("wpcode-sticky"),s.css("paddingBottom",o+"px")):(e.removeClass("wpcode-sticky"),s.css("paddingBottom",0))})}};return o}(document,window,jQuery)).init()},332:()=>{(window.WPCodeAdminNotifications||function(e,t,n){const o={init(){o.should_init()&&(o.find_elements(),o.init_open(),o.init_close(),o.init_dismiss(),o.init_view_switch(),o.update_count(o.active_count))},should_init:()=>(o.$drawer=n("#wpcode-notifications-drawer"),o.$drawer.length>0),find_elements(){o.$open_button=n("#wpcode-notifications-button"),o.$count=o.$drawer.find("#wpcode-notifications-count"),o.$dismissed_count=o.$drawer.find("#wpcode-notifications-dismissed-count"),o.active_count=o.$open_button.data("count")?o.$open_button.data("count"):0,o.dismissed_count=o.$open_button.data("dismissed"),o.$body=n("body"),o.$dismissed_button=n("#wpcode-notifications-show-dismissed"),o.$active_button=n("#wpcode-notifications-show-active"),o.$active_list=n(".wpcode-notifications-list .wpcode-notifications-active"),o.$dismissed_list=n(".wpcode-notifications-list .wpcode-notifications-dismissed"),o.$dismiss_all=n("#wpcode-dismiss-all")},update_count(e){o.$open_button.data("count",e).attr("data-count",e),0===e&&o.$open_button.removeAttr("data-count"),o.$count.text(e),o.dismissed_count+=Math.abs(e-o.active_count),o.active_count=e,o.$dismissed_count.text(o.dismissed_count),0===o.active_count&&o.$dismiss_all.hide()},init_open(){o.$open_button.on("click",function(e){e.preventDefault(),o.$body.addClass("wpcode-notifications-open")})},init_close(){o.$body.on("click",".wpcode-notifications-close, .wpcode-notifications-overlay",function(e){e.preventDefault(),o.$body.removeClass("wpcode-notifications-open")})},init_dismiss(){o.$drawer.on("click",".wpcode-notification-dismiss",function(e){e.preventDefault();const t=n(this).data("id");if(o.dismiss_notification(t),"all"===t)return o.move_to_dismissed(o.$active_list.find("li")),void o.update_count(0);o.move_to_dismissed(n(this).closest("li")),o.update_count(o.active_count-1)})},move_to_dismissed(e){e.slideUp(function(){n(this).prependTo(o.$dismissed_list).show()})},dismiss_notification:e=>n.post(ajaxurl,{action:"wpcode_notification_dismiss",nonce:wpcode.nonce,id:e}),init_view_switch(){o.$dismissed_button.on("click",function(e){e.preventDefault(),o.$drawer.addClass("show-dismissed")}),o.$active_button.on("click",function(e){e.preventDefault(),o.$drawer.removeClass("show-dismissed")})}};return o}(document,window,jQuery)).init()},343:()=>{(window.WPCodeSnippetUpdate||function(e,t,n){const o={l10n:wpcode,is_single_sync_request_in_progress:!1,is_archive_sync_request_in_progress:!1,init(){o.init_archive_sync_button(),o.init_single_sync_button(),o.init_check_updates_button()},init_archive_sync_button(){o.sync_button=n(".wpcode-sync-snippet-lite"),o.sync_button.on("click",function(e){e.preventDefault();const t=n(this),i=t.data("id"),s=t.data("library-id");if(0===n(this).data("has-auth"))return o.prompt_auth(t);const r=t.data("current-version"),a=t.data("latest-version");let c="";r&&a&&(c='<div class="wpcode-version-info">'+o.l10n.your_version+" "+r+" "+o.l10n.library_version+" "+a+"</div>"),n.confirm({title:o.l10n.confirm_sync_title,content:o.l10n.confirm_sync_text+"<br><br>"+c,closeIcon:!1,backgroundDismiss:!0,boxWidth:"600px",type:"blue",buttons:{confirm:{text:o.l10n.confirm_sync_button,btnClass:"wpcode-btn-confirm",action:function(){if(o.is_archive_sync_request_in_progress)return;o.is_archive_sync_request_in_progress=!0,t.addClass("wpcode-loading");const e=o.show_loading_modal(),r={action:"wpcode_sync_snippet",snippet_id:i,library_id:s||!1,nonce:o.l10n.nonce};n.ajax({url:ajaxurl,type:"POST",data:r,success:function(e){e.success?t.remove():console.error("Snippet sync failed:",e.data)},error:function(e,t,n){console.error("AJAX request failed for snippet sync:",{status:t,error:n,response:e.responseText,snippetId:i,libraryId:s})},complete:function(){t.removeClass("wpcode-loading"),o.is_archive_sync_request_in_progress=!1,e.close()}})}},cancel:{text:o.l10n.cancel}}})})},init_single_sync_button(){o.sync_single_button=n(".sync-snippet"),o.sync_single_button.on("click",function(e){e.preventDefault();const i=n(this).data("has-auth"),s=n(this);if(0===i)return o.prompt_auth(s);const r=s.data("current-version"),a=s.data("latest-version");let c="";r&&a&&(c='<div class="wpcode-version-info">'+o.l10n.old_version+" "+r+" "+o.l10n.new_version+" "+a+"</div>"),n.confirm({title:o.l10n.confirm_sync_title,content:o.l10n.confirm_sync_text+"<br><br>"+c,closeIcon:!1,backgroundDismiss:!0,boxWidth:"600px",type:"blue",buttons:{confirm:{text:o.l10n.confirm_sync_button,btnClass:"wpcode-btn-confirm",action:function(){o.is_single_sync_request_in_progress||(o.is_single_sync_request_in_progress=!0,s.addClass("wpcode-loading"),o.show_loading_modal(),t.location.href=s.attr("href"))}},cancel:{text:o.l10n.cancel}}})})},show_loading_modal:()=>n.confirm({title:o.l10n.please_wait,closeIcon:!1,content:'<div class="lds-dual-ring"></div>',boxWidth:"600px",theme:"modern loader-spinner",backgroundDismiss:!1,buttons:{close:{isHidden:!0}},onOpenBefore:function(){this.buttons.close.hide(),this.$content.parent().addClass("jconfirm-loading")},onClose:function(){this.$content.parent().removeClass("jconfirm-loading")}}),prompt_auth(e){n.confirm({title:o.l10n.auth_needed_title_sync,content:o.l10n.auth_needed_text_sync,closeIcon:!1,backgroundDismiss:!0,boxWidth:"600px",type:"blue",buttons:{confirm:{text:o.l10n.auth_needed_confirm,btnClass:"wpcode-btn-confirm",action:function(){WPCodeLibraryAuth.start_auth(e)}}}})},init_check_updates_button(){n(".wpcode-lite-version #wpcode-check-for-updates").on("click",function(e){e.preventDefault(),n(this);const i=WPCodeSVG.WPCodeIcon("lock",22,28,"0 0 22 28","iconId");n.confirm({title:i+o.l10n.check_for_updates_title,content:o.l10n.check_for_updates_text,closeIcon:!0,boxWidth:"560px",backgroundDismiss:!0,theme:"modern upsell-box-alert width560px",buttons:{confirm:{text:o.l10n.upgrade_button,btnClass:"wpcode-btn-orange wpcode-button-large",action:function(){t.open(o.l10n.upgrade_url||"https://wpcode.com/lite/","_blank","noopener noreferrer")}}},onContentReady:function(){this.$content.parent().parent().append('<div class="footer-link"><a href="'+(o.l10n.learn_more_link||"https://wpcode.com/lite/")+'" target="_blank" rel="noopener noreferrer">'+(o.l10n.learn_more_text||"Learn more about WPCode Pro")+"</a></div>")},onClose:function(){}})})}};return o}(document,window,jQuery)).init()},350:(e,t,n)=>{var o,i,s;i=[n(428)],void 0===(s="function"==typeof(o=function(e){var t=window;e.fn.confirm=function(n,o){return void 0===n&&(n={}),"string"==typeof n&&(n={content:n,title:o||!1}),e(this).each(function(){var o=e(this);o.attr("jc-attached")?console.warn("jConfirm has already been attached to this element ",o[0]):(o.on("click",function(i){i.preventDefault();var s=e.extend({},n);if(o.attr("data-title")&&(s.title=o.attr("data-title")),o.attr("data-content")&&(s.content=o.attr("data-content")),void 0===s.buttons&&(s.buttons={}),s.$target=o,o.attr("href")&&0===Object.keys(s.buttons).length){var r=e.extend(!0,{},t.jconfirm.pluginDefaults.defaultButtons,(t.jconfirm.defaults||{}).defaultButtons||{}),a=Object.keys(r)[0];s.buttons=r,s.buttons[a].action=function(){location.href=o.attr("href")}}s.closeIcon=!1,e.confirm(s)}),o.attr("jc-attached",!0))}),e(this)},e.confirm=function(n,o){void 0===n&&(n={}),"string"==typeof n&&(n={content:n,title:o||!1});var i=!(!1===n.buttons);if("object"!=typeof n.buttons&&(n.buttons={}),0===Object.keys(n.buttons).length&&i){var s=e.extend(!0,{},t.jconfirm.pluginDefaults.defaultButtons,(t.jconfirm.defaults||{}).defaultButtons||{});n.buttons=s}return t.jconfirm(n)},e.alert=function(n,o){void 0===n&&(n={}),"string"==typeof n&&(n={content:n,title:o||!1});var i=!(!1===n.buttons);if("object"!=typeof n.buttons&&(n.buttons={}),0===Object.keys(n.buttons).length&&i){var s=e.extend(!0,{},t.jconfirm.pluginDefaults.defaultButtons,(t.jconfirm.defaults||{}).defaultButtons||{}),r=Object.keys(s)[0];n.buttons[r]=s[r]}return t.jconfirm(n)},e.dialog=function(e,n){return void 0===e&&(e={}),"string"==typeof e&&(e={content:e,title:n||!1,closeIcon:function(){}}),e.buttons={},void 0===e.closeIcon&&(e.closeIcon=function(){}),e.confirmKeys=[13],t.jconfirm(e)},t.jconfirm=function(n){void 0===n&&(n={});var o=e.extend(!0,{},t.jconfirm.pluginDefaults);t.jconfirm.defaults&&(o=e.extend(!0,o,t.jconfirm.defaults)),o=e.extend(!0,{},o,n);var i=new t.Jconfirm(o);return t.jconfirm.instances.push(i),i},t.Jconfirm=function(t){e.extend(this,t),this._init()},t.Jconfirm.prototype={_init:function(){var n=this;t.jconfirm.instances.length||(t.jconfirm.lastFocused=e("body").find(":focus")),this._id=Math.round(99999*Math.random()),this.contentParsed=e(document.createElement("div")),this.lazyOpen||setTimeout(function(){n.open()},0)},_buildHTML:function(){var t=this;this._parseAnimation(this.animation,"o"),this._parseAnimation(this.closeAnimation,"c"),this._parseBgDismissAnimation(this.backgroundDismissAnimation),this._parseColumnClass(this.columnClass),this._parseTheme(this.theme),this._parseType(this.type);var n=e(this.template);n.find(".jconfirm-box").addClass(this.animationParsed).addClass(this.backgroundDismissAnimationParsed).addClass(this.typeParsed),this.typeAnimated&&n.find(".jconfirm-box").addClass("jconfirm-type-animated"),this.useBootstrap?(n.find(".jc-bs3-row").addClass(this.bootstrapClasses.row),n.find(".jc-bs3-row").addClass("justify-content-md-center justify-content-sm-center justify-content-xs-center justify-content-lg-center"),n.find(".jconfirm-box-container").addClass(this.columnClassParsed),this.containerFluid?n.find(".jc-bs3-container").addClass(this.bootstrapClasses.containerFluid):n.find(".jc-bs3-container").addClass(this.bootstrapClasses.container)):n.find(".jconfirm-box").css("width",this.boxWidth),this.titleClass&&n.find(".jconfirm-title-c").addClass(this.titleClass),n.addClass(this.themeParsed);var o="jconfirm-box"+this._id;n.find(".jconfirm-box").attr("aria-labelledby",o).attr("tabindex",-1),n.find(".jconfirm-content").attr("id",o),null!==this.bgOpacity&&n.find(".jconfirm-bg").css("opacity",this.bgOpacity),this.rtl&&n.addClass("jconfirm-rtl"),this.$el=n.appendTo(this.container),this.$jconfirmBoxContainer=this.$el.find(".jconfirm-box-container"),this.$jconfirmBox=this.$body=this.$el.find(".jconfirm-box"),this.$jconfirmBg=this.$el.find(".jconfirm-bg"),this.$title=this.$el.find(".jconfirm-title"),this.$titleContainer=this.$el.find(".jconfirm-title-c"),this.$content=this.$el.find("div.jconfirm-content"),this.$contentPane=this.$el.find(".jconfirm-content-pane"),this.$icon=this.$el.find(".jconfirm-icon-c"),this.$closeIcon=this.$el.find(".jconfirm-closeIcon"),this.$holder=this.$el.find(".jconfirm-holder"),this.$btnc=this.$el.find(".jconfirm-buttons"),this.$scrollPane=this.$el.find(".jconfirm-scrollpane"),t.setStartingPoint(),this._contentReady=e.Deferred(),this._modalReady=e.Deferred(),this.$holder.css({"padding-top":this.offsetTop,"padding-bottom":this.offsetBottom}),this.setTitle(),this.setIcon(),this._setButtons(),this._parseContent(),this.initDraggable(),this.isAjax&&this.showLoading(!1),e.when(this._contentReady,this._modalReady).then(function(){t.isAjaxLoading?setTimeout(function(){t.isAjaxLoading=!1,t.setContent(),t.setTitle(),t.setIcon(),setTimeout(function(){t.hideLoading(!1),t._updateContentMaxHeight()},100),"function"==typeof t.onContentReady&&t.onContentReady()},50):(t._updateContentMaxHeight(),t.setTitle(),t.setIcon(),"function"==typeof t.onContentReady&&t.onContentReady()),t.autoClose&&t._startCountDown()}).then(function(){t._watchContent()}),"none"===this.animation&&(this.animationSpeed=1,this.animationBounce=1),this.$body.css(this._getCSS(this.animationSpeed,this.animationBounce)),this.$contentPane.css(this._getCSS(this.animationSpeed,1)),this.$jconfirmBg.css(this._getCSS(this.animationSpeed,1)),this.$jconfirmBoxContainer.css(this._getCSS(this.animationSpeed,1))},_typePrefix:"jconfirm-type-",typeParsed:"",_parseType:function(e){this.typeParsed=this._typePrefix+e},setType:function(e){var t=this.typeParsed;this._parseType(e),this.$jconfirmBox.removeClass(t).addClass(this.typeParsed)},themeParsed:"",_themePrefix:"jconfirm-",setTheme:function(e){var t=this.theme;this.theme=e||this.theme,this._parseTheme(this.theme),t&&this.$el.removeClass(t),this.$el.addClass(this.themeParsed),this.theme=e},_parseTheme:function(t){var n=this;t=t.split(","),e.each(t,function(o,i){-1===i.indexOf(n._themePrefix)&&(t[o]=n._themePrefix+e.trim(i))}),this.themeParsed=t.join(" ").toLowerCase()},backgroundDismissAnimationParsed:"",_bgDismissPrefix:"jconfirm-hilight-",_parseBgDismissAnimation:function(t){var n=t.split(","),o=this;e.each(n,function(t,i){-1===i.indexOf(o._bgDismissPrefix)&&(n[t]=o._bgDismissPrefix+e.trim(i))}),this.backgroundDismissAnimationParsed=n.join(" ").toLowerCase()},animationParsed:"",closeAnimationParsed:"",_animationPrefix:"jconfirm-animation-",setAnimation:function(e){this.animation=e||this.animation,this._parseAnimation(this.animation,"o")},_parseAnimation:function(t,n){n=n||"o";var o=t.split(","),i=this;e.each(o,function(t,n){-1===n.indexOf(i._animationPrefix)&&(o[t]=i._animationPrefix+e.trim(n))});var s=o.join(" ").toLowerCase();return"o"===n?this.animationParsed=s:this.closeAnimationParsed=s,s},setCloseAnimation:function(e){this.closeAnimation=e||this.closeAnimation,this._parseAnimation(this.closeAnimation,"c")},setAnimationSpeed:function(e){this.animationSpeed=e||this.animationSpeed},columnClassParsed:"",setColumnClass:function(e){this.useBootstrap?(this.columnClass=e||this.columnClass,this._parseColumnClass(this.columnClass),this.$jconfirmBoxContainer.addClass(this.columnClassParsed)):console.warn("cannot set columnClass, useBootstrap is set to false")},_updateContentMaxHeight:function(){var t=e(window).height()-(this.$jconfirmBox.outerHeight()-this.$contentPane.outerHeight())-(this.offsetTop+this.offsetBottom);this.$contentPane.css({"max-height":t+"px"})},setBoxWidth:function(e){this.useBootstrap?console.warn("cannot set boxWidth, useBootstrap is set to true"):(this.boxWidth=e,this.$jconfirmBox.css("width",e))},_parseColumnClass:function(e){var t;switch(e=e.toLowerCase()){case"xl":case"xlarge":t="col-md-12";break;case"l":case"large":t="col-md-8 col-md-offset-2";break;case"m":case"medium":t="col-md-6 col-md-offset-3";break;case"s":case"small":t="col-md-4 col-md-offset-4";break;case"xs":case"xsmall":t="col-md-2 col-md-offset-5";break;default:t=e}this.columnClassParsed=t},initDraggable:function(){var t=this,n=this.$titleContainer;this.resetDrag(),this.draggable&&(n.on("mousedown",function(e){n.addClass("jconfirm-hand"),t.mouseX=e.clientX,t.mouseY=e.clientY,t.isDrag=!0}),e(window).on("mousemove."+this._id,function(e){t.isDrag&&(t.movingX=e.clientX-t.mouseX+t.initialX,t.movingY=e.clientY-t.mouseY+t.initialY,t.setDrag())}),e(window).on("mouseup."+this._id,function(){n.removeClass("jconfirm-hand"),t.isDrag&&(t.isDrag=!1,t.initialX=t.movingX,t.initialY=t.movingY)}))},resetDrag:function(){this.isDrag=!1,this.initialX=0,this.initialY=0,this.movingX=0,this.movingY=0,this.mouseX=0,this.mouseY=0,this.$jconfirmBoxContainer.css("transform","translate(0px, 0px)")},setDrag:function(){if(this.draggable){this.alignMiddle=!1;var t=this.$jconfirmBox.outerWidth(),n=this.$jconfirmBox.outerHeight(),o=e(window).width(),i=e(window).height(),s=this;if(s.movingX%1==0||s.movingY%1==0){if(s.dragWindowBorder){var r=o/2-t/2,a=i/2-n/2;a-=s.dragWindowGap,(r-=s.dragWindowGap)+s.movingX<0?s.movingX=-r:r-s.movingX<0&&(s.movingX=r),a+s.movingY<0?s.movingY=-a:a-s.movingY<0&&(s.movingY=a)}s.$jconfirmBoxContainer.css("transform","translate("+s.movingX+"px, "+s.movingY+"px)")}}},_scrollTop:function(){if("undefined"!=typeof pageYOffset)return pageYOffset;var e=document.body,t=document.documentElement;return(t=t.clientHeight?t:e).scrollTop},_watchContent:function(){var t=this;this._timer&&clearInterval(this._timer);var n=0;this._timer=setInterval(function(){if(t.smoothContent){var o=t.$content.outerHeight()||0;o!==n&&(n=o);var i=e(window).height();t.offsetTop+t.offsetBottom+t.$jconfirmBox.height()-t.$contentPane.height()+t.$content.height()<i?t.$contentPane.addClass("no-scroll"):t.$contentPane.removeClass("no-scroll")}},this.watchInterval)},_overflowClass:"jconfirm-overflow",_hilightAnimating:!1,highlight:function(){this.hiLightModal()},hiLightModal:function(){var e=this;if(!this._hilightAnimating){e.$body.addClass("hilight");var t=parseFloat(e.$body.css("animation-duration"))||2;this._hilightAnimating=!0,setTimeout(function(){e._hilightAnimating=!1,e.$body.removeClass("hilight")},1e3*t)}},_bindEvents:function(){var t=this;this.boxClicked=!1,this.$scrollPane.click(function(e){if(!t.boxClicked){var n,o=!1,i=!1;if("string"==typeof(n="function"==typeof t.backgroundDismiss?t.backgroundDismiss():t.backgroundDismiss)&&void 0!==t.buttons[n]?(o=n,i=!1):i=void 0===n||1==!!n,o){var s=t.buttons[o].action.apply(t);i=void 0===s||!!s}i?t.close():t.hiLightModal()}t.boxClicked=!1}),this.$jconfirmBox.click(function(e){t.boxClicked=!0});var n=!1;e(window).on("jcKeyDown."+t._id,function(e){n||(n=!0)}),e(window).on("keyup."+t._id,function(e){n&&(t.reactOnKey(e),n=!1)}),e(window).on("resize."+this._id,function(){t._updateContentMaxHeight(),setTimeout(function(){t.resetDrag()},100)})},_cubic_bezier:"0.36, 0.55, 0.19",_getCSS:function(e,t){return{"-webkit-transition-duration":e/1e3+"s","transition-duration":e/1e3+"s","-webkit-transition-timing-function":"cubic-bezier("+this._cubic_bezier+", "+t+")","transition-timing-function":"cubic-bezier("+this._cubic_bezier+", "+t+")"}},_setButtons:function(){var t=this,n=0;if("object"!=typeof this.buttons&&(this.buttons={}),e.each(this.buttons,function(o,i){n+=1,"function"==typeof i&&(t.buttons[o]=i={action:i}),t.buttons[o].text=i.text||o,t.buttons[o].btnClass=i.btnClass||"btn-default",t.buttons[o].action=i.action||function(){},t.buttons[o].keys=i.keys||[],t.buttons[o].isHidden=i.isHidden||!1,t.buttons[o].isDisabled=i.isDisabled||!1,e.each(t.buttons[o].keys,function(e,n){t.buttons[o].keys[e]=n.toLowerCase()});var s=e('<button type="button" class="btn"></button>').html(t.buttons[o].text).addClass(t.buttons[o].btnClass).prop("disabled",t.buttons[o].isDisabled).css("display",t.buttons[o].isHidden?"none":"").click(function(e){e.preventDefault();var n=t.buttons[o].action.apply(t,[t.buttons[o]]);t.onAction.apply(t,[o,t.buttons[o]]),t._stopCountDown(),(void 0===n||n)&&t.close()});t.buttons[o].el=s,t.buttons[o].setText=function(e){s.html(e)},t.buttons[o].addClass=function(e){s.addClass(e)},t.buttons[o].removeClass=function(e){s.removeClass(e)},t.buttons[o].disable=function(){t.buttons[o].isDisabled=!0,s.prop("disabled",!0)},t.buttons[o].enable=function(){t.buttons[o].isDisabled=!1,s.prop("disabled",!1)},t.buttons[o].show=function(){t.buttons[o].isHidden=!1,s.css("display","")},t.buttons[o].hide=function(){t.buttons[o].isHidden=!0,s.css("display","none")},t["$_"+o]=t["$$"+o]=s,t.$btnc.append(s)}),0===n&&this.$btnc.hide(),null===this.closeIcon&&0===n&&(this.closeIcon=!0),this.closeIcon){if(this.closeIconClass){var o='<i class="'+this.closeIconClass+'"></i>';this.$closeIcon.html(o)}this.$closeIcon.click(function(e){e.preventDefault();var n,o=!1,i=!1;if("string"==typeof(n="function"==typeof t.closeIcon?t.closeIcon():t.closeIcon)&&void 0!==t.buttons[n]?(o=n,i=!1):i=void 0===n||1==!!n,o){var s=t.buttons[o].action.apply(t);i=void 0===s||!!s}i&&t.close()}),this.$closeIcon.show()}else this.$closeIcon.hide()},setTitle:function(e,t){if(t=t||!1,void 0!==e)if("string"==typeof e)this.title=e;else if("function"==typeof e){"function"==typeof e.promise&&console.error("Promise was returned from title function, this is not supported.");var n=e();this.title="string"==typeof n&&n}else this.title=!1;this.isAjaxLoading&&!t||(this.$title.html(this.title||""),this.updateTitleContainer())},setIcon:function(e,t){if(t=t||!1,void 0!==e)if("string"==typeof e)this.icon=e;else if("function"==typeof e){var n=e();this.icon="string"==typeof n&&n}else this.icon=!1;this.isAjaxLoading&&!t||(this.$icon.html(this.icon?'<i class="'+this.icon+'"></i>':""),this.updateTitleContainer())},updateTitleContainer:function(){this.title||this.icon?this.$titleContainer.show():this.$titleContainer.hide()},setContentPrepend:function(e,t){e&&this.contentParsed.prepend(e)},setContentAppend:function(e){e&&this.contentParsed.append(e)},setContent:function(e,t){t=!!t;var n=this;e&&this.contentParsed.html("").append(e),this.isAjaxLoading&&!t||(this.$content.html(""),this.$content.append(this.contentParsed),setTimeout(function(){n.$body.find("input[autofocus]:visible:first").focus()},100))},loadingSpinner:!1,showLoading:function(e){this.loadingSpinner=!0,this.$jconfirmBox.addClass("loading"),e&&this.$btnc.find("button").prop("disabled",!0)},hideLoading:function(e){this.loadingSpinner=!1,this.$jconfirmBox.removeClass("loading"),e&&this.$btnc.find("button").prop("disabled",!1)},ajaxResponse:!1,contentParsed:"",isAjax:!1,isAjaxLoading:!1,_parseContent:function(){var t=this,n="&nbsp;";if("function"==typeof this.content){var o=this.content.apply(this);"string"==typeof o?this.content=o:"object"==typeof o&&"function"==typeof o.always?(this.isAjax=!0,this.isAjaxLoading=!0,o.always(function(e,n,o){t.ajaxResponse={data:e,status:n,xhr:o},t._contentReady.resolve(e,n,o),"function"==typeof t.contentLoaded&&t.contentLoaded(e,n,o)}),this.content=n):this.content=n}if("string"==typeof this.content&&"url:"===this.content.substr(0,4).toLowerCase()){this.isAjax=!0,this.isAjaxLoading=!0;var i=this.content.substring(4,this.content.length);e.get(i).done(function(e){t.contentParsed.html(e)}).always(function(e,n,o){t.ajaxResponse={data:e,status:n,xhr:o},t._contentReady.resolve(e,n,o),"function"==typeof t.contentLoaded&&t.contentLoaded(e,n,o)})}this.content||(this.content=n),this.isAjax||(this.contentParsed.html(this.content),this.setContent(),t._contentReady.resolve())},_stopCountDown:function(){clearInterval(this.autoCloseInterval),this.$cd&&this.$cd.remove()},_startCountDown:function(){var t=this,n=this.autoClose.split("|");if(2!==n.length)return console.error("Invalid option for autoClose. example 'close|10000'"),!1;var o=n[0],i=parseInt(n[1]);if(void 0===this.buttons[o])return console.error("Invalid button key '"+o+"' for autoClose"),!1;var s=Math.ceil(i/1e3);this.$cd=e('<span class="countdown"> ('+s+")</span>").appendTo(this["$_"+o]),this.autoCloseInterval=setInterval(function(){t.$cd.html(" ("+(s-=1)+") "),s<=0&&(t["$$"+o].trigger("click"),t._stopCountDown())},1e3)},_getKey:function(e){switch(e){case 192:return"tilde";case 13:return"enter";case 16:return"shift";case 9:return"tab";case 20:return"capslock";case 17:return"ctrl";case 91:return"win";case 18:return"alt";case 27:return"esc";case 32:return"space"}var t=String.fromCharCode(e);return!!/^[A-z0-9]+$/.test(t)&&t.toLowerCase()},reactOnKey:function(t){var n=this,o=e(".jconfirm");if(o.eq(o.length-1)[0]!==this.$el[0])return!1;var i=t.which;if(this.$content.find(":input").is(":focus")&&/13|32/.test(i))return!1;var s,r=this._getKey(i);"esc"===r&&this.escapeKey&&(!0===this.escapeKey?this.$scrollPane.trigger("click"):"string"!=typeof this.escapeKey&&"function"!=typeof this.escapeKey||(s="function"==typeof this.escapeKey?this.escapeKey():this.escapeKey)&&(void 0===this.buttons[s]?console.warn("Invalid escapeKey, no buttons found with key "+s):this["$_"+s].trigger("click"))),e.each(this.buttons,function(e,t){-1!==t.keys.indexOf(r)&&n["$_"+e].trigger("click")})},setDialogCenter:function(){console.info("setDialogCenter is deprecated, dialogs are centered with CSS3 tables")},_unwatchContent:function(){clearInterval(this._timer)},close:function(n){var o=this;return"function"==typeof this.onClose&&this.onClose(n),this._unwatchContent(),e(window).unbind("resize."+this._id),e(window).unbind("keyup."+this._id),e(window).unbind("jcKeyDown."+this._id),this.draggable&&(e(window).unbind("mousemove."+this._id),e(window).unbind("mouseup."+this._id),this.$titleContainer.unbind("mousedown")),o.$el.removeClass(o.loadedClass),e("body").removeClass("jconfirm-no-scroll-"+o._id),o.$jconfirmBoxContainer.removeClass("jconfirm-no-transition"),setTimeout(function(){o.$body.addClass(o.closeAnimationParsed),o.$jconfirmBg.addClass("jconfirm-bg-h");var n="none"===o.closeAnimation?1:o.animationSpeed;setTimeout(function(){o.$el.remove(),t.jconfirm.instances;for(var n=t.jconfirm.instances.length-1;n>=0;n--)t.jconfirm.instances[n]._id===o._id&&t.jconfirm.instances.splice(n,1);if(!t.jconfirm.instances.length&&o.scrollToPreviousElement&&t.jconfirm.lastFocused&&t.jconfirm.lastFocused.length&&e.contains(document,t.jconfirm.lastFocused[0])){var i=t.jconfirm.lastFocused;if(o.scrollToPreviousElementAnimate){var s=e(window).scrollTop(),r=t.jconfirm.lastFocused.offset().top,a=e(window).height();if(r>s&&r<s+a)i.focus();else{var c=r-Math.round(a/3);e("html, body").animate({scrollTop:c},o.animationSpeed,"swing",function(){i.focus()})}}else i.focus();t.jconfirm.lastFocused=!1}"function"==typeof o.onDestroy&&o.onDestroy()},.4*n)},50),!0},open:function(){return!this.isOpen()&&(this._buildHTML(),this._bindEvents(),this._open(),!0)},setStartingPoint:function(){var n=!1;if(!0!==this.animateFromElement&&this.animateFromElement)n=this.animateFromElement,t.jconfirm.lastClicked=!1;else{if(!t.jconfirm.lastClicked||!0!==this.animateFromElement)return!1;n=t.jconfirm.lastClicked,t.jconfirm.lastClicked=!1}if(!n)return!1;var o=n.offset(),i=n.outerHeight()/2,s=n.outerWidth()/2;i-=this.$jconfirmBox.outerHeight()/2,s-=this.$jconfirmBox.outerWidth()/2;var r=o.top+i;r-=this._scrollTop();var a=o.left+s,c=e(window).height()/2,l=e(window).width()/2;if(r-=c-this.$jconfirmBox.outerHeight()/2,a-=l-this.$jconfirmBox.outerWidth()/2,Math.abs(r)>c||Math.abs(a)>l)return!1;this.$jconfirmBoxContainer.css("transform","translate("+a+"px, "+r+"px)")},_open:function(){var e=this;"function"==typeof e.onOpenBefore&&e.onOpenBefore(),this.$body.removeClass(this.animationParsed),this.$jconfirmBg.removeClass("jconfirm-bg-h"),this.$body.focus(),e.$jconfirmBoxContainer.css("transform","translate(0px, 0px)"),setTimeout(function(){e.$body.css(e._getCSS(e.animationSpeed,1)),e.$body.css({"transition-property":e.$body.css("transition-property")+", margin"}),e.$jconfirmBoxContainer.addClass("jconfirm-no-transition"),e._modalReady.resolve(),"function"==typeof e.onOpen&&e.onOpen(),e.$el.addClass(e.loadedClass)},this.animationSpeed)},loadedClass:"jconfirm-open",isClosed:function(){return!this.$el||0===this.$el.parent().length},isOpen:function(){return!this.isClosed()},toggle:function(){this.isOpen()?this.close():this.open()}},t.jconfirm.instances=[],t.jconfirm.lastFocused=!1,t.jconfirm.pluginDefaults={template:'<div class="jconfirm"><div class="jconfirm-bg jconfirm-bg-h"></div><div class="jconfirm-scrollpane"><div class="jconfirm-row"><div class="jconfirm-cell"><div class="jconfirm-holder"><div class="jc-bs3-container"><div class="jc-bs3-row"><div class="jconfirm-box-container jconfirm-animated"><div class="jconfirm-box" role="dialog" aria-labelledby="labelled" tabindex="-1"><div class="jconfirm-closeIcon">&times;</div><div class="jconfirm-title-c"><span class="jconfirm-icon-c"></span><span class="jconfirm-title"></span></div><div class="jconfirm-content-pane"><div class="jconfirm-content"></div></div><div class="jconfirm-buttons"></div><div class="jconfirm-clear"></div></div></div></div></div></div></div></div></div></div>',title:"Hello",titleClass:"",type:"default",typeAnimated:!0,draggable:!0,dragWindowGap:15,dragWindowBorder:!0,animateFromElement:!0,alignMiddle:!0,smoothContent:!0,content:"Are you sure to continue?",buttons:{},defaultButtons:{ok:{action:function(){}},close:{action:function(){}}},contentLoaded:function(){},icon:"",lazyOpen:!1,bgOpacity:null,theme:"light",animation:"scale",closeAnimation:"scale",animationSpeed:400,animationBounce:1,escapeKey:!0,rtl:!1,container:"body",containerFluid:!1,backgroundDismiss:!1,backgroundDismissAnimation:"shake",autoClose:!1,closeIcon:null,closeIconClass:!1,watchInterval:100,columnClass:"col-md-4 col-md-offset-4 col-sm-6 col-sm-offset-3 col-xs-10 col-xs-offset-1",boxWidth:"50%",scrollToPreviousElement:!0,scrollToPreviousElementAnimate:!0,useBootstrap:!0,offsetTop:40,offsetBottom:40,bootstrapClasses:{container:"container",containerFluid:"container-fluid",row:"row"},onContentReady:function(){},onOpenBefore:function(){},onOpen:function(){},onClose:function(){},onDestroy:function(){},onAction:function(){}};var n=!1;e(window).on("keydown",function(t){if(!n){var o=!1;e(t.target).closest(".jconfirm-box").length&&(o=!0),o&&e(window).trigger("jcKeyDown"),n=!0}}),e(window).on("keyup",function(){n=!1}),t.jconfirm.lastClicked=!1,e(document).on("mousedown","button, a, [jc-source]",function(){t.jconfirm.lastClicked=e(this)})})?o.apply(t,i):o)||(e.exports=s)},405:()=>{(window.WPCodeHelp||function(e,t,n){const o={init:function(){o.should_init()&&(o.find_elements(),o.init_show(),o.init_close_button(),o.init_search(),o.init_accordion())},should_init:()=>(o.$overlay=n("#wpcode-docs-overlay"),o.$overlay.length>0),find_elements(){o.$close_button=n("#wpcode-help-close"),o.$search=n("#wpcode-help-search"),o.$no_result=n("#wpcode-help-no-result"),o.$search_results=n("#wpcode-help-result ul"),o.$categories=n("#wpcode-help-categories")},init_close_button(){o.$close_button.on("click",function(e){e.preventDefault(),o.$overlay.fadeOut(200)})},init_show(){n(e).on("click",".wpcode-show-help",function(e){e.preventDefault(),o.$overlay.fadeIn(200)})},init_accordion(){o.$categories.on("click",".wpcode-help-category header",function(){const e=n(this).closest(".wpcode-help-category");o.toggle_category(e)}),o.$categories.on("click",".viewall",function(e){e.preventDefault(),n(this).closest(".wpcode-help-docs").find("div").slideDown(),n(this).hide()})},toggle_category(e){e.toggleClass("open"),e.find(".wpcode-help-docs").slideToggle()},init_search(){o.$search.on("keyup","input",o.input_search),o.$search.on("click","#wpcode-help-search-clear",o.clear_search)},input_search(){o.$search_results.html("");const e=n(this).val().toLowerCase(),t=n("#wpcode-help-categories .wpcode-help-docs li").filter(function(){return n(this).text().toLowerCase().indexOf(""+e)>-1});e.length>2&&t.clone().appendTo(o.$search_results),0===t.length?o.$no_result.show():o.$no_result.hide(),o.$search.toggleClass("wpcode-search-empty",!e)},clear_search(){o.$search.find("input").val("").trigger("keyup")}};return o}(document,window,jQuery)).init()},428:e=>{"use strict";e.exports=window.jQuery},429:()=>{(window.WPCodeAdminGenerator||function(e,t,n){const o={doing_ajax_call:!1,ajax_snippet_update:!1,editor_id:"wpcode_generator_code_preview",init:function(){o.should_init()&&(o.find_elements(),o.init_generator_form(),o.init_code_editor(),o.init_tabs(),o.init_use_snippet(),o.init_copy_editor(),o.init_repeater(),o.do_spacer(),n(e).ready(function(){o.init_autocomplete()}))},should_init:()=>(o.generator_form=n("#wpcode_generator_form"),o.generator_form.length>0),find_elements(){o.tabs_buttons=n(".wpcode-items-tabs"),o.tabs_content=n(".wpcode-items-list .wpcode-form-tab"),o.use_snippet=n("#wpcode-generator-use-snippet"),o.update_button=n("#wpcode-generator-update-code"),o.repeater_row=n("#wpcode-generator-repeater-row").html()},init_generator_form(){o.generator_form.on("submit",function(e){e.preventDefault(),o.update_snippet()}),o.generator_form.on("change","input, select",function(){o.update_snippet()}),o.update_snippet()},update_snippet(){o.doing_ajax_call||(o.ajax_snippet_update&&o.ajax_snippet_update.abort(),o.show_button_spinner(o.update_button),o.ajax_snippet_update=n.post(ajaxurl,n(o.generator_form).serialize()).done(function(e){o.ajax_snippet_update=!1,WPCodeAdminCodeEditor.set_value(o.editor_id,e),o.hide_button_spinner(o.update_button)}))},init_tabs(){o.tabs_buttons.on("click","button",function(e){e.preventDefault(),o.switch_active_tab(n(this))})},switch_active_tab(e){o.tabs_buttons.find("button").removeClass("wpcode-active"),e.addClass("wpcode-active");const t=e.data("category");o.tabs_content.hide(),o.tabs_content.filter(function(){return n(this).data("tab")===t}).show(),o.do_spacer(),WPCodeAdminCodeEditor.refresh(o.editor_id)},init_use_snippet(){o.use_snippet.on("click",function(e){if(e.preventDefault(),o.doing_ajax_call)return;o.doing_ajax_call=!0;const i=o.generator_form.serializeArray(),s=n(this);n.each(i,function(e,t){"action"===t.name&&(i[e].value="wpcode_save_generated_snippet")}),o.show_button_spinner(s),n.post(ajaxurl,n.param(i)).done(function(e){o.doing_ajax_call=!1,o.hide_button_spinner(s),e.success&&e.data.url&&(t.location=e.data.url)})})},show_button_spinner(e){t.WPCodeSpinner.show_button_spinner(e)},hide_button_spinner(e){t.WPCodeSpinner.hide_button_spinner(e)},init_copy_editor:function(){n(".wpcode-copy-target").on("click",function(e){e.preventDefault();const t=n(this),i=WPCodeAdminCodeEditor.get_value(o.editor_id);i&&(navigator.clipboard.writeText(i),t.addClass("wpcode-show-success-icon"),setTimeout(function(){t.removeClass("wpcode-show-success-icon")},500))})},init_repeater(){o.row_id=0,o.tabs_content.on("click",".wpcode-repeater-button",function(){const e=n(this).data("target"),t=n(n('.wpcode-generator-column > [data-repeater="'+e+'"]').get().reverse());let i,s,r=0;o.row_id++,t.each(function(){const e=n(this).closest(".wpcode-generator-column");e.is(i)||(r++,i=e,s=n(o.repeater_row),r>1?s.find("button").remove():s.find("button").data("target",o.row_id),s.attr("data-id",o.row_id),e.append(s)),n(this).clone().attr("data-repeater",null).prependTo(s).find("input").val(null)});let a=0,c=n('.wpcode-repeater-group[data-id="'+o.row_id+'"]');c.each(function(){const e=n(this).height();e>a&&(a=e)}),c.height(a),c.first().find("input").first().focus()}),o.tabs_content.on("click",".wpcode-remove-row",function(){const e=n(this).data("target");n('.wpcode-repeater-group[data-id="'+e+'"]').remove()})},do_spacer(){n(".wpcode-generator-field-spacer").each(function(){const e=n(this).closest(".wpcode-generator-column"),t=n(this).closest(".wpcode-generator-column").outerHeight();let o=0;e.siblings(".wpcode-generator-column").each(function(){const e=n(this).height();e>o&&(o=e)}),o>t&&n(this).height(o-t+3)})},init_autocomplete(){n(".wpcode-generator-field-autocomplete").each(function(){const e=n(this).find('input[type="text"]'),t=n(this).find(".wpcode-field-autocomplete").text();e.autocomplete({source:JSON.parse(t)})})},init_code_editor(){const e=n(".wpcode-generator-code");if(0===e.length)return;const t=wp.codeEditor.initialize(e);o.CodeMirror=t.codemirror,o.CodeMirror.setOption("readOnly",!1),o.CodeMirror.on("change",function(e){clearTimeout(o.editor_change_handler),o.editor_change_handler=setTimeout(function(){jQuery(e.getTextArea()).val(e.getValue()).change(),o.update_snippet()},300)})}};return o}(document,window,jQuery)).init()},474:()=>{(window.WPCodeSVG||function(e,t){const n={l18n:wpcode,init(){t.WPCodeSVG=n},sanitizeSvg(e,t){const n=(new DOMParser).parseFromString(e,"image/svg+xml");return n.querySelector("parsererror")?(console.error("Error parsing SVG:",n.querySelector("parsererror").textContent),""):(n.querySelectorAll("*").forEach(e=>{const n=e.tagName.toLowerCase();if(t[n])for(let o of[...e.attributes])t[n][o.name.toLowerCase()]||e.removeAttribute(o.name);else e.parentNode.removeChild(e)}),"svg"===n.documentElement.nodeName?n.documentElement.outerHTML:"")},WPCodeIcon(e,t=20,o=20,i="",s="",r=""){const a=n.wpcodeIcons();if(!a.hasOwnProperty(e))return"";i||(i=`0 0 ${t} ${o}`);const c=`<svg class = "wpcode-icon wpcode-icon-${e} ${r}" width = "${t}" height = "${o}" viewBox = "${i}" fill = "none" xmlns = "http://www.w3.org/2000/svg" id = "${s}" > ${a[e]} </svg> `;return this.sanitizeSvg(c,{svg:{class:!0,"aria-hidden":!0,"aria-labelledby":!0,role:!0,xmlns:!0,width:!0,height:!0,viewbox:!0,id:!0},g:{fill:!0,"clip-path":!0},title:{title:!0},path:{d:!0,fill:!0,"fill-rule":!0,"clip-rule":!0,"data-name":!0},circle:{cx:!0,cy:!0,r:!0,stroke:!0,"stroke-width":!0,fill:!0},rect:{x:!0,y:!0,width:!0,height:!0,fill:!0},polyline:{points:!0,fill:!0,stroke:!0,"stroke-width":!0,"stroke-linecap":!0,"stroke-miterlimit":!0},clipPath:{id:!0},defs:{}})},wpcodeIcons:()=>({logo:'<path fill-rule="evenodd" clip-rule="evenodd" d="M57.5706 64H6.56732C2.89985 64 0 61.1064 0 57.4468V6.55319C0 2.89362 2.89985 0 6.56732 0H57.5706C61.2381 0 64.1379 2.89362 64.1379 6.55319V57.4468C64.1379 61.1064 61.2381 64 57.5706 64ZM15.863 52.0855C15.5219 52.0855 15.0954 52.0004 14.7543 51.9153C13.2191 51.3196 12.4515 49.6175 13.0485 48.0855L26.439 13.7877C27.036 12.2558 28.7418 11.4898 30.277 12.0855C31.8122 12.6813 32.5798 14.3834 31.9828 15.9153L18.6776 50.2132C18.2512 51.4047 17.0571 52.0855 15.863 52.0855ZM35.0534 47.7445C35.6504 48.3403 36.418 48.5956 37.1856 48.5956C37.9532 48.5956 38.7208 48.3403 39.3179 47.7445L49.8085 37.3616C51.6849 35.4892 51.6849 32.3403 49.8085 30.468L39.3179 19.9999C38.2091 18.8084 36.3327 18.8084 35.1386 19.9999C33.9446 21.1063 33.9446 22.9786 35.1386 24.1701L44.7764 33.8722L35.0534 43.5743C33.8593 44.6807 33.8593 46.5531 35.0534 47.7445Z" fill="white"/>',checkmark:'<circle class="path circle" fill="none" stroke="#73AF55" stroke-width="6" stroke-miterlimit="10" cx="65.1" cy="65.1" r="62.1"/><polyline class="path check" fill="none" stroke="#73AF55" stroke-width="6" stroke-linecap="round" stroke-miterlimit="10" points="100.2,40.2 51.5,88.8 29.8,67.5 "/>',lock:'<path d="M19 9.33333H17.6666V6.66667C17.6666 2.98667 14.68 0 11 0C7.31998 0 4.33331 2.98667 4.33331 6.66667V9.33333H2.99998C1.53331 9.33333 0.333313 10.5333 0.333313 12V25.3333C0.333313 26.8 1.53331 28 2.99998 28H19C20.4666 28 21.6666 26.8 21.6666 25.3333V12C21.6666 10.5333 20.4666 9.33333 19 9.33333ZM6.99998 6.66667C6.99998 4.45333 8.78665 2.66667 11 2.66667C13.2133 2.66667 15 4.45333 15 6.66667V9.33333H6.99998V6.66667ZM19 25.3333H2.99998V12H19V25.3333ZM11 21.3333C12.4666 21.3333 13.6666 20.1333 13.6666 18.6667C13.6666 17.2 12.4666 16 11 16C9.53331 16 8.33331 17.2 8.33331 18.6667C8.33331 20.1333 9.53331 21.3333 11 21.3333Z" fill="#8A8A8A"/>'})};return n}(document,window,jQuery)).init()},481:()=>{(window.WPCodeSchemaGenerator||function(e,t,n){const o={l18n:t.wpcode,init(){o.bindEvents(),console.log("Schema Generator with Smart Tags initialized!")},bindEvents(){n(e).on("click",".wpcode-media-library-button",o.openMediaLibrary),n(e).on("focus",".wpcode-input-text, .wpcode-input-textarea",function(){o.currentInputField=this}),n(e).on("click",".wpcode-insert-smart-tag",function(e){const t=n(this).closest(".wpcode-smart-tags").find(".wpcode-smart-tags-dropdown"),o=t.data("upgrade-title");if(o)return e.preventDefault(),e.stopImmediatePropagation(),WPCodeAdminNotices.show_pro_notice(o,t.data("upgrade-text"),t.data("upgrade-link"),t.data("upgrade-button")),!1})},openMediaLibrary(e){e.preventDefault();const t=n(this),i=n("#"+t.data("target")),s=wp.media({title:o.l18n.select_image||"Select Image",button:{text:o.l18n.use_image||"Use Image"},multiple:!1});s.on("select",function(){const e=s.state().get("selection").first().toJSON();i.val(e.url).trigger("change")}),s.open()},insertAtCursor(e,t){if(e.selectionStart||0===e.selectionStart){const n=e.selectionStart,o=e.selectionEnd;e.value=e.value.substring(0,n)+t+e.value.substring(o,e.value.length),e.selectionStart=n+t.length,e.selectionEnd=n+t.length}else e.value+=t;n(e).trigger("change"),e.focus()}};return o}(document,window,jQuery)).init()},512:()=>{(window.WPCodeAdminWelcome||function(e,t,n){const o={init:function(){o.add_listener()},add_listener(){n("#wpbody-content").on("click",".wpcode-scroll-to",function(e){e.preventDefault();const t=n(this).attr("href"),o=n(t);n("html, body").animate({scrollTop:o.offset().top},700)})}};return o}(document,window,jQuery)).init()},596:function(e,t,n){var o,i;!function(s){o=[n(428)],i=function(e){return function(e,t){"use strict";var n=e.document,o=t(e),i=t.Deferred,s=t("html"),r=[],a="aria-hidden",c="lity-"+a,l='a[href],area[href],input:not([disabled]),select:not([disabled]),textarea:not([disabled]),button:not([disabled]),iframe,object,embed,[contenteditable],[tabindex]:not([tabindex^="-"])',d={esc:!0,handler:null,handlers:{image:C,inline:function(e,n){var o,i,s;try{o=t(e)}catch(e){return!1}return!!o.length&&(i=t('<i style="display:none !important"></i>'),s=o.hasClass("lity-hide"),n.element().one("lity:remove",function(){i.before(o).remove(),s&&!o.closest(".lity-content").length&&o.addClass("lity-hide")}),o.removeClass("lity-hide").after(i))},youtube:function(e){var n=p.exec(e);return!!n&&x(b(e,y("https://www.youtube"+(n[2]||"")+".com/embed/"+n[4],t.extend({autoplay:1},w(n[5]||"")))))},vimeo:function(e){var n=h.exec(e);return!!n&&x(b(e,y("https://player.vimeo.com/video/"+n[3],t.extend({autoplay:1},w(n[4]||"")))))},googlemaps:function(e){var t=f.exec(e);return!!t&&x(b(e,y("https://www.google."+t[3]+"/maps?"+t[6],{output:t[6].indexOf("layer=c")>0?"svembed":"embed"})))},facebookvideo:function(e){var n=m.exec(e);return!!n&&(0!==e.indexOf("http")&&(e="https:"+e),x(b(e,y("https://www.facebook.com/plugins/video.php?href="+e,t.extend({autoplay:1},w(n[4]||""))))))},iframe:x},template:'<div class="lity" role="dialog" aria-label="Dialog Window (Press escape to close)" tabindex="-1"><div class="lity-wrap" data-lity-close role="document"><div class="lity-loader" aria-hidden="true">Loading...</div><div class="lity-container"><div class="lity-content"></div><button class="lity-close" type="button" aria-label="Close (Press escape to close)" data-lity-close>&times;</button></div></div></div>'},u=/(^data:image\/)|(\.(png|jpe?g|gif|svg|webp|bmp|ico|tiff?)(\?\S*)?$)/i,p=/(youtube(-nocookie)?\.com|youtu\.be)\/(watch\?v=|v\/|u\/|embed\/?)?([\w-]{11})(.*)?/i,h=/(vimeo(pro)?.com)\/(?:[^\d]+)?(\d+)\??(.*)?$/,f=/((maps|www)\.)?google\.([^\/\?]+)\/?((maps\/?)?\?)(.*)/i,m=/(facebook\.com)\/([a-z0-9_-]*)\/videos\/([0-9]*)(.*)?$/i,g=function(){var e=n.createElement("div"),t={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var o in t)if(void 0!==e.style[o])return t[o];return!1}();function _(e){var t=i();return g&&e.length?(e.one(g,t.resolve),setTimeout(t.resolve,500)):t.resolve(),t.promise()}function v(e,n,o){if(1===arguments.length)return t.extend({},e);if("string"==typeof n){if(void 0===o)return void 0===e[n]?null:e[n];e[n]=o}else t.extend(e,n);return this}function w(e){for(var t,n=decodeURI(e.split("#")[0]).split("&"),o={},i=0,s=n.length;i<s;i++)n[i]&&(o[(t=n[i].split("="))[0]]=t[1]);return o}function y(e,n){return e+(e.indexOf("?")>-1?"&":"?")+t.param(n)}function b(e,t){var n=e.indexOf("#");return-1===n?t:(n>0&&(e=e.substr(n)),t+e)}function C(e,n){var o=n.opener()&&n.opener().data("lity-desc")||"Image with no description",s=t('<img src="'+e+'" alt="'+o+'"/>'),r=i(),a=function(){var e;r.reject((e="Failed loading image",t('<span class="lity-error"></span>').append(e)))};return s.on("load",function(){if(0===this.naturalWidth)return a();r.resolve(s)}).on("error",a),r.promise()}function x(e){return'<div class="lity-iframe-container"><iframe frameborder="0" allowfullscreen allow="autoplay; fullscreen" src="'+e+'"/></div>'}function D(){return n.documentElement.clientHeight?n.documentElement.clientHeight:Math.round(o.height())}function k(e){var t=j();t&&(27===e.keyCode&&t.options("esc")&&t.close(),9===e.keyCode&&function(e,t){var o=t.element().find(l),i=o.index(n.activeElement);e.shiftKey&&i<=0?(o.get(o.length-1).focus(),e.preventDefault()):e.shiftKey||i!==o.length-1||(o.get(0).focus(),e.preventDefault())}(e,t))}function $(){t.each(r,function(e,t){t.resize()})}function j(){return 0===r.length?null:r[0]}function A(e,l,u,p){var h,f,m,g,w=this,y=!1,b=!1;l=t.extend({},d,l),f=t(l.template),w.element=function(){return f},w.opener=function(){return u},w.options=t.proxy(v,w,l),w.handlers=t.proxy(v,w,l.handlers),w.resize=function(){y&&!b&&m.css("max-height",D()+"px").trigger("lity:resize",[w])},w.close=function(){if(y&&!b){b=!0,(l=w).element().attr(a,"true"),1===r.length&&(s.removeClass("lity-active"),o.off({resize:$,keydown:k})),((r=t.grep(r,function(e){return l!==e})).length?r[0].element():t(".lity-hidden")).removeClass("lity-hidden").each(function(){var e=t(this),n=e.data(c);n?e.attr(a,n):e.removeAttr(a),e.removeData(c)});var e=i();if(p&&(n.activeElement===f[0]||t.contains(f[0],n.activeElement)))try{p.focus()}catch(e){}return m.trigger("lity:close",[w]),f.removeClass("lity-opened").addClass("lity-closed"),_(m.add(f)).always(function(){m.trigger("lity:remove",[w]),f.remove(),f=void 0,e.resolve()}),e.promise()}var l},h=function(e,n,o,i){var s,r="inline",a=t.extend({},o);return i&&a[i]?(s=a[i](e,n),r=i):(t.each(["inline","iframe"],function(e,t){delete a[t],a[t]=o[t]}),t.each(a,function(t,o){return!o||!(!o.test||o.test(e,n))||(!1!==(s=o(e,n))?(r=t,!1):void 0)})),{handler:r,content:s||""}}(e,w,l.handlers,l.handler),f.attr(a,"false").addClass("lity-loading lity-opened lity-"+h.handler).appendTo("body").focus().on("click","[data-lity-close]",function(e){t(e.target).is("[data-lity-close]")&&w.close()}).trigger("lity:open",[w]),g=w,1===r.unshift(g)&&(s.addClass("lity-active"),o.on({resize:$,keydown:k})),t("body > *").not(g.element()).addClass("lity-hidden").each(function(){var e=t(this);void 0===e.data(c)&&e.data(c,e.attr(a)||null)}).attr(a,"true"),t.when(h.content).always(function(e){m=t(e).css("max-height",D()+"px"),f.find(".lity-loader").each(function(){var e=t(this);_(e).always(function(){e.remove()})}),f.removeClass("lity-loading").find(".lity-content").empty().append(m),y=!0,m.trigger("lity:ready",[w])})}function M(e,o,i){e.preventDefault?(e.preventDefault(),e=(i=t(this)).data("lity-target")||i.attr("href")||i.attr("src")):i=t(i);var s=new A(e,t.extend({},i.data("lity-options")||i.data("lity"),o),i,n.activeElement);if(!e.preventDefault)return s}return C.test=function(e){return u.test(e)},M.version="2.4.1",M.options=t.proxy(v,M,d),M.handlers=t.proxy(v,M,d.handlers),M.current=j,t(n).on("click.lity","[data-lity]",M),M}(s,e)}.apply(t,o),void 0===i||(e.exports=i)}("undefined"!=typeof window?window:this)},609:()=>{(window.WPCodeSpinner||function(e,t,n){const o={init(){t.WPCodeSpinner=o,o.spinner=n("#wpcode-admin-spinner")},show_button_spinner(e,t="right"){e.prop("disabled",!0);const i=e.offset(),s=n("#adminmenuwrap").width(),r=n("#wpadminbar").height();let a={};o.spinner.show(),a="right"===t?{left:i.left-s+e.outerWidth(),top:i.top-r+e.outerHeight()/2-o.spinner.height()/2}:{left:i.left-s-o.spinner.outerWidth()-20,top:i.top-r+e.outerHeight()/2-o.spinner.height()/2},o.spinner.css(a)},hide_button_spinner(e){e.prop("disabled",!1),o.spinner.hide()}};return o}(document,window,jQuery)).init()},615:()=>{(window.WPCodeInputs||function(e,t,n){const o={init(){n(o.ready)},ready(){o.initFileUploads(),o.initCheckboxMultiselectColumns()},initFileUploads(){n(".wpcode-file-upload").each(function(){const e=n(this).find("input[type=file]"),t=n(this).find("label"),o=t.html();e.on("change",function(e){let n="";this.files&&this.files.length>1?n=(this.getAttribute("data-multiple-caption")||"").replace("{count}",this.files.length):e.target.value&&(n=e.target.value.split("\\").pop()),n?t.find(".wpcode-file-field").html(n):t.html(o)}),e.on("focus",function(){e.addClass("has-focus")}).on("blur",function(){e.removeClass("has-focus")})})},initCheckboxMultiselectColumns(){n(e).on("change",".wpcode-checkbox-multiselect-columns input",function(){var e=n(this),t=e.parent(),o=e.closest(".wpcode-checkbox-multiselect-columns"),i=t.text(),s="check-item-"+e.val(),r=o.find("#"+s);e.prop("checked")?(e.parent().addClass("checked"),r.length||o.find(".second-column ul").append('<li id="'+s+'">'+i+"</li>")):(e.parent().removeClass("checked"),o.find("#"+s).remove())}),n(e).on("click",".wpcode-checkbox-multiselect-columns .all",function(e){e.preventDefault(),n(this).closest(".wpcode-checkbox-multiselect-columns").find("input[type=checkbox]").prop("checked",!0).trigger("change")})}};return o}(document,window,jQuery)).init()},632:(e,t,n)=>{var o,i,s;i=[n(428)],void 0===(s="function"==typeof(o=function(e){var t=function(){if(e&&e.fn&&e.fn.select2&&e.fn.select2.amd)var t=e.fn.select2.amd;var n,o,i;return t&&t.requirejs||(t?o=t:t={},function(e){var t,s,r,a,c={},l={},d={},u={},p=Object.prototype.hasOwnProperty,h=[].slice,f=/\.js$/;function m(e,t){return p.call(e,t)}function g(e,t){var n,o,i,s,r,a,c,l,u,p,h,m=t&&t.split("/"),g=d.map,_=g&&g["*"]||{};if(e){for(r=(e=e.split("/")).length-1,d.nodeIdCompat&&f.test(e[r])&&(e[r]=e[r].replace(f,"")),"."===e[0].charAt(0)&&m&&(e=m.slice(0,m.length-1).concat(e)),u=0;u<e.length;u++)if("."===(h=e[u]))e.splice(u,1),u-=1;else if(".."===h){if(0===u||1===u&&".."===e[2]||".."===e[u-1])continue;u>0&&(e.splice(u-1,2),u-=2)}e=e.join("/")}if((m||_)&&g){for(u=(n=e.split("/")).length;u>0;u-=1){if(o=n.slice(0,u).join("/"),m)for(p=m.length;p>0;p-=1)if((i=g[m.slice(0,p).join("/")])&&(i=i[o])){s=i,a=u;break}if(s)break;!c&&_&&_[o]&&(c=_[o],l=u)}!s&&c&&(s=c,a=l),s&&(n.splice(0,a,s),e=n.join("/"))}return e}function _(t,n){return function(){var o=h.call(arguments,0);return"string"!=typeof o[0]&&1===o.length&&o.push(null),s.apply(e,o.concat([t,n]))}}function v(e){return function(t){c[e]=t}}function w(n){if(m(l,n)){var o=l[n];delete l[n],u[n]=!0,t.apply(e,o)}if(!m(c,n)&&!m(u,n))throw new Error("No "+n);return c[n]}function y(e){var t,n=e?e.indexOf("!"):-1;return n>-1&&(t=e.substring(0,n),e=e.substring(n+1,e.length)),[t,e]}function b(e){return e?y(e):[]}function C(e){return function(){return d&&d.config&&d.config[e]||{}}}r=function(e,t){var n,o,i=y(e),s=i[0],r=t[1];return e=i[1],s&&(n=w(s=g(s,r))),s?e=n&&n.normalize?n.normalize(e,(o=r,function(e){return g(e,o)})):g(e,r):(s=(i=y(e=g(e,r)))[0],e=i[1],s&&(n=w(s))),{f:s?s+"!"+e:e,n:e,pr:s,p:n}},a={require:function(e){return _(e)},exports:function(e){var t=c[e];return void 0!==t?t:c[e]={}},module:function(e){return{id:e,uri:"",exports:c[e],config:C(e)}}},t=function(t,n,o,i){var s,d,p,h,f,g,y,C=[],x=typeof o;if(g=b(i=i||t),"undefined"===x||"function"===x){for(n=!n.length&&o.length?["require","exports","module"]:n,f=0;f<n.length;f+=1)if("require"===(d=(h=r(n[f],g)).f))C[f]=a.require(t);else if("exports"===d)C[f]=a.exports(t),y=!0;else if("module"===d)s=C[f]=a.module(t);else if(m(c,d)||m(l,d)||m(u,d))C[f]=w(d);else{if(!h.p)throw new Error(t+" missing "+d);h.p.load(h.n,_(i,!0),v(d),{}),C[f]=c[d]}p=o?o.apply(c[t],C):void 0,t&&(s&&s.exports!==e&&s.exports!==c[t]?c[t]=s.exports:p===e&&y||(c[t]=p))}else t&&(c[t]=o)},n=o=s=function(n,o,i,c,l){if("string"==typeof n)return a[n]?a[n](o):w(r(n,b(o)).f);if(!n.splice){if((d=n).deps&&s(d.deps,d.callback),!o)return;o.splice?(n=o,o=i,i=null):n=e}return o=o||function(){},"function"==typeof i&&(i=c,c=l),c?t(e,n,o,i):setTimeout(function(){t(e,n,o,i)},4),s},s.config=function(e){return s(e)},n._defined=c,(i=function(e,t,n){if("string"!=typeof e)throw new Error("See almond README: incorrect module build, no module name");t.splice||(n=t,t=[]),m(c,e)||m(l,e)||(l[e]=[e,t,n])}).amd={jQuery:!0}}(),t.requirejs=n,t.require=o,t.define=i),t.define("almond",function(){}),t.define("jquery",[],function(){var t=e||$;return null==t&&console&&console.error&&console.error("Select2: An instance of jQuery or a jQuery-compatible library was not found. Make sure that you are including jQuery before Select2 on your web page."),t}),t.define("select2/utils",["jquery"],function(e){var t={};function n(e){var t=e.prototype,n=[];for(var o in t)"function"==typeof t[o]&&"constructor"!==o&&n.push(o);return n}t.Extend=function(e,t){var n={}.hasOwnProperty;function o(){this.constructor=e}for(var i in t)n.call(t,i)&&(e[i]=t[i]);return o.prototype=t.prototype,e.prototype=new o,e.__super__=t.prototype,e},t.Decorate=function(e,t){var o=n(t),i=n(e);function s(){var n=Array.prototype.unshift,o=t.prototype.constructor.length,i=e.prototype.constructor;o>0&&(n.call(arguments,e.prototype.constructor),i=t.prototype.constructor),i.apply(this,arguments)}t.displayName=e.displayName,s.prototype=new function(){this.constructor=s};for(var r=0;r<i.length;r++){var a=i[r];s.prototype[a]=e.prototype[a]}for(var c=function(e){var n=function(){};e in s.prototype&&(n=s.prototype[e]);var o=t.prototype[e];return function(){return Array.prototype.unshift.call(arguments,n),o.apply(this,arguments)}},l=0;l<o.length;l++){var d=o[l];s.prototype[d]=c(d)}return s};var o=function(){this.listeners={}};return o.prototype.on=function(e,t){this.listeners=this.listeners||{},e in this.listeners?this.listeners[e].push(t):this.listeners[e]=[t]},o.prototype.trigger=function(e){var t=Array.prototype.slice,n=t.call(arguments,1);this.listeners=this.listeners||{},null==n&&(n=[]),0===n.length&&n.push({}),n[0]._type=e,e in this.listeners&&this.invoke(this.listeners[e],t.call(arguments,1)),"*"in this.listeners&&this.invoke(this.listeners["*"],arguments)},o.prototype.invoke=function(e,t){for(var n=0,o=e.length;n<o;n++)e[n].apply(this,t)},t.Observable=o,t.generateChars=function(e){for(var t="",n=0;n<e;n++)t+=Math.floor(36*Math.random()).toString(36);return t},t.bind=function(e,t){return function(){e.apply(t,arguments)}},t._convertData=function(e){for(var t in e){var n=t.split("-"),o=e;if(1!==n.length){for(var i=0;i<n.length;i++){var s=n[i];(s=s.substring(0,1).toLowerCase()+s.substring(1))in o||(o[s]={}),i==n.length-1&&(o[s]=e[t]),o=o[s]}delete e[t]}}return e},t.hasScroll=function(t,n){var o=e(n),i=n.style.overflowX,s=n.style.overflowY;return(i!==s||"hidden"!==s&&"visible"!==s)&&("scroll"===i||"scroll"===s||o.innerHeight()<n.scrollHeight||o.innerWidth()<n.scrollWidth)},t.escapeMarkup=function(e){var t={"\\":"&#92;","&":"&amp;","<":"&lt;",">":"&gt;",'"':"&quot;","'":"&#39;","/":"&#47;"};return"string"!=typeof e?e:String(e).replace(/[&<>"'\/\\]/g,function(e){return t[e]})},t.appendMany=function(t,n){if("1.7"===e.fn.jquery.substr(0,3)){var o=e();e.map(n,function(e){o=o.add(e)}),n=o}t.append(n)},t.isTouchscreen=function(){return void 0===t._isTouchscreenCache&&(t._isTouchscreenCache="ontouchstart"in document.documentElement),t._isTouchscreenCache},t}),t.define("select2/results",["jquery","./utils"],function(e,t){function n(e,t,o){this.$element=e,this.data=o,this.options=t,n.__super__.constructor.call(this)}return t.Extend(n,t.Observable),n.prototype.render=function(){var t=e('<ul class="select2-results__options" role="listbox" tabindex="-1"></ul>');return this.options.get("multiple")&&t.attr("aria-multiselectable","true"),this.$results=t,t},n.prototype.clear=function(){this.$results.empty()},n.prototype.displayMessage=function(t){var n=this.options.get("escapeMarkup");this.clear(),this.hideLoading();var o=e('<li role="alert" aria-live="assertive" class="select2-results__option"></li>'),i=this.options.get("translations").get(t.message);o.append(n(i(t.args))),o[0].className+=" select2-results__message",this.$results.append(o)},n.prototype.hideMessages=function(){this.$results.find(".select2-results__message").remove()},n.prototype.append=function(e){this.hideLoading();var t=[];if(null!=e.results&&0!==e.results.length){e.results=this.sort(e.results);for(var n=0;n<e.results.length;n++){var o=e.results[n],i=this.option(o);t.push(i)}this.$results.append(t)}else 0===this.$results.children().length&&this.trigger("results:message",{message:"noResults"})},n.prototype.position=function(e,t){t.find(".select2-results").append(e)},n.prototype.sort=function(e){return this.options.get("sorter")(e)},n.prototype.highlightFirstItem=function(){var e=this.$results.find(".select2-results__option[data-selected]"),t=e.filter("[data-selected=true]");t.length>0?t.first().trigger("mouseenter"):e.first().trigger("mouseenter"),this.ensureHighlightVisible()},n.prototype.setClasses=function(){var t=this;this.data.current(function(n){var o=e.map(n,function(e){return e.id.toString()});t.$results.find(".select2-results__option[data-selected]").each(function(){var t=e(this),n=e.data(this,"data"),i=""+n.id;null!=n.element&&n.element.selected||null==n.element&&e.inArray(i,o)>-1?t.attr("data-selected","true"):t.attr("data-selected","false")})})},n.prototype.showLoading=function(e){this.hideLoading();var t={disabled:!0,loading:!0,text:this.options.get("translations").get("searching")(e)},n=this.option(t);n.className+=" loading-results",this.$results.prepend(n)},n.prototype.hideLoading=function(){this.$results.find(".loading-results").remove()},n.prototype.option=function(t){var n=document.createElement("li");n.className="select2-results__option";var o={role:"option","data-selected":"false",tabindex:-1};for(var i in t.disabled&&(delete o["data-selected"],o["aria-disabled"]="true"),null==t.id&&delete o["data-selected"],null!=t._resultId&&(n.id=t._resultId),t.title&&(n.title=t.title),t.children&&(o["aria-label"]=t.text,delete o["data-selected"]),o){var s=o[i];n.setAttribute(i,s)}if(t.children){var r=e(n),a=document.createElement("strong");a.className="select2-results__group";var c=e(a);this.template(t,a),c.attr("role","presentation");for(var l=[],d=0;d<t.children.length;d++){var u=t.children[d],p=this.option(u);l.push(p)}var h=e("<ul></ul>",{class:"select2-results__options select2-results__options--nested",role:"listbox"});h.append(l),r.attr("role","list"),r.append(a),r.append(h)}else this.template(t,n);return e.data(n,"data",t),n},n.prototype.bind=function(t,n){var o=this,i=t.id+"-results";this.$results.attr("id",i),t.on("results:all",function(e){o.clear(),o.append(e.data),t.isOpen()&&(o.setClasses(),o.highlightFirstItem())}),t.on("results:append",function(e){o.append(e.data),t.isOpen()&&o.setClasses()}),t.on("query",function(e){o.hideMessages(),o.showLoading(e)}),t.on("select",function(){t.isOpen()&&(o.setClasses(),o.highlightFirstItem())}),t.on("unselect",function(){t.isOpen()&&(o.setClasses(),o.highlightFirstItem())}),t.on("open",function(){o.$results.attr("aria-expanded","true"),o.$results.attr("aria-hidden","false"),o.setClasses(),o.ensureHighlightVisible()}),t.on("close",function(){o.$results.attr("aria-expanded","false"),o.$results.attr("aria-hidden","true"),o.$results.removeAttr("aria-activedescendant")}),t.on("results:toggle",function(){var e=o.getHighlightedResults();0!==e.length&&e.trigger("mouseup")}),t.on("results:select",function(){var e=o.getHighlightedResults();if(0!==e.length){var t=e.data("data");"true"==e.attr("data-selected")?o.trigger("close",{}):o.trigger("select",{data:t})}}),t.on("results:previous",function(){var e=o.getHighlightedResults(),t=o.$results.find("[data-selected]"),n=t.index(e);if(0!==n){var i=n-1;0===e.length&&(i=0);var s=t.eq(i);s.trigger("mouseenter");var r=o.$results.offset().top,a=s.offset().top,c=o.$results.scrollTop()+(a-r);0===i?o.$results.scrollTop(0):a-r<0&&o.$results.scrollTop(c)}}),t.on("results:next",function(){var e=o.getHighlightedResults(),t=o.$results.find("[data-selected]"),n=t.index(e)+1;if(!(n>=t.length)){var i=t.eq(n);i.trigger("mouseenter");var s=o.$results.offset().top+o.$results.outerHeight(!1),r=i.offset().top+i.outerHeight(!1),a=o.$results.scrollTop()+r-s;0===n?o.$results.scrollTop(0):r>s&&o.$results.scrollTop(a)}}),t.on("results:focus",function(e){e.element.addClass("select2-results__option--highlighted").attr("aria-selected","true"),o.$results.attr("aria-activedescendant",e.element.attr("id"))}),t.on("results:message",function(e){o.displayMessage(e)}),e.fn.mousewheel&&this.$results.on("mousewheel",function(e){var t=o.$results.scrollTop(),n=o.$results.get(0).scrollHeight-t+e.deltaY,i=e.deltaY>0&&t-e.deltaY<=0,s=e.deltaY<0&&n<=o.$results.height();i?(o.$results.scrollTop(0),e.preventDefault(),e.stopPropagation()):s&&(o.$results.scrollTop(o.$results.get(0).scrollHeight-o.$results.height()),e.preventDefault(),e.stopPropagation())}),this.$results.on("mouseup",".select2-results__option[data-selected]",function(t){var n=e(this),i=n.data("data");"true"!==n.attr("data-selected")?o.trigger("select",{originalEvent:t,data:i}):o.options.get("multiple")?o.trigger("unselect",{originalEvent:t,data:i}):o.trigger("close",{})}),this.$results.on("mouseenter",".select2-results__option[data-selected]",function(t){var n=e(this).data("data");o.getHighlightedResults().removeClass("select2-results__option--highlighted").attr("aria-selected","false"),o.trigger("results:focus",{data:n,element:e(this)})})},n.prototype.getHighlightedResults=function(){return this.$results.find(".select2-results__option--highlighted")},n.prototype.destroy=function(){this.$results.remove()},n.prototype.ensureHighlightVisible=function(){var e=this.getHighlightedResults();if(0!==e.length){var t=this.$results.find("[data-selected]").index(e),n=this.$results.offset().top,o=e.offset().top,i=this.$results.scrollTop()+(o-n),s=o-n;i-=2*e.outerHeight(!1),t<=2?this.$results.scrollTop(0):(s>this.$results.outerHeight()||s<0)&&this.$results.scrollTop(i)}},n.prototype.template=function(t,n){var o=this.options.get("templateResult"),i=this.options.get("escapeMarkup"),s=o(t,n);null==s?n.style.display="none":"string"==typeof s?n.innerHTML=i(s):e(n).append(s)},n}),t.define("select2/keys",[],function(){return{BACKSPACE:8,TAB:9,ENTER:13,SHIFT:16,CTRL:17,ALT:18,ESC:27,SPACE:32,PAGE_UP:33,PAGE_DOWN:34,END:35,HOME:36,LEFT:37,UP:38,RIGHT:39,DOWN:40,DELETE:46}}),t.define("select2/selection/base",["jquery","../utils","../keys"],function(e,t,n){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return t.Extend(o,t.Observable),o.prototype.render=function(){var t=e('<span class="select2-selection"  aria-haspopup="true" aria-expanded="false"></span>');return this._tabindex=0,null!=this.$element.data("old-tabindex")?this._tabindex=this.$element.data("old-tabindex"):null!=this.$element.attr("tabindex")&&(this._tabindex=this.$element.attr("tabindex")),t.attr("title",this.$element.attr("title")),t.attr("tabindex",this._tabindex),this.$selection=t,t},o.prototype.bind=function(e,t){var o=this,i=(e.id,e.id+"-results");this.options.get("minimumResultsForSearch"),this.container=e,this.$selection.on("focus",function(e){o.trigger("focus",e)}),this.$selection.on("blur",function(e){o._handleBlur(e)}),this.$selection.on("keydown",function(e){o.trigger("keypress",e),e.which===n.SPACE&&e.preventDefault()}),e.on("results:focus",function(e){o.$selection.attr("aria-activedescendant",e.data._resultId)}),e.on("selection:update",function(e){o.update(e.data)}),e.on("open",function(){o.$selection.attr("aria-expanded","true"),o.$selection.attr("aria-owns",i),o._attachCloseHandler(e)}),e.on("close",function(){o.$selection.attr("aria-expanded","false"),o.$selection.removeAttr("aria-activedescendant"),o.$selection.removeAttr("aria-owns"),window.setTimeout(function(){o.$selection.focus()},1),o._detachCloseHandler(e)}),e.on("enable",function(){o.$selection.attr("tabindex",o._tabindex)}),e.on("disable",function(){o.$selection.attr("tabindex","-1")})},o.prototype._handleBlur=function(t){var n=this;window.setTimeout(function(){document.activeElement==n.$selection[0]||e.contains(n.$selection[0],document.activeElement)||n.trigger("blur",t)},1)},o.prototype._attachCloseHandler=function(t){e(document.body).on("mousedown.select2."+t.id,function(t){var n=e(t.target),o=n.closest(".select2");e(".select2.select2-container--open").each(function(){var t=e(this);this!=o[0]&&(t.data("element").select2("close"),setTimeout(function(){t.find("*:focus").blur(),n.focus()},1))})})},o.prototype._detachCloseHandler=function(t){e(document.body).off("mousedown.select2."+t.id)},o.prototype.position=function(e,t){t.find(".selection").append(e)},o.prototype.destroy=function(){this._detachCloseHandler(this.container)},o.prototype.update=function(e){throw new Error("The `update` method must be defined in child classes.")},o}),t.define("select2/selection/single",["jquery","./base","../utils","../keys"],function(e,t,n,o){function i(){i.__super__.constructor.apply(this,arguments)}return n.Extend(i,t),i.prototype.render=function(){var e=i.__super__.render.call(this);return e.addClass("select2-selection--single"),e.html('<span class="select2-selection__rendered"></span><span class="select2-selection__arrow" role="presentation"><b role="presentation"></b></span>'),e},i.prototype.bind=function(e,t){var n=this;i.__super__.bind.apply(this,arguments);var o=e.id+"-container";this.$selection.find(".select2-selection__rendered").attr("id",o).attr("role","textbox").attr("aria-readonly","true"),this.$selection.attr("aria-labelledby",o),this.$selection.attr("role","combobox"),this.$selection.on("mousedown",function(e){1===e.which&&n.trigger("toggle",{originalEvent:e})}),this.$selection.on("focus",function(e){}),this.$selection.on("keydown",function(t){!e.isOpen()&&t.which>=48&&t.which<=90&&e.open()}),this.$selection.on("blur",function(e){}),e.on("focus",function(t){e.isOpen()||n.$selection.focus()}),e.on("selection:update",function(e){n.update(e.data)})},i.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},i.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},i.prototype.selectionContainer=function(){return e("<span></span>")},i.prototype.update=function(e){if(0!==e.length){var t=e[0],n=this.$selection.find(".select2-selection__rendered"),o=this.display(t,n);n.empty().append(o),n.prop("title",t.title||t.text)}else this.clear()},i}),t.define("select2/selection/multiple",["jquery","./base","../utils"],function(e,t,n){function o(e,t){o.__super__.constructor.apply(this,arguments)}return n.Extend(o,t),o.prototype.render=function(){var e=o.__super__.render.call(this);return e.addClass("select2-selection--multiple"),e.html('<ul class="select2-selection__rendered" aria-live="polite" aria-relevant="additions removals" aria-atomic="true"></ul>'),e},o.prototype.bind=function(t,n){var i=this;o.__super__.bind.apply(this,arguments),this.$selection.on("click",function(e){i.trigger("toggle",{originalEvent:e})}),this.$selection.on("click",".select2-selection__choice__remove",function(t){if(!i.options.get("disabled")){var n=e(this).parent().data("data");i.trigger("unselect",{originalEvent:t,data:n})}}),this.$selection.on("keydown",function(e){!t.isOpen()&&e.which>=48&&e.which<=90&&t.open()}),t.on("focus",function(){i.focusOnSearch()})},o.prototype.clear=function(){this.$selection.find(".select2-selection__rendered").empty()},o.prototype.display=function(e,t){var n=this.options.get("templateSelection");return this.options.get("escapeMarkup")(n(e,t))},o.prototype.selectionContainer=function(){return e('<li class="select2-selection__choice"><span class="select2-selection__choice__remove" role="presentation" aria-hidden="true">&times;</span></li>')},o.prototype.focusOnSearch=function(){var e=this;void 0!==e.$search&&setTimeout(function(){e._keyUpPrevented=!0,e.$search.focus()},1)},o.prototype.update=function(e){if(this.clear(),0!==e.length){for(var t=[],o=0;o<e.length;o++){var i=e[o],s=this.selectionContainer(),r=this.display(i,s);"string"==typeof r&&(r=r.trim()),s.append(r),s.prop("title",i.title||i.text),s.data("data",i),t.push(s)}var a=this.$selection.find(".select2-selection__rendered");n.appendMany(a,t)}},o}),t.define("select2/selection/placeholder",["../utils"],function(e){function t(e,t,n){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n)}return t.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},t.prototype.createPlaceholder=function(e,t){var n=this.selectionContainer();return n.html(this.display(t)),n.addClass("select2-selection__placeholder").removeClass("select2-selection__choice"),n},t.prototype.update=function(e,t){var n=1==t.length&&t[0].id!=this.placeholder.id;if(t.length>1||n)return e.call(this,t);this.clear();var o=this.createPlaceholder(this.placeholder);this.$selection.find(".select2-selection__rendered").append(o)},t}),t.define("select2/selection/allowClear",["jquery","../keys"],function(e,t){function n(){}return n.prototype.bind=function(e,t,n){var o=this;e.call(this,t,n),null==this.placeholder&&this.options.get("debug")&&window.console&&console.error&&console.error("Select2: The `allowClear` option should be used in combination with the `placeholder` option."),this.$selection.on("mousedown",".select2-selection__clear",function(e){o._handleClear(e)}),t.on("keypress",function(e){o._handleKeyboardClear(e,t)})},n.prototype._handleClear=function(e,t){if(!this.options.get("disabled")){var n=this.$selection.find(".select2-selection__clear");if(0!==n.length){t.stopPropagation();for(var o=n.data("data"),i=0;i<o.length;i++){var s={data:o[i]};if(this.trigger("unselect",s),s.prevented)return}this.$element.val(this.placeholder.id).trigger("change"),this.trigger("toggle",{})}}},n.prototype._handleKeyboardClear=function(e,n,o){o.isOpen()||n.which!=t.DELETE&&n.which!=t.BACKSPACE||this._handleClear(n)},n.prototype.update=function(t,n){if(t.call(this,n),!(this.$selection.find(".select2-selection__placeholder").length>0||0===n.length)){var o=e('<span class="select2-selection__clear">&times;</span>');o.data("data",n),this.$selection.find(".select2-selection__rendered").prepend(o)}},n}),t.define("select2/selection/search",["jquery","../utils","../keys"],function(e,t,n){function o(e,t,n){e.call(this,t,n)}return o.prototype.render=function(t){var n=e('<li class="select2-search select2-search--inline"><input class="select2-search__field" type="text" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="textbox" aria-autocomplete="list" /></li>');this.$searchContainer=n,this.$search=n.find("input");var o=t.call(this);return this._transferTabIndex(),o},o.prototype.bind=function(e,t,o){var i=this,s=t.id+"-results";e.call(this,t,o),t.on("open",function(){i.$search.attr("aria-owns",s),i.$search.trigger("focus")}),t.on("close",function(){i.$search.val(""),i.$search.removeAttr("aria-activedescendant"),i.$search.removeAttr("aria-owns"),i.$search.trigger("focus")}),t.on("enable",function(){i.$search.prop("disabled",!1),i._transferTabIndex()}),t.on("disable",function(){i.$search.prop("disabled",!0)}),t.on("focus",function(e){i.$search.trigger("focus")}),t.on("results:focus",function(e){i.$search.attr("aria-activedescendant",e.data._resultId)}),this.$selection.on("focusin",".select2-search--inline",function(e){i.trigger("focus",e)}),this.$selection.on("focusout",".select2-search--inline",function(e){i._handleBlur(e)}),this.$selection.on("keydown",".select2-search--inline",function(e){if(e.stopPropagation(),i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented(),e.which===n.BACKSPACE&&""===i.$search.val()){var o=i.$searchContainer.prev(".select2-selection__choice");if(o.length>0){var s=o.data("data");i.searchRemoveChoice(s),e.preventDefault()}}else e.which===n.ENTER&&(t.open(),e.preventDefault())});var r=document.documentMode,a=r&&r<=11;this.$selection.on("input.searchcheck",".select2-search--inline",function(e){a?i.$selection.off("input.search input.searchcheck"):i.$selection.off("keyup.search")}),this.$selection.on("keyup.search input.search",".select2-search--inline",function(e){if(a&&"input"===e.type)i.$selection.off("input.search input.searchcheck");else{var t=e.which;t!=n.SHIFT&&t!=n.CTRL&&t!=n.ALT&&t!=n.TAB&&i.handleSearch(e)}})},o.prototype._transferTabIndex=function(e){this.$search.attr("tabindex",this.$selection.attr("tabindex")),this.$selection.attr("tabindex","-1")},o.prototype.createPlaceholder=function(e,t){this.$search.attr("placeholder",t.text)},o.prototype.update=function(e,t){var n=this.$search[0]==document.activeElement;this.$search.attr("placeholder",""),e.call(this,t),this.$selection.find(".select2-selection__rendered").append(this.$searchContainer),this.resizeSearch(),n&&this.$search.focus()},o.prototype.handleSearch=function(){if(this.resizeSearch(),!this._keyUpPrevented){var e=this.$search.val();this.trigger("query",{term:e})}this._keyUpPrevented=!1},o.prototype.searchRemoveChoice=function(e,t){this.trigger("unselect",{data:t}),this.$search.val(t.text),this.handleSearch()},o.prototype.resizeSearch=function(){this.$search.css("width","25px");var e;e=""!==this.$search.attr("placeholder")?this.$selection.find(".select2-selection__rendered").innerWidth():.75*(this.$search.val().length+1)+"em",this.$search.css("width",e)},o}),t.define("select2/selection/eventRelay",["jquery"],function(e){function t(){}return t.prototype.bind=function(t,n,o){var i=this,s=["open","opening","close","closing","select","selecting","unselect","unselecting"],r=["opening","closing","selecting","unselecting"];t.call(this,n,o),n.on("*",function(t,n){if(-1!==e.inArray(t,s)){n=n||{};var o=e.Event("select2:"+t,{params:n});i.$element.trigger(o),-1!==e.inArray(t,r)&&(n.prevented=o.isDefaultPrevented())}})},t}),t.define("select2/translation",["jquery","require"],function(e,t){function n(e){this.dict=e||{}}return n.prototype.all=function(){return this.dict},n.prototype.get=function(e){return this.dict[e]},n.prototype.extend=function(t){this.dict=e.extend({},t.all(),this.dict)},n._cache={},n.loadPath=function(e){if(!(e in n._cache)){var o=t(e);n._cache[e]=o}return new n(n._cache[e])},n}),t.define("select2/diacritics",[],function(){return{"â’¶":"A",ï¼¡:"A",Ã€:"A",Ã�:"A",Ã‚:"A",áº¦:"A",áº¤:"A",áºª:"A",áº¨:"A",Ãƒ:"A",Ä€:"A",Ä‚:"A",áº°:"A",áº®:"A",áº´:"A",áº²:"A",È¦:"A",Ç :"A",Ã„:"A",Çž:"A",áº¢:"A",Ã…:"A",Çº:"A",Ç�:"A",È€:"A",È‚:"A",áº :"A",áº¬:"A",áº¶:"A",á¸€:"A",Ä„:"A",Èº:"A",â±¯:"A",êœ²:"AA",Ã†:"AE",Ç¼:"AE",Ç¢:"AE",êœ´:"AO",êœ¶:"AU",êœ¸:"AV",êœº:"AV",êœ¼:"AY","â’·":"B",ï¼¢:"B",á¸‚:"B",á¸„:"B",á¸†:"B",Éƒ:"B",Æ‚:"B",Æ�:"B","â’¸":"C",ï¼£:"C",Ä†:"C",Äˆ:"C",ÄŠ:"C",ÄŒ:"C",Ã‡:"C",á¸ˆ:"C",Æ‡:"C",È»:"C",êœ¾:"C","â’¹":"D",ï¼¤:"D",á¸Š:"D",ÄŽ:"D",á¸Œ:"D",á¸�:"D",á¸’:"D",á¸Ž:"D",Ä�:"D",Æ‹:"D",ÆŠ:"D",Æ‰:"D",ê�¹:"D",Ç±:"DZ",Ç„:"DZ",Ç²:"Dz",Ç…:"Dz","â’º":"E",ï¼¥:"E",Ãˆ:"E",Ã‰:"E",ÃŠ:"E",á»€:"E",áº¾:"E",á»„:"E",á»‚:"E",áº¼:"E",Ä’:"E",á¸”:"E",á¸–:"E",Ä”:"E",Ä–:"E",Ã‹:"E",áºº:"E",Äš:"E",È„:"E",È†:"E",áº¸:"E",á»†:"E",È¨:"E",á¸œ:"E",Ä˜:"E",á¸˜:"E",á¸š:"E",Æ�:"E",ÆŽ:"E","â’»":"F",ï¼¦:"F",á¸ž:"F",Æ‘:"F",ê�»:"F","â’¼":"G",ï¼§:"G",Ç´:"G",Äœ:"G",á¸ :"G",Äž:"G",Ä :"G",Ç¦:"G",Ä¢:"G",Ç¤:"G",Æ“:"G",êž :"G",ê�½:"G",ê�¾:"G","â’½":"H",ï¼¨:"H",Ä¤:"H",á¸¢:"H",á¸¦:"H",Èž:"H",á¸¤:"H",á¸¨:"H",á¸ª:"H",Ä¦:"H",â±§:"H",â±µ:"H",êž�:"H","â’¾":"I",ï¼©:"I",ÃŒ:"I",Ã�:"I",ÃŽ:"I",Ä¨:"I",Äª:"I",Ä¬:"I",Ä°:"I",Ã�:"I",á¸®:"I",á»ˆ:"I",Ç�:"I",Èˆ:"I",ÈŠ:"I",á»Š:"I",Ä®:"I",á¸¬:"I",Æ—:"I","â’¿":"J",ï¼ª:"J",Ä´:"J",Éˆ:"J","â“€":"K",ï¼«:"K",á¸°:"K",Ç¨:"K",á¸²:"K",Ä¶:"K",á¸´:"K",Æ˜:"K",â±©:"K",ê�€:"K",ê�‚:"K",ê�„:"K",êž¢:"K","â“�":"L",ï¼¬:"L",Ä¿:"L",Ä¹:"L",Ä½:"L",á¸¶:"L",á¸¸:"L",Ä»:"L",á¸¼:"L",á¸º:"L",Å�:"L",È½:"L",â±¢:"L",â± :"L",ê�ˆ:"L",ê�†:"L",êž€:"L",Ç‡:"LJ",Çˆ:"Lj","â“‚":"M",ï¼­:"M",á¸¾:"M",á¹€:"M",á¹‚:"M",â±®:"M",Æœ:"M","â“ƒ":"N",ï¼®:"N",Ç¸:"N",Åƒ:"N",Ã‘:"N",á¹„:"N",Å‡:"N",á¹†:"N",Å…:"N",á¹Š:"N",á¹ˆ:"N",È :"N",Æ�:"N",êž�:"N",êž¤:"N",ÇŠ:"NJ",Ç‹:"Nj","â“„":"O",ï¼¯:"O",Ã’:"O",Ã“:"O",Ã”:"O",á»’:"O",á»�:"O",á»–:"O",á»”:"O",Ã•:"O",á¹Œ:"O",È¬:"O",á¹Ž:"O",ÅŒ:"O",á¹�:"O",á¹’:"O",ÅŽ:"O",È®:"O",È°:"O",Ã–:"O",Èª:"O",á»Ž:"O",Å�:"O",Ç‘:"O",ÈŒ:"O",ÈŽ:"O",Æ :"O",á»œ:"O",á»š:"O",á» :"O",á»ž:"O",á»¢:"O",á»Œ:"O",á»˜:"O",Çª:"O",Ç¬:"O",Ã˜:"O",Ç¾:"O",Æ†:"O",ÆŸ:"O",ê�Š:"O",ê�Œ:"O",Æ¢:"OI",ê�Ž:"OO",È¢:"OU","â“…":"P",ï¼°:"P",á¹”:"P",á¹–:"P",Æ¤:"P",â±£:"P",ê��:"P",ê�’:"P",ê�”:"P","â“†":"Q",ï¼±:"Q",ê�–:"Q",ê�˜:"Q",ÉŠ:"Q","â“‡":"R",ï¼²:"R",Å”:"R",á¹˜:"R",Å˜:"R",È�:"R",È’:"R",á¹š:"R",á¹œ:"R",Å–:"R",á¹ž:"R",ÉŒ:"R",â±¤:"R",ê�š:"R",êž¦:"R",êž‚:"R","â“ˆ":"S",ï¼³:"S",áºž:"S",Åš:"S",á¹¤:"S",Åœ:"S",á¹ :"S",Å :"S",á¹¦:"S",á¹¢:"S",á¹¨:"S",È˜:"S",Åž:"S",â±¾:"S",êž¨:"S",êž„:"S","â“‰":"T",ï¼´:"T",á¹ª:"T",Å¤:"T",á¹¬:"T",Èš:"T",Å¢:"T",á¹°:"T",á¹®:"T",Å¦:"T",Æ¬:"T",Æ®:"T",È¾:"T",êž†:"T",êœ¨:"TZ","â“Š":"U",ï¼µ:"U",Ã™:"U",Ãš:"U",Ã›:"U",Å¨:"U",á¹¸:"U",Åª:"U",á¹º:"U",Å¬:"U",Ãœ:"U",Ç›:"U",Ç—:"U",Ç•:"U",Ç™:"U",á»¦:"U",Å®:"U",Å°:"U",Ç“:"U",È”:"U",È–:"U",Æ¯:"U",á»ª:"U",á»¨:"U",á»®:"U",á»¬:"U",á»°:"U",á»¤:"U",á¹²:"U",Å²:"U",á¹¶:"U",á¹´:"U",É„:"U","â“‹":"V",ï¼¶:"V",á¹¼:"V",á¹¾:"V",Æ²:"V",ê�ž:"V",É…:"V",ê� :"VY","â“Œ":"W",ï¼·:"W",áº€:"W",áº‚:"W",Å´:"W",áº†:"W",áº„:"W",áºˆ:"W",â±²:"W","â“�":"X",ï¼¸:"X",áºŠ:"X",áºŒ:"X","â“Ž":"Y",ï¼¹:"Y",á»²:"Y",Ã�:"Y",Å¶:"Y",á»¸:"Y",È²:"Y",áºŽ:"Y",Å¸:"Y",á»¶:"Y",á»´:"Y",Æ³:"Y",ÉŽ:"Y",á»¾:"Y","â“�":"Z",ï¼º:"Z",Å¹:"Z",áº�:"Z",Å»:"Z",Å½:"Z",áº’:"Z",áº”:"Z",Æµ:"Z",È¤:"Z",â±¿:"Z",â±«:"Z",ê�¢:"Z","â“�":"a",ï½�:"a",áºš:"a",Ã :"a",Ã¡:"a",Ã¢:"a",áº§:"a",áº¥:"a",áº«:"a",áº©:"a",Ã£:"a",Ä�:"a",Äƒ:"a",áº±:"a",áº¯:"a",áºµ:"a",áº³:"a",È§:"a",Ç¡:"a",Ã¤:"a",ÇŸ:"a",áº£:"a",Ã¥:"a",Ç»:"a",ÇŽ:"a",È�:"a",Èƒ:"a",áº¡:"a",áº­:"a",áº·:"a",á¸�:"a",Ä…:"a",â±¥:"a",É�:"a",êœ³:"aa",Ã¦:"ae",Ç½:"ae",Ç£:"ae",êœµ:"ao",êœ·:"au",êœ¹:"av",êœ»:"av",êœ½:"ay","â“‘":"b",ï½‚:"b",á¸ƒ:"b",á¸…:"b",á¸‡:"b",Æ€:"b",Æƒ:"b",É“:"b","â“’":"c",ï½ƒ:"c",Ä‡:"c",Ä‰:"c",Ä‹:"c",Ä�:"c",Ã§:"c",á¸‰:"c",Æˆ:"c",È¼:"c",êœ¿:"c",â†„:"c","â““":"d",ï½„:"d",á¸‹:"d",Ä�:"d",á¸�:"d",á¸‘:"d",á¸“:"d",á¸�:"d",Ä‘:"d",ÆŒ:"d",É–:"d",É—:"d",ê�º:"d",Ç³:"dz",Ç†:"dz","â“”":"e",ï½…:"e",Ã¨:"e",Ã©:"e",Ãª:"e",á»�:"e",áº¿:"e",á»…:"e",á»ƒ:"e",áº½:"e",Ä“:"e",á¸•:"e",á¸—:"e",Ä•:"e",Ä—:"e",Ã«:"e",áº»:"e",Ä›:"e",È…:"e",È‡:"e",áº¹:"e",á»‡:"e",È©:"e",á¸�:"e",Ä™:"e",á¸™:"e",á¸›:"e",É‡:"e",É›:"e",Ç�:"e","â“•":"f",ï½†:"f",á¸Ÿ:"f",Æ’:"f",ê�¼:"f","â“–":"g",ï½‡:"g",Çµ:"g",Ä�:"g",á¸¡:"g",ÄŸ:"g",Ä¡:"g",Ç§:"g",Ä£:"g",Ç¥:"g",É :"g",êž¡:"g",áµ¹:"g",ê�¿:"g","â“—":"h",ï½ˆ:"h",Ä¥:"h",á¸£:"h",á¸§:"h",ÈŸ:"h",á¸¥:"h",á¸©:"h",á¸«:"h",áº–:"h",Ä§:"h",â±¨:"h",â±¶:"h",É¥:"h",Æ•:"hv","â“˜":"i",ï½‰:"i",Ã¬:"i",Ã­:"i",Ã®:"i",Ä©:"i",Ä«:"i",Ä­:"i",Ã¯:"i",á¸¯:"i",á»‰:"i",Ç�:"i",È‰:"i",È‹:"i",á»‹:"i",Ä¯:"i",á¸­:"i",É¨:"i",Ä±:"i","â“™":"j",ï½Š:"j",Äµ:"j",Ç°:"j",É‰:"j","â“š":"k",ï½‹:"k",á¸±:"k",Ç©:"k",á¸³:"k",Ä·:"k",á¸µ:"k",Æ™:"k",â±ª:"k",ê��:"k",ê�ƒ:"k",ê�…:"k",êž£:"k","â“›":"l",ï½Œ:"l",Å€:"l",Äº:"l",Ä¾:"l",á¸·:"l",á¸¹:"l",Ä¼:"l",á¸½:"l",á¸»:"l",Å¿:"l",Å‚:"l",Æš:"l",É«:"l",â±¡:"l",ê�‰:"l",êž�:"l",ê�‡:"l",Ç‰:"lj","â“œ":"m",ï½�:"m",á¸¿:"m",á¹�:"m",á¹ƒ:"m",É±:"m",É¯:"m","â“�":"n",ï½Ž:"n",Ç¹:"n",Å„:"n",Ã±:"n",á¹…:"n",Åˆ:"n",á¹‡:"n",Å†:"n",á¹‹:"n",á¹‰:"n",Æž:"n",É²:"n",Å‰:"n",êž‘:"n",êž¥:"n",ÇŒ:"nj","â“ž":"o",ï½�:"o",Ã²:"o",Ã³:"o",Ã´:"o",á»“:"o",á»‘:"o",á»—:"o",á»•:"o",Ãµ:"o",á¹�:"o",È­:"o",á¹�:"o",Å�:"o",á¹‘:"o",á¹“:"o",Å�:"o",È¯:"o",È±:"o",Ã¶:"o",È«:"o",á»�:"o",Å‘:"o",Ç’:"o",È�:"o",È�:"o",Æ¡:"o",á»�:"o",á»›:"o",á»¡:"o",á»Ÿ:"o",á»£:"o",á»�:"o",á»™:"o",Ç«:"o",Ç­:"o",Ã¸:"o",Ç¿:"o",É”:"o",ê�‹:"o",ê��:"o",Éµ:"o",Æ£:"oi",È£:"ou",ê��:"oo","â“Ÿ":"p",ï½�:"p",á¹•:"p",á¹—:"p",Æ¥:"p",áµ½:"p",ê�‘:"p",ê�“:"p",ê�•:"p","â“ ":"q",ï½‘:"q",É‹:"q",ê�—:"q",ê�™:"q","â“¡":"r",ï½’:"r",Å•:"r",á¹™:"r",Å™:"r",È‘:"r",È“:"r",á¹›:"r",á¹�:"r",Å—:"r",á¹Ÿ:"r",É�:"r",É½:"r",ê�›:"r",êž§:"r",êžƒ:"r","â“¢":"s",ï½“:"s",ÃŸ:"s",Å›:"s",á¹¥:"s",Å�:"s",á¹¡:"s",Å¡:"s",á¹§:"s",á¹£:"s",á¹©:"s",È™:"s",ÅŸ:"s",È¿:"s",êž©:"s",êž…:"s",áº›:"s","â“£":"t",ï½”:"t",á¹«:"t",áº—:"t",Å¥:"t",á¹­:"t",È›:"t",Å£:"t",á¹±:"t",á¹¯:"t",Å§:"t",Æ­:"t",Êˆ:"t",â±¦:"t",êž‡:"t",êœ©:"tz","â“¤":"u",ï½•:"u",Ã¹:"u",Ãº:"u",Ã»:"u",Å©:"u",á¹¹:"u",Å«:"u",á¹»:"u",Å­:"u",Ã¼:"u",Çœ:"u",Ç˜:"u",Ç–:"u",Çš:"u",á»§:"u",Å¯:"u",Å±:"u",Ç”:"u",È•:"u",È—:"u",Æ°:"u",á»«:"u",á»©:"u",á»¯:"u",á»­:"u",á»±:"u",á»¥:"u",á¹³:"u",Å³:"u",á¹·:"u",á¹µ:"u",Ê‰:"u","â“¥":"v",ï½–:"v",á¹½:"v",á¹¿:"v",Ê‹:"v",ê�Ÿ:"v",ÊŒ:"v",ê�¡:"vy","â“¦":"w",ï½—:"w",áº�:"w",áºƒ:"w",Åµ:"w",áº‡:"w",áº…:"w",áº˜:"w",áº‰:"w",â±³:"w","â“§":"x",ï½˜:"x",áº‹:"x",áº�:"x","â“¨":"y",ï½™:"y",á»³:"y",Ã½:"y",Å·:"y",á»¹:"y",È³:"y",áº�:"y",Ã¿:"y",á»·:"y",áº™:"y",á»µ:"y",Æ´:"y",É�:"y",á»¿:"y","â“©":"z",ï½š:"z",Åº:"z",áº‘:"z",Å¼:"z",Å¾:"z",áº“:"z",áº•:"z",Æ¶:"z",È¥:"z",É€:"z",â±¬:"z",ê�£:"z",Î†:"Î‘",Îˆ:"Î•",Î‰:"Î—",ÎŠ:"Î™",Îª:"Î™",ÎŒ:"ÎŸ",ÎŽ:"Î¥",Î«:"Î¥",Î�:"Î©",Î¬:"Î±",Î­:"Îµ",Î®:"Î·",Î¯:"Î¹",ÏŠ:"Î¹",Î�:"Î¹",ÏŒ:"Î¿",Ï�:"Ï…",Ï‹:"Ï…",Î°:"Ï…",Ï‰:"Ï‰",Ï‚:"Ïƒ"}}),t.define("select2/data/base",["../utils"],function(e){function t(e,n){t.__super__.constructor.call(this)}return e.Extend(t,e.Observable),t.prototype.current=function(e){throw new Error("The `current` method must be defined in child classes.")},t.prototype.query=function(e,t){throw new Error("The `query` method must be defined in child classes.")},t.prototype.bind=function(e,t){},t.prototype.destroy=function(){},t.prototype.generateResultId=function(t,n){var o="";return o+=null!=t?t.id:e.generateChars(4),o+="-result-",o+=e.generateChars(4),null!=n.id?o+="-"+n.id.toString():o+="-"+e.generateChars(4),o},t}),t.define("select2/data/select",["./base","../utils","jquery"],function(e,t,n){function o(e,t){this.$element=e,this.options=t,o.__super__.constructor.call(this)}return t.Extend(o,e),o.prototype.current=function(e){var t=[],o=this;this.$element.find(":selected").each(function(){var e=n(this),i=o.item(e);t.push(i)}),e(t)},o.prototype.select=function(e){var t=this;if(e.selected=!0,n(e.element).is("option"))return e.element.selected=!0,void this.$element.trigger("change");if(this.$element.prop("multiple"))this.current(function(o){var i=[];(e=[e]).push.apply(e,o);for(var s=0;s<e.length;s++){var r=e[s].id;-1===n.inArray(r,i)&&i.push(r)}t.$element.val(i),t.$element.trigger("change")});else{var o=e.id;this.$element.val(o),this.$element.trigger("change")}},o.prototype.unselect=function(e){var t=this;if(this.$element.prop("multiple")){if(e.selected=!1,n(e.element).is("option"))return e.element.selected=!1,void this.$element.trigger("change");this.current(function(o){for(var i=[],s=0;s<o.length;s++){var r=o[s].id;r!==e.id&&-1===n.inArray(r,i)&&i.push(r)}t.$element.val(i),t.$element.trigger("change")})}},o.prototype.bind=function(e,t){var n=this;this.container=e,e.on("select",function(e){n.select(e.data)}),e.on("unselect",function(e){n.unselect(e.data)})},o.prototype.destroy=function(){this.$element.find("*").each(function(){n.removeData(this,"data")})},o.prototype.query=function(e,t){var o=[],i=this;this.$element.children().each(function(){var t=n(this);if(t.is("option")||t.is("optgroup")){var s=i.item(t),r=i.matches(e,s);null!==r&&o.push(r)}}),t({results:o})},o.prototype.addOptions=function(e){t.appendMany(this.$element,e)},o.prototype.option=function(e){var t;e.children?(t=document.createElement("optgroup")).label=e.text:void 0!==(t=document.createElement("option")).textContent?t.textContent=e.text:t.innerText=e.text,void 0!==e.id&&(t.value=e.id),e.disabled&&(t.disabled=!0),e.selected&&(t.selected=!0),e.title&&(t.title=e.title);var o=n(t),i=this._normalizeItem(e);return i.element=t,n.data(t,"data",i),o},o.prototype.item=function(e){var t={};if(null!=(t=n.data(e[0],"data")))return t;if(e.is("option"))t={id:e.val(),text:e.text(),disabled:e.prop("disabled"),selected:e.prop("selected"),title:e.prop("title")};else if(e.is("optgroup")){t={text:e.prop("label"),children:[],title:e.prop("title")};for(var o=e.children("option"),i=[],s=0;s<o.length;s++){var r=n(o[s]),a=this.item(r);i.push(a)}t.children=i}return(t=this._normalizeItem(t)).element=e[0],n.data(e[0],"data",t),t},o.prototype._normalizeItem=function(e){n.isPlainObject(e)||(e={id:e,text:e});return null!=(e=n.extend({},{text:""},e)).id&&(e.id=e.id.toString()),null!=e.text&&(e.text=e.text.toString()),null==e._resultId&&e.id&&(e._resultId=this.generateResultId(this.container,e)),n.extend({},{selected:!1,disabled:!1},e)},o.prototype.matches=function(e,t){return this.options.get("matcher")(e,t)},o}),t.define("select2/data/array",["./select","../utils","jquery"],function(e,t,n){function o(e,t){var n=t.get("data")||[];o.__super__.constructor.call(this,e,t),this.addOptions(this.convertToOptions(n))}return t.Extend(o,e),o.prototype.select=function(e){var t=this.$element.find("option").filter(function(t,n){return n.value==e.id.toString()});0===t.length&&(t=this.option(e),this.addOptions(t)),o.__super__.select.call(this,e)},o.prototype.convertToOptions=function(e){var o=this,i=this.$element.find("option"),s=i.map(function(){return o.item(n(this)).id}).get(),r=[];function a(e){return function(){return n(this).val()==e.id}}for(var c=0;c<e.length;c++){var l=this._normalizeItem(e[c]);if(n.inArray(l.id,s)>=0){var d=i.filter(a(l)),u=this.item(d),p=n.extend(!0,{},l,u),h=this.option(p);d.replaceWith(h)}else{var f=this.option(l);if(l.children){var m=this.convertToOptions(l.children);t.appendMany(f,m)}r.push(f)}}return r},o}),t.define("select2/data/ajax",["./array","../utils","jquery"],function(e,t,n){function o(e,t){this.ajaxOptions=this._applyDefaults(t.get("ajax")),null!=this.ajaxOptions.processResults&&(this.processResults=this.ajaxOptions.processResults),o.__super__.constructor.call(this,e,t)}return t.Extend(o,e),o.prototype._applyDefaults=function(e){var t={data:function(e){return n.extend({},e,{q:e.term})},transport:function(e,t,o){var i=n.ajax(e);return i.then(t),i.fail(o),i}};return n.extend({},t,e,!0)},o.prototype.processResults=function(e){return e},o.prototype.query=function(e,t){var o=this;null!=this._request&&(n.isFunction(this._request.abort)&&this._request.abort(),this._request=null);var i=n.extend({type:"GET"},this.ajaxOptions);function s(){var s=i.transport(i,function(i){var s=o.processResults(i,e);o.options.get("debug")&&window.console&&console.error&&(s&&s.results&&n.isArray(s.results)||console.error("Select2: The AJAX results did not return an array in the `results` key of the response.")),t(s),o.container.focusOnActiveElement()},function(){s.status&&"0"===s.status||o.trigger("results:message",{message:"errorLoading"})});o._request=s}"function"==typeof i.url&&(i.url=i.url.call(this.$element,e)),"function"==typeof i.data&&(i.data=i.data.call(this.$element,e)),this.ajaxOptions.delay&&null!=e.term?(this._queryTimeout&&window.clearTimeout(this._queryTimeout),this._queryTimeout=window.setTimeout(s,this.ajaxOptions.delay)):s()},o}),t.define("select2/data/tags",["jquery"],function(e){function t(t,n,o){var i=o.get("tags"),s=o.get("createTag");void 0!==s&&(this.createTag=s);var r=o.get("insertTag");if(void 0!==r&&(this.insertTag=r),t.call(this,n,o),e.isArray(i))for(var a=0;a<i.length;a++){var c=i[a],l=this._normalizeItem(c),d=this.option(l);this.$element.append(d)}}return t.prototype.query=function(e,t,n){var o=this;this._removeOldTags(),null!=t.term&&null==t.page?e.call(this,t,function e(i,s){for(var r=i.results,a=0;a<r.length;a++){var c=r[a],l=null!=c.children&&!e({results:c.children},!0);if((c.text||"").toUpperCase()===(t.term||"").toUpperCase()||l)return!s&&(i.data=r,void n(i))}if(s)return!0;var d=o.createTag(t);if(null!=d){var u=o.option(d);u.attr("data-select2-tag",!0),o.addOptions([u]),o.insertTag(r,d)}i.results=r,n(i)}):e.call(this,t,n)},t.prototype.createTag=function(t,n){var o=e.trim(n.term);return""===o?null:{id:o,text:o}},t.prototype.insertTag=function(e,t,n){t.unshift(n)},t.prototype._removeOldTags=function(t){this._lastTag,this.$element.find("option[data-select2-tag]").each(function(){this.selected||e(this).remove()})},t}),t.define("select2/data/tokenizer",["jquery"],function(e){function t(e,t,n){var o=n.get("tokenizer");void 0!==o&&(this.tokenizer=o),e.call(this,t,n)}return t.prototype.bind=function(e,t,n){e.call(this,t,n),this.$search=t.dropdown.$search||t.selection.$search||n.find(".select2-search__field")},t.prototype.query=function(t,n,o){var i=this;n.term=n.term||"";var s=this.tokenizer(n,this.options,function(t){var n=i._normalizeItem(t);if(!i.$element.find("option").filter(function(){return e(this).val()===n.id}).length){var o=i.option(n);o.attr("data-select2-tag",!0),i._removeOldTags(),i.addOptions([o])}!function(e){i.trigger("select",{data:e})}(n)});s.term!==n.term&&(this.$search.length&&(this.$search.val(s.term),this.$search.focus()),n.term=s.term),t.call(this,n,o)},t.prototype.tokenizer=function(t,n,o,i){for(var s=o.get("tokenSeparators")||[],r=n.term,a=0,c=this.createTag||function(e){return{id:e.term,text:e.term}};a<r.length;){var l=r[a];if(-1!==e.inArray(l,s)){var d=r.substr(0,a),u=c(e.extend({},n,{term:d}));null!=u?(i(u),r=r.substr(a+1)||"",a=0):a++}else a++}return{term:r}},t}),t.define("select2/data/minimumInputLength",[],function(){function e(e,t,n){this.minimumInputLength=n.get("minimumInputLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||"",t.term.length<this.minimumInputLength?this.trigger("results:message",{message:"inputTooShort",args:{minimum:this.minimumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),t.define("select2/data/maximumInputLength",[],function(){function e(e,t,n){this.maximumInputLength=n.get("maximumInputLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){t.term=t.term||"",this.maximumInputLength>0&&t.term.length>this.maximumInputLength?this.trigger("results:message",{message:"inputTooLong",args:{maximum:this.maximumInputLength,input:t.term,params:t}}):e.call(this,t,n)},e}),t.define("select2/data/maximumSelectionLength",[],function(){function e(e,t,n){this.maximumSelectionLength=n.get("maximumSelectionLength"),e.call(this,t,n)}return e.prototype.query=function(e,t,n){var o=this;this.current(function(i){var s=null!=i?i.length:0;o.maximumSelectionLength>0&&s>=o.maximumSelectionLength?o.trigger("results:message",{message:"maximumSelected",args:{maximum:o.maximumSelectionLength}}):e.call(o,t,n)})},e}),t.define("select2/dropdown",["jquery","./utils"],function(e,t){function n(e,t){this.$element=e,this.options=t,n.__super__.constructor.call(this)}return t.Extend(n,t.Observable),n.prototype.render=function(){var t=e('<span class="select2-dropdown"><span class="select2-results"></span></span>');return t.attr("dir",this.options.get("dir")),this.$dropdown=t,t},n.prototype.bind=function(){},n.prototype.position=function(e,t){},n.prototype.destroy=function(){this.$dropdown.remove()},n}),t.define("select2/dropdown/search",["jquery","../utils"],function(e,t){function n(){}return n.prototype.render=function(t){var n=t.call(this),o=e('<span class="select2-search select2-search--dropdown"><input class="select2-search__field" type="text" tabindex="-1" autocomplete="off" autocorrect="off" autocapitalize="none" spellcheck="false" role="combobox" aria-autocomplete="list" aria-expanded="true" /></span>');return this.$searchContainer=o,this.$search=o.find("input"),n.prepend(o),n},n.prototype.bind=function(t,n,o){var i=this,s=n.id+"-results";t.call(this,n,o),this.$search.on("keydown",function(e){i.trigger("keypress",e),i._keyUpPrevented=e.isDefaultPrevented()}),this.$search.on("input",function(t){e(this).off("keyup")}),this.$search.on("keyup input",function(e){i.handleSearch(e)}),n.on("open",function(){i.$search.attr("tabindex",0),i.$search.attr("aria-owns",s),i.$search.focus(),window.setTimeout(function(){i.$search.focus()},0)}),n.on("close",function(){i.$search.attr("tabindex",-1),i.$search.removeAttr("aria-activedescendant"),i.$search.removeAttr("aria-owns"),i.$search.val("")}),n.on("focus",function(){n.isOpen()||i.$search.focus()}),n.on("results:all",function(e){null!=e.query.term&&""!==e.query.term||(i.showSearch(e)?i.$searchContainer.removeClass("select2-search--hide"):i.$searchContainer.addClass("select2-search--hide"))}),n.on("results:focus",function(e){i.$search.attr("aria-activedescendant",e.data._resultId)})},n.prototype.handleSearch=function(e){if(!this._keyUpPrevented){var t=this.$search.val();this.trigger("query",{term:t})}this._keyUpPrevented=!1},n.prototype.showSearch=function(e,t){return!0},n}),t.define("select2/dropdown/hidePlaceholder",[],function(){function e(e,t,n,o){this.placeholder=this.normalizePlaceholder(n.get("placeholder")),e.call(this,t,n,o)}return e.prototype.append=function(e,t){t.results=this.removePlaceholder(t.results),e.call(this,t)},e.prototype.normalizePlaceholder=function(e,t){return"string"==typeof t&&(t={id:"",text:t}),t},e.prototype.removePlaceholder=function(e,t){for(var n=t.slice(0),o=t.length-1;o>=0;o--){var i=t[o];this.placeholder.id===i.id&&n.splice(o,1)}return n},e}),t.define("select2/dropdown/infiniteScroll",["jquery"],function(e){function t(e,t,n,o){this.lastParams={},e.call(this,t,n,o),this.$loadingMore=this.createLoadingMore(),this.loading=!1}return t.prototype.append=function(e,t){this.$loadingMore.remove(),this.loading=!1,e.call(this,t),this.showLoadingMore(t)&&this.$results.append(this.$loadingMore)},t.prototype.bind=function(t,n,o){var i=this;t.call(this,n,o),n.on("query",function(e){i.lastParams=e,i.loading=!0}),n.on("query:append",function(e){i.lastParams=e,i.loading=!0}),this.$results.on("scroll",function(){var t=e.contains(document.documentElement,i.$loadingMore[0]);!i.loading&&t&&i.$results.offset().top+i.$results.outerHeight(!1)+50>=i.$loadingMore.offset().top+i.$loadingMore.outerHeight(!1)&&i.loadMore()})},t.prototype.loadMore=function(){this.loading=!0;var t=e.extend({},{page:1},this.lastParams);t.page++,this.trigger("query:append",t)},t.prototype.showLoadingMore=function(e,t){return t.pagination&&t.pagination.more},t.prototype.createLoadingMore=function(){var t=e('<li class="select2-results__option select2-results__option--load-more"role="option" aria-disabled="true"></li>'),n=this.options.get("translations").get("loadingMore");return t.html(n(this.lastParams)),t},t}),t.define("select2/dropdown/attachBody",["jquery","../utils"],function(e,t){function n(t,n,o){this.$dropdownParent=o.get("dropdownParent")||e(document.body),t.call(this,n,o)}return n.prototype.bind=function(e,t,n){var o=this,i=!1;e.call(this,t,n),t.on("open",function(){o._showDropdown(),o._attachPositioningHandler(t),i||(i=!0,t.on("results:all",function(){o._positionDropdown(),o._resizeDropdown()}),t.on("results:append",function(){o._positionDropdown(),o._resizeDropdown()}))}),t.on("close",function(){o._hideDropdown(),o._detachPositioningHandler(t)}),this.$dropdownContainer.on("mousedown",function(e){e.stopPropagation()})},n.prototype.destroy=function(e){e.call(this),this.$dropdownContainer.remove()},n.prototype.position=function(e,t,n){t.attr("class",n.attr("class")),t.removeClass("select2"),t.addClass("select2-container--open"),t.css({position:"absolute",top:-999999}),this.$container=n},n.prototype.render=function(t){var n=e("<span></span>"),o=t.call(this);return n.append(o),this.$dropdownContainer=n,n},n.prototype._hideDropdown=function(e){this.$dropdownContainer.detach()},n.prototype._attachPositioningHandler=function(n,o){var i=this,s="scroll.select2."+o.id,r="resize.select2."+o.id,a="orientationchange.select2."+o.id,c=this.$container.parents().filter(t.hasScroll);c.each(function(){e(this).data("select2-scroll-position",{x:e(this).scrollLeft(),y:e(this).scrollTop()})}),c.on(s,function(t){var n=e(this).data("select2-scroll-position");e(this).scrollTop(n.y)}),e(window).on(s+" "+r+" "+a,function(e){i._positionDropdown(),i._resizeDropdown()})},n.prototype._detachPositioningHandler=function(n,o){var i="scroll.select2."+o.id,s="resize.select2."+o.id,r="orientationchange.select2."+o.id;this.$container.parents().filter(t.hasScroll).off(i),e(window).off(i+" "+s+" "+r)},n.prototype._positionDropdown=function(){var t=e(window),n=this.$dropdown.hasClass("select2-dropdown--above"),o=this.$dropdown.hasClass("select2-dropdown--below"),i=null,s=this.$container.offset();s.bottom=s.top+this.$container.outerHeight(!1);var r={height:this.$container.outerHeight(!1)};r.top=s.top,r.bottom=s.top+r.height;var a=this.$dropdown.outerHeight(!1),c=t.scrollTop(),l=t.scrollTop()+t.height(),d=c<s.top-a,u=l>s.bottom+a,p={left:s.left,top:r.bottom},h=this.$dropdownParent;"static"===h.css("position")&&(h=h.offsetParent());var f=h.offset();p.top-=f.top,p.left-=f.left,n||o||(i="below"),u||!d||n?!d&&u&&n&&(i="below"):i="above",("above"==i||n&&"below"!==i)&&(p.top=r.top-f.top-a),null!=i&&(this.$dropdown.removeClass("select2-dropdown--below select2-dropdown--above").addClass("select2-dropdown--"+i),this.$container.removeClass("select2-container--below select2-container--above").addClass("select2-container--"+i)),this.$dropdownContainer.css(p)},n.prototype._resizeDropdown=function(){var e={width:this.$container.outerWidth(!1)+"px"};this.options.get("dropdownAutoWidth")&&(e.minWidth=e.width,e.position="relative",e.width="auto"),this.$dropdown.css(e)},n.prototype._showDropdown=function(e){this.$dropdownContainer.appendTo(this.$dropdownParent),this._positionDropdown(),this._resizeDropdown()},n}),t.define("select2/dropdown/minimumResultsForSearch",[],function(){function e(t){for(var n=0,o=0;o<t.length;o++){var i=t[o];i.children?n+=e(i.children):n++}return n}function t(e,t,n,o){this.minimumResultsForSearch=n.get("minimumResultsForSearch"),this.minimumResultsForSearch<0&&(this.minimumResultsForSearch=1/0),e.call(this,t,n,o)}return t.prototype.showSearch=function(t,n){return!(e(n.data.results)<this.minimumResultsForSearch)&&t.call(this,n)},t}),t.define("select2/dropdown/selectOnClose",[],function(){function e(){}return e.prototype.bind=function(e,t,n){var o=this;e.call(this,t,n),t.on("close",function(e){o._handleSelectOnClose(e)})},e.prototype._handleSelectOnClose=function(e,t){if(t&&null!=t.originalSelect2Event){var n=t.originalSelect2Event;if("select"===n._type||"unselect"===n._type)return}var o=this.getHighlightedResults();if(!(o.length<1)){var i=o.data("data");null!=i.element&&i.element.selected||null==i.element&&i.selected||this.trigger("select",{data:i})}},e}),t.define("select2/dropdown/closeOnSelect",[],function(){function e(){}return e.prototype.bind=function(e,t,n){var o=this;e.call(this,t,n),t.on("select",function(e){o._selectTriggered(e)}),t.on("unselect",function(e){o._selectTriggered(e)})},e.prototype._selectTriggered=function(e,t){var n=t.originalEvent;n&&n.ctrlKey||this.trigger("close",{originalEvent:n,originalSelect2Event:t})},e}),t.define("select2/i18n/en",[],function(){return{errorLoading:function(){return"The results could not be loaded."},inputTooLong:function(e){var t=e.input.length-e.maximum,n="Please delete "+t+" character";return 1!=t&&(n+="s"),n},inputTooShort:function(e){return"Please enter "+(e.minimum-e.input.length)+" or more characters"},loadingMore:function(){return"Loading more resultsâ€¦"},maximumSelected:function(e){var t="You can only select "+e.maximum+" item";return 1!=e.maximum&&(t+="s"),t},noResults:function(){return"No results found"},searching:function(){return"Searchingâ€¦"}}}),t.define("select2/defaults",["jquery","require","./results","./selection/single","./selection/multiple","./selection/placeholder","./selection/allowClear","./selection/search","./selection/eventRelay","./utils","./translation","./diacritics","./data/select","./data/array","./data/ajax","./data/tags","./data/tokenizer","./data/minimumInputLength","./data/maximumInputLength","./data/maximumSelectionLength","./dropdown","./dropdown/search","./dropdown/hidePlaceholder","./dropdown/infiniteScroll","./dropdown/attachBody","./dropdown/minimumResultsForSearch","./dropdown/selectOnClose","./dropdown/closeOnSelect","./i18n/en"],function(e,t,n,o,i,s,r,a,c,l,d,u,p,h,f,m,g,_,v,w,y,b,C,x,D,k,$,j,A){function M(){this.reset()}return M.prototype.apply=function(u){if(null==(u=e.extend(!0,{},this.defaults,u)).dataAdapter){if(null!=u.ajax?u.dataAdapter=f:null!=u.data?u.dataAdapter=h:u.dataAdapter=p,u.minimumInputLength>0&&(u.dataAdapter=l.Decorate(u.dataAdapter,_)),u.maximumInputLength>0&&(u.dataAdapter=l.Decorate(u.dataAdapter,v)),u.maximumSelectionLength>0&&(u.dataAdapter=l.Decorate(u.dataAdapter,w)),u.tags&&(u.dataAdapter=l.Decorate(u.dataAdapter,m)),null==u.tokenSeparators&&null==u.tokenizer||(u.dataAdapter=l.Decorate(u.dataAdapter,g)),null!=u.query){var A=t(u.amdBase+"compat/query");u.dataAdapter=l.Decorate(u.dataAdapter,A)}if(null!=u.initSelection){var M=t(u.amdBase+"compat/initSelection");u.dataAdapter=l.Decorate(u.dataAdapter,M)}}if(null==u.resultsAdapter&&(u.resultsAdapter=n,null!=u.ajax&&(u.resultsAdapter=l.Decorate(u.resultsAdapter,x)),null!=u.placeholder&&(u.resultsAdapter=l.Decorate(u.resultsAdapter,C)),u.selectOnClose&&(u.resultsAdapter=l.Decorate(u.resultsAdapter,$))),null==u.dropdownAdapter){if(u.multiple)u.dropdownAdapter=y;else{var E=l.Decorate(y,b);u.dropdownAdapter=E}if(0!==u.minimumResultsForSearch&&(u.dropdownAdapter=l.Decorate(u.dropdownAdapter,k)),u.closeOnSelect&&(u.dropdownAdapter=l.Decorate(u.dropdownAdapter,j)),null!=u.dropdownCssClass||null!=u.dropdownCss||null!=u.adaptDropdownCssClass){var P=t(u.amdBase+"compat/dropdownCss");u.dropdownAdapter=l.Decorate(u.dropdownAdapter,P)}u.dropdownAdapter=l.Decorate(u.dropdownAdapter,D)}if(null==u.selectionAdapter){if(u.multiple?u.selectionAdapter=i:u.selectionAdapter=o,null!=u.placeholder&&(u.selectionAdapter=l.Decorate(u.selectionAdapter,s)),u.allowClear&&(u.selectionAdapter=l.Decorate(u.selectionAdapter,r)),u.multiple&&(u.selectionAdapter=l.Decorate(u.selectionAdapter,a)),null!=u.containerCssClass||null!=u.containerCss||null!=u.adaptContainerCssClass){var T=t(u.amdBase+"compat/containerCss");u.selectionAdapter=l.Decorate(u.selectionAdapter,T)}u.selectionAdapter=l.Decorate(u.selectionAdapter,c)}if("string"==typeof u.language)if(u.language.indexOf("-")>0){var S=u.language.split("-")[0];u.language=[u.language,S]}else u.language=[u.language];if(e.isArray(u.language)){var O=new d;u.language.push("en");for(var I=u.language,L=0;L<I.length;L++){var W=I[L],H={};try{H=d.loadPath(W)}catch(e){try{W=this.defaults.amdLanguageBase+W,H=d.loadPath(W)}catch(e){u.debug&&window.console&&console.warn&&console.warn('Select2: The language file for "'+W+'" could not be automatically loaded. A fallback will be used instead.');continue}}O.extend(H)}u.translations=O}else{var N=d.loadPath(this.defaults.amdLanguageBase+"en"),F=new d(u.language);F.extend(N),u.translations=F}return u},M.prototype.reset=function(){function t(e){return e.replace(/[^\u0000-\u007E]/g,function(e){return u[e]||e})}this.defaults={amdBase:"./",amdLanguageBase:"./i18n/",closeOnSelect:!0,debug:!1,dropdownAutoWidth:!1,escapeMarkup:l.escapeMarkup,language:A,matcher:function n(o,i){if(""===e.trim(o.term))return i;if(i.children&&i.children.length>0){for(var s=e.extend(!0,{},i),r=i.children.length-1;r>=0;r--)null==n(o,i.children[r])&&s.children.splice(r,1);return s.children.length>0?s:n(o,s)}var a=t(i.text).toUpperCase(),c=t(o.term).toUpperCase();return a.indexOf(c)>-1?i:null},minimumInputLength:0,maximumInputLength:0,maximumSelectionLength:0,minimumResultsForSearch:0,selectOnClose:!1,sorter:function(e){return e},templateResult:function(e){return e.text},templateSelection:function(e){return e.text},theme:"default",width:"resolve"}},M.prototype.set=function(t,n){var o={};o[e.camelCase(t)]=n;var i=l._convertData(o);e.extend(this.defaults,i)},new M}),t.define("select2/options",["require","jquery","./defaults","./utils"],function(e,t,n,o){function i(t,i){if(this.options=t,null!=i&&this.fromElement(i),this.options=n.apply(this.options),i&&i.is("input")){var s=e(this.get("amdBase")+"compat/inputData");this.options.dataAdapter=o.Decorate(this.options.dataAdapter,s)}}return i.prototype.fromElement=function(e){var n=["select2"];null==this.options.multiple&&(this.options.multiple=e.prop("multiple")),null==this.options.disabled&&(this.options.disabled=e.prop("disabled")),null==this.options.language&&(e.prop("lang")?this.options.language=e.prop("lang").toLowerCase():e.closest("[lang]").prop("lang")&&(this.options.language=e.closest("[lang]").prop("lang"))),null==this.options.dir&&(e.prop("dir")?this.options.dir=e.prop("dir"):e.closest("[dir]").prop("dir")?this.options.dir=e.closest("[dir]").prop("dir"):this.options.dir="ltr"),e.prop("disabled",this.options.disabled),e.prop("multiple",this.options.multiple),e.data("select2Tags")&&(this.options.debug&&window.console&&console.warn&&console.warn('Select2: The `data-select2-tags` attribute has been changed to use the `data-data` and `data-tags="true"` attributes and will be removed in future versions of Select2.'),e.data("data",e.data("select2Tags")),e.data("tags",!0)),e.data("ajaxUrl")&&(this.options.debug&&window.console&&console.warn&&console.warn("Select2: The `data-ajax-url` attribute has been changed to `data-ajax--url` and support for the old attribute will be removed in future versions of Select2."),e.attr("ajax--url",e.data("ajaxUrl")),e.data("ajax--url",e.data("ajaxUrl")));var i;i=t.fn.jquery&&"1."==t.fn.jquery.substr(0,2)&&e[0].dataset?t.extend(!0,{},e[0].dataset,e.data()):e.data();var s=t.extend(!0,{},i);for(var r in s=o._convertData(s))t.inArray(r,n)>-1||(t.isPlainObject(this.options[r])?t.extend(this.options[r],s[r]):this.options[r]=s[r]);return this},i.prototype.get=function(e){return this.options[e]},i.prototype.set=function(e,t){this.options[e]=t},i}),t.define("select2/core",["jquery","./options","./utils","./keys"],function(e,t,n,o){var i=function(e,n){null!=e.data("select2")&&e.data("select2").destroy(),this.$element=e,this.id=this._generateId(e),n=n||{},this.options=new t(n,e),i.__super__.constructor.call(this);var o=e.attr("tabindex")||0;e.data("old-tabindex",o),e.attr("tabindex","-1");var s=this.options.get("dataAdapter");this.dataAdapter=new s(e,this.options);var r=this.render();this._placeContainer(r);var a=this.options.get("selectionAdapter");this.selection=new a(e,this.options),this.$selection=this.selection.render(),this.selection.position(this.$selection,r);var c=this.options.get("dropdownAdapter");this.dropdown=new c(e,this.options),this.$dropdown=this.dropdown.render(),this.dropdown.position(this.$dropdown,r);var l=this.options.get("resultsAdapter");this.results=new l(e,this.options,this.dataAdapter),this.$results=this.results.render(),this.results.position(this.$results,this.$dropdown);var d=this;this._bindAdapters(),this._registerDomEvents(),this._registerDataEvents(),this._registerSelectionEvents(),this._registerDropdownEvents(),this._registerResultsEvents(),this._registerEvents(),this.dataAdapter.current(function(e){d.trigger("selection:update",{data:e})}),e.addClass("select2-hidden-accessible"),e.attr("aria-hidden","true"),this._syncAttributes(),e.data("select2",this)};return n.Extend(i,n.Observable),i.prototype._generateId=function(e){return"select2-"+(null!=e.attr("id")?e.attr("id"):null!=e.attr("name")?e.attr("name")+"-"+n.generateChars(2):n.generateChars(4)).replace(/(:|\.|\[|\]|,)/g,"")},i.prototype._placeContainer=function(e){e.insertAfter(this.$element);var t=this._resolveWidth(this.$element,this.options.get("width"));null!=t&&e.css("width",t)},i.prototype._resolveWidth=function(e,t){var n=/^width:(([-+]?([0-9]*\.)?[0-9]+)(px|em|ex|%|in|cm|mm|pt|pc))/i;if("resolve"==t){var o=this._resolveWidth(e,"style");return null!=o?o:this._resolveWidth(e,"element")}if("element"==t){var i=e.outerWidth(!1);return i<=0?"auto":i+"px"}if("style"==t){var s=e.attr("style");if("string"!=typeof s)return null;for(var r=s.split(";"),a=0,c=r.length;a<c;a+=1){var l=r[a].replace(/\s/g,"").match(n);if(null!==l&&l.length>=1)return l[1]}return null}return t},i.prototype._bindAdapters=function(){this.dataAdapter.bind(this,this.$container),this.selection.bind(this,this.$container),this.dropdown.bind(this,this.$container),this.results.bind(this,this.$container)},i.prototype._registerDomEvents=function(){var t=this;this.$element.on("change.select2",function(){t.dataAdapter.current(function(e){t.trigger("selection:update",{data:e})})}),this.$element.on("focus.select2",function(e){t.trigger("focus",e)}),this._syncA=n.bind(this._syncAttributes,this),this._syncS=n.bind(this._syncSubtree,this),this.$element[0].attachEvent&&this.$element[0].attachEvent("onpropertychange",this._syncA);var o=window.MutationObserver||window.WebKitMutationObserver||window.MozMutationObserver;null!=o?(this._observer=new o(function(n){e.each(n,t._syncA),e.each(n,t._syncS)}),this._observer.observe(this.$element[0],{attributes:!0,childList:!0,subtree:!1})):this.$element[0].addEventListener&&(this.$element[0].addEventListener("DOMAttrModified",t._syncA,!1),this.$element[0].addEventListener("DOMNodeInserted",t._syncS,!1),this.$element[0].addEventListener("DOMNodeRemoved",t._syncS,!1))},i.prototype._registerDataEvents=function(){var e=this;this.dataAdapter.on("*",function(t,n){e.trigger(t,n)})},i.prototype._registerSelectionEvents=function(){var t=this,n=["toggle","focus"];this.selection.on("toggle",function(){t.toggleDropdown()}),this.selection.on("focus",function(e){t.focus(e)}),this.selection.on("*",function(o,i){-1===e.inArray(o,n)&&t.trigger(o,i)})},i.prototype._registerDropdownEvents=function(){var e=this;this.dropdown.on("*",function(t,n){e.trigger(t,n)})},i.prototype._registerResultsEvents=function(){var e=this;this.results.on("*",function(t,n){e.trigger(t,n)})},i.prototype._registerEvents=function(){var t=this;this.on("open",function(){t.$container.addClass("select2-container--open")}),this.on("close",function(){t.$container.removeClass("select2-container--open")}),this.on("enable",function(){t.$container.removeClass("select2-container--disabled")}),this.on("disable",function(){t.$container.addClass("select2-container--disabled")}),this.on("blur",function(){t.$container.removeClass("select2-container--focus")}),this.on("query",function(e){t.isOpen()||t.trigger("open",{}),this.dataAdapter.query(e,function(n){t.trigger("results:all",{data:n,query:e})})}),this.on("query:append",function(e){this.dataAdapter.query(e,function(n){t.trigger("results:append",{data:n,query:e})})}),this.on("open",function(){setTimeout(function(){t.focusOnActiveElement()},1)}),e(document).on("keydown",function(e){var n=e.which;if(t.isOpen()){n===o.ESC||n===o.TAB||n===o.UP&&e.altKey?(t.close(),e.preventDefault()):n===o.ENTER?(t.trigger("results:select",{}),e.preventDefault()):n===o.SPACE&&e.ctrlKey?(t.trigger("results:toggle",{}),e.preventDefault()):n===o.UP?(t.trigger("results:previous",{}),e.preventDefault()):n===o.DOWN&&(t.trigger("results:next",{}),e.preventDefault());var i=t.$dropdown.find(".select2-search__field");i.length||(i=t.$container.find(".select2-search__field")),n===o.DOWN||n===o.UP?t.focusOnActiveElement():(i.focus(),setTimeout(function(){t.focusOnActiveElement()},1e3))}else t.hasFocus()&&(n!==o.ENTER&&n!==o.SPACE&&n!==o.DOWN||(t.open(),e.preventDefault()))})},i.prototype.focusOnActiveElement=function(){this.isOpen()&&!n.isTouchscreen()&&this.$results.find("li.select2-results__option--highlighted").focus()},i.prototype._syncAttributes=function(){this.options.set("disabled",this.$element.prop("disabled")),this.options.get("disabled")?(this.isOpen()&&this.close(),this.trigger("disable",{})):this.trigger("enable",{})},i.prototype._syncSubtree=function(e,t){var n=!1,o=this;if(!e||!e.target||"OPTION"===e.target.nodeName||"OPTGROUP"===e.target.nodeName){if(t)if(t.addedNodes&&t.addedNodes.length>0)for(var i=0;i<t.addedNodes.length;i++)t.addedNodes[i].selected&&(n=!0);else t.removedNodes&&t.removedNodes.length>0&&(n=!0);else n=!0;n&&this.dataAdapter.current(function(e){o.trigger("selection:update",{data:e})})}},i.prototype.trigger=function(e,t){var n=i.__super__.trigger,o={open:"opening",close:"closing",select:"selecting",unselect:"unselecting"};if(void 0===t&&(t={}),e in o){var s=o[e],r={prevented:!1,name:e,args:t};if(n.call(this,s,r),r.prevented)return void(t.prevented=!0)}n.call(this,e,t)},i.prototype.toggleDropdown=function(){this.options.get("disabled")||(this.isOpen()?this.close():this.open())},i.prototype.open=function(){this.isOpen()||this.trigger("query",{})},i.prototype.close=function(){this.isOpen()&&this.trigger("close",{})},i.prototype.isOpen=function(){return this.$container.hasClass("select2-container--open")},i.prototype.hasFocus=function(){return this.$container.hasClass("select2-container--focus")},i.prototype.focus=function(e){this.hasFocus()||(this.$container.addClass("select2-container--focus"),this.trigger("focus",{}))},i.prototype.enable=function(e){this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("enable")` method has been deprecated and will be removed in later Select2 versions. Use $element.prop("disabled") instead.'),null!=e&&0!==e.length||(e=[!0]);var t=!e[0];this.$element.prop("disabled",t)},i.prototype.data=function(){this.options.get("debug")&&arguments.length>0&&window.console&&console.warn&&console.warn('Select2: Data can no longer be set using `select2("data")`. You should consider setting the value instead using `$element.val()`.');var e=[];return this.dataAdapter.current(function(t){e=t}),e},i.prototype.val=function(t){if(this.options.get("debug")&&window.console&&console.warn&&console.warn('Select2: The `select2("val")` method has been deprecated and will be removed in later Select2 versions. Use $element.val() instead.'),null==t||0===t.length)return this.$element.val();var n=t[0];e.isArray(n)&&(n=e.map(n,function(e){return e.toString()})),this.$element.val(n).trigger("change")},i.prototype.destroy=function(){this.$container.remove(),this.$element[0].detachEvent&&this.$element[0].detachEvent("onpropertychange",this._syncA),null!=this._observer?(this._observer.disconnect(),this._observer=null):this.$element[0].removeEventListener&&(this.$element[0].removeEventListener("DOMAttrModified",this._syncA,!1),this.$element[0].removeEventListener("DOMNodeInserted",this._syncS,!1),this.$element[0].removeEventListener("DOMNodeRemoved",this._syncS,!1)),this._syncA=null,this._syncS=null,this.$element.off(".select2"),this.$element.attr("tabindex",this.$element.data("old-tabindex")),this.$element.removeClass("select2-hidden-accessible"),this.$element.attr("aria-hidden","false"),this.$element.removeData("select2"),this.dataAdapter.destroy(),this.selection.destroy(),this.dropdown.destroy(),this.results.destroy(),this.dataAdapter=null,this.selection=null,this.dropdown=null,this.results=null},i.prototype.render=function(){var t=e('<span class="select2 select2-container"><span class="selection"></span><span class="dropdown-wrapper" aria-hidden="true"></span></span>');return t.attr("dir",this.options.get("dir")),this.$container=t,this.$container.addClass("select2-container--"+this.options.get("theme")),t.data("element",this.$element),t},i}),t.define("jquery-mousewheel",["jquery"],function(e){return e}),t.define("jquery.select2",["jquery","jquery-mousewheel","./select2/core","./select2/defaults"],function(e,t,n,o){if(null==e.fn.selectWoo){var i=["open","close","destroy"];e.fn.selectWoo=function(t){if("object"==typeof(t=t||{}))return this.each(function(){var o=e.extend(!0,{},t);new n(e(this),o)}),this;if("string"==typeof t){var o,s=Array.prototype.slice.call(arguments,1);return this.each(function(){var n=e(this).data("select2");null==n&&window.console&&console.error&&console.error("The select2('"+t+"') method was called on an element that is not using Select2."),o=n[t].apply(n,s)}),e.inArray(t,i)>-1?this:o}throw new Error("Invalid arguments for Select2: "+t)}}return null!=e.fn.select2&&null!=e.fn.select2.defaults&&(e.fn.selectWoo.defaults=e.fn.select2.defaults),null==e.fn.selectWoo.defaults&&(e.fn.selectWoo.defaults=o),e.fn.select2=e.fn.select2||e.fn.selectWoo,n}),{define:t.define,require:t.require}}(),n=t.require("jquery.select2");return e.fn.select2.amd=t,e.fn.selectWoo.amd=t,n})?o.apply(t,i):o)||(e.exports=s)},634:()=>{(window.WPCodeTestingMode||function(e,t,n){const o={l18n:t.wpcode,init:function(){o.should_init()&&o.init_events()},should_init:()=>(o.$toggle=n(".wpcode-lite-version #wpcode-toggle-testing-mode"),o.$toggle.length>0),init_events(){o.$toggle.on("change",o.toggle)},toggle(){const e=WPCodeSVG.WPCodeIcon("lock",22,28,"0 0 22 28","iconId");n.confirm({title:e+o.l18n.testing_mode.title,content:o.l18n.testing_mode.text,closeIcon:!0,boxWidth:"560px",backgroundDismiss:!0,theme:"modern upsell-box-alert width560px",buttons:{confirm:{text:o.l18n.testing_mode.button_text,btnClass:"wpcode-btn-orange wpcode-button-large",action:function(){o.$toggle.prop("checked",!1),t.open(o.l18n.testing_mode.link,"_blank","noopener noreferrer")}}},onContentReady:function(){this.$content.parent().parent().append('<div class="footer-link"><a href="'+o.l18n.testing_mode.learn_more_link+'" target="_blank" rel="noopener noreferrer">'+o.l18n.testing_mode.learn_more_text+"</a></div>")},onClose:function(){o.$toggle.prop("checked",!1)}})}};return o}(document,window,jQuery)).init()},695:()=>{jQuery(function(e){WPCodeCodeTypePicker.init()}),window.WPCodeCodeTypePicker=function(e,t,n){const o={hidePicker:function(){o.body.removeClass("wpcode-code-type-picker-visible")},findElements:function(){o.snippet_type_dropdown=n("#wpcode_snippet_type"),o.snippet_type_holder=n("#wpcode_snippet_type-holder"),o.backdrop=n("#wpcode-code-type-picker-backdrop"),o.close=n("#wpcode-close-code-type-picker"),o.body=n("body"),o.code_type_list=n("#wpcode-code-type-list")},init:function(){o.findElements();const e=new URLSearchParams(t.location.search);o.body.hasClass("wpcode-new-snippet")&&!e.has("ai_generate")&&o.showPicker(),o.snippet_type_holder.click(function(e){e.preventDefault(),e.stopPropagation(),o.showPicker()}),o.backdrop.click(function(){o.hidePicker()}),o.close.click(function(){o.hidePicker()}),o.code_type_list.on("click",".wpcode-code-type",function(e){e.preventDefault();const t=n(this).data("code-type");o.snippet_type_dropdown.val(t).trigger("change"),n(".wpcode-code-type").removeClass("wpcode-code-type-selected"),n(this).addClass("wpcode-code-type-selected"),o.hidePicker()})},showPicker:function(){o.code_type_list.find(".wpcode-code-type").each(function(){n(this).data("code-type")===o.snippet_type_dropdown.val()?n(this).addClass("wpcode-code-type-selected"):n(this).removeClass("wpcode-code-type-selected")}),o.body.addClass("wpcode-code-type-picker-visible")}};return o}(document,window,jQuery)},719:()=>{(window.WPCodeAdminLibrary||function(e,t,n){const o={l10n:wpcode,init:function(){o.should_init()&&(o.find_elements(),o.init_preview(),o.init_ai_button())},should_init:()=>n(".wpcode-library-preview-button").length>0,find_elements(){o.library_list=n(".wpcode-items-list"),o.code_preview_use=n("#wpcode-preview-use-code"),o.code_preview_edit=n("#wpcode-preview-edit-snippet"),o.code_preview_updated=n("#wpcode-preview-updated"),o.code_preview_title=n("#wpcode-preview-title")},init_preview(){o.library_list.on("click",".wpcode-library-preview-button",function(e){e.preventDefault();const t=n(this).parent().find(".wpcode-item-use-button"),i=n(this).closest(".wpcode-list-item").data("id"),s=n(this).closest(".wpcode-items-list").data("type");o.show_code_preview(i,t.attr("href"),s),o.code_preview_use.text(t.text())}),n(".wpcode-close-modal, .wpcode-modal-overlay").on("click",function(){n("body").removeClass("wpcode-show-modal")})},show_code_preview(e,t,i="library"){const s=("library"===i?o.l10n.library.snippets:o.l10n.library.mysnippets).find(t=>t.library_id===e);WPCodeAdminCodeEditor.switch_code_mode("wpcode-code-preview",s.code_type),WPCodeAdminCodeEditor.set_value("wpcode-code-preview",s.code),o.code_preview_use.attr("href",t),o.code_preview_title.text(s.title),"mylibrary"===i?(n(".wpcode-my-library-buttons").show(),o.code_preview_edit.attr("href",o.l10n.cloud_edit_url+e)):n(".wpcode-my-library-buttons").hide(),o.code_preview_updated&&o.code_preview_updated.text(s.updated_text),n("body").addClass("wpcode-show-modal"),WPCodeAdminCodeEditor.refresh("wpcode-code-preview")},init_ai_button(){n(".wpcode-library-item-ai-not-available").on("click",function(e){e.preventDefault(),e.stopPropagation(),WPCodeAdminNotices.show_pro_notice(o.l10n.ai_title,o.l10n.ai_text,o.l10n.ai_url,o.l10n.ai_button)})}};return o}(document,window,jQuery)).init()},790:()=>{const e=window.WPCodeShortcodeLocations||function(e,t,n){const o={init:function(){if(!wpcode||!wpcode.nonce)return;const t=e.getElementById("wpcode-find-locations");t&&o.bindEvents(t)},bindEvents(e){e.addEventListener("click",o.handleButtonClick)},handleButtonClick(){const t=e.getElementById("wpcode-locations-list");t.innerHTML="";let o=1,i=!0;const s=()=>{i&&n.ajax({url:ajaxurl,type:"POST",data:{action:"wpcode_get_shortcode_locations",_wpnonce:wpcode.nonce,snippet_id:wpcode.snippet_id,page:o},success:function(e){e.success&&e.data?(t.innerHTML+=e.data.html,i=e.data.has_more,o++,i&&s()):(t.innerHTML='<div class="wpcode-notice wpcode-notice-error">'+(e.data?.message||wpcode.text.error)+"</div>",i=!1)},error:function(){t.innerHTML='<div class="wpcode-notice wpcode-notice-error">'+wpcode.text.error+"</div>",i=!1}})};s()}};return o}(document,window,jQuery);document.addEventListener("DOMContentLoaded",e.init)},799:()=>{jQuery(function(e){const t=e(".wpcode-smart-tags");let n;function o(){n.removeClass("wpcode-smart-tags-open"),e(document).off("click.wpcode")}t.on("click",".wpcode-smart-tags-toggle",function(t){t.preventDefault();const i=e(this).closest(".wpcode-smart-tags");i.toggleClass("wpcode-smart-tags-open"),n=i,e(document).on("click.wpcode",function(t){e(t.target).closest(".wpcode-smart-tags").length||o()}),i.hasClass("wpcode-smart-tags-open")&&i.find(".wpcode-smart-tags-search-input").focus()}),t.on("wpcode_close_smart_tags_dropdown",o),t.on("input",".wpcode-smart-tags-search-input",function(){const t=e(this).val().toLowerCase(),n=e(this).closest(".wpcode-smart-tags-dropdown"),o=n.find(".wpcode-smart-tags-category"),i=n.find(".wpcode-smart-tags-no-results");let s=0;o.each(function(){const n=e(this),o=n.find(".wpcode-smart-tag-category-label"),i=n.find("li:not(.wpcode-smart-tag-category-label)");let r=!1;i.each(function(){const n=e(this);-1!==n.text().toLowerCase().indexOf(t)?(n.show(),r=!0,s++):n.hide()}),r?(n.show(),o.show()):n.hide()}),0===s&&""!==t?i.show():i.hide()}),t.on("wpcode_close_smart_tags_dropdown",function(){const e=n.find(".wpcode-smart-tags-search-input");e.length&&(e.val(""),e.trigger("input"))}),"undefined"!=typeof WPCodeSnippetManager&&t.on("click",".wpcode-insert-smart-tag",function(t){const n=e(this).closest(".wpcode-smart-tags-dropdown"),o=n.data("upgrade-title");if(o)return t.preventDefault(),t.stopImmediatePropagation(),WPCodeSnippetManager.show_pro_notice(o,n.data("upgrade-text"),n.data("upgrade-link"),n.data("upgrade-button")),!1})})},866:()=>{(window.WPCodeLibraryAuth||function(e,t,n){const o={i18n:t.wpcode,init:function(){o.load_elements(),o.add_event_listeners(),t.WPCodeLibraryAuth=o},load_elements(){o.auth_delete_button=n(".wpcode-delete-auth")},add_event_listeners(){n(e).on("click",".wpcode-start-auth",function(e){e.preventDefault(),o.start_auth(n(this))}),o.auth_delete_button.on("click",function(e){e.preventDefault(),o.delete_auth()}),t.addEventListener("message",e=>{e.isTrusted&&o.store_auth(e.data,e.origin)},!1)},start_auth(e){let i=t.open(o.i18n.connect_url,"_blank","location=no,width=500,height=730,scrollbars=0");null===i?n.confirm({title:"Your browser blocked the authorization window from opening. Please check your popup settings.",type:"blue",theme:"modern no-content",buttons:{ok:{text:"Ok",btnClass:"wpcode-btn-confirm",action:function(){}}}}):i.focus()},delete_auth(){const e=o.show_please_wait();n.post(ajaxurl,{action:"wpcode_library_delete_auth",_ajax_nonce:o.i18n.nonce,multisite:o.i18n.multisite},function(o){e.close(),o.success?t.location.reload():n.confirm({title:"Error!",content:"There was an issue processing your request.",buttons:{ok:function(){}}})})},store_auth(e,i){if(void 0===e.key||void 0===e.username)return;const s=void 0!==e.deploy_snippet_id?e.deploy_snippet_id:0,r=o.show_please_wait();n.post(ajaxurl,{action:"wpcode_library_store_auth",key:e.key,username:e.username,webhook_secret:e.webhook_secret,client_id:e.client_id,deploy_snippet_id:s,origin:i,_ajax_nonce:o.i18n.nonce,multisite:o.i18n.multisite},function(e){if(r.close(),e.success){let o='<div class="lds-dual-ring"></div>';n.confirm({title:e.data.title,content:e.data.text+o,closeIcon:!1,theme:"modern loader-spinner-completed",buttons:!1,boxWidth:"600px",onOpen:function(){const e=this;setTimeout(function(){e.close(),t.location.reload()},2e3)}})}})},show_please_wait:()=>n.confirm({title:o.i18n.please_wait,closeIcon:!1,content:'<div class="lds-dual-ring"></div>',boxWidth:"600px",theme:"modern loader-spinner",buttons:{close:{isHidden:!0}},onOpenBefore:function(){this.buttons.close.hide(),this.$content.parent().addClass("jconfirm-loading")},onClose:function(){this.$content.parent().removeClass("jconfirm-loading")}})};return o}(document,window,jQuery)).init()},875:()=>{(window.WPCodeAdminTools||function(e,t,n){const o={i18n:t.wpcode,init:function(){o.should_init()&&(o.find_elements(),o.init_importer(),o.init_ssl_verify(),o.init_confirm_delete_log())},should_init:()=>n("body").hasClass("wpcode-tools"),find_elements(){o.importer_button=n("#wpcode-importer-snippets-submit"),o.$import_progress=n("#wpcode-importer-process"),o.provider=n("#wpcode-importer-provider").val(),o.status_update=n("#wpcode-importer-status-update").html()},init_importer(){o.importer_button.on("click",function(e){e.preventDefault();const t=n("#wpcode-importer-snippets input:checked");if(t.length){const e=[];t.each(function(){e.push(n(this).val())}),o.import_snippets(e)}})},import_snippets(e){o.$import_progress.find(".snippet-total").text(e.length),o.$import_progress.find(".snippet-current").text("1"),n("#wpcode-importer-snippets").hide(),o.$import_progress.show(),o.import_queue=e,o.imported=0,o.import_snippet()},import_snippet(){const e=o.import_queue[0];n.post(ajaxurl,{action:"wpcode_import_snippet_"+o.provider,snippet_id:e,_wpnonce:wpcode.nonce}).done(function(e){if(e.success){o.import_queue.shift(),o.imported++;const t=n(o.status_update);t.find(".name span").text(e.data.name),t.find(".actions a").attr("href",e.data.edit),o.$import_progress.find(".status").prepend(t),o.$import_progress.find(".status").show(),0===o.import_queue.length?(o.$import_progress.find(".process-count").hide(),o.$import_progress.find(".snippets-completed").text(o.imported),o.$import_progress.find(".process-completed").show()):(o.$import_progress.find(".snippet-current").text(o.imported+1),o.import_snippet())}})},init_ssl_verify(){n(e).on("click","#wpcode-ssl-verify",function(e){e.preventDefault(),o.verify_ssl()})},verify_ssl(){const e=n("#wpcode-ssl-verify"),t=e.text(),o=e.outerWidth(),i=e.parent(),s={action:"wpcode_verify_ssl",nonce:wpcode.nonce};e.css("width",o).prop("disabled",!0).text(wpcode.testing),n.post(ajaxurl,s,function(n){console.log(n),i.find(".wpcode-alert, .wpcode-ssl-error").remove(),n.success&&e.before('<div class="wpcode-alert wpcode-alert-success">'+n.data.msg+"</div>"),!n.success&&n.data.msg&&e.before('<div class="wpcode-alert wpcode-alert-danger">'+n.data.msg+"</div>"),!n.success&&n.data.debug&&e.before('<div class="wpcode-ssl-error pre-error">'+n.data.debug+"</div>"),e.css("width",o).prop("disabled",!1).text(t)})},init_confirm_delete_log(){n(".wpcode-delete-log").on("click",function(e){return e.stopPropagation(),t.confirm(o.i18n.confirm_delete_log)})}};return o}(document,window,jQuery)).init()},960:()=>{window.WPCodePlugins=window.WPCodePlugins||function(e,t,n){const o={l18n:t.wpcode,init:function(){o.should_init()&&o.init_install()},should_init:()=>(o.$install_buttons=n(".wpcode-button-install-plugin"),o.$install_buttons.length>0),init_install(){o.$install_buttons.on("click",function(e){e.preventDefault();const t=n(this);o.install_plugin(t)})},install_plugin(e){const i=e.data("slug");i&&(o.show_button_spinner(e),n.post(ajaxurl,{action:"wpcode_install_plugin",slug:i,_wpnonce:wpcode.nonce,multisite:o.l18n.multisite},function(i){if(i.success)t.location.reload();else if(o.hide_button_spinner(e),i.data.message){const e="<div class='excl-mark'>!</div>";n.confirm({title:!1,content:e+i.data.message,type:"blue",buttons:{ok:{text:o.l18n.ok,btnClass:"wpcode-btn-confirm",action:function(){}}}})}}))},show_button_spinner(e){t.WPCodeSpinner.show_button_spinner(e)},hide_button_spinner(e){t.WPCodeSpinner.hide_button_spinner(e)}};return o}(document,window,jQuery),WPCodePlugins.init()},967:()=>{(window.WPCodeAdminSettings||function(e,t,n){const o={init:function(){o.should_init()&&(o.init_auto_height_toggle(),o.init_select2())},should_init:()=>n("body").hasClass("wpcode-settings"),init_auto_height_toggle(){const e=n("#editor_height_auto"),t=n("#wpcode-editor-height");e.on("change",function(){n(this).is(":checked")?t.prop("disabled",!0):t.prop("disabled",!1)})},init_select2(){n(".wpcode-select2").selectWoo()}};return o}(document,window,jQuery)).init()},990:()=>{"use strict";"function"!=typeof Object.assign&&(Object.assign=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(!e)throw TypeError("Cannot convert undefined or null to object");for(var o=function(t){t&&Object.keys(t).forEach(function(n){return e[n]=t[n]})},i=0,s=t;i<s.length;i++)o(s[i]);return e})}},t={};function n(o){var i=t[o];if(void 0!==i)return i.exports;var s=t[o]={exports:{}};return e[o].call(s.exports,s,s.exports,n),s.exports}(()=>{"use strict";n(350),n(75),n(474),n(145),n(632);const e=window.WPCodeSnippetManager||function(e,t,n){const o={editor_id:"wpcode_snippet_code",unload_set:!1,icon_lock:'<svg width="22" height="28" viewBox="0 0 22 28" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M19 9.33333H17.6666V6.66667C17.6666 2.98667 14.68 0 11 0C7.31998 0 4.33331 2.98667 4.33331 6.66667V9.33333H2.99998C1.53331 9.33333 0.333313 10.5333 0.333313 12V25.3333C0.333313 26.8 1.53331 28 2.99998 28H19C20.4666 28 21.6666 26.8 21.6666 25.3333V12C21.6666 10.5333 20.4666 9.33333 19 9.33333ZM6.99998 6.66667C6.99998 4.45333 8.78665 2.66667 11 2.66667C13.2133 2.66667 15 4.45333 15 6.66667V9.33333H6.99998V6.66667ZM19 25.3333H2.99998V12H19V25.3333ZM11 21.3333C12.4666 21.3333 13.6666 20.1333 13.6666 18.6667C13.6666 17.2 12.4666 16 11 16C9.53331 16 8.33331 17.2 8.33331 18.6667C8.33331 20.1333 9.53331 21.3333 11 21.3333Z" fill="#8A8A8A"/></svg>',l10n:wpcode,saving_height:!1,init:function(){o.should_init()&&(t.WPCodeSnippetManager=o,o.find_elements(),o.init_location_picker(),o.init_location_click(),o.prevent_multi_button_click(),o.init_snippet_type_switcher(),o.init_auto_insert_toggle(),o.init_dynamic_hide(),o.init_copy_target(),o.init_tags_picker(),o.init_metabox_toggler(),o.init_select2(),o.init_tinymce_listener(),o.unload_change_listener(),o.init_save_to_library(),o.init_custom_shortcode(),o.init_conditional_logic_notice(),o.init_device_type(),o.init_datetime_lite(),o.init_shortcode_attributes(),o.update_smart_tags_attributes(),o.restore_cursor_position(),o.maybe_highlight_error_line(),o.init_load_as_file(),o.init_compress_output(),o.init_edit_lock(),o.editor_resizer(),o.init_ai_button(),o.keyboard_shortcuts(),o.update_available_locations(o.switcher.val(),!1))},should_init:function(){return null!==e.getElementById(o.editor_id)},find_elements(){o.location_dropdown=n("#wpcode_auto_insert_location"),o.switcher=n(e.getElementById("wpcode_snippet_type")),o.$body=n("body"),o.$text_editor="undefined"!=typeof tinymce&&tinymce.get("wpcode_snippet_text"),o.$selected_location_display=n("#wpcode-selected-location-display"),o.code_type=o.switcher.val()},init_snippet_type_switcher:function(){o.switcher.on("change",function(){let e=o.switcher.val();if(n(this).find(":selected").hasClass("wpcode-pro"))return o.switcher.val(o.code_type),void("scss"===e?o.show_pro_notice(o.l10n.scss_title,o.l10n.scss_text,o.l10n.scss_url,o.l10n.scss_button).then(function(){WPCodeCodeTypePicker.showPicker()}):"blocks"===e&&o.show_pro_notice(o.l10n.blocks_title,o.l10n.blocks_text,o.l10n.blocks_url,o.l10n.blocks_button).then(function(){WPCodeCodeTypePicker.showPicker()}));if(o.set_before_unload(),t.WPCodeAdminCodeEditor.switch_code_mode(o.editor_id,n(this).val(),n(this).find(":selected").data("mode"),n(this).find(":selected").data("lint")),o.$body.removeClass("wpcode-code-type-"+o.code_type),o.$body.addClass("wpcode-code-type-"+n(this).val()),"text"===o.switcher.val()){const e=t.WPCodeAdminCodeEditor.get_value(o.editor_id);o.$text_editor?o.$text_editor.setContent(e):n("#wpcode_snippet_text").val(e)}else t.WPCodeAdminCodeEditor.refresh(o.editor_id);const i=o.switcher.val();"php"!==o.code_type&&"php"!==i||o.update_available_locations(i),o.switcher.data("previous-type",o.code_type),o.code_type=i})},update_available_locations(e,t=!0){const i=o.location_dropdown.find(".wpcode-list-item");i.removeClass("wpcode-list-item-disabled"),i.find('input[type="radio"]').prop("disabled",!1);const s=i.filter(function(){const t=n(this).data("code-type");return"all"!==t&&e!==t});if(s.length>0&&(s.addClass("wpcode-list-item-disabled"),s.find('input[type="radio"]').prop("disabled",!0)),o.location_dropdown.find(".wpcode-items-list-category").each(function(){const e=n(this).find(".wpcode-list-item");e.sort(function(e,t){return n(e).data("index")-n(t).data("index")}),n(this).html(e)}),s.detach().appendTo(o.location_dropdown.find(".wpcode-items-list-category")),t){const e=o.location_dropdown.find(".wpcode-list-item:not(.wpcode-list-item-disabled):not(.wpcode-list-item-separator)").first();e.length>0&&e.find('input[type="radio"]').prop("checked",!0).trigger("change")}},init_location_picker:function(){o.location_dropdown.on("keydown",".wpcode-list-item-location",function(e){if("Enter"===e.key||" "===e.key){const e=n(this).find('input[type="radio"]');e.prop("disabled")||(e.prop("checked",!0).trigger("change"),o.$selected_location_display.focus())}}),o.location_dropdown.on("change",'input[type="radio"]',function(e){o.location_dropdown.find(".wpcode-list-item").removeClass("wpcode-list-item-selected");const t=n(this).closest(".wpcode-list-item");t.addClass("wpcode-list-item-selected"),o.$selected_location_display.text(t.find(".wpcode-list-item-title").attr("title")),o.location_dropdown.is(":visible")&&o.close_location_dropdown()})},prevent_multi_button_click:function(){n('#wpcode-snippet-manager-form .wpcode-button[type="submit"]').click(function(e){return!e.detail||1==e.detail})},init_location_click:function(){o.location_dropdown.hide(),n("body").on("click",".wpcode-list-item",function(e){const t=n(this).find("label").first();t.data("upgrade-title")&&o.show_pro_notice(t.data("upgrade-title"),t.data("upgrade-text"),t.data("upgrade-link"),t.data("upgrade-button"))}),o.$selected_location_display.on("click, focus",function(){o.location_dropdown.slideDown(200,function(){o.init_dropdown_close()}),o.scroll_to_location_dropdown()})},init_dropdown_close:function(){n(e).on("click.wpcodelocation",function(e){n(e.target).closest("#wpcode_auto_insert_location").length||n(e.target).closest(".jconfirm-box").length||o.close_location_dropdown()})},close_location_dropdown:function(){o.location_dropdown.hide(),n(e).off("click.wpcodelocation"),o.scroll_to_location_dropdown(300),o.$selected_location_display.blur()},scroll_to_location_dropdown:function(e=100){const t=o.$selected_location_display.offset();t&&n("html, body").animate({scrollTop:t.top-e},200)},init_auto_insert_toggle:function(){const t={toggles:"",init:function(){t.toggles=n(e.querySelectorAll(".wpcode-button-toggle")),t.listen_to_switch()},listen_to_switch:function(){t.toggles.each(function(){const e=n(this).find(".wpcode-button-toggle-input");n(this).on("click",".wpcode-button",function(i){i.preventDefault(),o.set_before_unload(),e.val(n(this).val()).change(),t.make_button_active(n(this))})})},make_button_active:function(e){e.closest(".wpcode-button-toggle").find(".wpcode-button").each(function(){e.is(n(this))?n(this).removeClass("wpcode-button-secondary-inactive"):n(this).addClass("wpcode-button-secondary-inactive")})}};t.init()},init_dynamic_hide:function(){const e={init:function(){e.elements=n("[data-show-if-id]"),e.add_listeners()},add_listeners:function(){e.elements.each(function(){const t=n(this),o=t.data("show-if-id");if(""===o)return;let i=!1,s=String(t.data("show-if-value")).split(",");t.data("hide-if-value")&&(s=String(t.data("hide-if-value")).split(","),i=!0);const r=n(o);n(".wpcode-admin-page #wpbody-content").on("change",o,function(){e.maybe_hide(n(this),t,s,i)}),e.maybe_hide(r,t,s,i)})},maybe_hide:function(e,t,n,i){let s=String(e.val());if("checkbox"===e.attr("type")&&(s=e.prop("checked")?"1":"0"),"radio"===e.attr("type")&&(s=e.closest("form").find('input[name="'+e.attr("name")+'"]:checked').val()),i){if(n.indexOf(s)>=0)return void t.hide();t.show(),t.find(".wpcode-select2").length>0&&o.init_select2()}else n.indexOf(s)<0?t.hide():(t.show(),t.find(".wpcode-select2").length>0&&o.init_select2())}};e.init()},init_copy_target:function(){n(".wpcode-copy-target").on("click",function(e){e.preventDefault();const t=n(this),o=t.data("target"),i=t.data("prefix"),s=t.data("suffix"),r=n(o).val();r&&(navigator.clipboard.writeText(i+r+s),t.addClass("wpcode-show-success-icon"),setTimeout(function(){t.removeClass("wpcode-show-success-icon")},500))})},init_select2:function(){n(".wpcode-select2").selectWoo({templateResult:function(e){const t=n(e.element),o=t.data("label-pill"),i=t.data("upgrade-title"),s=t.data("upgrade-text"),r=t.data("upgrade-link"),a=t.data("upgrade-button"),c=n('<span class="wpcode-pro-pill">'+o+"</span>");return""!==i&&c.attr("data-upgrade-title",i),""!==s&&c.attr("data-upgrade-text",s),""!==r&&c.attr("data-upgrade-link",r),""!==a&&c.attr("data-upgrade-button",a),void 0!==o&&""!==o?((e=n("<span>"+e.text+"</span>")).append(c),e):e.text}}),n("body").on("click",".select2-results__options",function(e){const t=n(this).closest(".select2-results__option").find(".wpcode-pro-pill");t.length>0&&o.show_pro_notice(t.data("upgrade-title"),t.data("upgrade-text"),t.data("upgrade-link"),t.data("upgrade-button"))})},init_tags_picker:function(){const e=n(".wpcode-tags-picker");e.selectWoo({tags:!0,ajax:{url:ajaxurl,data:function(e){return{action:"ajax-tag-search",tax:"wpcode_tags",q:e.term?e.term:""}},processResults:function(e){const t=e.split(","),n=[];return t.forEach(function(e){""!==e&&n.push({id:e,text:e})}),{results:n}}}}),e.on("change",function(){o.set_before_unload();const e=n(this).data("target");n(e).val(n(this).val().join(","))})},init_metabox_toggler:function(){n(".wpcode-metabox-title").on("click",function(){n(this).parent().toggleClass("wpcode-metabox-collapsed")})},init_tinymce_listener(){if(null===o.$text_editor)return o.$text_editor=tinymce.get("wpcode_snippet_text"),void setTimeout(o.init_tinymce_listener,100);!1!==o.$text_editor?o.$text_editor.on("Paste Change input Undo Redo",function(){o.set_before_unload(),clearTimeout(o.editor_change_handler),o.editor_change_handler=setTimeout(function(){t.WPCodeAdminCodeEditor.set_value(o.editor_id,o.$text_editor.getContent())},100)}):n("#wpcode_snippet_text").on("paste change input",function(){o.set_before_unload(),clearTimeout(o.editor_change_handler),o.editor_change_handler=setTimeout(function(){t.WPCodeAdminCodeEditor.set_value(o.editor_id,n("#wpcode_snippet_text").val())},100)})},set_before_unload(){o.unload_set||(o.unload_set=!0,o.catch_unsaved_button=!0,n(t).on("beforeunload",function(){return"Are you sure?"}))},unload_change_listener(){const e=t.WPCodeAdminCodeEditor.get_editor(o.editor_id);e&&e.on("change",function(){o.set_before_unload()});const i=n("#wpcode-snippet-manager-form");i.on("change","input, select",function(){o.set_before_unload()}),i.on("submit",function(){n(t).off("beforeunload"),o.save_cursor_position()})},save_cursor_position(){const e=t.WPCodeAdminCodeEditor.get_editor(o.editor_id);e&&(o.cursor_position=e.getCursor(),localStorage.setItem("wpcode_cursor_position",JSON.stringify(o.cursor_position)),localStorage.setItem("wpcode_scroll_position",JSON.stringify(e.getScrollInfo())))},restore_cursor_position(){const e=localStorage.getItem("wpcode_cursor_position");if(e){const n=JSON.parse(e),i=localStorage.getItem("wpcode_scroll_position");localStorage.removeItem("wpcode_cursor_position");const s=t.WPCodeAdminCodeEditor.get_editor(o.editor_id);if(s&&(s.focus(),s.setCursor(n),i)){const e=JSON.parse(i);s.scrollTo(e.left,e.top)}}},init_save_to_library(){n("#wpcode_save_to_library").click(function(e){e.preventDefault(),o.show_pro_notice(o.l10n.save_to_library_title,o.l10n.save_to_library_text,o.l10n.save_to_library_url)})},init_custom_shortcode(){n("#wpcode-custom-shortcode-lite").click(function(e){e.preventDefault(),o.show_pro_notice(o.l10n.shortcode_title,o.l10n.shortcode_text,o.l10n.shortcode_url)})},init_datetime_lite(){n(".wpcode-input-datetime[readonly]").click(function(e){e.preventDefault(),o.show_pro_notice(o.l10n.datetime_title,o.l10n.datetime_text,o.l10n.datetime_url)})},init_device_type(){n(".wpcode-device-type-picker-lite label").click(function(e){e.preventDefault(),o.show_pro_notice(o.l10n.device_title,o.l10n.device_text,o.l10n.device_url)})},init_load_as_file(){n("#wpcode_snippet_as_file_option #wpcode_snippet_as_file").on("change",function(e){e.preventDefault(),n(this).prop("checked",!1),o.show_pro_notice(o.l10n.laf_title,o.l10n.laf_text,o.l10n.laf_url)})},init_compress_output(){n("#wpcode_compress_output_option #wpcode_compress_output").on("change",function(e){e.preventDefault(),n(this).prop("checked",!1),o.show_pro_notice(o.l10n.co_title,o.l10n.co_text,o.l10n.co_url)})},show_pro_notice:(e,t,n,o)=>WPCodeAdminNotices.show_pro_notice(e,t,n,o),init_conditional_logic_notice(){n("#wpcode-conditions-holder").on("change",".wpcode-cl-rule-type",function(e){const t=n(this).find(":selected");if(t.data("upgrade-title")){e.stopPropagation(),o.show_pro_notice(t.data("upgrade-title"),t.data("upgrade-text"),t.data("upgrade-link"),t.data("upgrade-button"));const i=n(this).find("option").first();n(this).val(i.attr("value")).trigger("change")}})},init_shortcode_attributes(){const e=n("#wpcode-shortcode-attributes-list ul"),t=n("#wpcode-shortcode-attribute-name"),i=n("#wpcode_shortcode_attribute_list_item_template").html();n("#wpcode_add_attribute").on("click",function(s){s.preventDefault();const r=o.sanitize_key(t.val());if(""===r)return;const a=n(i);a.find(".wpcode-shortcode-attribute-name").text(r),a.find(".wpcode-shortcode-attribute-item-input").val(r),e.append(a),t.val(""),o.update_smart_tags_attributes()}),e.on("click",".wpcode-shortcode-attribute-remove",function(e){e.preventDefault(),n(this).closest("li").remove(),o.update_smart_tags_attributes()})},sanitize_key:e=>e.replace(/[^a-z0-9_]/gi,"").toLowerCase(),update_smart_tags_attributes(){const e=n(".wpcode-shortcode-attribute-item-input"),t=n(".wpcode-smart-tags-dropdown"),i=t.find(".wpcode-smart-tags-list");if(t.find(".wpcode-attribute-smart-tag").remove(),e.length>0){let t=i.find(".wpcode-attributes-category");0===t.length&&(i.append('<ul class="wpcode-smart-tags-category wpcode-attributes-category"></ul>'),t=i.find(".wpcode-attributes-category")),t.append('<li class="wpcode-attribute-smart-tag wpcode-smart-tag-category-label">'+o.l10n.shortcode_attributes+"</li>"),e.each(function(){const e=n(this).val();t.append('<li class="wpcode-attribute-smart-tag"><button class="wpcode-insert-smart-tag" data-tag="{attr_'+e+'}" type="button"><code>{attr_'+e+"}</code> - "+e+"</button></li>")})}},maybe_highlight_error_line(){if(o.l10n.error_line<=0)return;const t=wpcode_editor[o.editor_id].codemirror;var n;t.doc.setGutterMarker(o.l10n.error_line-1,"CodeMirror-lint-markers",((n=e.createElement("div")).innerHTML='<div class="wpcode-line-error-icon"></div>',n.setAttribute("title",o.l10n.error_line_message),n)),t.doc.addLineClass(o.l10n.error_line-1,"background","wpcode-line-error-code")},init_edit_lock(){n(e).on("heartbeat-send.refresh-lock",function(e,t){t.wpcode_lock=o.l10n.snippet_id}),o.l10n.is_locked&&o.show_locked_message(o.l10n.locked_by)},show_locked_message(e){const t=WPCodeSVG.WPCodeIcon("lock",22,28,"0 0 22 28","iconId");n.confirm({title:t+o.l10n.edited+e,boxWidth:"560px",theme:"modern no-content",type:"blue",buttons:{ok:{text:o.l10n.ok,btnClass:"wpcode-btn-confirm",action:function(){}}}})},editor_resizer(){let n=e.querySelector(".wpcode-resize-handle"),i=e.querySelector(".wpcode-code-textarea"),s=0;const r=t.WPCodeAdminCodeEditor.get_editor(o.editor_id);var a,c;function l(e){s=Math.max(200,c+e.y-a)+"px",r.setSize(null,s)}function d(n){e.body.removeEventListener("mousemove",l),t.removeEventListener("mouseup",d),i.classList.remove("wpcode-resizing"),o.save_editor_height(s)}n.addEventListener("mousedown",function(n){var o;n.x,a=n.y,o=i,c=parseInt(t.getComputedStyle(o).height.replace(/px$/,"")),i.classList.add("wpcode-resizing"),e.body.addEventListener("mousemove",l),t.addEventListener("mouseup",d)})},save_editor_height(e){o.saving_height&&o.saving_height.abort(),o.saving_height=n.post(ajaxurl,{action:"wpcode_save_editor_height",height:e,_wpnonce:o.l10n.nonce})},init_ai_button(){n(".wpcode-button-ai-not-available").on("click",function(e){e.preventDefault(),e.stopPropagation(),WPCodeAdminNotices.show_pro_notice(o.l10n.ai_improve_title,o.l10n.ai_text,o.l10n.ai_improve_url,o.l10n.ai_button)})},keyboard_shortcuts(){var i={};n(e).on("keydown",function(e){var t=/Mac/.test(navigator.userAgent),n=!t&&e.ctrlKey,o=t&&e.metaKey;if(n||o){var s=String.fromCharCode(e.which).toUpperCase();i.hasOwnProperty(s)&&(e.preventDefault(),i[s](e))}});const s=t.WPCodeAdminCodeEditor.get_editor(o.editor_id);var r;r=function(e){s.hasFocus()&&n("#wpcode-snippet-manager-form").submit()},i["S".toUpperCase()]=r}};return o}(document,window,jQuery);jQuery(function(){e.init()}),n(18);var t=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],o={_disable:[],allowInput:!1,allowInvalidPreload:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:"object"==typeof window&&-1===window.navigator.userAgent.indexOf("MSIE"),ariaDateFormat:"F j, Y",autoFillDefaultTime:!0,clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enableSeconds:!1,enableTime:!1,errorHandler:function(e){return"undefined"!=typeof console&&console.warn(e)},getWeek:function(e){var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var n=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-n.getTime())/864e5-3+(n.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},i={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",monthAriaLabel:"Month",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1};const s=i;var r=function(e,t){return void 0===t&&(t=2),("000"+e).slice(-1*t)},a=function(e){return!0===e?1:0};function c(e,t){var n;return function(){var o=this,i=arguments;clearTimeout(n),n=setTimeout(function(){return e.apply(o,i)},t)}}var l=function(e){return e instanceof Array?e:[e]};function d(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function u(e,t,n){var o=window.document.createElement(e);return t=t||"",n=n||"",o.className=t,void 0!==n&&(o.textContent=n),o}function p(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function h(e,t){return t(e)?e:e.parentNode?h(e.parentNode,t):void 0}function f(e,t){var n=u("div","numInputWrapper"),o=u("input","numInput "+e),i=u("span","arrowUp"),s=u("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?o.type="number":(o.type="text",o.pattern="\\d*"),void 0!==t)for(var r in t)o.setAttribute(r,t[r]);return n.appendChild(o),n.appendChild(i),n.appendChild(s),n}function m(e){try{return"function"==typeof e.composedPath?e.composedPath()[0]:e.target}catch(t){return e.target}}var g=function(){},_=function(e,t,n){return n.months[t?"shorthand":"longhand"][e]},v={D:g,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*a(new RegExp(n.amPM[1],"i").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var o=parseInt(t),i=new Date(e.getFullYear(),0,2+7*(o-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+n.firstDayOfWeek),i},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours((e.getHours()>=12?12:0)+parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:g,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:g,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},w={D:"",F:"",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},y={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[y.w(e,t,n)]},F:function(e,t,n){return _(y.n(e,t,n)-1,!1,t)},G:function(e,t,n){return r(y.h(e,t,n))},H:function(e){return r(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[a(e.getHours()>11)]},M:function(e,t){return _(e.getMonth(),!0,t)},S:function(e){return r(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return r(e.getFullYear(),4)},d:function(e){return r(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return r(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return r(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},b=function(e){var t=e.config,n=void 0===t?o:t,s=e.l10n,r=void 0===s?i:s,a=e.isMobile,c=void 0!==a&&a;return function(e,t,o){var i=o||r;return void 0===n.formatDate||c?t.split("").map(function(t,o,s){return y[t]&&"\\"!==s[o-1]?y[t](e,i,n):"\\"!==t?t:""}).join(""):n.formatDate(e,t,i)}},C=function(e){var t=e.config,n=void 0===t?o:t,s=e.l10n,r=void 0===s?i:s;return function(e,t,i,s){if(0===e||e){var a,c=s||r,l=e;if(e instanceof Date)a=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)a=new Date(e);else if("string"==typeof e){var d=t||(n||o).dateFormat,u=String(e).trim();if("today"===u)a=new Date,i=!0;else if(n&&n.parseDate)a=n.parseDate(e,d);else if(/Z$/.test(u)||/GMT$/.test(u))a=new Date(e);else{for(var p=void 0,h=[],f=0,m=0,g="";f<d.length;f++){var _=d[f],y="\\"===_,b="\\"===d[f-1]||y;if(w[_]&&!b){g+=w[_];var C=new RegExp(g).exec(e);C&&(p=!0)&&h["Y"!==_?"push":"unshift"]({fn:v[_],val:C[++m]})}else y||(g+=".")}a=n&&n.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0),h.forEach(function(e){var t=e.fn,n=e.val;return a=t(a,n,c)||a}),a=p?a:void 0}}if(a instanceof Date&&!isNaN(a.getTime()))return!0===i&&a.setHours(0,0,0,0),a;n.errorHandler(new Error("Invalid date provided: "+l))}}};function x(e,t,n){return void 0===n&&(n=!0),!1!==n?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()}var D=function(e,t,n){return 3600*e+60*t+n};function k(e){var t=e.defaultHour,n=e.defaultMinute,o=e.defaultSeconds;if(void 0!==e.minDate){var i=e.minDate.getHours(),s=e.minDate.getMinutes(),r=e.minDate.getSeconds();t<i&&(t=i),t===i&&n<s&&(n=s),t===i&&n===s&&o<r&&(o=e.minDate.getSeconds())}if(void 0!==e.maxDate){var a=e.maxDate.getHours(),c=e.maxDate.getMinutes();(t=Math.min(t,a))===a&&(n=Math.min(c,n)),t===a&&n===c&&(o=e.maxDate.getSeconds())}return{hours:t,minutes:n,seconds:o}}n(990);var $=function(){return $=Object.assign||function(e){for(var t,n=1,o=arguments.length;n<o;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e},$.apply(this,arguments)},j=function(){for(var e=0,t=0,n=arguments.length;t<n;t++)e+=arguments[t].length;var o=Array(e),i=0;for(t=0;t<n;t++)for(var s=arguments[t],r=0,a=s.length;r<a;r++,i++)o[i]=s[r];return o};function A(e,n){var i={config:$($({},o),E.defaultConfig),l10n:s};function g(){var e;return(null===(e=i.calendarContainer)||void 0===e?void 0:e.getRootNode()).activeElement||document.activeElement}function v(e){return e.bind(i)}function y(){var e=i.config;!1===e.weekNumbers&&1===e.showMonths||!0!==e.noCalendar&&window.requestAnimationFrame(function(){if(void 0!==i.calendarContainer&&(i.calendarContainer.style.visibility="hidden",i.calendarContainer.style.display="block"),void 0!==i.daysContainer){var t=(i.days.offsetWidth+1)*e.showMonths;i.daysContainer.style.width=t+"px",i.calendarContainer.style.width=t+(void 0!==i.weekWrapper?i.weekWrapper.offsetWidth:0)+"px",i.calendarContainer.style.removeProperty("visibility"),i.calendarContainer.style.removeProperty("display")}})}function A(e){if(0===i.selectedDates.length){var t=void 0===i.config.minDate||x(new Date,i.config.minDate)>=0?new Date:new Date(i.config.minDate.getTime()),n=k(i.config);t.setHours(n.hours,n.minutes,n.seconds,t.getMilliseconds()),i.selectedDates=[t],i.latestSelectedDateObj=t}void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var t="keydown"===e.type,n=m(e),o=n;void 0!==i.amPM&&n===i.amPM&&(i.amPM.textContent=i.l10n.amPM[a(i.amPM.textContent===i.l10n.amPM[0])]);var s=parseFloat(o.getAttribute("min")),c=parseFloat(o.getAttribute("max")),l=parseFloat(o.getAttribute("step")),d=parseInt(o.value,10),u=d+l*(e.delta||(t?38===e.which?1:-1:0));if(void 0!==o.value&&2===o.value.length){var p=o===i.hourElement,h=o===i.minuteElement;u<s?(u=c+u+a(!p)+(a(p)&&a(!i.amPM)),h&&H(void 0,-1,i.hourElement)):u>c&&(u=o===i.hourElement?u-c-a(!i.amPM):s,h&&H(void 0,1,i.hourElement)),i.amPM&&p&&(1===l?u+d===23:Math.abs(u-d)>l)&&(i.amPM.textContent=i.l10n.amPM[a(i.amPM.textContent===i.l10n.amPM[0])]),o.value=r(u)}}(e);var o=i._input.value;M(),Ce(),i._input.value!==o&&i._debouncedChange()}function M(){if(void 0!==i.hourElement&&void 0!==i.minuteElement){var e,t,n=(parseInt(i.hourElement.value.slice(-2),10)||0)%24,o=(parseInt(i.minuteElement.value,10)||0)%60,s=void 0!==i.secondElement?(parseInt(i.secondElement.value,10)||0)%60:0;void 0!==i.amPM&&(e=n,t=i.amPM.textContent,n=e%12+12*a(t===i.l10n.amPM[1]));var r=void 0!==i.config.minTime||i.config.minDate&&i.minDateHasTime&&i.latestSelectedDateObj&&0===x(i.latestSelectedDateObj,i.config.minDate,!0),c=void 0!==i.config.maxTime||i.config.maxDate&&i.maxDateHasTime&&i.latestSelectedDateObj&&0===x(i.latestSelectedDateObj,i.config.maxDate,!0);if(void 0!==i.config.maxTime&&void 0!==i.config.minTime&&i.config.minTime>i.config.maxTime){var l=D(i.config.minTime.getHours(),i.config.minTime.getMinutes(),i.config.minTime.getSeconds()),d=D(i.config.maxTime.getHours(),i.config.maxTime.getMinutes(),i.config.maxTime.getSeconds()),u=D(n,o,s);if(u>d&&u<l){var p=function(e){var t=Math.floor(e/3600),n=(e-3600*t)/60;return[t,n,e-3600*t-60*n]}(l);n=p[0],o=p[1],s=p[2]}}else{if(c){var h=void 0!==i.config.maxTime?i.config.maxTime:i.config.maxDate;(n=Math.min(n,h.getHours()))===h.getHours()&&(o=Math.min(o,h.getMinutes())),o===h.getMinutes()&&(s=Math.min(s,h.getSeconds()))}if(r){var f=void 0!==i.config.minTime?i.config.minTime:i.config.minDate;(n=Math.max(n,f.getHours()))===f.getHours()&&o<f.getMinutes()&&(o=f.getMinutes()),o===f.getMinutes()&&(s=Math.max(s,f.getSeconds()))}}T(n,o,s)}}function P(e){var t=e||i.latestSelectedDateObj;t&&t instanceof Date&&T(t.getHours(),t.getMinutes(),t.getSeconds())}function T(e,t,n){void 0!==i.latestSelectedDateObj&&i.latestSelectedDateObj.setHours(e%24,t,n||0,0),i.hourElement&&i.minuteElement&&!i.isMobile&&(i.hourElement.value=r(i.config.time_24hr?e:(12+e)%12+12*a(e%12==0)),i.minuteElement.value=r(t),void 0!==i.amPM&&(i.amPM.textContent=i.l10n.amPM[a(e>=12)]),void 0!==i.secondElement&&(i.secondElement.value=r(n)))}function S(e){var t=m(e),n=parseInt(t.value)+(e.delta||0);(n/1e3>1||"Enter"===e.key&&!/[^\d]/.test(n.toString()))&&X(n)}function O(e,t,n,o){return t instanceof Array?t.forEach(function(t){return O(e,t,n,o)}):e instanceof Array?e.forEach(function(e){return O(e,t,n,o)}):(e.addEventListener(t,n,o),void i._handlers.push({remove:function(){return e.removeEventListener(t,n,o)}}))}function I(){_e("onChange")}function L(e,t){var n=void 0!==e?i.parseDate(e):i.latestSelectedDateObj||(i.config.minDate&&i.config.minDate>i.now?i.config.minDate:i.config.maxDate&&i.config.maxDate<i.now?i.config.maxDate:i.now),o=i.currentYear,s=i.currentMonth;try{void 0!==n&&(i.currentYear=n.getFullYear(),i.currentMonth=n.getMonth())}catch(e){e.message="Invalid date supplied: "+n,i.config.errorHandler(e)}t&&i.currentYear!==o&&(_e("onYearChange"),z()),!t||i.currentYear===o&&i.currentMonth===s||_e("onMonthChange"),i.redraw()}function W(e){var t=m(e);~t.className.indexOf("arrow")&&H(e,t.classList.contains("arrowUp")?1:-1)}function H(e,t,n){var o=e&&m(e),i=n||o&&o.parentNode&&o.parentNode.firstChild,s=ve("increment");s.delta=t,i&&i.dispatchEvent(s)}function N(e,t,n,o){var s=ee(t,!0),r=u("span",e,t.getDate().toString());return r.dateObj=t,r.$i=o,r.setAttribute("aria-label",i.formatDate(t,i.config.ariaDateFormat)),-1===e.indexOf("hidden")&&0===x(t,i.now)&&(i.todayDateElem=r,r.classList.add("today"),r.setAttribute("aria-current","date")),s?(r.tabIndex=-1,we(t)&&(r.classList.add("selected"),i.selectedDateElem=r,"range"===i.config.mode&&(d(r,"startRange",i.selectedDates[0]&&0===x(t,i.selectedDates[0],!0)),d(r,"endRange",i.selectedDates[1]&&0===x(t,i.selectedDates[1],!0)),"nextMonthDay"===e&&r.classList.add("inRange")))):r.classList.add("flatpickr-disabled"),"range"===i.config.mode&&function(e){return!("range"!==i.config.mode||i.selectedDates.length<2)&&x(e,i.selectedDates[0])>=0&&x(e,i.selectedDates[1])<=0}(t)&&!we(t)&&r.classList.add("inRange"),i.weekNumbers&&1===i.config.showMonths&&"prevMonthDay"!==e&&o%7==6&&i.weekNumbers.insertAdjacentHTML("beforeend","<span class='flatpickr-day'>"+i.config.getWeek(t)+"</span>"),_e("onDayCreate",r),r}function F(e){e.focus(),"range"===i.config.mode&&ie(e)}function Y(e){for(var t=e>0?0:i.config.showMonths-1,n=e>0?i.config.showMonths:-1,o=t;o!=n;o+=e)for(var s=i.daysContainer.children[o],r=e>0?0:s.children.length-1,a=e>0?s.children.length:-1,c=r;c!=a;c+=e){var l=s.children[c];if(-1===l.className.indexOf("hidden")&&ee(l.dateObj))return l}}function B(e,t){var n=g(),o=te(n||document.body),s=void 0!==e?e:o?n:void 0!==i.selectedDateElem&&te(i.selectedDateElem)?i.selectedDateElem:void 0!==i.todayDateElem&&te(i.todayDateElem)?i.todayDateElem:Y(t>0?1:-1);void 0===s?i._input.focus():o?function(e,t){for(var n=-1===e.className.indexOf("Month")?e.dateObj.getMonth():i.currentMonth,o=t>0?i.config.showMonths:-1,s=t>0?1:-1,r=n-i.currentMonth;r!=o;r+=s)for(var a=i.daysContainer.children[r],c=n-i.currentMonth===r?e.$i+t:t<0?a.children.length-1:0,l=a.children.length,d=c;d>=0&&d<l&&d!=(t>0?l:-1);d+=s){var u=a.children[d];if(-1===u.className.indexOf("hidden")&&ee(u.dateObj)&&Math.abs(e.$i-d)>=Math.abs(t))return F(u)}i.changeMonth(s),B(Y(s),0)}(s,t):F(s)}function q(e,t){for(var n=(new Date(e,t,1).getDay()-i.l10n.firstDayOfWeek+7)%7,o=i.utils.getDaysInMonth((t-1+12)%12,e),s=i.utils.getDaysInMonth(t,e),r=window.document.createDocumentFragment(),a=i.config.showMonths>1,c=a?"prevMonthDay hidden":"prevMonthDay",l=a?"nextMonthDay hidden":"nextMonthDay",d=o+1-n,p=0;d<=o;d++,p++)r.appendChild(N("flatpickr-day "+c,new Date(e,t-1,d),0,p));for(d=1;d<=s;d++,p++)r.appendChild(N("flatpickr-day",new Date(e,t,d),0,p));for(var h=s+1;h<=42-n&&(1===i.config.showMonths||p%7!=0);h++,p++)r.appendChild(N("flatpickr-day "+l,new Date(e,t+1,h%s),0,p));var f=u("div","dayContainer");return f.appendChild(r),f}function R(){if(void 0!==i.daysContainer){p(i.daysContainer),i.weekNumbers&&p(i.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t<i.config.showMonths;t++){var n=new Date(i.currentYear,i.currentMonth,1);n.setMonth(i.currentMonth+t),e.appendChild(q(n.getFullYear(),n.getMonth()))}i.daysContainer.appendChild(e),i.days=i.daysContainer.firstChild,"range"===i.config.mode&&1===i.selectedDates.length&&ie()}}function z(){if(!(i.config.showMonths>1||"dropdown"!==i.config.monthSelectorType)){var e=function(e){return!(void 0!==i.config.minDate&&i.currentYear===i.config.minDate.getFullYear()&&e<i.config.minDate.getMonth()||void 0!==i.config.maxDate&&i.currentYear===i.config.maxDate.getFullYear()&&e>i.config.maxDate.getMonth())};i.monthsDropdownContainer.tabIndex=-1,i.monthsDropdownContainer.innerHTML="";for(var t=0;t<12;t++)if(e(t)){var n=u("option","flatpickr-monthDropdown-month");n.value=new Date(i.currentYear,t).getMonth().toString(),n.textContent=_(t,i.config.shorthandCurrentMonth,i.l10n),n.tabIndex=-1,i.currentMonth===t&&(n.selected=!0),i.monthsDropdownContainer.appendChild(n)}}}function U(){var e,t=u("div","flatpickr-month"),n=window.document.createDocumentFragment();i.config.showMonths>1||"static"===i.config.monthSelectorType?e=u("span","cur-month"):(i.monthsDropdownContainer=u("select","flatpickr-monthDropdown-months"),i.monthsDropdownContainer.setAttribute("aria-label",i.l10n.monthAriaLabel),O(i.monthsDropdownContainer,"change",function(e){var t=m(e),n=parseInt(t.value,10);i.changeMonth(n-i.currentMonth),_e("onMonthChange")}),z(),e=i.monthsDropdownContainer);var o=f("cur-year",{tabindex:"-1"}),s=o.getElementsByTagName("input")[0];s.setAttribute("aria-label",i.l10n.yearAriaLabel),i.config.minDate&&s.setAttribute("min",i.config.minDate.getFullYear().toString()),i.config.maxDate&&(s.setAttribute("max",i.config.maxDate.getFullYear().toString()),s.disabled=!!i.config.minDate&&i.config.minDate.getFullYear()===i.config.maxDate.getFullYear());var r=u("div","flatpickr-current-month");return r.appendChild(e),r.appendChild(o),n.appendChild(r),t.appendChild(n),{container:t,yearElement:s,monthElement:e}}function K(){p(i.monthNav),i.monthNav.appendChild(i.prevMonthNav),i.config.showMonths&&(i.yearElements=[],i.monthElements=[]);for(var e=i.config.showMonths;e--;){var t=U();i.yearElements.push(t.yearElement),i.monthElements.push(t.monthElement),i.monthNav.appendChild(t.container)}i.monthNav.appendChild(i.nextMonthNav)}function V(){i.weekdayContainer?p(i.weekdayContainer):i.weekdayContainer=u("div","flatpickr-weekdays");for(var e=i.config.showMonths;e--;){var t=u("div","flatpickr-weekdaycontainer");i.weekdayContainer.appendChild(t)}return Q(),i.weekdayContainer}function Q(){if(i.weekdayContainer){var e=i.l10n.firstDayOfWeek,t=j(i.l10n.weekdays.shorthand);e>0&&e<t.length&&(t=j(t.splice(e,t.length),t.splice(0,e)));for(var n=i.config.showMonths;n--;)i.weekdayContainer.children[n].innerHTML="\n      <span class='flatpickr-weekday'>\n        "+t.join("</span><span class='flatpickr-weekday'>")+"\n      </span>\n      "}}function G(e,t){void 0===t&&(t=!0);var n=t?e:e-i.currentMonth;n<0&&!0===i._hidePrevMonthArrow||n>0&&!0===i._hideNextMonthArrow||(i.currentMonth+=n,(i.currentMonth<0||i.currentMonth>11)&&(i.currentYear+=i.currentMonth>11?1:-1,i.currentMonth=(i.currentMonth+12)%12,_e("onYearChange"),z()),R(),_e("onMonthChange"),ye())}function J(e){return i.calendarContainer.contains(e)}function Z(e){if(i.isOpen&&!i.config.inline){var t=m(e),n=J(t),o=!(t===i.input||t===i.altInput||i.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(i.input)||~e.path.indexOf(i.altInput))||n||J(e.relatedTarget)),s=!i.config.ignoredFocusElements.some(function(e){return e.contains(t)});o&&s&&(i.config.allowInput&&i.setDate(i._input.value,!1,i.config.altInput?i.config.altFormat:i.config.dateFormat),void 0!==i.timeContainer&&void 0!==i.minuteElement&&void 0!==i.hourElement&&""!==i.input.value&&void 0!==i.input.value&&A(),i.close(),i.config&&"range"===i.config.mode&&1===i.selectedDates.length&&i.clear(!1))}}function X(e){if(!(!e||i.config.minDate&&e<i.config.minDate.getFullYear()||i.config.maxDate&&e>i.config.maxDate.getFullYear())){var t=e,n=i.currentYear!==t;i.currentYear=t||i.currentYear,i.config.maxDate&&i.currentYear===i.config.maxDate.getFullYear()?i.currentMonth=Math.min(i.config.maxDate.getMonth(),i.currentMonth):i.config.minDate&&i.currentYear===i.config.minDate.getFullYear()&&(i.currentMonth=Math.max(i.config.minDate.getMonth(),i.currentMonth)),n&&(i.redraw(),_e("onYearChange"),z())}}function ee(e,t){var n;void 0===t&&(t=!0);var o=i.parseDate(e,void 0,t);if(i.config.minDate&&o&&x(o,i.config.minDate,void 0!==t?t:!i.minDateHasTime)<0||i.config.maxDate&&o&&x(o,i.config.maxDate,void 0!==t?t:!i.maxDateHasTime)>0)return!1;if(!i.config.enable&&0===i.config.disable.length)return!0;if(void 0===o)return!1;for(var s=!!i.config.enable,r=null!==(n=i.config.enable)&&void 0!==n?n:i.config.disable,a=0,c=void 0;a<r.length;a++){if("function"==typeof(c=r[a])&&c(o))return s;if(c instanceof Date&&void 0!==o&&c.getTime()===o.getTime())return s;if("string"==typeof c){var l=i.parseDate(c,void 0,!0);return l&&l.getTime()===o.getTime()?s:!s}if("object"==typeof c&&void 0!==o&&c.from&&c.to&&o.getTime()>=c.from.getTime()&&o.getTime()<=c.to.getTime())return s}return!s}function te(e){return void 0!==i.daysContainer&&-1===e.className.indexOf("hidden")&&-1===e.className.indexOf("flatpickr-disabled")&&i.daysContainer.contains(e)}function ne(e){var t=e.target===i._input,n=i._input.value.trimEnd()!==be();!t||!n||e.relatedTarget&&J(e.relatedTarget)||i.setDate(i._input.value,!0,e.target===i.altInput?i.config.altFormat:i.config.dateFormat)}function oe(t){var n=m(t),o=i.config.wrap?e.contains(n):n===i._input,s=i.config.allowInput,r=i.isOpen&&(!s||!o),a=i.config.inline&&o&&!s;if(13===t.keyCode&&o){if(s)return i.setDate(i._input.value,!0,n===i.altInput?i.config.altFormat:i.config.dateFormat),i.close(),n.blur();i.open()}else if(J(n)||r||a){var c=!!i.timeContainer&&i.timeContainer.contains(n);switch(t.keyCode){case 13:c?(t.preventDefault(),A(),ue()):pe(t);break;case 27:t.preventDefault(),ue();break;case 8:case 46:o&&!i.config.allowInput&&(t.preventDefault(),i.clear());break;case 37:case 39:if(c||o)i.hourElement&&i.hourElement.focus();else{t.preventDefault();var l=g();if(void 0!==i.daysContainer&&(!1===s||l&&te(l))){var d=39===t.keyCode?1:-1;t.ctrlKey?(t.stopPropagation(),G(d),B(Y(1),0)):B(void 0,d)}}break;case 38:case 40:t.preventDefault();var u=40===t.keyCode?1:-1;i.daysContainer&&void 0!==n.$i||n===i.input||n===i.altInput?t.ctrlKey?(t.stopPropagation(),X(i.currentYear-u),B(Y(1),0)):c||B(void 0,7*u):n===i.currentYearElement?X(i.currentYear-u):i.config.enableTime&&(!c&&i.hourElement&&i.hourElement.focus(),A(t),i._debouncedChange());break;case 9:if(c){var p=[i.hourElement,i.minuteElement,i.secondElement,i.amPM].concat(i.pluginElements).filter(function(e){return e}),h=p.indexOf(n);if(-1!==h){var f=p[h+(t.shiftKey?-1:1)];t.preventDefault(),(f||i._input).focus()}}else!i.config.noCalendar&&i.daysContainer&&i.daysContainer.contains(n)&&t.shiftKey&&(t.preventDefault(),i._input.focus())}}if(void 0!==i.amPM&&n===i.amPM)switch(t.key){case i.l10n.amPM[0].charAt(0):case i.l10n.amPM[0].charAt(0).toLowerCase():i.amPM.textContent=i.l10n.amPM[0],M(),Ce();break;case i.l10n.amPM[1].charAt(0):case i.l10n.amPM[1].charAt(0).toLowerCase():i.amPM.textContent=i.l10n.amPM[1],M(),Ce()}(o||J(n))&&_e("onKeyDown",t)}function ie(e,t){if(void 0===t&&(t="flatpickr-day"),1===i.selectedDates.length&&(!e||e.classList.contains(t)&&!e.classList.contains("flatpickr-disabled"))){for(var n=e?e.dateObj.getTime():i.days.firstElementChild.dateObj.getTime(),o=i.parseDate(i.selectedDates[0],void 0,!0).getTime(),s=Math.min(n,i.selectedDates[0].getTime()),r=Math.max(n,i.selectedDates[0].getTime()),a=!1,c=0,l=0,d=s;d<r;d+=864e5)ee(new Date(d),!0)||(a=a||d>s&&d<r,d<o&&(!c||d>c)?c=d:d>o&&(!l||d<l)&&(l=d));Array.from(i.rContainer.querySelectorAll("*:nth-child(-n+"+i.config.showMonths+") > ."+t)).forEach(function(t){var s,r,d,u=t.dateObj.getTime(),p=c>0&&u<c||l>0&&u>l;if(p)return t.classList.add("notAllowed"),void["inRange","startRange","endRange"].forEach(function(e){t.classList.remove(e)});a&&!p||(["startRange","inRange","endRange","notAllowed"].forEach(function(e){t.classList.remove(e)}),void 0!==e&&(e.classList.add(n<=i.selectedDates[0].getTime()?"startRange":"endRange"),o<n&&u===o?t.classList.add("startRange"):o>n&&u===o&&t.classList.add("endRange"),u>=c&&(0===l||u<=l)&&(r=o,d=n,(s=u)>Math.min(r,d)&&s<Math.max(r,d))&&t.classList.add("inRange")))})}}function se(){!i.isOpen||i.config.static||i.config.inline||le()}function re(e){return function(t){var n=i.config["_"+e+"Date"]=i.parseDate(t,i.config.dateFormat),o=i.config["_"+("min"===e?"max":"min")+"Date"];void 0!==n&&(i["min"===e?"minDateHasTime":"maxDateHasTime"]=n.getHours()>0||n.getMinutes()>0||n.getSeconds()>0),i.selectedDates&&(i.selectedDates=i.selectedDates.filter(function(e){return ee(e)}),i.selectedDates.length||"min"!==e||P(n),Ce()),i.daysContainer&&(de(),void 0!==n?i.currentYearElement[e]=n.getFullYear().toString():i.currentYearElement.removeAttribute(e),i.currentYearElement.disabled=!!o&&void 0!==n&&o.getFullYear()===n.getFullYear())}}function ae(){return i.config.wrap?e.querySelector("[data-input]"):e}function ce(){"object"!=typeof i.config.locale&&void 0===E.l10ns[i.config.locale]&&i.config.errorHandler(new Error("flatpickr: invalid locale "+i.config.locale)),i.l10n=$($({},E.l10ns.default),"object"==typeof i.config.locale?i.config.locale:"default"!==i.config.locale?E.l10ns[i.config.locale]:void 0),w.D="("+i.l10n.weekdays.shorthand.join("|")+")",w.l="("+i.l10n.weekdays.longhand.join("|")+")",w.M="("+i.l10n.months.shorthand.join("|")+")",w.F="("+i.l10n.months.longhand.join("|")+")",w.K="("+i.l10n.amPM[0]+"|"+i.l10n.amPM[1]+"|"+i.l10n.amPM[0].toLowerCase()+"|"+i.l10n.amPM[1].toLowerCase()+")",void 0===$($({},n),JSON.parse(JSON.stringify(e.dataset||{}))).time_24hr&&void 0===E.defaultConfig.time_24hr&&(i.config.time_24hr=i.l10n.time_24hr),i.formatDate=b(i),i.parseDate=C({config:i.config,l10n:i.l10n})}function le(e){if("function"!=typeof i.config.position){if(void 0!==i.calendarContainer){_e("onPreCalendarPosition");var t=e||i._positionElement,n=Array.prototype.reduce.call(i.calendarContainer.children,function(e,t){return e+t.offsetHeight},0),o=i.calendarContainer.offsetWidth,s=i.config.position.split(" "),r=s[0],a=s.length>1?s[1]:null,c=t.getBoundingClientRect(),l=window.innerHeight-c.bottom,u="above"===r||"below"!==r&&l<n&&c.top>n,p=window.pageYOffset+c.top+(u?-n-2:t.offsetHeight+2);if(d(i.calendarContainer,"arrowTop",!u),d(i.calendarContainer,"arrowBottom",u),!i.config.inline){var h=window.pageXOffset+c.left,f=!1,m=!1;"center"===a?(h-=(o-c.width)/2,f=!0):"right"===a&&(h-=o-c.width,m=!0),d(i.calendarContainer,"arrowLeft",!f&&!m),d(i.calendarContainer,"arrowCenter",f),d(i.calendarContainer,"arrowRight",m);var g=window.document.body.offsetWidth-(window.pageXOffset+c.right),_=h+o>window.document.body.offsetWidth,v=g+o>window.document.body.offsetWidth;if(d(i.calendarContainer,"rightMost",_),!i.config.static)if(i.calendarContainer.style.top=p+"px",_)if(v){var w=function(){for(var e=null,t=0;t<document.styleSheets.length;t++){var n=document.styleSheets[t];if(n.cssRules){try{n.cssRules}catch(e){continue}e=n;break}}return null!=e?e:(o=document.createElement("style"),document.head.appendChild(o),o.sheet);var o}();if(void 0===w)return;var y=window.document.body.offsetWidth,b=Math.max(0,y/2-o/2),C=w.cssRules.length,x="{left:"+c.left+"px;right:auto;}";d(i.calendarContainer,"rightMost",!1),d(i.calendarContainer,"centerMost",!0),w.insertRule(".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after"+x,C),i.calendarContainer.style.left=b+"px",i.calendarContainer.style.right="auto"}else i.calendarContainer.style.left="auto",i.calendarContainer.style.right=g+"px";else i.calendarContainer.style.left=h+"px",i.calendarContainer.style.right="auto"}}}else i.config.position(i,e)}function de(){i.config.noCalendar||i.isMobile||(z(),ye(),R())}function ue(){i._input.focus(),-1!==window.navigator.userAgent.indexOf("MSIE")||void 0!==navigator.msMaxTouchPoints?setTimeout(i.close,0):i.close()}function pe(e){e.preventDefault(),e.stopPropagation();var t=h(m(e),function(e){return e.classList&&e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled")&&!e.classList.contains("notAllowed")});if(void 0!==t){var n=t,o=i.latestSelectedDateObj=new Date(n.dateObj.getTime()),s=(o.getMonth()<i.currentMonth||o.getMonth()>i.currentMonth+i.config.showMonths-1)&&"range"!==i.config.mode;if(i.selectedDateElem=n,"single"===i.config.mode)i.selectedDates=[o];else if("multiple"===i.config.mode){var r=we(o);r?i.selectedDates.splice(parseInt(r),1):i.selectedDates.push(o)}else"range"===i.config.mode&&(2===i.selectedDates.length&&i.clear(!1,!1),i.latestSelectedDateObj=o,i.selectedDates.push(o),0!==x(o,i.selectedDates[0],!0)&&i.selectedDates.sort(function(e,t){return e.getTime()-t.getTime()}));if(M(),s){var a=i.currentYear!==o.getFullYear();i.currentYear=o.getFullYear(),i.currentMonth=o.getMonth(),a&&(_e("onYearChange"),z()),_e("onMonthChange")}if(ye(),R(),Ce(),s||"range"===i.config.mode||1!==i.config.showMonths?void 0!==i.selectedDateElem&&void 0===i.hourElement&&i.selectedDateElem&&i.selectedDateElem.focus():F(n),void 0!==i.hourElement&&void 0!==i.hourElement&&i.hourElement.focus(),i.config.closeOnSelect){var c="single"===i.config.mode&&!i.config.enableTime,l="range"===i.config.mode&&2===i.selectedDates.length&&!i.config.enableTime;(c||l)&&ue()}I()}}i.parseDate=C({config:i.config,l10n:i.l10n}),i._handlers=[],i.pluginElements=[],i.loadedPlugins=[],i._bind=O,i._setHoursFromDate=P,i._positionCalendar=le,i.changeMonth=G,i.changeYear=X,i.clear=function(e,t){if(void 0===e&&(e=!0),void 0===t&&(t=!0),i.input.value="",void 0!==i.altInput&&(i.altInput.value=""),void 0!==i.mobileInput&&(i.mobileInput.value=""),i.selectedDates=[],i.latestSelectedDateObj=void 0,!0===t&&(i.currentYear=i._initialDate.getFullYear(),i.currentMonth=i._initialDate.getMonth()),!0===i.config.enableTime){var n=k(i.config);T(n.hours,n.minutes,n.seconds)}i.redraw(),e&&_e("onChange")},i.close=function(){i.isOpen=!1,i.isMobile||(void 0!==i.calendarContainer&&i.calendarContainer.classList.remove("open"),void 0!==i._input&&i._input.classList.remove("active")),_e("onClose")},i.onMouseOver=ie,i._createElement=u,i.createDay=N,i.destroy=function(){void 0!==i.config&&_e("onDestroy");for(var e=i._handlers.length;e--;)i._handlers[e].remove();if(i._handlers=[],i.mobileInput)i.mobileInput.parentNode&&i.mobileInput.parentNode.removeChild(i.mobileInput),i.mobileInput=void 0;else if(i.calendarContainer&&i.calendarContainer.parentNode)if(i.config.static&&i.calendarContainer.parentNode){var t=i.calendarContainer.parentNode;if(t.lastChild&&t.removeChild(t.lastChild),t.parentNode){for(;t.firstChild;)t.parentNode.insertBefore(t.firstChild,t);t.parentNode.removeChild(t)}}else i.calendarContainer.parentNode.removeChild(i.calendarContainer);i.altInput&&(i.input.type="text",i.altInput.parentNode&&i.altInput.parentNode.removeChild(i.altInput),delete i.altInput),i.input&&(i.input.type=i.input._type,i.input.classList.remove("flatpickr-input"),i.input.removeAttribute("readonly")),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(e){try{delete i[e]}catch(e){}})},i.isEnabled=ee,i.jumpToDate=L,i.updateValue=Ce,i.open=function(e,t){if(void 0===t&&(t=i._positionElement),!0===i.isMobile){if(e){e.preventDefault();var n=m(e);n&&n.blur()}return void 0!==i.mobileInput&&(i.mobileInput.focus(),i.mobileInput.click()),void _e("onOpen")}if(!i._input.disabled&&!i.config.inline){var o=i.isOpen;i.isOpen=!0,o||(i.calendarContainer.classList.add("open"),i._input.classList.add("active"),_e("onOpen"),le(t)),!0===i.config.enableTime&&!0===i.config.noCalendar&&(!1!==i.config.allowInput||void 0!==e&&i.timeContainer.contains(e.relatedTarget)||setTimeout(function(){return i.hourElement.select()},50))}},i.redraw=de,i.set=function(e,n){if(null!==e&&"object"==typeof e)for(var o in Object.assign(i.config,e),e)void 0!==he[o]&&he[o].forEach(function(e){return e()});else i.config[e]=n,void 0!==he[e]?he[e].forEach(function(e){return e()}):t.indexOf(e)>-1&&(i.config[e]=l(n));i.redraw(),Ce(!0)},i.setDate=function(e,t,n){if(void 0===t&&(t=!1),void 0===n&&(n=i.config.dateFormat),0!==e&&!e||e instanceof Array&&0===e.length)return i.clear(t);fe(e,n),i.latestSelectedDateObj=i.selectedDates[i.selectedDates.length-1],i.redraw(),L(void 0,t),P(),0===i.selectedDates.length&&i.clear(!1),Ce(t),t&&_e("onChange")},i.toggle=function(e){if(!0===i.isOpen)return i.close();i.open(e)};var he={locale:[ce,Q],showMonths:[K,y,V],minDate:[L],maxDate:[L],positionElement:[ge],clickOpens:[function(){!0===i.config.clickOpens?(O(i._input,"focus",i.open),O(i._input,"click",i.open)):(i._input.removeEventListener("focus",i.open),i._input.removeEventListener("click",i.open))}]};function fe(e,t){var n=[];if(e instanceof Array)n=e.map(function(e){return i.parseDate(e,t)});else if(e instanceof Date||"number"==typeof e)n=[i.parseDate(e,t)];else if("string"==typeof e)switch(i.config.mode){case"single":case"time":n=[i.parseDate(e,t)];break;case"multiple":n=e.split(i.config.conjunction).map(function(e){return i.parseDate(e,t)});break;case"range":n=e.split(i.l10n.rangeSeparator).map(function(e){return i.parseDate(e,t)})}else i.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));i.selectedDates=i.config.allowInvalidPreload?n:n.filter(function(e){return e instanceof Date&&ee(e,!1)}),"range"===i.config.mode&&i.selectedDates.sort(function(e,t){return e.getTime()-t.getTime()})}function me(e){return e.slice().map(function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?i.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:i.parseDate(e.from,void 0),to:i.parseDate(e.to,void 0)}:e}).filter(function(e){return e})}function ge(){i._positionElement=i.config.positionElement||i._input}function _e(e,t){if(void 0!==i.config){var n=i.config[e];if(void 0!==n&&n.length>0)for(var o=0;n[o]&&o<n.length;o++)n[o](i.selectedDates,i.input.value,i,t);"onChange"===e&&(i.input.dispatchEvent(ve("change")),i.input.dispatchEvent(ve("input")))}}function ve(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}function we(e){for(var t=0;t<i.selectedDates.length;t++){var n=i.selectedDates[t];if(n instanceof Date&&0===x(n,e))return""+t}return!1}function ye(){i.config.noCalendar||i.isMobile||!i.monthNav||(i.yearElements.forEach(function(e,t){var n=new Date(i.currentYear,i.currentMonth,1);n.setMonth(i.currentMonth+t),i.config.showMonths>1||"static"===i.config.monthSelectorType?i.monthElements[t].textContent=_(n.getMonth(),i.config.shorthandCurrentMonth,i.l10n)+" ":i.monthsDropdownContainer.value=n.getMonth().toString(),e.value=n.getFullYear().toString()}),i._hidePrevMonthArrow=void 0!==i.config.minDate&&(i.currentYear===i.config.minDate.getFullYear()?i.currentMonth<=i.config.minDate.getMonth():i.currentYear<i.config.minDate.getFullYear()),i._hideNextMonthArrow=void 0!==i.config.maxDate&&(i.currentYear===i.config.maxDate.getFullYear()?i.currentMonth+1>i.config.maxDate.getMonth():i.currentYear>i.config.maxDate.getFullYear()))}function be(e){var t=e||(i.config.altInput?i.config.altFormat:i.config.dateFormat);return i.selectedDates.map(function(e){return i.formatDate(e,t)}).filter(function(e,t,n){return"range"!==i.config.mode||i.config.enableTime||n.indexOf(e)===t}).join("range"!==i.config.mode?i.config.conjunction:i.l10n.rangeSeparator)}function Ce(e){void 0===e&&(e=!0),void 0!==i.mobileInput&&i.mobileFormatStr&&(i.mobileInput.value=void 0!==i.latestSelectedDateObj?i.formatDate(i.latestSelectedDateObj,i.mobileFormatStr):""),i.input.value=be(i.config.dateFormat),void 0!==i.altInput&&(i.altInput.value=be(i.config.altFormat)),!1!==e&&_e("onValueUpdate")}function xe(e){var t=m(e),n=i.prevMonthNav.contains(t),o=i.nextMonthNav.contains(t);n||o?G(n?-1:1):i.yearElements.indexOf(t)>=0?t.select():t.classList.contains("arrowUp")?i.changeYear(i.currentYear+1):t.classList.contains("arrowDown")&&i.changeYear(i.currentYear-1)}return function(){i.element=i.input=e,i.isOpen=!1,function(){var s=["wrap","weekNumbers","allowInput","allowInvalidPreload","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],r=$($({},JSON.parse(JSON.stringify(e.dataset||{}))),n),a={};i.config.parseDate=r.parseDate,i.config.formatDate=r.formatDate,Object.defineProperty(i.config,"enable",{get:function(){return i.config._enable},set:function(e){i.config._enable=me(e)}}),Object.defineProperty(i.config,"disable",{get:function(){return i.config._disable},set:function(e){i.config._disable=me(e)}});var c="time"===r.mode;if(!r.dateFormat&&(r.enableTime||c)){var d=E.defaultConfig.dateFormat||o.dateFormat;a.dateFormat=r.noCalendar||c?"H:i"+(r.enableSeconds?":S":""):d+" H:i"+(r.enableSeconds?":S":"")}if(r.altInput&&(r.enableTime||c)&&!r.altFormat){var u=E.defaultConfig.altFormat||o.altFormat;a.altFormat=r.noCalendar||c?"h:i"+(r.enableSeconds?":S K":" K"):u+" h:i"+(r.enableSeconds?":S":"")+" K"}Object.defineProperty(i.config,"minDate",{get:function(){return i.config._minDate},set:re("min")}),Object.defineProperty(i.config,"maxDate",{get:function(){return i.config._maxDate},set:re("max")});var p=function(e){return function(t){i.config["min"===e?"_minTime":"_maxTime"]=i.parseDate(t,"H:i:S")}};Object.defineProperty(i.config,"minTime",{get:function(){return i.config._minTime},set:p("min")}),Object.defineProperty(i.config,"maxTime",{get:function(){return i.config._maxTime},set:p("max")}),"time"===r.mode&&(i.config.noCalendar=!0,i.config.enableTime=!0),Object.assign(i.config,a,r);for(var h=0;h<s.length;h++)i.config[s[h]]=!0===i.config[s[h]]||"true"===i.config[s[h]];for(t.filter(function(e){return void 0!==i.config[e]}).forEach(function(e){i.config[e]=l(i.config[e]||[]).map(v)}),i.isMobile=!i.config.disableMobile&&!i.config.inline&&"single"===i.config.mode&&!i.config.disable.length&&!i.config.enable&&!i.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),h=0;h<i.config.plugins.length;h++){var f=i.config.plugins[h](i)||{};for(var m in f)t.indexOf(m)>-1?i.config[m]=l(f[m]).map(v).concat(i.config[m]):void 0===r[m]&&(i.config[m]=f[m])}r.altInputClass||(i.config.altInputClass=ae().className+" "+i.config.altInputClass),_e("onParseConfig")}(),ce(),i.input=ae(),i.input?(i.input._type=i.input.type,i.input.type="text",i.input.classList.add("flatpickr-input"),i._input=i.input,i.config.altInput&&(i.altInput=u(i.input.nodeName,i.config.altInputClass),i._input=i.altInput,i.altInput.placeholder=i.input.placeholder,i.altInput.disabled=i.input.disabled,i.altInput.required=i.input.required,i.altInput.tabIndex=i.input.tabIndex,i.altInput.type="text",i.input.setAttribute("type","hidden"),!i.config.static&&i.input.parentNode&&i.input.parentNode.insertBefore(i.altInput,i.input.nextSibling)),i.config.allowInput||i._input.setAttribute("readonly","readonly"),ge()):i.config.errorHandler(new Error("Invalid input element specified")),function(){i.selectedDates=[],i.now=i.parseDate(i.config.now)||new Date;var e=i.config.defaultDate||("INPUT"!==i.input.nodeName&&"TEXTAREA"!==i.input.nodeName||!i.input.placeholder||i.input.value!==i.input.placeholder?i.input.value:null);e&&fe(e,i.config.dateFormat),i._initialDate=i.selectedDates.length>0?i.selectedDates[0]:i.config.minDate&&i.config.minDate.getTime()>i.now.getTime()?i.config.minDate:i.config.maxDate&&i.config.maxDate.getTime()<i.now.getTime()?i.config.maxDate:i.now,i.currentYear=i._initialDate.getFullYear(),i.currentMonth=i._initialDate.getMonth(),i.selectedDates.length>0&&(i.latestSelectedDateObj=i.selectedDates[0]),void 0!==i.config.minTime&&(i.config.minTime=i.parseDate(i.config.minTime,"H:i")),void 0!==i.config.maxTime&&(i.config.maxTime=i.parseDate(i.config.maxTime,"H:i")),i.minDateHasTime=!!i.config.minDate&&(i.config.minDate.getHours()>0||i.config.minDate.getMinutes()>0||i.config.minDate.getSeconds()>0),i.maxDateHasTime=!!i.config.maxDate&&(i.config.maxDate.getHours()>0||i.config.maxDate.getMinutes()>0||i.config.maxDate.getSeconds()>0)}(),i.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=i.currentMonth),void 0===t&&(t=i.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:i.l10n.daysInMonth[e]}},i.isMobile||function(){var e=window.document.createDocumentFragment();if(i.calendarContainer=u("div","flatpickr-calendar"),i.calendarContainer.tabIndex=-1,!i.config.noCalendar){if(e.appendChild((i.monthNav=u("div","flatpickr-months"),i.yearElements=[],i.monthElements=[],i.prevMonthNav=u("span","flatpickr-prev-month"),i.prevMonthNav.innerHTML=i.config.prevArrow,i.nextMonthNav=u("span","flatpickr-next-month"),i.nextMonthNav.innerHTML=i.config.nextArrow,K(),Object.defineProperty(i,"_hidePrevMonthArrow",{get:function(){return i.__hidePrevMonthArrow},set:function(e){i.__hidePrevMonthArrow!==e&&(d(i.prevMonthNav,"flatpickr-disabled",e),i.__hidePrevMonthArrow=e)}}),Object.defineProperty(i,"_hideNextMonthArrow",{get:function(){return i.__hideNextMonthArrow},set:function(e){i.__hideNextMonthArrow!==e&&(d(i.nextMonthNav,"flatpickr-disabled",e),i.__hideNextMonthArrow=e)}}),i.currentYearElement=i.yearElements[0],ye(),i.monthNav)),i.innerContainer=u("div","flatpickr-innerContainer"),i.config.weekNumbers){var t=function(){i.calendarContainer.classList.add("hasWeeks");var e=u("div","flatpickr-weekwrapper");e.appendChild(u("span","flatpickr-weekday",i.l10n.weekAbbreviation));var t=u("div","flatpickr-weeks");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),n=t.weekWrapper,o=t.weekNumbers;i.innerContainer.appendChild(n),i.weekNumbers=o,i.weekWrapper=n}i.rContainer=u("div","flatpickr-rContainer"),i.rContainer.appendChild(V()),i.daysContainer||(i.daysContainer=u("div","flatpickr-days"),i.daysContainer.tabIndex=-1),R(),i.rContainer.appendChild(i.daysContainer),i.innerContainer.appendChild(i.rContainer),e.appendChild(i.innerContainer)}i.config.enableTime&&e.appendChild(function(){i.calendarContainer.classList.add("hasTime"),i.config.noCalendar&&i.calendarContainer.classList.add("noCalendar");var e=k(i.config);i.timeContainer=u("div","flatpickr-time"),i.timeContainer.tabIndex=-1;var t=u("span","flatpickr-time-separator",":"),n=f("flatpickr-hour",{"aria-label":i.l10n.hourAriaLabel});i.hourElement=n.getElementsByTagName("input")[0];var o=f("flatpickr-minute",{"aria-label":i.l10n.minuteAriaLabel});if(i.minuteElement=o.getElementsByTagName("input")[0],i.hourElement.tabIndex=i.minuteElement.tabIndex=-1,i.hourElement.value=r(i.latestSelectedDateObj?i.latestSelectedDateObj.getHours():i.config.time_24hr?e.hours:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(e.hours)),i.minuteElement.value=r(i.latestSelectedDateObj?i.latestSelectedDateObj.getMinutes():e.minutes),i.hourElement.setAttribute("step",i.config.hourIncrement.toString()),i.minuteElement.setAttribute("step",i.config.minuteIncrement.toString()),i.hourElement.setAttribute("min",i.config.time_24hr?"0":"1"),i.hourElement.setAttribute("max",i.config.time_24hr?"23":"12"),i.hourElement.setAttribute("maxlength","2"),i.minuteElement.setAttribute("min","0"),i.minuteElement.setAttribute("max","59"),i.minuteElement.setAttribute("maxlength","2"),i.timeContainer.appendChild(n),i.timeContainer.appendChild(t),i.timeContainer.appendChild(o),i.config.time_24hr&&i.timeContainer.classList.add("time24hr"),i.config.enableSeconds){i.timeContainer.classList.add("hasSeconds");var s=f("flatpickr-second");i.secondElement=s.getElementsByTagName("input")[0],i.secondElement.value=r(i.latestSelectedDateObj?i.latestSelectedDateObj.getSeconds():e.seconds),i.secondElement.setAttribute("step",i.minuteElement.getAttribute("step")),i.secondElement.setAttribute("min","0"),i.secondElement.setAttribute("max","59"),i.secondElement.setAttribute("maxlength","2"),i.timeContainer.appendChild(u("span","flatpickr-time-separator",":")),i.timeContainer.appendChild(s)}return i.config.time_24hr||(i.amPM=u("span","flatpickr-am-pm",i.l10n.amPM[a((i.latestSelectedDateObj?i.hourElement.value:i.config.defaultHour)>11)]),i.amPM.title=i.l10n.toggleTitle,i.amPM.tabIndex=-1,i.timeContainer.appendChild(i.amPM)),i.timeContainer}()),d(i.calendarContainer,"rangeMode","range"===i.config.mode),d(i.calendarContainer,"animate",!0===i.config.animate),d(i.calendarContainer,"multiMonth",i.config.showMonths>1),i.calendarContainer.appendChild(e);var s=void 0!==i.config.appendTo&&void 0!==i.config.appendTo.nodeType;if((i.config.inline||i.config.static)&&(i.calendarContainer.classList.add(i.config.inline?"inline":"static"),i.config.inline&&(!s&&i.element.parentNode?i.element.parentNode.insertBefore(i.calendarContainer,i._input.nextSibling):void 0!==i.config.appendTo&&i.config.appendTo.appendChild(i.calendarContainer)),i.config.static)){var c=u("div","flatpickr-wrapper");i.element.parentNode&&i.element.parentNode.insertBefore(c,i.element),c.appendChild(i.element),i.altInput&&c.appendChild(i.altInput),c.appendChild(i.calendarContainer)}i.config.static||i.config.inline||(void 0!==i.config.appendTo?i.config.appendTo:window.document.body).appendChild(i.calendarContainer)}(),function(){if(i.config.wrap&&["open","close","toggle","clear"].forEach(function(e){Array.prototype.forEach.call(i.element.querySelectorAll("[data-"+e+"]"),function(t){return O(t,"click",i[e])})}),i.isMobile)!function(){var e=i.config.enableTime?i.config.noCalendar?"time":"datetime-local":"date";i.mobileInput=u("input",i.input.className+" flatpickr-mobile"),i.mobileInput.tabIndex=1,i.mobileInput.type=e,i.mobileInput.disabled=i.input.disabled,i.mobileInput.required=i.input.required,i.mobileInput.placeholder=i.input.placeholder,i.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",i.selectedDates.length>0&&(i.mobileInput.defaultValue=i.mobileInput.value=i.formatDate(i.selectedDates[0],i.mobileFormatStr)),i.config.minDate&&(i.mobileInput.min=i.formatDate(i.config.minDate,"Y-m-d")),i.config.maxDate&&(i.mobileInput.max=i.formatDate(i.config.maxDate,"Y-m-d")),i.input.getAttribute("step")&&(i.mobileInput.step=String(i.input.getAttribute("step"))),i.input.type="hidden",void 0!==i.altInput&&(i.altInput.type="hidden");try{i.input.parentNode&&i.input.parentNode.insertBefore(i.mobileInput,i.input.nextSibling)}catch(e){}O(i.mobileInput,"change",function(e){i.setDate(m(e).value,!1,i.mobileFormatStr),_e("onChange"),_e("onClose")})}();else{var e=c(se,50);if(i._debouncedChange=c(I,300),i.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&O(i.daysContainer,"mouseover",function(e){"range"===i.config.mode&&ie(m(e))}),O(i._input,"keydown",oe),void 0!==i.calendarContainer&&O(i.calendarContainer,"keydown",oe),i.config.inline||i.config.static||O(window,"resize",e),void 0!==window.ontouchstart?O(window.document,"touchstart",Z):O(window.document,"mousedown",Z),O(window.document,"focus",Z,{capture:!0}),!0===i.config.clickOpens&&(O(i._input,"focus",i.open),O(i._input,"click",i.open)),void 0!==i.daysContainer&&(O(i.monthNav,"click",xe),O(i.monthNav,["keyup","increment"],S),O(i.daysContainer,"click",pe)),void 0!==i.timeContainer&&void 0!==i.minuteElement&&void 0!==i.hourElement){O(i.timeContainer,["increment"],A),O(i.timeContainer,"blur",A,{capture:!0}),O(i.timeContainer,"click",W),O([i.hourElement,i.minuteElement],["focus","click"],function(e){return m(e).select()}),void 0!==i.secondElement&&O(i.secondElement,"focus",function(){return i.secondElement&&i.secondElement.select()}),void 0!==i.amPM&&O(i.amPM,"click",function(e){A(e)})}i.config.allowInput&&O(i._input,"blur",ne)}}(),(i.selectedDates.length||i.config.noCalendar)&&(i.config.enableTime&&P(i.config.noCalendar?i.latestSelectedDateObj:void 0),Ce(!1)),y();var s=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!i.isMobile&&s&&le(),_e("onReady")}(),i}function M(e,t){for(var n=Array.prototype.slice.call(e).filter(function(e){return e instanceof HTMLElement}),o=[],i=0;i<n.length;i++){var s=n[i];try{if(null!==s.getAttribute("data-fp-omit"))continue;void 0!==s._flatpickr&&(s._flatpickr.destroy(),s._flatpickr=void 0),s._flatpickr=A(s,t||{}),o.push(s._flatpickr)}catch(e){console.error(e)}}return 1===o.length?o[0]:o}"undefined"!=typeof HTMLElement&&"undefined"!=typeof HTMLCollection&&"undefined"!=typeof NodeList&&(HTMLCollection.prototype.flatpickr=NodeList.prototype.flatpickr=function(e){return M(this,e)},HTMLElement.prototype.flatpickr=function(e){return M([this],e)});var E=function(e,t){return"string"==typeof e?M(window.document.querySelectorAll(e),t):e instanceof Node?M([e],t):M(e,t)};E.defaultConfig={},E.l10ns={en:$({},s),default:$({},s)},E.localize=function(e){E.l10ns.default=$($({},E.l10ns.default),e)},E.setDefaults=function(e){E.defaultConfig=$($({},E.defaultConfig),e)},E.parseDate=C({}),E.formatDate=b({}),E.compareDates=x,"undefined"!=typeof jQuery&&void 0!==jQuery.fn&&(jQuery.fn.flatpickr=function(e){return M(this,e)}),Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+("string"==typeof e?parseInt(e,10):e))},"undefined"!=typeof window&&(window.flatpickr=E),(window.WPCodeConditionalLogic||function(e,t,n){const o={l10n:wpcode,current_select:null,init:function(){o.should_init()&&(o.find_elements(),o.add_events(),o.show_relations_for_all_rows(),o.maybe_switch_location())},should_init:function(){return void 0!==wpcode.conditions},find_elements:function(){o.conditions=wpcode.conditions,o.conditions_holder=n(e.getElementById("wpcode-conditions-holder")),o.conditions_input=n(e.getElementById("wpcode-cl-rules")),o.add_group_button=n(e.getElementById("wpcode-cl-add-group")),o.group_template=n(e.getElementById("wpcode-conditions-group-markup")).html(),o.row_template=n(e.getElementById("wpcode-conditions-group-row-markup")).html(),o.show_hide_input=n(e.getElementById("wpcode-cl-show-hide")),o.document=n(e),o.options_dropdown=n(e.getElementById("wpcode_cl_picker"))},add_events:function(){o.init_add_group(),o.init_add_row(),o.init_remove_row(),o.init_change_type(),o.init_capture_rules(),o.init_change_show_hide(),o.init_select2(),jQuery(function(){o.trigger_row_loaded()})},show_relations_for_all_rows(){o.conditions_holder.find(".wpcode-cl-rules-row").each(function(){o.show_hide_relation_options(n(this))})},init_add_group:function(){o.add_group_button.on("click",function(){o.add_group()})},add_group(){const e=o.get_new_group();o.conditions_holder.append(e),o.add_new_row(e.find(".wpcode-cl-group-rules")),o.build_rules_from_inputs()},get_new_group:()=>n(o.group_template),get_new_row:()=>n(o.row_template),init_add_row(){o.conditions_holder.on("click",".wpcode-cl-add-row",function(){o.add_new_row(n(this).closest(".wpcode-cl-group").find(".wpcode-cl-group-rules"))})},init_remove_row(){o.conditions_holder.on("click",".wpcode-cl-remove-row",function(){const e=n(this).closest(".wpcode-cl-group");n(this).closest(".wpcode-cl-rules-row").remove(),o.maybe_remove_group(e),o.build_rules_from_inputs(),o.options_dropdown.addClass("wpcode-hidden"),o.current_select=null})},maybe_remove_group(e){0===e.find(".wpcode-cl-group-rules .wpcode-cl-rules-row").length&&(o.options_dropdown.appendTo("body"),o.remove_group(e))},remove_group(e){e.remove(),o.build_rules_from_inputs()},add_new_row(e){const t=o.get_new_row();t.appendTo(e);const n=t.find(".wpcode-cl-rule-type");o.handle_type_change(n),o.build_rules_from_inputs(),n.focus()},init_change_type(){o.conditions_holder.on("click",".wpcode-cl-rule-type-container",function(e){e.preventDefault(),e.stopPropagation();const t=n(this).find(".wpcode-cl-rule-type");o.options_dropdown.hasClass("wpcode-hidden")||!t.is(o.current_select)?(o.options_dropdown.trigger("wpcode_select_item",t.val()),o.current_select=t,o.options_dropdown.insertAfter(t.closest(".wpcode-cl-rules-row")),o.options_dropdown.removeClass("wpcode-hidden"),o.options_dropdown.find(".wpcode-items-search-input").focus()):o.options_dropdown.addClass("wpcode-hidden")}),o.conditions_holder.on("change",".wpcode-cl-rule-type",function(){o.handle_type_change(n(this))}),o.options_dropdown.on("change",".wpcode-radio-cl-option",function(){const e=n(this).val();o.current_select.val(e).trigger("change"),o.options_dropdown.trigger("wpcode_select_item",e),o.options_dropdown.addClass("wpcode-hidden")})},init_change_show_hide(){o.show_hide_input.on("change",function(){o.build_rules_from_inputs()})},handle_type_change(e){const t=e.find("option:selected"),n=e.val(),i=t.closest("optgroup").data("type"),s=e.closest(".wpcode-cl-rules-row"),r=o.conditions[i].options[n];s.find(".wpcode-cl-rule-value").html(o.get_input_markup(r)),s.find(".wpcode-cl-rule-relation option").prop("selected",!1),o.show_hide_relation_options(s,!0),o.init_select2(),o.trigger_row_loaded(e)},get_input_markup(e){let t="";switch(e.type){case"select":t=o.get_input_select(e.options,e.multiple);break;case"text":t=o.get_input_text();break;case"ajax":t=o.get_input_ajax(e.options,e.multiple);break;case"time":t=o.get_input_time();break;case"date":t=o.get_input_date();break;case"datetime":t=o.get_input_datetime()}return t},get_input_select(e,t=!1){const o=n("<select/>");return t&&(o.attr("multiple","multiple"),o.addClass("wpcode-select2")),n.each(e,function(e,t){o.append(n("<option />",{value:t.value,disabled:!0===t.disabled}).text(t.label))}),o},get_input_text:()=>n('<input type="text" class="wpcode-input-text" />'),get_input_ajax(e,t){const o=n('<select data-action="'+e+'" class="wpcode-select2-ajax" />');return t&&o.attr("multiple","multiple"),o},get_input_time:()=>n('<input type="text" class="wpcode-input-text wpcode-input-time" />'),get_input_date:()=>n('<input type="text" class="wpcode-input-text wpcode-input-date" />'),get_input_datetime:()=>n('<input type="text" class="wpcode-input-text wpcode-input-datetime" />'),init_capture_rules(){o.conditions_holder.on("change","input,select",function(){o.build_rules_from_inputs()})},build_rules_from_inputs(){const e=o.conditions_holder.find(".wpcode-cl-group"),t=[];e.each(function(e){const i=n(this).find(".wpcode-cl-rules-row");t[e]=[],i.each(function(){const i=n(this),s=i.find(".wpcode-cl-rule-type"),r=s.find("option:selected").closest("optgroup").data("type"),a=s.val(),c={},l=o.conditions[r].options[a];if(c.type=r,c.option=a,c.relation=i.find(".wpcode-cl-rule-relation").val(),c.value=o.get_input_value(l,i),"post_meta"===a||"user_meta"===a){const e="post_meta"===a?".wpcode-cl-rule-meta-key":".wpcode-cl-rule-user-meta-key",t="post_meta"===a?"meta_key":"user_meta_key",n=i.find(e).val();c[t]=n||null}null!==c.value&&t[e].push(c)})});const i={show:o.show_hide_input.val(),groups:t};o.conditions_input.val(JSON.stringify(i))},get_input_value(e,t){let n="";switch(e.type){case"select":case"ajax":n=t.find(".wpcode-cl-rule-value select").val();break;case"text":case"time":case"date":case"datetime":n=t.find(".wpcode-cl-rule-value input").val()}return n},show_hide_relation_options(e,t=!1){const i=e.find(".wpcode-cl-rule-type"),s=i.val(),r=i.find("option:selected").closest("optgroup").data("type"),a=e.find(".wpcode-cl-rule-relation"),c=a.find("option"),l={select:["=","!="],ajax:["=","!="],text:["contains","notcontains","=","!="],date:["=","!=","before","after","before-or","after-or"],datetime:["=","!=","before","after","before-or","after-or"],time:["=","before","after","before-or","after-or"]}[o.conditions[r].options[s].type],d=o.l10n.cl_labels_custom[s];let u=null;if(c.each(function(){const e=n(this).attr("value");l.indexOf(e)>-1?(null===u&&(u=e),n(this).show(),d&&d[e]?n(this).text(d[e]):n(this).text(o.l10n.cl_labels[e])):n(this).hide()}),u&&t&&a.val(u),d&&d.placeholder){const t=e.find(".wpcode-select2-ajax"),n=e.find(".wpcode-input-text");t.length>0&&t.data("placeholder",d.placeholder),n.length>0&&n.attr("placeholder",d.placeholder)}},init_select2(){o.conditions_holder.find(".wpcode-select2").selectWoo(),o.conditions_holder.find(".wpcode-select2-ajax").selectWoo({ajax:{url:ajaxurl,data:function(e){return{action:n(this).data("action"),term:e.term,_wpnonce:o.l10n.nonce}}}})},trigger_row_loaded(t=null){n(e.body).trigger("wpcode_cl_type_loaded",{conditions_holder:o.conditions_holder,element:t})},maybe_switch_location(){const e=n('input[name="wpcode_auto_insert_location"]:checked'),t=n("#wpcode_snippet_type");n("#wpcode_conditional_logic_enable").on("change",function(){if("php"!==t.val()||"everywhere"!==e.val()||!n(this).is(":checked"))return;const i=n(this).closest(".wpcode-metabox-form-row");n('input[name="wpcode_auto_insert_location"][value="frontend_cl"]').prop("checked",!0).trigger("change"),WPCodeAdminNotices.get_notice(o.l10n.php_cl_location_notice,"notice-warning notice-alt").insertBefore(i),o.document.trigger("wp-updates-notice-added")})}};return o}(document,window,jQuery)).init(),n(209),n(197),n(719),n(132),n(609),n(429),n(615),n(875),n(405),n(332),n(512),n(327),n(866),n(967),n(799),n(634),n(596),n(960),n(695),n(790),n(481),n(343)})()})();PK       n‰U]@¦‰Š  Š                  uninstall.phpnu „[µü¤        PK       n‰U]#lX>  X>              Ç  admin/images/icon-wpforms.pngnu „[µü¤        PK       o‰U]ðR¼1f	  f	  #            lR  admin/images/icon-wp-simple-pay.pngnu „[µü¤        PK       o‰U]›Z÷=  ÷=              %\  admin/images/mircea.pngnu „[µü¤        PK       o‰U]öšgf¢ ¢ *            cš  admin/images/upgrade-welcome-generator.jpgnu „[µü¤        PK       o‰U]8ƒv� � &            _¨ admin/images/upgrade-welcome-cloud.jpgnu „[µü¤        PK       o‰U]Åè€Œ3 3 0            6« admin/images/upgrade-welcome-headers-footers.jpgnu „[µü¤        PK       o‰U]ÜÏ |  |  "            «Þ admin/images/default-user-icon.pngnu „[µü¤        PK       p‰U]ù3ÃÔ€`  €`  '            yê admin/images/icon-uncanny-automator.pngnu „[µü¤        PK       p‰U]©îG½    +            PK admin/images/icon-search-replace-wpcode.pngnu „[µü¤        PK       p‰U]RQ1=  =              ®S admin/images/icon-wpconsent.pngnu „[µü¤        PK       p‰U]úv”oû  û               :k admin/images/icon-charitable.jpgnu „[µü¤        PK       q‰U]S’|'Ô7 Ô7             …� admin/images/sr-screenshot.jpgnu „[µü¤        PK       q‰U]n\µ~ö  ö              §¹ admin/images/icon-edd.pngnu „[µü¤        PK       q‰U]Fi�L  L  )            æÙ admin/images/icon-all-in-one-seo-pack.pngnu „[µü¤        PK       r‰U]ä+ß(F (F             ‹ô admin/images/duplicator.jpgnu „[µü¤        PK       r‰U]ËÏ±5  ±5  $            þ:	 admin/images/sr-screenshot-thumb.jpgnu „[µü¤        PK       s‰U]�o7Ç   Ç   "            q	 admin/images/icon-wp-mail-smtp.pngnu „[µü¤        PK       s‰U]¸ëÛ~=  ~=              ’	 admin/images/syed.pngnu „[µü¤        PK       s‰U]Ãå°è                 ßÏ	 admin/images/icon-duplicator.pngnu „[µü¤        PK       s‰U]äŽž�¼  ¼              7à	 admin/images/spinner.svgnu „[µü¤        PK       s‰U]€ŒP±)%  )%              ;â	 admin/images/wpcode-logo.pngnu „[µü¤        PK       t‰U]Ê“„@   @               °
 languages/index.phpnu „[µü¤        PK       t‰U]òòo’›´ ›´ (            3
 languages/insert-headers-and-footers.potnu „[µü¤        PK       t‰U]W/ A�3  �3              &½ ihaf.phpnu „[µü¤        PK       t‰U]
Ò/t°U  °U  
            ëð readme.txtnu „[µü¤        PK       u‰U]ÒÍyo{6  {6  (            ÕF includes/class-wpcode-admin-bar-info.phpnu „[µü¤        PK       u‰U]ïÝ#E„	  „	              ¨} includes/shortcode.phpnu „[µü¤        PK       v‰U]+sìPë  ë  !            r‡ includes/class-wpcode-install.phpnu „[µü¤        PK       v‰U]�â‘À$  À$  <            ®§ includes/generator/class-wpcode-generator-schema-article.phpnu „[µü¤        PK       w‰U]Ï†xŸ)  )  <            ÚÌ includes/generator/class-wpcode-generator-schema-service.phpnu „[µü¤        PK       w‰U]1¨”ÆÊ"  Ê"  C            Yö includes/generator/class-wpcode-generator-schema-product-review.phpnu „[µü¤        PK       w‰U]A±È@í  í  ;            – includes/generator/class-wpcode-generator-schema-how-to.phpnu „[µü¤        PK       w‰U]pˆá}z  z  2            î5 includes/generator/class-wpcode-generator-menu.phpnu „[µü¤        PK       w‰U]J=ù"‚  ‚  :            ÊL includes/generator/class-wpcode-generator-schema-video.phpnu „[µü¤        PK       y‰U]× ý	  ý	  9            ¶j includes/generator/class-wpcode-generator-schema-base.phpnu „[µü¤        PK       {‰U]¼7G¥˜L  ˜L  4            u includes/generator/class-wpcode-generator-widget.phpnu „[µü¤        PK       {‰U]½1:RkB  kB  :            Â includes/generator/class-wpcode-generator-schema-event.phpnu „[µü¤        PK       {‰U]ºæÏô5  ô5  @            í includes/generator/class-wpcode-generator-schema-job-posting.phpnu „[µü¤        PK       {‰U]•ÀHC]&  ]&  9            Q; includes/generator/class-wpcode-generator-schema-book.phpnu „[µü¤        PK       |‰U]íI KR+  R+  3            b includes/generator/class-wpcode-generator-style.phpnu „[µü¤        PK       |‰U]—�ð",  ,  <            Ì� includes/generator/class-wpcode-generator-schema-product.phpnu „[µü¤        PK       |‰U]MZ ÓQ  Q  5            Jº includes/generator/class-wpcode-generator-cronjob.phpnu „[µü¤        PK       |‰U]i‚x    :             Ù includes/generator/class-wpcode-generator-schema-movie.phpnu „[µü¤        PK       }‰U]ŽÐ´™S!  S!  5            ~÷ includes/generator/class-wpcode-generator-sidebar.phpnu „[µü¤        PK       }‰U]†þ¹Î|  |  ?            6 includes/generator/class-wpcode-generator-schema-fact-check.phpnu „[µü¤        PK       }‰U]Pó	Ÿ-  Ÿ-  ;            !7 includes/generator/class-wpcode-generator-schema-course.phpnu „[µü¤        PK       }‰U]qÎÜŸ™  ™  =            +e includes/generator/class-wpcode-generator-contact-methods.phpnu „[µü¤        PK       }‰U]ÀQØy1  1  ;            1} includes/generator/class-wpcode-generator-schema-recipe.phpnu „[µü¤        PK       }‰U]Ü#Ç	ø  ø  8            ¡® includes/generator/class-wpcode-generator-schema-faq.phpnu „[µü¤        PK       }‰U]ƒþåæ:  :  :            ¿ includes/generator/class-wpcode-generator-schema-music.phpnu „[µü¤        PK       }‰U]5‹¶<–  <–  3            ¥Ý includes/generator/class-wpcode-generator-hooks.phpnu „[µü¤        PK       }‰U]Ý¬ÈX˜  ˜  7            Dt includes/generator/class-wpcode-generator-post-type.phpnu „[µü¤        PK       }‰U]·þ/4+  4+  =            » includes/generator/class-wpcode-generator-schema-software.phpnu „[µü¤        PK       €‰U]›²×aQ]  Q]  2            \8 includes/generator/class-wpcode-generator-type.phpnu „[µü¤        PK       €‰U]b&AxÃ!  Ã!  7            – includes/generator/class-wpcode-generator-admin-bar.phpnu „[µü¤        PK       €‰U]³®‚ñ&  ñ&  8            9¸ includes/generator/class-wpcode-generator-schema-car.phpnu „[µü¤        PK       €‰U]›ÞáP•  •  <            ’ß includes/generator/class-wpcode-generator-schema-dataset.phpnu „[µü¤        PK       €‰U]�…63u+  u+  4            “ÿ includes/generator/class-wpcode-generator-script.phpnu „[µü¤        PK       €‰U]ÆÆ
•e  •e  3            l+ includes/generator/class-wpcode-generator-query.phpnu „[µü¤        PK       €‰U]z‚ŽYÁa  Áa  6            d‘ includes/generator/class-wpcode-generator-taxonomy.phpnu „[µü¤        PK       €‰U]yíá0È  È  9            ‹ó includes/generator/class-wpcode-generator-post-status.phpnu „[µü¤        PK       €‰U]îiý�ª  ª  ;            ¼ includes/generator/class-wpcode-generator-schema-person.phpnu „[µü¤        PK       €‰U]\;çÁ  Á  7            Ñ. includes/auto-insert/class-wpcode-auto-insert-admin.phpnu „[µü¤        PK       €‰U]ÈÍ•%  %  6            ù7 includes/auto-insert/class-wpcode-auto-insert-type.phpnu „[µü¤        PK       �‰U]1Šå«b!  b!  8            p] includes/auto-insert/class-wpcode-auto-insert-single.phpnu „[µü¤        PK       �‰U]þ©³    9            : includes/auto-insert/class-wpcode-auto-insert-archive.phpnu „[µü¤        PK       �‰U]}¦ˆÍ	  Í	  ;            §“ includes/auto-insert/class-wpcode-auto-insert-site-wide.phpnu „[µü¤        PK       �‰U]x„º  º  <            ß� includes/auto-insert/class-wpcode-auto-insert-everywhere.phpnu „[µü¤        PK       �‰U]¿]t  t              ± includes/compat.phpnu „[µü¤        PK       �‰U]>/–a'  '  "            ¼Â includes/class-wpcode-settings.phpnu „[µü¤        PK       �‰U]*>–5[  [  #            5Ð includes/class-wpcode-generator.phpnu „[µü¤        PK       �‰U]]¤%î  î  +            ãê includes/class-wpcode-conditional-logic.phpnu „[µü¤        PK       �‰U]L’$2  2              ,  includes/class-wpcode-error.phpnu „[µü¤        PK       �‰U]™Ø¡n®  ®  &            ­ includes/class-wpcode-library-auth.phpnu „[µü¤        PK       �‰U]R¿·ÖQ  ÖQ  )            ±: includes/class-wpcode-snippet-execute.phpnu „[µü¤        PK       �‰U] (Í'"  '"  %            àŒ includes/class-wpcode-file-logger.phpnu „[µü¤        PK       �‰U]ˆ±•óˆ  óˆ              \¯ includes/icons.phpnu „[µü¤        PK       ‚‰U]­,Êœ  œ              ‘8 includes/safe-mode.phpnu „[µü¤        PK       ‚‰U]É¨.û>W  >W  !            sJ includes/class-wpcode-library.phpnu „[µü¤        PK       ‚‰U]&–º`    0            ¢ includes/admin/class-wpcode-metabox-snippets.phpnu „[µü¤        PK       ‚‰U]8‚è*o  o  +            q» includes/admin/class-wpcode-code-editor.phpnu „[µü¤        PK       ‚‰U]<’{¦  ¦               ;Î includes/admin/admin-scripts.phpnu „[µü¤        PK       „‰U]Ùô�,¡  ¡  .            1é includes/admin/class-wpcode-usage-tracking.phpnu „[µü¤        PK       †‰U]—Ay�\  \  )            0 includes/admin/class-wpcode-importers.phpnu „[µü¤        PK       ˆ‰U]_Ù<^æ  æ  H            å includes/admin/importers/class-wpcode-importer-code-snippets-premium.phpnu „[µü¤        PK       Š‰U]Nh¿£–  –  @            C includes/admin/importers/class-wpcode-importer-code-snippets.phpnu „[µü¤        PK       Œ‰U]
ü[íµ  µ  K            I# includes/admin/importers/class-wpcode-importer-simple-custom-css-and-js.phpnu „[µü¤        PK       Ž‰U]äþ+ÆÄ#  Ä#  M            y8 includes/admin/importers/class-wpcode-importer-header-footer-code-manager.phpnu „[µü¤        PK       �‰U]#“¢<Ð  Ð  @            º\ includes/admin/importers/class-wpcode-importer-post-snippets.phpnu „[µü¤        PK       “‰U]·iBz5  5  7            úx includes/admin/importers/class-wpcode-importer-type.phpnu „[µü¤        PK       •‰U]•«ùÀî  î  8            –� includes/admin/importers/class-wpcode-importer-woody.phpnu „[µü¤        PK       ˜‰U]ëÖ÷é1  é1  -            ì� includes/admin/class-wpcode-notifications.phpnu „[µü¤        PK       š‰U]áINšÔ  Ô  +            2Ã includes/admin/class-wpcode-skin-legacy.phpnu „[µü¤        PK       �‰U]”’!Œ  Œ  0            aÏ includes/admin/class-wpcode-features-notices.phpnu „[µü¤        PK       ¡‰U]*�Ò‹F  ‹F  >            Mí includes/admin/pages/class-wpcode-admin-page-code-snippets.phpnu „[µü¤        PK       £‰U]¡Lx£  £  6            F4 includes/admin/pages/trait-wpcode-wpconsent-notice.phpnu „[µü¤        PK       £‰U]æ[Îˆâ.  â.  6            O: includes/admin/pages/class-wpcode-admin-page-click.phpnu „[µü¤        PK       £‰U]	ó´+    ?            —i includes/admin/pages/class-wpcode-admin-page-search-replace.phpnu „[µü¤        PK       £‰U]èïO‰�   �   :            
| includes/admin/pages/class-wpcode-admin-page-generator.phpnu „[µü¤        PK       £‰U]17	ª/^  /^  9            � includes/admin/pages/class-wpcode-admin-page-settings.phpnu „[µü¤        PK       £‰U]ìé
½  ½  ;            ©û includes/admin/pages/class-wpcode-admin-page-duplicator.phpnu „[µü¤        PK       £‰U]Ç­[%Ù©  Ù©  0            Ñ includes/admin/pages/class-wpcode-admin-page.phpnu „[µü¤        PK       £‰U]é>¨qŒ‘  Œ‘  9            
¸ includes/admin/pages/class-wpcode-code-snippets-table.phpnu „[µü¤        PK       £‰U]—àBÕ u   u  6            ÿI includes/admin/pages/class-wpcode-admin-page-pixel.phpnu „[µü¤        PK       £‰U]Fý Q¾  ¾  7            …¿ includes/admin/pages/trait-wpcode-revisions-display.phpnu „[µü¤        PK       ¤‰U]þØÕõT+  T+  @            ªÏ includes/admin/pages/class-wpcode-admin-page-headers-footers.phpnu „[µü¤        PK       ¤‰U]iß&Ý’ƒ  ’ƒ  6            nû includes/admin/pages/class-wpcode-admin-page-tools.phpnu „[µü¤        PK       ¤‰U]±<âÝÝ  Ý  <            f includes/admin/pages/class-wpcode-admin-page-file-editor.phpnu „[µü¤        PK       ¤‰U]_Œ\+z  z  <            ¯� includes/admin/pages/trait-wpcode-library-refresh-button.phpnu „[µü¤        PK       ¥‰U]e\Rž¢  ¢  8            •¡ includes/admin/pages/class-wpcode-admin-page-library.phpnu „[µü¤        PK       §‰U]fVêŠq q @            Ÿ¹ includes/admin/pages/class-wpcode-admin-page-snippet-manager.phpnu „[µü¤        PK       ©‰U]ØeÄ    7            + includes/admin/pages/trait-wpcode-my-library-markup.phpnu „[µü¤        PK       ª‰U]ªï‹�   �   1            ŽH includes/admin/class-wpcode-admin-page-loader.phpnu „[µü¤        PK       ª‰U][qk3  3  $            pi includes/admin/class-wpcode-skin.phpnu „[µü¤        PK       ª‰U]î†‘ð  ð  &            ÷u includes/admin/class-wpcode-review.phpnu „[µü¤        PK       ª‰U]�Ð ™´%  ´%  ,            =� includes/admin/class-wpcode-admin-notice.phpnu „[µü¤        PK       ª‰U]Lt´&  &  $            M¶ includes/admin/class-wpcode-docs.phpnu „[µü¤        PK       ª‰U]Ù�9Æå3  å3  1            ÇÆ includes/admin/class-wpcode-suggested-plugins.phpnu „[µü¤        PK       ª‰U]¥å*´X:  X:  &            û includes/admin/admin-ajax-handlers.phpnu „[µü¤        PK       «‰U]÷F{½o  o  &            »5  includes/class-wpcode-capabilities.phpnu „[µü¤        PK       «‰U]âðñi  i  %            €:  includes/class-wpcode-auto-insert.phpnu „[µü¤        PK       «‰U] Ö¾˜÷  ÷              >I  includes/global-output.phpnu „[µü¤        PK       «‰U]¡ˆúÈˆ  ˆ  $            P  includes/class-wpcode-file-cache.phpnu „[µü¤        PK       «‰U]ú¾�Þ6  Þ6              [j  includes/helpers.phpnu „[µü¤        PK       «‰U]ïL—›  ›              }¡  includes/legacy.phpnu „[µü¤        PK       «‰U]îPcº                [¥  includes/post-type.phpnu „[µü¤        PK       «‰U]=	ÈÑÑ
  Ñ
  <            ¿²  includes/conditional-logic/class-wpcode-conditional-user.phpnu „[µü¤        PK       «‰U]î€Ýøí(  í(  <            ü½  includes/conditional-logic/class-wpcode-conditional-page.phpnu „[µü¤        PK       «‰U]Qór¡î  î  <            Uç  includes/conditional-logic/class-wpcode-conditional-type.phpnu „[µü¤        PK       «‰U]°5„ûâ  â  '            ¯ý  includes/class-wpcode-snippet-cache.phpnu „[µü¤        PK       «‰U]°þþèaN  aN  $            è! includes/class-wpcode-smart-tags.phpnu „[µü¤        PK       «‰U]ZœÔl•  •  :            �\! includes/lite/auto-insert/class-wpcode-auto-insert-edd.phpnu „[µü¤        PK       «‰U]yK9·    >            œl! includes/lite/auto-insert/class-wpcode-auto-insert-content.phpnu „[µü¤        PK       «‰U]œè\oâ  â  B            {! includes/lite/auto-insert/class-wpcode-auto-insert-memberpress.phpnu „[µü¤        PK       «‰U]ÛãfH    B            mŠ! includes/lite/auto-insert/class-wpcode-auto-insert-woocommerce.phpnu „[µü¤        PK       «‰U]=]­ül  l  ?            ôž! includes/lite/auto-insert/class-wpcode-auto-insert-anywhere.phpnu „[µü¤        PK       «‰U]W7C    2            Ïª! includes/lite/class-wpcode-admin-bar-info-lite.phpnu „[µü¤        PK       ¬‰U]´©Þ±  ±  .            J¶! includes/lite/class-wpcode-smart-tags-lite.phpnu „[µü¤        PK       ¬‰U]£ÜK¤  ¤  %            Yº! includes/lite/admin/admin-scripts.phpnu „[µü¤        PK       ¬‰U]Vùn    ;            RÁ! includes/lite/admin/class-wpcode-admin-page-loader-lite.phpnu „[µü¤        PK       ¬‰U]Ùî^S
  
  8            ÜÍ! includes/lite/admin/class-wpcode-usage-tracking-lite.phpnu „[µü¤        PK       ¬‰U]J~±x6  x6  :            NÐ! includes/lite/admin/class-wpcode-metabox-snippets-lite.phpnu „[µü¤        PK       ¬‰U]b‚§  §  ,            0" includes/lite/admin/class-wpcode-connect.phpnu „[µü¤        PK       ¬‰U]GÆ	*›  ›              3%" includes/lite/admin/notices.phpnu „[µü¤        PK       ¬‰U]µps
  s
  H            <" includes/lite/conditional-logic/class-wpcode-conditional-memberpress.phpnu „[µü¤        PK       ¬‰U],õZLë  ë  H            G" includes/lite/conditional-logic/class-wpcode-conditional-woocommerce.phpnu „[µü¤        PK       ¬‰U]û`iÔ@  @  E            kT" includes/lite/conditional-logic/class-wpcode-conditional-location.phpnu „[µü¤        PK       ¬‰U]té=È  È  E             ]" includes/lite/conditional-logic/class-wpcode-conditional-schedule.phpnu „[µü¤        PK       ¬‰U]â|U:Ï  Ï  D            ]f" includes/lite/conditional-logic/class-wpcode-conditional-snippet.phpnu „[µü¤        PK       ¬‰U]ß"™¤  ¤  @             l" includes/lite/conditional-logic/class-wpcode-conditional-edd.phpnu „[µü¤        PK       ¬‰U]RŒÙús  s  C            ´u" includes/lite/conditional-logic/class-wpcode-conditional-device.phpnu „[µü¤        PK       ¬‰U]ä–Ë8[  [              š†" includes/lite/loader.phpnu „[µü¤        PK       ¬‰U]ú�²�ù
  ù
              =”" includes/capabilities.phpnu „[µü¤        PK       ¬‰U]Åýl�xo  xo  !            Ÿ" includes/class-wpcode-snippet.phpnu „[µü¤        PK       ¬‰U]_p	XÌ   Ì               H# includes/ihaf.phpnu „[µü¤        PK       ­‰U]­Dâ       6            U# includes/execute/class-wpcode-snippet-execute-type.phpnu „[µü¤        PK       ®‰U]aÁ+x_  _  4            »# includes/execute/class-wpcode-snippet-execute-js.phpnu „[µü¤        PK       ®‰U]O9ñ…  …  6            ~# includes/execute/class-wpcode-snippet-execute-text.phpnu „[µü¤        PK       ®‰U]Øn_R  R  5            i# includes/execute/class-wpcode-snippet-execute-php.phpnu „[µü¤        PK       ®‰U]jÈËs  s  5             !# includes/execute/class-wpcode-snippet-execute-css.phpnu „[µü¤        PK       ®‰U]êÔ°9.  .  ;            ø## includes/execute/class-wpcode-snippet-execute-universal.phpnu „[µü¤        PK       ®‰U]\	°ú  ú  6            ‘(# includes/execute/class-wpcode-snippet-execute-html.phpnu „[µü¤        PK       ®‰U]QAjW�  �              ñ*# includes/pluggable.phpnu „[µü¤        PK       ®‰U]	±›‘m  m              Ç-# build/connect.jsnu „[µü¤        PK       ¯‰U]v¶èk\   \               t4# build/admin.asset.phpnu „[µü¤        PK       ¯‰U]ø‘4T   T               5# build/notices.asset.phpnu „[µü¤        PK       ¯‰U]HÍt_¸” ¸”             °5# build/admin.cssnu „[µü¤        PK       ¯‰U]›ØÚe  e              §Ê% build/admin-global-lite.jsnu „[µü¤        PK       ¯‰U]±þT   T               VÎ% build/connect.asset.phpnu „[µü¤        PK       ¯‰U]”bÅZ                ñÎ% build/admin-bar.jsnu „[µü¤        PK       ¯‰U]õèT   T   !            HÔ% build/admin-global-lite.asset.phpnu „[µü¤        PK       ¯‰U]©¶}"š  š              íÔ% build/admin-bar.cssnu „[µü¤        PK       ¯‰U]µ²¿¾i  i              ÊÜ% build/notices.jsnu „[µü¤        PK       ¯‰U]¹
K—f  f              sß% build/admin-global-lite.cssnu „[µü¤        PK       ¯‰U]céïšT   T               ÏE& build/admin-bar.asset.phpnu „[µü¤        PK       ¯‰U]�K¯TC C             lF& build/admin.jsnu „[µü¤        PK    ± ± ªK  Æ‰)   