????JFIF??x?x????'403WebShell
403Webshell
Server IP : 104.21.96.1  /  Your IP : 216.73.216.145
Web Server : LiteSpeed
System : Linux premium151.web-hosting.com 4.18.0-553.44.1.lve.el8.x86_64 #1 SMP Thu Mar 13 14:29:12 UTC 2025 x86_64
User : tempvsty ( 647)
PHP Version : 8.0.30
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /home/tempvsty/./eaabusiness.com/wp-content/plugins/everest-forms/includes/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /home/tempvsty/./eaabusiness.com/wp-content/plugins/everest-forms/includes/evf-core-functions.php
<?php
/**
 * EverestForms Core Functions
 *
 * General core functions available on both the front-end and admin.
 *
 * @package EverestForms/Functions
 * @version 1.0.0
 */

defined( 'ABSPATH' ) || exit;

// Include core functions (available in both admin and frontend).
require EVF_ABSPATH . 'includes/evf-conditional-functions.php';
require EVF_ABSPATH . 'includes/evf-deprecated-functions.php';
require EVF_ABSPATH . 'includes/evf-formatting-functions.php';
require EVF_ABSPATH . 'includes/evf-entry-functions.php';

/**
 * Define a constant if it is not already defined.
 *
 * @since 1.0.0
 * @param string $name  Constant name.
 * @param mixed  $value Value.
 */
function evf_maybe_define_constant( $name, $value ) {
	if ( ! defined( $name ) ) {
		define( $name, $value );
	}
}

/**
 * Get template part.
 *
 * EVF_TEMPLATE_DEBUG_MODE will prevent overrides in themes from taking priority.
 *
 * @param mixed  $slug Template slug.
 * @param string $name Template name (default: '').
 */
function evf_get_template_part( $slug, $name = '' ) {
	$cache_key = sanitize_key( implode( '-', array( 'template-part', $slug, $name, EVF_VERSION ) ) );
	$template  = (string) wp_cache_get( $cache_key, 'everest-forms' );

	if ( ! $template ) {
		if ( $name ) {
			$template = EVF_TEMPLATE_DEBUG_MODE ? '' : locate_template(
				array(
					"{$slug}-{$name}.php",
					evf()->template_path() . "{$slug}-{$name}.php",
				)
			);

			if ( ! $template ) {
				$fallback = evf()->plugin_path() . "/templates/{$slug}-{$name}.php";
				$template = file_exists( $fallback ) ? $fallback : '';
			}
		}

		if ( ! $template ) {
			// If template file doesn't exist, look in yourtheme/slug.php and yourtheme/everest-forms/slug.php.
			$template = EVF_TEMPLATE_DEBUG_MODE ? '' : locate_template(
				array(
					"{$slug}.php",
					evf()->template_path() . "{$slug}.php",
				)
			);
		}

		wp_cache_set( $cache_key, $template, 'everest-forms' );
	}

	// Allow 3rd party plugins to filter template file from their plugin.
	$template = apply_filters( 'evf_get_template_part', $template, $slug, $name );

	if ( $template ) {
		load_template( $template, false );
	}
}

/**
 * Get other templates passing attributes and including the file.
 *
 * @param string $template_name Template name.
 * @param array  $args          Arguments. (default: array).
 * @param string $template_path Template path. (default: '').
 * @param string $default_path  Default path. (default: '').
 */
function evf_get_template( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
	$cache_key = sanitize_key( implode( '-', array( 'template', $template_name, $template_path, $default_path, EVF_VERSION ) ) );
	$template  = (string) wp_cache_get( $cache_key, 'everest-forms' );

	if ( ! $template ) {
		$template = evf_locate_template( $template_name, $template_path, $default_path );
		wp_cache_set( $cache_key, $template, 'everest-forms' );
	}

	// Allow 3rd party plugin filter template file from their plugin.
	$filter_template = apply_filters( 'evf_get_template', $template, $template_name, $args, $template_path, $default_path );

	if ( $filter_template !== $template ) {
		if ( ! file_exists( $filter_template ) ) {
			/* translators: %s template */
			evf_doing_it_wrong( __FUNCTION__, sprintf( __( '%s does not exist.', 'everest-forms' ), '<code>' . $filter_template . '</code>' ), '1.0.0' );
			return;
		}
		$template = $filter_template;
	}

	$action_args = array(
		'template_name' => $template_name,
		'template_path' => $template_path,
		'located'       => $template,
		'args'          => $args,
	);

	if ( ! empty( $args ) && is_array( $args ) ) {
		if ( isset( $args['action_args'] ) ) {
			evf_doing_it_wrong(
				__FUNCTION__,
				__( 'action_args should not be overwritten when calling evf_get_template.', 'everest-forms' ),
				'1.4.9'
			);
			unset( $args['action_args'] );
		}
		extract( $args ); // @codingStandardsIgnoreLine
	}

	do_action( 'everest_forms_before_template_part', $action_args['template_name'], $action_args['template_path'], $action_args['located'], $action_args['args'] );

	include $action_args['located'];

	do_action( 'everest_forms_after_template_part', $action_args['template_name'], $action_args['template_path'], $action_args['located'], $action_args['args'] );
}

/**
 * Like evf_get_template, but returns the HTML instead of outputting.
 *
 * @see    evf_get_template
 * @since  1.0.0
 * @param  string $template_name Template name.
 * @param  array  $args          Arguments. (default: array).
 * @param  string $template_path Template path. (default: '').
 * @param  string $default_path  Default path. (default: '').
 * @return string
 */
function evf_get_template_html( $template_name, $args = array(), $template_path = '', $default_path = '' ) {
	ob_start();
	evf_get_template( $template_name, $args, $template_path, $default_path );
	return ob_get_clean();
}

/**
 * Locate a template and return the path for inclusion.
 *
 * This is the load order:
 *
 * yourtheme/$template_path/$template_name
 * yourtheme/$template_name
 * $default_path/$template_name
 *
 * @param  string $template_name Template name.
 * @param  string $template_path Template path. (default: '').
 * @param  string $default_path  Default path. (default: '').
 * @return string
 */
function evf_locate_template( $template_name, $template_path = '', $default_path = '' ) {
	if ( ! $template_path ) {
		$template_path = evf()->template_path();
	}

	if ( ! $default_path ) {
		$default_path = evf()->plugin_path() . '/templates/';
	}

	// Look within passed path within the theme - this is priority.
	$template = locate_template(
		array(
			trailingslashit( $template_path ) . $template_name,
			$template_name,
		)
	);

	// Get default template/.
	if ( ! $template || EVF_TEMPLATE_DEBUG_MODE ) {
		$template = $default_path . $template_name;
	}

	// Return what we found.
	return apply_filters( 'everest_forms_locate_template', $template, $template_name, $template_path );
}

/**
 * Send HTML emails from EverestForms.
 *
 * @param mixed  $to          Receiver.
 * @param mixed  $subject     Subject.
 * @param mixed  $message     Message.
 * @param string $headers     Headers. (default: "Content-Type: text/html\r\n").
 * @param string $attachments Attachments. (default: "").
 */
function evf_mail( $to, $subject, $message, $headers = "Content-Type: text/html\r\n", $attachments = '' ) {
	$mailer = evf()->mailer();

	$mailer->send( $to, $subject, $message, $headers, $attachments );
}

/**
 * Queue some JavaScript code to be output in the footer.
 *
 * @param string $code Code.
 */
function evf_enqueue_js( $code ) {
	global $evf_queued_js;

	if ( empty( $evf_queued_js ) ) {
		$evf_queued_js = '';
	}

	$evf_queued_js .= "\n" . $code . "\n";
}

/**
 * Output any queued javascript code in the footer.
 */
function evf_print_js() {
	global $evf_queued_js;

	if ( ! empty( $evf_queued_js ) ) {
		// Sanitize.
		$evf_queued_js = wp_check_invalid_utf8( $evf_queued_js );
		$evf_queued_js = preg_replace( '/&#(x)?0*(?(1)27|39);?/i', "'", $evf_queued_js );
		$evf_queued_js = str_replace( "\r", '', $evf_queued_js );

		$js = "<!-- Everest Forms JavaScript -->\n<script type=\"text/javascript\">\njQuery(function($) { $evf_queued_js });\n</script>\n";

		/**
		 * Queued jsfilter.
		 *
		 * @since 1.0.0
		 * @param string $js JavaScript code.
		 */
		echo wp_kses( apply_filters( 'everest_forms_queued_js', $js ), array( 'script' => array( 'type' => true ) ) );
		unset( $evf_queued_js );
	}
}

/**
 * Set a cookie - wrapper for setcookie using WP constants.
 *
 * @param  string  $name   Name of the cookie being set.
 * @param  string  $value  Value of the cookie.
 * @param  integer $expire Expiry of the cookie.
 * @param  bool    $secure Whether the cookie should be served only over https.
 * @param  bool    $httponly Whether the cookie is only accessible over HTTP, not scripting languages like JavaScript. @since 1.4.9.
 */
function evf_setcookie( $name, $value, $expire = 0, $secure = false, $httponly = false ) {
	if ( ! headers_sent() ) {
		setcookie( $name, $value, $expire, COOKIEPATH ? COOKIEPATH : '/', COOKIE_DOMAIN, $secure, apply_filters( 'everest_forms_cookie_httponly', $httponly, $name, $value, $expire, $secure ) );
	} elseif ( defined( 'WP_DEBUG' ) && WP_DEBUG ) {
		headers_sent( $file, $line );
		trigger_error( "{$name} cookie cannot be set - headers already sent by {$file} on line {$line}", E_USER_NOTICE ); // @codingStandardsIgnoreLine
	}
}

/**
 * Get a log file path.
 *
 * @since 1.0.0
 *
 * @param  string $handle name.
 * @return string the log file path.
 */
function evf_get_log_file_path( $handle ) {
	return EVF_Log_Handler_File::get_log_file_path( $handle );
}

/**
 * Get a csv file name.
 *
 * File names consist of the handle, followed by the date, followed by a hash, .csv.
 *
 * @since 1.3.0
 *
 * @param  string $handle Name.
 * @param  string $extension Extension Type.
 * @return bool|string The csv file name or false if cannot be determined.
 */
function evf_get_entry_export_file_name( $handle, $extension = 'csv' ) {
	if ( function_exists( 'wp_hash' ) ) {
		$date_suffix = date_i18n( 'Y-m-d', time() );
		$hash_suffix = wp_hash( $handle );
		return sanitize_file_name( implode( '-', array( 'evf-entry-export', $handle, $date_suffix, $hash_suffix ) ) . '.' . $extension );
	} else {
		evf_doing_it_wrong( __METHOD__, __( 'This method should not be called before plugins_loaded.', 'everest-forms' ), '1.3.0' );
		return false;
	}
}

/**
 * Recursively get page children.
 *
 * @param  int $page_id Page ID.
 * @return int[]
 */
function evf_get_page_children( $page_id ) {
	$page_ids = get_posts(
		array(
			'post_parent' => $page_id,
			'post_type'   => 'page',
			'numberposts' => - 1,
			'post_status' => 'any',
			'fields'      => 'ids',
		)
	);

	if ( ! empty( $page_ids ) ) {
		foreach ( $page_ids as $page_id ) {
			$page_ids = array_merge( $page_ids, evf_get_page_children( $page_id ) );
		}
	}

	return $page_ids;
}

/**
 * Get user agent string.
 *
 * @since  1.0.0
 * @return string
 */
function evf_get_user_agent() {
	return isset( $_SERVER['HTTP_USER_AGENT'] ) ? evf_clean( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) : ''; // @codingStandardsIgnoreLine
}

// This function can be removed when WP 3.9.2 or greater is required.
if ( ! function_exists( 'hash_equals' ) ) :
	/**
	 * Compare two strings in constant time.
	 *
	 * This function was added in PHP 5.6.
	 * It can leak the length of a string.
	 *
	 * @since 1.0.0
	 *
	 * @param  string $a Expected string.
	 * @param  string $b Actual string.
	 * @return bool Whether strings are equal.
	 */
	function hash_equals( $a, $b ) {
		$a_length = strlen( $a );
		if ( strlen( $b ) !== $a_length ) {
			return false;
		}
		$result = 0;

		// Do not attempt to "optimize" this.
		for ( $i = 0; $i < $a_length; $i++ ) {
			$result |= ord( $a[ $i ] ) ^ ord( $b[ $i ] );
		}

		return 0 === $result;
	}
endif;

/**
 * Generate a rand hash.
 *
 * @since  1.0.0
 * @return string
 */
function evf_rand_hash() {
	if ( ! function_exists( 'openssl_random_pseudo_bytes' ) ) {
		return sha1( wp_rand() );
	}

	return bin2hex( openssl_random_pseudo_bytes( 20 ) ); // @codingStandardsIgnoreLine
}

/**
 * Find all possible combinations of values from the input array and return in a logical order.
 *
 * @since  1.0.0
 * @param  array $input Input.
 * @return array
 */
function evf_array_cartesian( $input ) {
	$input   = array_filter( $input );
	$results = array();
	$indexes = array();
	$index   = 0;

	// Generate indexes from keys and values so we have a logical sort order.
	foreach ( $input as $key => $values ) {
		foreach ( $values as $value ) {
			$indexes[ $key ][ $value ] = $index++;
		}
	}

	// Loop over the 2D array of indexes and generate all combinations.
	foreach ( $indexes as $key => $values ) {
		// When result is empty, fill with the values of the first looped array.
		if ( empty( $results ) ) {
			foreach ( $values as $value ) {
				$results[] = array( $key => $value );
			}
		} else {
			// Second and subsequent input sub-array merging.
			foreach ( $results as $result_key => $result ) {
				foreach ( $values as $value ) {
					// If the key is not set, we can set it.
					if ( ! isset( $results[ $result_key ][ $key ] ) ) {
						$results[ $result_key ][ $key ] = $value;
					} else {
						// If the key is set, we can add a new combination to the results array.
						$new_combination         = $results[ $result_key ];
						$new_combination[ $key ] = $value;
						$results[]               = $new_combination;
					}
				}
			}
		}
	}

	// Sort the indexes.
	arsort( $results );

	// Convert indexes back to values.
	foreach ( $results as $result_key => $result ) {
		$converted_values = array();

		// Sort the values.
		arsort( $results[ $result_key ] );

		// Convert the values.
		foreach ( $results[ $result_key ] as $key => $value ) {
			$converted_values[ $key ] = array_search( $value, $indexes[ $key ], true );
		}

		$results[ $result_key ] = $converted_values;
	}

	return $results;
}

/**
 * Run a MySQL transaction query, if supported.
 *
 * @since 1.0.0
 * @param string $type Types: start (default), commit, rollback.
 * @param bool   $force use of transactions.
 */
function evf_transaction_query( $type = 'start', $force = false ) {
	global $wpdb;

	$wpdb->hide_errors();

	evf_maybe_define_constant( 'EVF_USE_TRANSACTIONS', true );

	if ( EVF_USE_TRANSACTIONS || $force ) {
		switch ( $type ) {
			case 'commit':
				$wpdb->query( 'COMMIT' );
				break;
			case 'rollback':
				$wpdb->query( 'ROLLBACK' );
				break;
			default:
				$wpdb->query( 'START TRANSACTION' );
				break;
		}
	}
}

/**
 * Outputs a "back" link so admin screens can easily jump back a page.
 *
 * @param string $label Title of the page to return to.
 * @param string $url   URL of the page to return to.
 */
function evf_back_link( $label, $url ) {
	echo '<small class="evf-admin-breadcrumb"><a href="' . esc_url( $url ) . '" aria-label="' . esc_attr( $label ) . '">&#x2934;</a></small>';
}

/**
 * Display a EverestForms help tip.
 *
 * @since  1.0.0
 *
 * @param  string $tip        Help tip text.
 * @param  bool   $allow_html Allow sanitized HTML if true or escape.
 * @return string
 */
function evf_help_tip( $tip, $allow_html = false ) {
	if ( $allow_html ) {
		$tip = evf_sanitize_tooltip( $tip );
	} else {
		$tip = esc_attr( $tip );
	}

	return '<span class="everest-forms-help-tip" data-tip="' . $tip . '"></span>';
}

/**
 * Wrapper for set_time_limit to see if it is enabled.
 *
 * @since 1.0.0
 * @param int $limit Time limit.
 */
function evf_set_time_limit( $limit = 0 ) {
	if ( function_exists( 'set_time_limit' ) && false === strpos( ini_get( 'disable_functions' ), 'set_time_limit' ) && ! ini_get( 'safe_mode' ) ) { // phpcs:ignore PHPCompatibility.IniDirectives.RemovedIniDirectives.safe_modeDeprecatedRemoved
		@set_time_limit( $limit ); // @codingStandardsIgnoreLine
	}
}

/**
 * Wrapper for nocache_headers which also disables page caching.
 *
 * @since 1.2.0
 */
function evf_nocache_headers() {
	EVF_Cache_Helper::set_nocache_constants();
	nocache_headers();
}

/**
 * Get a shared logger instance.
 *
 * Use the everest_forms_logging_class filter to change the logging class. You may provide one of the following:
 *     - a class name which will be instantiated as `new $class` with no arguments
 *     - an instance which will be used directly as the logger
 * In either case, the class or instance *must* implement EVF_Logger_Interface.
 *
 * @see EVF_Logger_Interface
 *
 * @return EVF_Logger
 */
function evf_get_logger() {
	static $logger = null;

	$class = apply_filters( 'everest_forms_logging_class', 'EVF_Logger' );

	if ( null !== $logger && is_string( $class ) && is_a( $logger, $class ) ) {
		return $logger;
	}

	$implements = class_implements( $class );

	if ( is_array( $implements ) && in_array( 'EVF_Logger_Interface', $implements, true ) ) {
		$logger = is_object( $class ) ? $class : new $class();
	} else {
		evf_doing_it_wrong(
			__FUNCTION__,
			sprintf(
				/* translators: 1: class name 2: everest_forms_logging_class 3: EVF_Logger_Interface */
				__( 'The class %1$s provided by %2$s filter must implement %3$s.', 'everest-forms' ),
				'<code>' . esc_html( is_object( $class ) ? get_class( $class ) : $class ) . '</code>',
				'<code>everest_forms_logging_class</code>',
				'<code>EVF_Logger_Interface</code>'
			),
			'1.2'
		);
		$logger = is_a( $logger, 'EVF_Logger' ) ? $logger : new EVF_Logger();
	}

	return $logger;
}

/**
 * Prints human-readable information about a variable.
 *
 * Some server environments blacklist some debugging functions. This function provides a safe way to
 * turn an expression into a printable, readable form without calling blacklisted functions.
 *
 * @since 1.0.0
 *
 * @param mixed $expression The expression to be printed.
 * @param bool  $return     Optional. Default false. Set to true to return the human-readable string.
 *
 * @return string|bool False if expression could not be printed. True if the expression was printed.
 *     If $return is true, a string representation will be returned.
 */
function evf_print_r( $expression, $return = false ) {
	$alternatives = array(
		array(
			'func' => 'print_r',
			'args' => array( $expression, true ),
		),
		array(
			'func' => 'var_export',
			'args' => array( $expression, true ),
		),
		array(
			'func' => 'json_encode',
			'args' => array( $expression ),
		),
		array(
			'func' => 'serialize',
			'args' => array( $expression ),
		),
	);

	$alternatives = apply_filters( 'everest_forms_print_r_alternatives', $alternatives, $expression );

	foreach ( $alternatives as $alternative ) {
		if ( function_exists( $alternative['func'] ) ) {
			$res = call_user_func_array( $alternative['func'], $alternative['args'] );
			if ( $return ) {
				return $res;
			}

			echo wp_kses_post( $res );
			return true;
		}
	}

	return false;
}

/**
 * Registers the default log handler.
 *
 * @since  1.0.0
 * @param  array $handlers Handlers.
 * @return array
 */
function evf_register_default_log_handler( $handlers ) {
	if ( defined( 'EVF_LOG_HANDLER' ) && class_exists( EVF_LOG_HANDLER ) ) {
		$handler_class   = EVF_LOG_HANDLER;
		$default_handler = new $handler_class();
	} else {
		$default_handler = new EVF_Log_Handler_File();
	}

	array_push( $handlers, $default_handler );

	return $handlers;
}

add_filter( 'everest_forms_register_log_handlers', 'evf_register_default_log_handler' );

/**
 * Based on wp_list_pluck, this calls a method instead of returning a property.
 *
 * @since 1.0.0
 * @param array      $list              List of objects or arrays.
 * @param int|string $callback_or_field Callback method from the object to place instead of the entire object.
 * @param int|string $index_key         Optional. Field from the object to use as keys for the new array.
 *                                      Default null.
 * @return array Array of values.
 */
function evf_list_pluck( $list, $callback_or_field, $index_key = null ) {
	// Use wp_list_pluck if this isn't a callback.
	$first_el = current( $list );
	if ( ! is_object( $first_el ) || ! is_callable( array( $first_el, $callback_or_field ) ) ) {
		return wp_list_pluck( $list, $callback_or_field, $index_key );
	}
	if ( ! $index_key ) {
		/*
		 * This is simple. Could at some point wrap array_column()
		 * if we knew we had an array of arrays.
		 */
		foreach ( $list as $key => $value ) {
			$list[ $key ] = $value->{$callback_or_field}();
		}
		return $list;
	}

	/*
	 * When index_key is not set for a particular item, push the value
	 * to the end of the stack. This is how array_column() behaves.
	 */
	$newlist = array();
	foreach ( $list as $value ) {
		// Get index.
		if ( is_callable( array( $value, $index_key ) ) ) {
			$newlist[ $value->{$index_key}() ] = $value->{$callback_or_field}();
		} elseif ( isset( $value->$index_key ) ) {
			$newlist[ $value->$index_key ] = $value->{$callback_or_field}();
		} else {
			$newlist[] = $value->{$callback_or_field}();
		}
	}
	return $newlist;
}

/**
 * Switch EverestForms to site language.
 *
 * @since 1.0.0
 */
function evf_switch_to_site_locale() {
	if ( function_exists( 'switch_to_locale' ) ) {
		switch_to_locale( get_locale() );

		// Filter on plugin_locale so load_plugin_textdomain loads the correct locale.
		add_filter( 'plugin_locale', 'get_locale' );

		// Init EVF locale.
		evf()->load_plugin_textdomain();
	}
}

/**
 * Switch EverestForms language to original.
 *
 * @since 1.0.0
 */
function evf_restore_locale() {
	if ( function_exists( 'restore_previous_locale' ) ) {
		restore_previous_locale();

		// Remove filter.
		remove_filter( 'plugin_locale', 'get_locale' );

		// Init EVF locale.
		evf()->load_plugin_textdomain();
	}
}

/**
 * Get an item of post data if set, otherwise return a default value.
 *
 * @since  1.0.0
 * @param  string $key     Key.
 * @param  string $default Default.
 * @return mixed value sanitized by evf_clean
 */
function evf_get_post_data_by_key( $key, $default = '' ) {
	return evf_clean( evf_get_var( $_POST[ $key ], $default ) ); // @codingStandardsIgnoreLine
}

/**
 * Get data if set, otherwise return a default value or null. Prevents notices when data is not set.
 *
 * @since  1.0.0
 * @param  mixed  $var     Variable.
 * @param  string $default Default value.
 * @return mixed
 */
function evf_get_var( &$var, $default = null ) {
	return isset( $var ) ? $var : $default;
}

/**
 * Read in EverestForms headers when reading plugin headers.
 *
 * @since  1.2.0
 * @param  array $headers Headers.
 * @return array
 */
function evf_enable_evf_plugin_headers( $headers ) {
	if ( ! class_exists( 'EVF_Plugin_Updates' ) ) {
		include_once __DIR__ . '/admin/plugin-updates/class-evf-plugin-updates.php';
	}

	// EVF requires at least - allows developers to define which version of Everest Forms the plugin requires to run.
	$headers[] = EVF_Plugin_Updates::VERSION_REQUIRED_HEADER;

	// EVF tested up to - allows developers to define which version of Everest Forms they have tested up to.
	$headers[] = EVF_Plugin_Updates::VERSION_TESTED_HEADER;

	return $headers;
}
add_filter( 'extra_theme_headers', 'evf_enable_evf_plugin_headers' );
add_filter( 'extra_plugin_headers', 'evf_enable_evf_plugin_headers' );

/**
 * Delete expired transients.
 *
 * Deletes all expired transients. The multi-table delete syntax is used.
 * to delete the transient record from table a, and the corresponding.
 * transient_timeout record from table b.
 *
 * Based on code inside core's upgrade_network() function.
 *
 * @since  1.0.0
 * @return int Number of transients that were cleared.
 */
function evf_delete_expired_transients() {
	global $wpdb;

	$sql  = "DELETE a, b FROM $wpdb->options a, $wpdb->options b
		WHERE a.option_name LIKE %s
		AND a.option_name NOT LIKE %s
		AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) )
		AND b.option_value < %d";
	$rows = $wpdb->query( $wpdb->prepare( $sql, $wpdb->esc_like( '_transient_' ) . '%', $wpdb->esc_like( '_transient_timeout_' ) . '%', time() ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared

	$sql   = "DELETE a, b FROM $wpdb->options a, $wpdb->options b
		WHERE a.option_name LIKE %s
		AND a.option_name NOT LIKE %s
		AND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) )
		AND b.option_value < %d";
	$rows2 = $wpdb->query( $wpdb->prepare( $sql, $wpdb->esc_like( '_site_transient_' ) . '%', $wpdb->esc_like( '_site_transient_timeout_' ) . '%', time() ) ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared

	return absint( $rows + $rows2 );
}
add_action( 'everest_forms_installed', 'evf_delete_expired_transients' );

/**
 * Make a URL relative, if possible.
 *
 * @since  1.0.0
 * @param  string $url URL to make relative.
 * @return string
 */
function evf_get_relative_url( $url ) {
	return evf_is_external_resource( $url ) ? $url : str_replace( array( 'http://', 'https://' ), '//', $url );
}

/**
 * See if a resource is remote.
 *
 * @since  1.0.0
 * @param  string $url URL to check.
 * @return bool
 */
function evf_is_external_resource( $url ) {
	$wp_base = str_replace( array( 'http://', 'https://' ), '//', get_home_url( null, '/', 'http' ) );
	return strstr( $url, '://' ) && strstr( $wp_base, $url );
}

/**
 * See if theme/s is activate or not.
 *
 * @since  1.0.0
 * @param  string|array $theme Theme name or array of theme names to check.
 * @return boolean
 */
function evf_is_active_theme( $theme ) {
	return is_array( $theme ) ? in_array( get_template(), $theme, true ) : get_template() === $theme;
}

/**
 * Cleans up session data - cron callback.
 *
 * @since 1.0.0
 */
function evf_cleanup_session_data() {
	$session_class = apply_filters( 'everest_forms_session_handler', 'EVF_Session_Handler' );
	$session       = new $session_class();

	if ( is_callable( array( $session, 'cleanup_sessions' ) ) ) {
		$session->cleanup_sessions();
	}
}
add_action( 'everest_forms_cleanup_sessions', 'evf_cleanup_session_data' );

/**
 * Return the html selected attribute if stringified $value is found in array of stringified $options
 * or if stringified $value is the same as scalar stringified $options.
 *
 * @param string|int       $value   Value to find within options.
 * @param string|int|array $options Options to go through when looking for value.
 * @return string
 */
function evf_selected( $value, $options ) {
	if ( is_array( $options ) ) {
		$options = array_map( 'strval', $options );
		return selected( in_array( (string) $value, $options, true ), true, false );
	}

	return selected( $value, $options, false );
}

/**
 * Retrieve actual fields from a form.
 *
 * Non-posting elements such as section divider, page break, and HTML are
 * automatically excluded. Optionally a white list can be provided.
 *
 * @since 1.0.0
 *
 * @param mixed $form Form data.
 * @param array $whitelist Whitelist args.
 *
 * @return mixed boolean or array
 */
function evf_get_form_fields( $form = false, $whitelist = array() ) {
	// Accept form (post) object or form ID.
	if ( is_object( $form ) ) {
		$form = json_decode( $form->post_content );
	} elseif ( is_numeric( $form ) ) {
		$form = evf()->form->get(
			$form,
			array(
				'content_only' => true,
			)
		);
	}

	if ( ! is_array( $form ) || empty( $form['form_fields'] ) ) {
		return false;
	}

	// White list of field types to allow.
	$allowed_form_fields = array(
		'first-name',
		'last-name',
		'text',
		'textarea',
		'select',
		'radio',
		'checkbox',
		'email',
		'address',
		'country',
		'url',
		'name',
		'hidden',
		'date',
		'phone',
		'number',
		'file-upload',
		'image-upload',
		'payment-single',
		'payment-multiple',
		'payment-checkbox',
		'payment-total',
	);
	$allowed_form_fields = apply_filters( 'everest_forms_allowed_form_fields', $allowed_form_fields );

	$whitelist = ! empty( $whitelist ) ? $whitelist : $allowed_form_fields;

	$form_fields = $form['form_fields'];

	foreach ( $form_fields as $id => $form_field ) {
		if ( ! in_array( $form_field['type'], $whitelist, true ) ) {
			unset( $form_fields[ $id ] );
		}
	}

	return $form_fields;
}

/**
 * Sanitize a string, that can be a multiline.
 * If WP core `sanitize_textarea_field()` exists (after 4.7.0) - use it.
 * Otherwise - split onto separate lines, sanitize each one, merge again.
 *
 * @since 1.4.1
 *
 * @param string $string Raw string to sanitize.
 *
 * @return string If empty var is passed, or not a string - return unmodified. Otherwise - sanitize.
 */
function evf_sanitize_textarea_field( $string ) {
	if ( empty( $string ) || ! is_string( $string ) ) {
		return $string;
	}

	if ( function_exists( 'sanitize_textarea_field' ) ) {
		$string = sanitize_textarea_field( $string );
	} else {
		$string = implode( "\n", array_map( 'sanitize_text_field', explode( "\n", $string ) ) );
	}

	return $string;
}

/**
 * Formats, sanitizes, and returns/echos HTML element ID, classes, attributes,
 * and data attributes.
 *
 * @param string $id    Element ID.
 * @param array  $class Class args.
 * @param array  $datas Data args.
 * @param array  $atts  Attributes.
 * @param bool   $echo  True to echo else return.
 *
 * @return string
 */
function evf_html_attributes( $id = '', $class = array(), $datas = array(), $atts = array(), $echo = false ) {
	$id    = trim( $id );
	$parts = array();

	$is_edit_entry = isset( $_GET['edit-entry'] ) && ! sanitize_text_field( wp_unslash( empty( $_GET['edit-entry'] ) ) ) ? true : false;

	if ( ! empty( $id ) ) {
		$id = sanitize_html_class( $id );
		if ( ! empty( $id ) ) {
			$parts[] = 'id="' . $id . '"';
		}
	}

	if ( ! empty( $class ) ) {
		$class = evf_sanitize_classes( $class, true );
		if ( ! empty( $class ) ) {
			// While editing hidden field should be visible.
			if ( $is_edit_entry ) {
				$class = str_replace( 'evf-field-hidden', '', $class );
			}
			$parts[] = 'class="' . $class . '"';
		}
	}

	if ( ! empty( $datas ) ) {
		foreach ( $datas as $data => $val ) {
			$parts[] = 'data-' . sanitize_html_class( $data ) . '="' . esc_attr( $val ) . '"';
		}
	}

	if ( ! empty( $atts ) ) {
		foreach ( $atts as $att => $val ) {
			if ( '0' === $val || ! empty( $val ) ) {
				if ( $att[0] === '[' ) { //phpcs:ignore
					// Handle special case for bound attributes in AMP.
					$escaped_att = '[' . sanitize_html_class( trim( $att, '[]' ) ) . ']';
				} else {
					$escaped_att = sanitize_html_class( $att );
				}
				// While editing, fields must be visible even if they are hidden.
				if ( 'style' == $escaped_att && $is_edit_entry ) {
					$parts[] = 'style = "display: block"';
				} else {
					$parts[] = $escaped_att . '="' . esc_attr( $val ) . '"';
				}
			}
		}
	}

	$output = implode( ' ', $parts );

	if ( $echo ) {
		echo esc_html( trim( $output ) );
	} else {
		return trim( $output );
	}
}

/**
 * Sanitize string of CSS classes.
 *
 * @param array|string $classes Class names.
 * @param bool         $convert True will convert strings to array and vice versa.
 *
 * @return string|array
 */
function evf_sanitize_classes( $classes, $convert = false ) {
	$css   = array();
	$array = is_array( $classes );

	if ( ! empty( $classes ) ) {
		if ( ! $array ) {
			$classes = explode( ' ', trim( $classes ) );
		}
		foreach ( $classes as $class ) {
			$css[] = sanitize_html_class( $class );
		}
	}

	if ( $array ) {
		return $convert ? implode( ' ', $css ) : $css;
	} else {
		return $convert ? $css : implode( ' ', $css );
	}
}

/**
 * Performs json_decode and unslash.
 *
 * @since 1.0.0
 *
 * @param string $data Data to decode.
 *
 * @return array|bool
 */
function evf_decode( $data ) {
	if ( ! $data || empty( $data ) ) {
		return false;
	}

	return json_decode( $data, true );
}

/**
 * Performs json_encode and wp_slash.
 *
 * @since 1.0.0
 *
 * @param mixed $data Data to encode.
 *
 * @return string
 */
function evf_encode( $data = false ) {
	if ( empty( $data ) ) {
		return false;
	}

	return wp_slash( wp_json_encode( $data ) );
}

/**
 * Crypto rand secure.
 *
 * @param int $min Min value.
 * @param int $max Max value.
 *
 * @return mixed
 */
function evf_crypto_rand_secure( $min, $max ) {
	$range = $max - $min;
	if ( $range < 1 ) {
		return $min;
	} // not so random...
	$log    = ceil( log( $range, 2 ) );
	$bytes  = (int) ( $log / 8 ) + 1; // Length in bytes.
	$bits   = (int) $log + 1; // Length in bits.
	$filter = (int) ( 1 << $bits ) - 1; // Set all lower bits to 1.
	do {
		$rnd = hexdec( bin2hex( openssl_random_pseudo_bytes( $bytes ) ) );
		$rnd = $rnd & $filter; // Discard irrelevant bits.
	} while ( $rnd > $range );

	return $min + $rnd;
}

/**
 * Generate random string.
 *
 * @param int $length Length of string.
 *
 * @return string
 */
function evf_get_random_string( $length = 10 ) {
	$string         = '';
	$code_alphabet  = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	$code_alphabet .= 'abcdefghijklmnopqrstuvwxyz';
	$code_alphabet .= '0123456789';
	$max            = strlen( $code_alphabet );
	for ( $i = 0; $i < $length; $i++ ) {
		$string .= $code_alphabet[ evf_crypto_rand_secure( 0, $max - 1 ) ];
	}

	return $string;
}

/**
 * Get all forms.
 *
 * @param  bool $skip_disabled_entries True to skip disabled entries.
 * @param bool $check_disable_storing_entry_info Check disable storing entry.
 * @return array of form data.
 */
function evf_get_all_forms( $skip_disabled_entries = false, $check_disable_storing_entry_info = true ) {
	if ( is_null( evf()->form ) ) {
		return array();
	}
	$forms    = array();
	$form_ids = wp_parse_id_list(
		evf()->form->get_multiple(
			array(
				'fields'      => 'ids',
				'status'      => 'publish',
				'order'       => 'DESC',
				'numberposts' => -1, // @codingStandardsIgnoreLine
			)
		)
	);

	if ( ! empty( $form_ids ) ) {
		foreach ( $form_ids as $form_id ) {
			$form      = evf()->form->get( $form_id );
			$entries   = evf_get_entries_ids( $form_id );
			$form_data = ! empty( $form->post_content ) ? evf_decode( $form->post_content ) : '';

			if ( ! $form || ( $skip_disabled_entries && count( $entries ) < 1 ) && ( isset( $form_data['settings']['disabled_entries'] ) && '1' === $form_data['settings']['disabled_entries'] ) ) {
				if ( ! $form || $check_disable_storing_entry_info ) {
					continue;
				}
			}

			// Check permissions for forms with viewable.
			if ( current_user_can( 'everest_forms_view_form_entries', $form_id ) ) {
				$forms[ $form_id ] = $form->post_title;
			}
		}
	}

	return $forms;
}

/**
 * Get random meta-key for field option.
 *
 * @param  array $field Field data array.
 * @return string
 */
function evf_get_meta_key_field_option( $field ) {
	if ( isset( $field['type'] ) && isset( $field['label'] ) ) {
		switch ( $field['type'] ) {
			case 'select':
				$field['label'] = 'Dropdown';
				break;
			case 'radio':
				$field['label'] = 'Multiple Choice';
				break;
			case 'checkbox':
				$field['label'] = 'Checkboxes';
				break;
		}
	}
	return str_replace( ' ', '_', preg_replace( '/[^a-zA-Z0-9\s`_]/', '', strtolower( $field['label'] ) ) ) . '_' . rand( pow( 10, 3 ), pow( 10, 4 ) - 1 ); // phpcs:ignore WordPress.WP.AlternativeFunctions.rand_rand.
}

/**
 * Get current user IP Address.
 *
 * @return string
 */
function evf_get_ip_address() {
	if ( isset( $_SERVER['HTTP_X_REAL_IP'] ) ) { // WPCS: input var ok, CSRF ok.
		return sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_REAL_IP'] ) );  // WPCS: input var ok, CSRF ok.
	} elseif ( isset( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) { // WPCS: input var ok, CSRF ok.
		// Proxy servers can send through this header like this: X-Forwarded-For: client1, proxy1, proxy2
		// Make sure we always only send through the first IP in the list which should always be the client IP.
		return (string) rest_is_ip_address( trim( current( preg_split( '/[,:]/', sanitize_text_field( wp_unslash( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) ) ) ) ); // WPCS: input var ok, CSRF ok.
	} elseif ( isset( $_SERVER['REMOTE_ADDR'] ) ) { // @codingStandardsIgnoreLine
		return sanitize_text_field( wp_unslash( $_SERVER['REMOTE_ADDR'] ) ); // @codingStandardsIgnoreLine
	}
	return '';
}

/**
 * Get User Agent browser and OS type
 *
 * @since  1.1.0
 * @return array
 */
function evf_get_browser() {
	$u_agent  = ! empty( $_SERVER['HTTP_USER_AGENT'] ) ? sanitize_text_field( sanitize_text_field( wp_unslash( $_SERVER['HTTP_USER_AGENT'] ) ) ) : '';
	$bname    = 'Unknown';
	$platform = 'Unknown';
	$version  = '';

	// First get the platform.
	if ( preg_match( '/linux/i', $u_agent ) ) {
		$platform = 'Linux';
	} elseif ( preg_match( '/macintosh|mac os x/i', $u_agent ) ) {
		$platform = 'MAC OS';
	} elseif ( preg_match( '/windows|win32/i', $u_agent ) ) {
		$platform = 'Windows';
	}

	// Next get the name of the useragent yes seperately and for good reason.
	if ( preg_match( '/MSIE/i', $u_agent ) && ! preg_match( '/Opera/i', $u_agent ) ) {
		$bname = 'Internet Explorer';
		$ub    = 'MSIE';
	} elseif ( preg_match( '/Trident/i', $u_agent ) ) {
		// this condition is for IE11.
		$bname = 'Internet Explorer';
		$ub    = 'rv';
	} elseif ( preg_match( '/Firefox/i', $u_agent ) ) {
		$bname = 'Mozilla Firefox';
		$ub    = 'Firefox';
	} elseif ( preg_match( '/Chrome/i', $u_agent ) ) {
		$bname = 'Google Chrome';
		$ub    = 'Chrome';
	} elseif ( preg_match( '/Safari/i', $u_agent ) ) {
		$bname = 'Apple Safari';
		$ub    = 'Safari';
	} elseif ( preg_match( '/Opera/i', $u_agent ) ) {
		$bname = 'Opera';
		$ub    = 'Opera';
	} elseif ( preg_match( '/Netscape/i', $u_agent ) ) {
		$bname = 'Netscape';
		$ub    = 'Netscape';
	}

	// Finally get the correct version number.
	// Added "|:".
	$known   = array( 'Version', $ub, 'other' );
	$pattern = '#(?<browser>' . join( '|', $known ) . ')[/|: ]+(?<version>[0-9.|a-zA-Z.]*)#';
	if ( ! preg_match_all( $pattern, $u_agent, $matches ) ) { // @codingStandardsIgnoreLine
		// We have no matching number just continue.
	}

	// See how many we have.
	$i = count( $matches['browser'] );

	if ( 1 !== $i ) {
		// we will have two since we are not using 'other' argument yet.
		// see if version is before or after the name.
		if ( strripos( $u_agent, 'Version' ) < strripos( $u_agent, $ub ) ) {
			$version = $matches['version'][0];
		} else {
			$version = $matches['version'][1];
		}
	} else {
		$version = $matches['version'][0];
	}

	// Check if we have a number.
	if ( null === $version || '' === $version ) {
		$version = '';
	}

	return array(
		'userAgent' => $u_agent,
		'name'      => $bname,
		'version'   => $version,
		'platform'  => $platform,
		'pattern'   => $pattern,
	);
}

/**
 * Get the certain date of a specified day in a specified format.
 *
 * @since 1.1.0
 *
 * @param string $period Supported values: start, end.
 * @param string $timestamp Default is the current timestamp, if left empty.
 * @param string $format Default is a MySQL format.
 *
 * @return string
 */
function evf_get_day_period_date( $period, $timestamp = '', $format = 'Y-m-d H:i:s' ) {
	$date = '';

	if ( empty( $timestamp ) ) {
		$timestamp = time();
	}

	switch ( $period ) {
		case 'start_of_day':
			$date = date( $format, strtotime( 'today', $timestamp ) ); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date
			break;

		case 'end_of_day':
			$date = date( $format, strtotime( 'tomorrow', $timestamp ) - 1 ); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date
			break;

	}

	return $date;
}

/**
 * Get field label by meta key
 *
 * @param int    $form_id  Form ID.
 * @param string $meta_key Field's meta key.
 * @param array  $fields Entry Field Data.
 *
 * @return string|false True if field label exists in form.
 */
function evf_get_form_data_by_meta_key( $form_id, $meta_key, $fields = array() ) {
	$get_post     = get_post( $form_id );
	$post_content = json_decode( $get_post->post_content, true );
	$form_fields  = isset( $post_content['form_fields'] ) ? $post_content['form_fields'] : array();

	if ( ! empty( $form_fields ) ) {
		foreach ( $form_fields as $field ) {
			if ( isset( $field['meta-key'] ) && $meta_key === $field['meta-key'] ) {
				return $field['label'];
			}
		}
	}

	if ( ! empty( $fields ) ) {
		foreach ( $fields as $field ) {
			if ( isset( $field->meta_key ) && $meta_key === $field->meta_key ) {
				return isset( $field->name ) ? $field->name : $field->value->name;
			}
		}
	}

	return false;
}

/**
 * Get field type by meta key
 *
 * @param int    $form_id  Form ID.
 * @param string $meta_key Field's meta key.
 *
 * @return string|false True if field type exists in form.
 */
function evf_get_field_type_by_meta_key( $form_id, $meta_key ) {
	$get_post     = get_post( $form_id );
	$post_content = json_decode( $get_post->post_content, true );
	$form_fields  = isset( $post_content['form_fields'] ) ? $post_content['form_fields'] : array();

	if ( ! empty( $form_fields ) ) {
		foreach ( $form_fields as $field ) {
			if ( isset( $field['meta-key'] ) && $meta_key === $field['meta-key'] ) {
				return $field['type'];
			}
		}
	}

	return false;
}

/**
 * Get all the email fields of a Form.
 *
 * @param int $form_id  Form ID.
 */
function evf_get_all_email_fields_by_form_id( $form_id ) {
	$user_emails = array();
	$form_obj    = evf()->form->get( $form_id );
	$form_data   = ! empty( $form_obj->post_content ) ? evf_decode( $form_obj->post_content ) : '';

	if ( ! empty( $form_data['form_fields'] ) ) {
		foreach ( $form_data['form_fields'] as $form_fields ) {
			if ( 'email' === $form_fields['type'] ) {
				$user_emails[ $form_fields['meta-key'] ] = $form_fields['label'];
			}
		}
	}

	return $user_emails;
}

/**
 * Get all the field's meta-key label pair.
 *
 * @param int $form_id  Form ID.
 * @return array
 */
function evf_get_all_form_fields_by_form_id( $form_id ) {
	$data      = array();
	$form_obj  = evf()->form->get( $form_id );
	$form_data = ! empty( $form_obj->post_content ) ? evf_decode( $form_obj->post_content ) : '';

	if ( ! empty( $form_data['form_fields'] ) ) {
		foreach ( $form_data['form_fields'] as $form_fields ) {
			if ( isset( $form_fields['meta-key'], $form_fields['label'] ) ) {
				$data[ $form_fields['meta-key'] ] = $form_fields['label'];
			}
		}
	}

	return $data;
}

/**
 * Check if the string JSON.
 *
 * @param string $string String to check.
 * @return bool
 */
function evf_isJson( $string ) {
	json_decode( $string );
	return ( json_last_error() == JSON_ERROR_NONE ); // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison
}

/**
 * Checks whether the content passed contains a specific short code.
 *
 * @since  1.1.4
 * @param  string $tag Shortcode tag to check.
 * @return bool
 */
function evf_post_content_has_shortcode( $tag = '' ) {
	global $post;

	return is_singular() && is_a( $post, 'WP_Post' ) && has_shortcode( $post->post_content, $tag );
}

/**
 * Convert a file size provided, such as "2M", to bytes.
 *
 * @since 1.2.0
 * @link http://stackoverflow.com/a/22500394
 *
 * @param string $size Size to convert to bytes.
 *
 * @return int
 */
function evf_size_to_bytes( $size ) {
	if ( is_numeric( $size ) ) {
		return $size;
	}

	$suffix = substr( $size, - 1 );
	$value  = substr( $size, 0, - 1 );

	// @codingStandardsIgnoreStart
	switch ( strtoupper( $suffix ) ) {
		case 'P':
			$value *= 1024;
		case 'T':
			$value *= 1024;
		case 'G':
			$value *= 1024;
		case 'M':
			$value *= 1024;
		case 'K':
			$value *= 1024;
			break;
	}
	// @codingStandardsIgnoreEnd

	return $value;
}

/**
 * Convert bytes to megabytes (or in some cases KB).
 *
 * @since 1.2.0
 *
 * @param int $bytes Bytes to convert to a readable format.
 *
 * @return string
 */
function evf_size_to_megabytes( $bytes ) {
	if ( $bytes < 1048676 ) {
		return number_format( $bytes / 1024, 1 ) . ' KB';
	} else {
		return round( (float) number_format( $bytes / 1048576, 1 ) ) . ' MB';
	}
}

/**
 * Convert a file size provided, such as "2M", to bytes.
 *
 * @since 1.2.0
 * @link http://stackoverflow.com/a/22500394
 *
 * @param  bool $bytes Whether to convert Bytes to a readable format.
 * @return mixed
 */
function evf_max_upload( $bytes = false ) {
	$max = wp_max_upload_size();

	if ( $bytes ) {
		return $max;
	} else {
		return evf_size_to_megabytes( $max );
	}
}

/**
 * Get the required label text, with a filter.
 *
 * @since  1.2.0
 * @return string
 */
function evf_get_required_label() {
	return apply_filters( 'everest_forms_required_label', esc_html__( 'This field is required.', 'everest-forms' ) );
}

/**
 * Get a PRO license plan.
 *
 * @since  1.2.0
 * @return bool|string Plan on success, false on failure.
 */
function evf_get_license_plan() {
	$license_key = get_option( 'everest-forms-pro_license_key' );

	if ( ! function_exists( 'is_plugin_active' ) ) {
		include_once ABSPATH . 'wp-admin/includes/plugin.php';
	}

	if ( $license_key && is_plugin_active( 'everest-forms-pro/everest-forms-pro.php' ) ) {
		$license_data = get_transient( 'evf_pro_license_plan' );
		if ( false === $license_data ) {
			$license_response = EVF_Updater_Key_API::check( array( 'license' => $license_key ) );

			if ( ! $license_response ) {
				$license_plan = get_option( 'evf_saved_license_plan', 'unknown' );
				return evf_handle_license_plan_compatibility( $license_plan );
			}

			$license_data     = json_decode( $license_response );

			if ( ! empty( $license_data->item_name ) ) {
				$license_data->item_plan = strtolower( $license_data->item_name );
				$license_data->item_plan = str_replace(
					array( 'everest forms', 'lifetime', '-lifetime' ),
					'',
					$license_data->item_plan
				);
				$license_data->item_plan = trim( $license_data->item_plan );
				update_option( 'evf_saved_license_plan', $license_data->item_plan );
				set_transient( 'evf_pro_license_plan', $license_data, WEEK_IN_SECONDS );
			}
		}
		$license_plan = isset( $license_data->item_plan ) ? $license_data->item_plan : get_option( 'evf_saved_license_plan', 'unknown' );
		return evf_handle_license_plan_compatibility( $license_plan );
	}

	return false;
}

add_action( 'admin_init', 'evf_handle_force_update' );

if ( ! function_exists( 'evf_handle_force_update' ) ) {

	/**
	 * Delete our plugins addon updater transient during force update.
	 */
	function evf_handle_force_update() {
		global $pagenow;

		if ( 'update-core.php' === $pagenow && ( isset( $_GET['force-check'] ) ) && ( '1' === $_GET['force-check'] ) ) {
			delete_transient( 'evf_pro_license_plan' );
		}
	}
}


/** To handle the backward compatibility for those user who is still using the plus and professional plan license key.
 *
 * @since 3.0.0
 * @param $license_plan License plan.
 */
function evf_handle_license_plan_compatibility( $license_plan ) {
	$license_plan = ( 'plus' === $license_plan || 'professional' === $license_plan ||'unknown' === $license_plan ) ? 'personal' : $license_plan;
	return $license_plan;
}

/**
 * Decode special characters, both alpha- (<) and numeric-based (').
 *
 * @since 1.2.0
 *
 * @param string $string Raw string to decode.
 *
 * @return string
 */
function evf_decode_string( $string ) {
	if ( ! is_string( $string ) ) {
		return $string;
	}

	return wp_kses_decode_entities( html_entity_decode( $string, ENT_QUOTES ) );
}
add_filter( 'everest_forms_email_message', 'evf_decode_string' );

/**
 * Get Countries.
 *
 * @since  1.2.0
 * @return array
 */
function evf_get_countries() {
	$countries = array(
		'AF' => esc_html__( 'Afghanistan', 'everest-forms' ),
		'AX' => esc_html__( 'Åland Islands', 'everest-forms' ),
		'AL' => esc_html__( 'Albania', 'everest-forms' ),
		'DZ' => esc_html__( 'Algeria', 'everest-forms' ),
		'AS' => esc_html__( 'American Samoa', 'everest-forms' ),
		'AD' => esc_html__( 'Andorra', 'everest-forms' ),
		'AO' => esc_html__( 'Angola', 'everest-forms' ),
		'AI' => esc_html__( 'Anguilla', 'everest-forms' ),
		'AQ' => esc_html__( 'Antarctica', 'everest-forms' ),
		'AG' => esc_html__( 'Antigua and Barbuda', 'everest-forms' ),
		'AR' => esc_html__( 'Argentina', 'everest-forms' ),
		'AM' => esc_html__( 'Armenia', 'everest-forms' ),
		'AW' => esc_html__( 'Aruba', 'everest-forms' ),
		'AU' => esc_html__( 'Australia', 'everest-forms' ),
		'AT' => esc_html__( 'Austria', 'everest-forms' ),
		'AZ' => esc_html__( 'Azerbaijan', 'everest-forms' ),
		'BS' => esc_html__( 'Bahamas', 'everest-forms' ),
		'BH' => esc_html__( 'Bahrain', 'everest-forms' ),
		'BD' => esc_html__( 'Bangladesh', 'everest-forms' ),
		'BB' => esc_html__( 'Barbados', 'everest-forms' ),
		'BY' => esc_html__( 'Belarus', 'everest-forms' ),
		'BE' => esc_html__( 'Belgium', 'everest-forms' ),
		'PW' => esc_html__( 'Belau', 'everest-forms' ),
		'BZ' => esc_html__( 'Belize', 'everest-forms' ),
		'BJ' => esc_html__( 'Benin', 'everest-forms' ),
		'BM' => esc_html__( 'Bermuda', 'everest-forms' ),
		'BT' => esc_html__( 'Bhutan', 'everest-forms' ),
		'BO' => esc_html__( 'Bolivia', 'everest-forms' ),
		'BQ' => esc_html__( 'Bonaire, Saint Eustatius and Saba', 'everest-forms' ),
		'BA' => esc_html__( 'Bosnia and Herzegovina', 'everest-forms' ),
		'BW' => esc_html__( 'Botswana', 'everest-forms' ),
		'BV' => esc_html__( 'Bouvet Island', 'everest-forms' ),
		'BR' => esc_html__( 'Brazil', 'everest-forms' ),
		'IO' => esc_html__( 'British Indian Ocean Territory', 'everest-forms' ),
		'BN' => esc_html__( 'Brunei', 'everest-forms' ),
		'BG' => esc_html__( 'Bulgaria', 'everest-forms' ),
		'BF' => esc_html__( 'Burkina Faso', 'everest-forms' ),
		'BI' => esc_html__( 'Burundi', 'everest-forms' ),
		'KH' => esc_html__( 'Cambodia', 'everest-forms' ),
		'CM' => esc_html__( 'Cameroon', 'everest-forms' ),
		'CA' => esc_html__( 'Canada', 'everest-forms' ),
		'CV' => esc_html__( 'Cape Verde', 'everest-forms' ),
		'KY' => esc_html__( 'Cayman Islands', 'everest-forms' ),
		'CF' => esc_html__( 'Central African Republic', 'everest-forms' ),
		'TD' => esc_html__( 'Chad', 'everest-forms' ),
		'CL' => esc_html__( 'Chile', 'everest-forms' ),
		'CN' => esc_html__( 'China', 'everest-forms' ),
		'CX' => esc_html__( 'Christmas Island', 'everest-forms' ),
		'CC' => esc_html__( 'Cocos (Keeling) Islands', 'everest-forms' ),
		'CO' => esc_html__( 'Colombia', 'everest-forms' ),
		'KM' => esc_html__( 'Comoros', 'everest-forms' ),
		'CG' => esc_html__( 'Congo (Brazzaville)', 'everest-forms' ),
		'CD' => esc_html__( 'Congo (Kinshasa)', 'everest-forms' ),
		'CK' => esc_html__( 'Cook Islands', 'everest-forms' ),
		'CR' => esc_html__( 'Costa Rica', 'everest-forms' ),
		'HR' => esc_html__( 'Croatia', 'everest-forms' ),
		'CU' => esc_html__( 'Cuba', 'everest-forms' ),
		'CW' => esc_html__( 'Cura&ccedil;ao', 'everest-forms' ),
		'CY' => esc_html__( 'Cyprus', 'everest-forms' ),
		'CZ' => esc_html__( 'Czech Republic', 'everest-forms' ),
		'DK' => esc_html__( 'Denmark', 'everest-forms' ),
		'DJ' => esc_html__( 'Djibouti', 'everest-forms' ),
		'DM' => esc_html__( 'Dominica', 'everest-forms' ),
		'DO' => esc_html__( 'Dominican Republic', 'everest-forms' ),
		'EC' => esc_html__( 'Ecuador', 'everest-forms' ),
		'EG' => esc_html__( 'Egypt', 'everest-forms' ),
		'SV' => esc_html__( 'El Salvador', 'everest-forms' ),
		'GQ' => esc_html__( 'Equatorial Guinea', 'everest-forms' ),
		'ER' => esc_html__( 'Eritrea', 'everest-forms' ),
		'EE' => esc_html__( 'Estonia', 'everest-forms' ),
		'ET' => esc_html__( 'Ethiopia', 'everest-forms' ),
		'FK' => esc_html__( 'Falkland Islands', 'everest-forms' ),
		'FO' => esc_html__( 'Faroe Islands', 'everest-forms' ),
		'FJ' => esc_html__( 'Fiji', 'everest-forms' ),
		'FI' => esc_html__( 'Finland', 'everest-forms' ),
		'FR' => esc_html__( 'France', 'everest-forms' ),
		'GF' => esc_html__( 'French Guiana', 'everest-forms' ),
		'PF' => esc_html__( 'French Polynesia', 'everest-forms' ),
		'TF' => esc_html__( 'French Southern Territories', 'everest-forms' ),
		'GA' => esc_html__( 'Gabon', 'everest-forms' ),
		'GM' => esc_html__( 'Gambia', 'everest-forms' ),
		'GE' => esc_html__( 'Georgia', 'everest-forms' ),
		'DE' => esc_html__( 'Germany', 'everest-forms' ),
		'GH' => esc_html__( 'Ghana', 'everest-forms' ),
		'GI' => esc_html__( 'Gibraltar', 'everest-forms' ),
		'GR' => esc_html__( 'Greece', 'everest-forms' ),
		'GL' => esc_html__( 'Greenland', 'everest-forms' ),
		'GD' => esc_html__( 'Grenada', 'everest-forms' ),
		'GP' => esc_html__( 'Guadeloupe', 'everest-forms' ),
		'GU' => esc_html__( 'Guam', 'everest-forms' ),
		'GT' => esc_html__( 'Guatemala', 'everest-forms' ),
		'GG' => esc_html__( 'Guernsey', 'everest-forms' ),
		'GN' => esc_html__( 'Guinea', 'everest-forms' ),
		'GW' => esc_html__( 'Guinea-Bissau', 'everest-forms' ),
		'GY' => esc_html__( 'Guyana', 'everest-forms' ),
		'HT' => esc_html__( 'Haiti', 'everest-forms' ),
		'HM' => esc_html__( 'Heard Island and McDonald Islands', 'everest-forms' ),
		'HN' => esc_html__( 'Honduras', 'everest-forms' ),
		'HK' => esc_html__( 'Hong Kong', 'everest-forms' ),
		'HU' => esc_html__( 'Hungary', 'everest-forms' ),
		'IS' => esc_html__( 'Iceland', 'everest-forms' ),
		'IN' => esc_html__( 'India', 'everest-forms' ),
		'ID' => esc_html__( 'Indonesia', 'everest-forms' ),
		'IR' => esc_html__( 'Iran', 'everest-forms' ),
		'IQ' => esc_html__( 'Iraq', 'everest-forms' ),
		'IE' => esc_html__( 'Ireland', 'everest-forms' ),
		'IM' => esc_html__( 'Isle of Man', 'everest-forms' ),
		'IL' => esc_html__( 'Israel', 'everest-forms' ),
		'IT' => esc_html__( 'Italy', 'everest-forms' ),
		'CI' => esc_html__( 'Ivory Coast', 'everest-forms' ),
		'JM' => esc_html__( 'Jamaica', 'everest-forms' ),
		'JP' => esc_html__( 'Japan', 'everest-forms' ),
		'JE' => esc_html__( 'Jersey', 'everest-forms' ),
		'JO' => esc_html__( 'Jordan', 'everest-forms' ),
		'KZ' => esc_html__( 'Kazakhstan', 'everest-forms' ),
		'KE' => esc_html__( 'Kenya', 'everest-forms' ),
		'KI' => esc_html__( 'Kiribati', 'everest-forms' ),
		'KW' => esc_html__( 'Kuwait', 'everest-forms' ),
		'XK' => esc_html__( 'Kosovo', 'everest-forms' ),
		'KG' => esc_html__( 'Kyrgyzstan', 'everest-forms' ),
		'LA' => esc_html__( 'Laos', 'everest-forms' ),
		'LV' => esc_html__( 'Latvia', 'everest-forms' ),
		'LB' => esc_html__( 'Lebanon', 'everest-forms' ),
		'LS' => esc_html__( 'Lesotho', 'everest-forms' ),
		'LR' => esc_html__( 'Liberia', 'everest-forms' ),
		'LY' => esc_html__( 'Libya', 'everest-forms' ),
		'LI' => esc_html__( 'Liechtenstein', 'everest-forms' ),
		'LT' => esc_html__( 'Lithuania', 'everest-forms' ),
		'LU' => esc_html__( 'Luxembourg', 'everest-forms' ),
		'MO' => esc_html__( 'Macao', 'everest-forms' ),
		'MK' => esc_html__( 'North Macedonia', 'everest-forms' ),
		'MG' => esc_html__( 'Madagascar', 'everest-forms' ),
		'MW' => esc_html__( 'Malawi', 'everest-forms' ),
		'MY' => esc_html__( 'Malaysia', 'everest-forms' ),
		'MV' => esc_html__( 'Maldives', 'everest-forms' ),
		'ML' => esc_html__( 'Mali', 'everest-forms' ),
		'MT' => esc_html__( 'Malta', 'everest-forms' ),
		'MH' => esc_html__( 'Marshall Islands', 'everest-forms' ),
		'MQ' => esc_html__( 'Martinique', 'everest-forms' ),
		'MR' => esc_html__( 'Mauritania', 'everest-forms' ),
		'MU' => esc_html__( 'Mauritius', 'everest-forms' ),
		'YT' => esc_html__( 'Mayotte', 'everest-forms' ),
		'MX' => esc_html__( 'Mexico', 'everest-forms' ),
		'FM' => esc_html__( 'Micronesia', 'everest-forms' ),
		'MD' => esc_html__( 'Moldova', 'everest-forms' ),
		'MC' => esc_html__( 'Monaco', 'everest-forms' ),
		'MN' => esc_html__( 'Mongolia', 'everest-forms' ),
		'ME' => esc_html__( 'Montenegro', 'everest-forms' ),
		'MS' => esc_html__( 'Montserrat', 'everest-forms' ),
		'MA' => esc_html__( 'Morocco', 'everest-forms' ),
		'MZ' => esc_html__( 'Mozambique', 'everest-forms' ),
		'MM' => esc_html__( 'Myanmar', 'everest-forms' ),
		'NA' => esc_html__( 'Namibia', 'everest-forms' ),
		'NR' => esc_html__( 'Nauru', 'everest-forms' ),
		'NP' => esc_html__( 'Nepal', 'everest-forms' ),
		'NL' => esc_html__( 'Netherlands', 'everest-forms' ),
		'NC' => esc_html__( 'New Caledonia', 'everest-forms' ),
		'NZ' => esc_html__( 'New Zealand', 'everest-forms' ),
		'NI' => esc_html__( 'Nicaragua', 'everest-forms' ),
		'NE' => esc_html__( 'Niger', 'everest-forms' ),
		'NG' => esc_html__( 'Nigeria', 'everest-forms' ),
		'NU' => esc_html__( 'Niue', 'everest-forms' ),
		'NF' => esc_html__( 'Norfolk Island', 'everest-forms' ),
		'MP' => esc_html__( 'Northern Mariana Islands', 'everest-forms' ),
		'KP' => esc_html__( 'North Korea', 'everest-forms' ),
		'NO' => esc_html__( 'Norway', 'everest-forms' ),
		'OM' => esc_html__( 'Oman', 'everest-forms' ),
		'PK' => esc_html__( 'Pakistan', 'everest-forms' ),
		'PS' => esc_html__( 'Palestinian Territory', 'everest-forms' ),
		'PA' => esc_html__( 'Panama', 'everest-forms' ),
		'PG' => esc_html__( 'Papua New Guinea', 'everest-forms' ),
		'PY' => esc_html__( 'Paraguay', 'everest-forms' ),
		'PE' => esc_html__( 'Peru', 'everest-forms' ),
		'PH' => esc_html__( 'Philippines', 'everest-forms' ),
		'PN' => esc_html__( 'Pitcairn', 'everest-forms' ),
		'PL' => esc_html__( 'Poland', 'everest-forms' ),
		'PT' => esc_html__( 'Portugal', 'everest-forms' ),
		'PR' => esc_html__( 'Puerto Rico', 'everest-forms' ),
		'QA' => esc_html__( 'Qatar', 'everest-forms' ),
		'RE' => esc_html__( 'Reunion', 'everest-forms' ),
		'RO' => esc_html__( 'Romania', 'everest-forms' ),
		'RU' => esc_html__( 'Russia', 'everest-forms' ),
		'RW' => esc_html__( 'Rwanda', 'everest-forms' ),
		'BL' => esc_html__( 'Saint Barth&eacute;lemy', 'everest-forms' ),
		'SH' => esc_html__( 'Saint Helena', 'everest-forms' ),
		'KN' => esc_html__( 'Saint Kitts and Nevis', 'everest-forms' ),
		'LC' => esc_html__( 'Saint Lucia', 'everest-forms' ),
		'MF' => esc_html__( 'Saint Martin (French part)', 'everest-forms' ),
		'SX' => esc_html__( 'Saint Martin (Dutch part)', 'everest-forms' ),
		'PM' => esc_html__( 'Saint Pierre and Miquelon', 'everest-forms' ),
		'VC' => esc_html__( 'Saint Vincent and the Grenadines', 'everest-forms' ),
		'SM' => esc_html__( 'San Marino', 'everest-forms' ),
		'ST' => esc_html__( 'S&atilde;o Tom&eacute; and Pr&iacute;ncipe', 'everest-forms' ),
		'SA' => esc_html__( 'Saudi Arabia', 'everest-forms' ),
		'SN' => esc_html__( 'Senegal', 'everest-forms' ),
		'RS' => esc_html__( 'Serbia', 'everest-forms' ),
		'SC' => esc_html__( 'Seychelles', 'everest-forms' ),
		'SL' => esc_html__( 'Sierra Leone', 'everest-forms' ),
		'SG' => esc_html__( 'Singapore', 'everest-forms' ),
		'SK' => esc_html__( 'Slovakia', 'everest-forms' ),
		'SI' => esc_html__( 'Slovenia', 'everest-forms' ),
		'SB' => esc_html__( 'Solomon Islands', 'everest-forms' ),
		'SO' => esc_html__( 'Somalia', 'everest-forms' ),
		'ZA' => esc_html__( 'South Africa', 'everest-forms' ),
		'GS' => esc_html__( 'South Georgia/Sandwich Islands', 'everest-forms' ),
		'KR' => esc_html__( 'South Korea', 'everest-forms' ),
		'SS' => esc_html__( 'South Sudan', 'everest-forms' ),
		'ES' => esc_html__( 'Spain', 'everest-forms' ),
		'LK' => esc_html__( 'Sri Lanka', 'everest-forms' ),
		'SD' => esc_html__( 'Sudan', 'everest-forms' ),
		'SR' => esc_html__( 'Suriname', 'everest-forms' ),
		'SJ' => esc_html__( 'Svalbard and Jan Mayen', 'everest-forms' ),
		'SZ' => esc_html__( 'Swaziland', 'everest-forms' ),
		'SE' => esc_html__( 'Sweden', 'everest-forms' ),
		'CH' => esc_html__( 'Switzerland', 'everest-forms' ),
		'SY' => esc_html__( 'Syria', 'everest-forms' ),
		'TW' => esc_html__( 'Taiwan', 'everest-forms' ),
		'TJ' => esc_html__( 'Tajikistan', 'everest-forms' ),
		'TZ' => esc_html__( 'Tanzania', 'everest-forms' ),
		'TH' => esc_html__( 'Thailand', 'everest-forms' ),
		'TL' => esc_html__( 'Timor-Leste', 'everest-forms' ),
		'TG' => esc_html__( 'Togo', 'everest-forms' ),
		'TK' => esc_html__( 'Tokelau', 'everest-forms' ),
		'TO' => esc_html__( 'Tonga', 'everest-forms' ),
		'TT' => esc_html__( 'Trinidad and Tobago', 'everest-forms' ),
		'TN' => esc_html__( 'Tunisia', 'everest-forms' ),
		'TR' => esc_html__( 'Turkey', 'everest-forms' ),
		'TM' => esc_html__( 'Turkmenistan', 'everest-forms' ),
		'TC' => esc_html__( 'Turks and Caicos Islands', 'everest-forms' ),
		'TV' => esc_html__( 'Tuvalu', 'everest-forms' ),
		'UG' => esc_html__( 'Uganda', 'everest-forms' ),
		'UA' => esc_html__( 'Ukraine', 'everest-forms' ),
		'AE' => esc_html__( 'United Arab Emirates', 'everest-forms' ),
		'GB' => esc_html__( 'United Kingdom (UK)', 'everest-forms' ),
		'US' => esc_html__( 'United States (US)', 'everest-forms' ),
		'UM' => esc_html__( 'United States (US) Minor Outlying Islands', 'everest-forms' ),
		'UY' => esc_html__( 'Uruguay', 'everest-forms' ),
		'UZ' => esc_html__( 'Uzbekistan', 'everest-forms' ),
		'VU' => esc_html__( 'Vanuatu', 'everest-forms' ),
		'VA' => esc_html__( 'Vatican', 'everest-forms' ),
		'VE' => esc_html__( 'Venezuela', 'everest-forms' ),
		'VN' => esc_html__( 'Vietnam', 'everest-forms' ),
		'VG' => esc_html__( 'Virgin Islands (British)', 'everest-forms' ),
		'VI' => esc_html__( 'Virgin Islands (US)', 'everest-forms' ),
		'WF' => esc_html__( 'Wallis and Futuna', 'everest-forms' ),
		'EH' => esc_html__( 'Western Sahara', 'everest-forms' ),
		'WS' => esc_html__( 'Samoa', 'everest-forms' ),
		'YE' => esc_html__( 'Yemen', 'everest-forms' ),
		'ZM' => esc_html__( 'Zambia', 'everest-forms' ),
		'ZW' => esc_html__( 'Zimbabwe', 'everest-forms' ),
	);

	return (array) apply_filters( 'everest_forms_countries', $countries );
}

/**
 * Get U.S. States.
 *
 * @since  1.7.0
 * @return array
 */
function evf_get_states() {
	$states = array(
		'AF' => array(),
		'AL' => array( // Albanian states.
			'AL-01' => __( 'Berat', 'everest-forms' ),
			'AL-09' => __( 'Dibër', 'everest-forms' ),
			'AL-02' => __( 'Durrës', 'everest-forms' ),
			'AL-03' => __( 'Elbasan', 'everest-forms' ),
			'AL-04' => __( 'Fier', 'everest-forms' ),
			'AL-05' => __( 'Gjirokastër', 'everest-forms' ),
			'AL-06' => __( 'Korçë', 'everest-forms' ),
			'AL-07' => __( 'Kukës', 'everest-forms' ),
			'AL-08' => __( 'Lezhë', 'everest-forms' ),
			'AL-10' => __( 'Shkodër', 'everest-forms' ),
			'AL-11' => __( 'Tirana', 'everest-forms' ),
			'AL-12' => __( 'Vlorë', 'everest-forms' ),
		),
		'AO' => array( // Angolan states.
			'BGO' => __( 'Bengo', 'everest-forms' ),
			'BLU' => __( 'Benguela', 'everest-forms' ),
			'BIE' => __( 'Bié', 'everest-forms' ),
			'CAB' => __( 'Cabinda', 'everest-forms' ),
			'CNN' => __( 'Cunene', 'everest-forms' ),
			'HUA' => __( 'Huambo', 'everest-forms' ),
			'HUI' => __( 'Huíla', 'everest-forms' ),
			'CCU' => __( 'Kuando Kubango', 'everest-forms' ),
			'CNO' => __( 'Kwanza-Norte', 'everest-forms' ),
			'CUS' => __( 'Kwanza-Sul', 'everest-forms' ),
			'LUA' => __( 'Luanda', 'everest-forms' ),
			'LNO' => __( 'Lunda-Norte', 'everest-forms' ),
			'LSU' => __( 'Lunda-Sul', 'everest-forms' ),
			'MAL' => __( 'Malanje', 'everest-forms' ),
			'MOX' => __( 'Moxico', 'everest-forms' ),
			'NAM' => __( 'Namibe', 'everest-forms' ),
			'UIG' => __( 'Uíge', 'everest-forms' ),
			'ZAI' => __( 'Zaire', 'everest-forms' ),
		),
		'AR' => array( // Argentinian provinces.
			'C' => __( 'Ciudad Autónoma de Buenos Aires', 'everest-forms' ),
			'B' => __( 'Buenos Aires', 'everest-forms' ),
			'K' => __( 'Catamarca', 'everest-forms' ),
			'H' => __( 'Chaco', 'everest-forms' ),
			'U' => __( 'Chubut', 'everest-forms' ),
			'X' => __( 'Córdoba', 'everest-forms' ),
			'W' => __( 'Corrientes', 'everest-forms' ),
			'E' => __( 'Entre Ríos', 'everest-forms' ),
			'P' => __( 'Formosa', 'everest-forms' ),
			'Y' => __( 'Jujuy', 'everest-forms' ),
			'L' => __( 'La Pampa', 'everest-forms' ),
			'F' => __( 'La Rioja', 'everest-forms' ),
			'M' => __( 'Mendoza', 'everest-forms' ),
			'N' => __( 'Misiones', 'everest-forms' ),
			'Q' => __( 'Neuquén', 'everest-forms' ),
			'R' => __( 'Río Negro', 'everest-forms' ),
			'A' => __( 'Salta', 'everest-forms' ),
			'J' => __( 'San Juan', 'everest-forms' ),
			'D' => __( 'San Luis', 'everest-forms' ),
			'Z' => __( 'Santa Cruz', 'everest-forms' ),
			'S' => __( 'Santa Fe', 'everest-forms' ),
			'G' => __( 'Santiago del Estero', 'everest-forms' ),
			'V' => __( 'Tierra del Fuego', 'everest-forms' ),
			'T' => __( 'Tucumán', 'everest-forms' ),
		),
		'AT' => array(),
		'AU' => array( // Australian states.
			'ACT' => __( 'Australian Capital Territory', 'everest-forms' ),
			'NSW' => __( 'New South Wales', 'everest-forms' ),
			'NT'  => __( 'Northern Territory', 'everest-forms' ),
			'QLD' => __( 'Queensland', 'everest-forms' ),
			'SA'  => __( 'South Australia', 'everest-forms' ),
			'TAS' => __( 'Tasmania', 'everest-forms' ),
			'VIC' => __( 'Victoria', 'everest-forms' ),
			'WA'  => __( 'Western Australia', 'everest-forms' ),
		),
		'AX' => array(),
		'BD' => array( // Bangladeshi districts.
			'BD-05' => __( 'Bagerhat', 'everest-forms' ),
			'BD-01' => __( 'Bandarban', 'everest-forms' ),
			'BD-02' => __( 'Barguna', 'everest-forms' ),
			'BD-06' => __( 'Barishal', 'everest-forms' ),
			'BD-07' => __( 'Bhola', 'everest-forms' ),
			'BD-03' => __( 'Bogura', 'everest-forms' ),
			'BD-04' => __( 'Brahmanbaria', 'everest-forms' ),
			'BD-09' => __( 'Chandpur', 'everest-forms' ),
			'BD-10' => __( 'Chattogram', 'everest-forms' ),
			'BD-12' => __( 'Chuadanga', 'everest-forms' ),
			'BD-11' => __( "Cox's Bazar", 'everest-forms' ),
			'BD-08' => __( 'Cumilla', 'everest-forms' ),
			'BD-13' => __( 'Dhaka', 'everest-forms' ),
			'BD-14' => __( 'Dinajpur', 'everest-forms' ),
			'BD-15' => __( 'Faridpur ', 'everest-forms' ),
			'BD-16' => __( 'Feni', 'everest-forms' ),
			'BD-19' => __( 'Gaibandha', 'everest-forms' ),
			'BD-18' => __( 'Gazipur', 'everest-forms' ),
			'BD-17' => __( 'Gopalganj', 'everest-forms' ),
			'BD-20' => __( 'Habiganj', 'everest-forms' ),
			'BD-21' => __( 'Jamalpur', 'everest-forms' ),
			'BD-22' => __( 'Jashore', 'everest-forms' ),
			'BD-25' => __( 'Jhalokati', 'everest-forms' ),
			'BD-23' => __( 'Jhenaidah', 'everest-forms' ),
			'BD-24' => __( 'Joypurhat', 'everest-forms' ),
			'BD-29' => __( 'Khagrachhari', 'everest-forms' ),
			'BD-27' => __( 'Khulna', 'everest-forms' ),
			'BD-26' => __( 'Kishoreganj', 'everest-forms' ),
			'BD-28' => __( 'Kurigram', 'everest-forms' ),
			'BD-30' => __( 'Kushtia', 'everest-forms' ),
			'BD-31' => __( 'Lakshmipur', 'everest-forms' ),
			'BD-32' => __( 'Lalmonirhat', 'everest-forms' ),
			'BD-36' => __( 'Madaripur', 'everest-forms' ),
			'BD-37' => __( 'Magura', 'everest-forms' ),
			'BD-33' => __( 'Manikganj ', 'everest-forms' ),
			'BD-39' => __( 'Meherpur', 'everest-forms' ),
			'BD-38' => __( 'Moulvibazar', 'everest-forms' ),
			'BD-35' => __( 'Munshiganj', 'everest-forms' ),
			'BD-34' => __( 'Mymensingh', 'everest-forms' ),
			'BD-48' => __( 'Naogaon', 'everest-forms' ),
			'BD-43' => __( 'Narail', 'everest-forms' ),
			'BD-40' => __( 'Narayanganj', 'everest-forms' ),
			'BD-42' => __( 'Narsingdi', 'everest-forms' ),
			'BD-44' => __( 'Natore', 'everest-forms' ),
			'BD-45' => __( 'Nawabganj', 'everest-forms' ),
			'BD-41' => __( 'Netrakona', 'everest-forms' ),
			'BD-46' => __( 'Nilphamari', 'everest-forms' ),
			'BD-47' => __( 'Noakhali', 'everest-forms' ),
			'BD-49' => __( 'Pabna', 'everest-forms' ),
			'BD-52' => __( 'Panchagarh', 'everest-forms' ),
			'BD-51' => __( 'Patuakhali', 'everest-forms' ),
			'BD-50' => __( 'Pirojpur', 'everest-forms' ),
			'BD-53' => __( 'Rajbari', 'everest-forms' ),
			'BD-54' => __( 'Rajshahi', 'everest-forms' ),
			'BD-56' => __( 'Rangamati', 'everest-forms' ),
			'BD-55' => __( 'Rangpur', 'everest-forms' ),
			'BD-58' => __( 'Satkhira', 'everest-forms' ),
			'BD-62' => __( 'Shariatpur', 'everest-forms' ),
			'BD-57' => __( 'Sherpur', 'everest-forms' ),
			'BD-59' => __( 'Sirajganj', 'everest-forms' ),
			'BD-61' => __( 'Sunamganj', 'everest-forms' ),
			'BD-60' => __( 'Sylhet', 'everest-forms' ),
			'BD-63' => __( 'Tangail', 'everest-forms' ),
			'BD-64' => __( 'Thakurgaon', 'everest-forms' ),
		),
		'BE' => array(),
		'BG' => array( // Bulgarian states.
			'BG-01' => __( 'Blagoevgrad', 'everest-forms' ),
			'BG-02' => __( 'Burgas', 'everest-forms' ),
			'BG-08' => __( 'Dobrich', 'everest-forms' ),
			'BG-07' => __( 'Gabrovo', 'everest-forms' ),
			'BG-26' => __( 'Haskovo', 'everest-forms' ),
			'BG-09' => __( 'Kardzhali', 'everest-forms' ),
			'BG-10' => __( 'Kyustendil', 'everest-forms' ),
			'BG-11' => __( 'Lovech', 'everest-forms' ),
			'BG-12' => __( 'Montana', 'everest-forms' ),
			'BG-13' => __( 'Pazardzhik', 'everest-forms' ),
			'BG-14' => __( 'Pernik', 'everest-forms' ),
			'BG-15' => __( 'Pleven', 'everest-forms' ),
			'BG-16' => __( 'Plovdiv', 'everest-forms' ),
			'BG-17' => __( 'Razgrad', 'everest-forms' ),
			'BG-18' => __( 'Ruse', 'everest-forms' ),
			'BG-27' => __( 'Shumen', 'everest-forms' ),
			'BG-19' => __( 'Silistra', 'everest-forms' ),
			'BG-20' => __( 'Sliven', 'everest-forms' ),
			'BG-21' => __( 'Smolyan', 'everest-forms' ),
			'BG-23' => __( 'Sofia', 'everest-forms' ),
			'BG-22' => __( 'Sofia-Grad', 'everest-forms' ),
			'BG-24' => __( 'Stara Zagora', 'everest-forms' ),
			'BG-25' => __( 'Targovishte', 'everest-forms' ),
			'BG-03' => __( 'Varna', 'everest-forms' ),
			'BG-04' => __( 'Veliko Tarnovo', 'everest-forms' ),
			'BG-05' => __( 'Vidin', 'everest-forms' ),
			'BG-06' => __( 'Vratsa', 'everest-forms' ),
			'BG-28' => __( 'Yambol', 'everest-forms' ),
		),
		'BH' => array(),
		'BI' => array(),
		'BJ' => array( // Beninese states.
			'AL' => __( 'Alibori', 'everest-forms' ),
			'AK' => __( 'Atakora', 'everest-forms' ),
			'AQ' => __( 'Atlantique', 'everest-forms' ),
			'BO' => __( 'Borgou', 'everest-forms' ),
			'CO' => __( 'Collines', 'everest-forms' ),
			'KO' => __( 'Kouffo', 'everest-forms' ),
			'DO' => __( 'Donga', 'everest-forms' ),
			'LI' => __( 'Littoral', 'everest-forms' ),
			'MO' => __( 'Mono', 'everest-forms' ),
			'OU' => __( 'Ouémé', 'everest-forms' ),
			'PL' => __( 'Plateau', 'everest-forms' ),
			'ZO' => __( 'Zou', 'everest-forms' ),
		),
		'BO' => array( // Bolivian states.
			'BO-B' => __( 'Beni', 'everest-forms' ),
			'BO-H' => __( 'Chuquisaca', 'everest-forms' ),
			'BO-C' => __( 'Cochabamba', 'everest-forms' ),
			'BO-L' => __( 'La Paz', 'everest-forms' ),
			'BO-O' => __( 'Oruro', 'everest-forms' ),
			'BO-N' => __( 'Pando', 'everest-forms' ),
			'BO-P' => __( 'Potosí', 'everest-forms' ),
			'BO-S' => __( 'Santa Cruz', 'everest-forms' ),
			'BO-T' => __( 'Tarija', 'everest-forms' ),
		),
		'BR' => array( // Brazilian states.
			'AC' => __( 'Acre', 'everest-forms' ),
			'AL' => __( 'Alagoas', 'everest-forms' ),
			'AP' => __( 'Amapá', 'everest-forms' ),
			'AM' => __( 'Amazonas', 'everest-forms' ),
			'BA' => __( 'Bahia', 'everest-forms' ),
			'CE' => __( 'Ceará', 'everest-forms' ),
			'DF' => __( 'Distrito Federal', 'everest-forms' ),
			'ES' => __( 'Espírito Santo', 'everest-forms' ),
			'GO' => __( 'Goiás', 'everest-forms' ),
			'MA' => __( 'Maranhão', 'everest-forms' ),
			'MT' => __( 'Mato Grosso', 'everest-forms' ),
			'MS' => __( 'Mato Grosso do Sul', 'everest-forms' ),
			'MG' => __( 'Minas Gerais', 'everest-forms' ),
			'PA' => __( 'Pará', 'everest-forms' ),
			'PB' => __( 'Paraíba', 'everest-forms' ),
			'PR' => __( 'Paraná', 'everest-forms' ),
			'PE' => __( 'Pernambuco', 'everest-forms' ),
			'PI' => __( 'Piauí', 'everest-forms' ),
			'RJ' => __( 'Rio de Janeiro', 'everest-forms' ),
			'RN' => __( 'Rio Grande do Norte', 'everest-forms' ),
			'RS' => __( 'Rio Grande do Sul', 'everest-forms' ),
			'RO' => __( 'Rondônia', 'everest-forms' ),
			'RR' => __( 'Roraima', 'everest-forms' ),
			'SC' => __( 'Santa Catarina', 'everest-forms' ),
			'SP' => __( 'São Paulo', 'everest-forms' ),
			'SE' => __( 'Sergipe', 'everest-forms' ),
			'TO' => __( 'Tocantins', 'everest-forms' ),
		),
		'CA' => array( // Canadian states.
			'AB' => __( 'Alberta', 'everest-forms' ),
			'BC' => __( 'British Columbia', 'everest-forms' ),
			'MB' => __( 'Manitoba', 'everest-forms' ),
			'NB' => __( 'New Brunswick', 'everest-forms' ),
			'NL' => __( 'Newfoundland and Labrador', 'everest-forms' ),
			'NT' => __( 'Northwest Territories', 'everest-forms' ),
			'NS' => __( 'Nova Scotia', 'everest-forms' ),
			'NU' => __( 'Nunavut', 'everest-forms' ),
			'ON' => __( 'Ontario', 'everest-forms' ),
			'PE' => __( 'Prince Edward Island', 'everest-forms' ),
			'QC' => __( 'Quebec', 'everest-forms' ),
			'SK' => __( 'Saskatchewan', 'everest-forms' ),
			'YT' => __( 'Yukon Territory', 'everest-forms' ),
		),
		'CH' => array( // Swiss cantons.
			'AG' => __( 'Aargau', 'everest-forms' ),
			'AR' => __( 'Appenzell Ausserrhoden', 'everest-forms' ),
			'AI' => __( 'Appenzell Innerrhoden', 'everest-forms' ),
			'BL' => __( 'Basel-Landschaft', 'everest-forms' ),
			'BS' => __( 'Basel-Stadt', 'everest-forms' ),
			'BE' => __( 'Bern', 'everest-forms' ),
			'FR' => __( 'Fribourg', 'everest-forms' ),
			'GE' => __( 'Geneva', 'everest-forms' ),
			'GL' => __( 'Glarus', 'everest-forms' ),
			'GR' => __( 'Graubünden', 'everest-forms' ),
			'JU' => __( 'Jura', 'everest-forms' ),
			'LU' => __( 'Luzern', 'everest-forms' ),
			'NE' => __( 'Neuchâtel', 'everest-forms' ),
			'NW' => __( 'Nidwalden', 'everest-forms' ),
			'OW' => __( 'Obwalden', 'everest-forms' ),
			'SH' => __( 'Schaffhausen', 'everest-forms' ),
			'SZ' => __( 'Schwyz', 'everest-forms' ),
			'SO' => __( 'Solothurn', 'everest-forms' ),
			'SG' => __( 'St. Gallen', 'everest-forms' ),
			'TG' => __( 'Thurgau', 'everest-forms' ),
			'TI' => __( 'Ticino', 'everest-forms' ),
			'UR' => __( 'Uri', 'everest-forms' ),
			'VS' => __( 'Valais', 'everest-forms' ),
			'VD' => __( 'Vaud', 'everest-forms' ),
			'ZG' => __( 'Zug', 'everest-forms' ),
			'ZH' => __( 'Zürich', 'everest-forms' ),
		),
		'CL' => array( // Chilean states.
			'CL-AI' => __( 'Aisén del General Carlos Ibañez del Campo', 'everest-forms' ),
			'CL-AN' => __( 'Antofagasta', 'everest-forms' ),
			'CL-AP' => __( 'Arica y Parinacota', 'everest-forms' ),
			'CL-AR' => __( 'La Araucanía', 'everest-forms' ),
			'CL-AT' => __( 'Atacama', 'everest-forms' ),
			'CL-BI' => __( 'Biobío', 'everest-forms' ),
			'CL-CO' => __( 'Coquimbo', 'everest-forms' ),
			'CL-LI' => __( 'Libertador General Bernardo O\'Higgins', 'everest-forms' ),
			'CL-LL' => __( 'Los Lagos', 'everest-forms' ),
			'CL-LR' => __( 'Los Ríos', 'everest-forms' ),
			'CL-MA' => __( 'Magallanes', 'everest-forms' ),
			'CL-ML' => __( 'Maule', 'everest-forms' ),
			'CL-NB' => __( 'Ñuble', 'everest-forms' ),
			'CL-RM' => __( 'Región Metropolitana de Santiago', 'everest-forms' ),
			'CL-TA' => __( 'Tarapacá', 'everest-forms' ),
			'CL-VS' => __( 'Valparaíso', 'everest-forms' ),
		),
		'CN' => array( // Chinese states.
			'CN1'  => __( 'Yunnan / 云南', 'everest-forms' ),
			'CN2'  => __( 'Beijing / 北京', 'everest-forms' ),
			'CN3'  => __( 'Tianjin / 天津', 'everest-forms' ),
			'CN4'  => __( 'Hebei / 河北', 'everest-forms' ),
			'CN5'  => __( 'Shanxi / 山西', 'everest-forms' ),
			'CN6'  => __( 'Inner Mongolia / 內蒙古', 'everest-forms' ),
			'CN7'  => __( 'Liaoning / 辽宁', 'everest-forms' ),
			'CN8'  => __( 'Jilin / 吉林', 'everest-forms' ),
			'CN9'  => __( 'Heilongjiang / 黑龙江', 'everest-forms' ),
			'CN10' => __( 'Shanghai / 上海', 'everest-forms' ),
			'CN11' => __( 'Jiangsu / 江苏', 'everest-forms' ),
			'CN12' => __( 'Zhejiang / 浙江', 'everest-forms' ),
			'CN13' => __( 'Anhui / 安徽', 'everest-forms' ),
			'CN14' => __( 'Fujian / 福建', 'everest-forms' ),
			'CN15' => __( 'Jiangxi / 江西', 'everest-forms' ),
			'CN16' => __( 'Shandong / 山东', 'everest-forms' ),
			'CN17' => __( 'Henan / 河南', 'everest-forms' ),
			'CN18' => __( 'Hubei / 湖北', 'everest-forms' ),
			'CN19' => __( 'Hunan / 湖南', 'everest-forms' ),
			'CN20' => __( 'Guangdong / 广东', 'everest-forms' ),
			'CN21' => __( 'Guangxi Zhuang / 广西壮族', 'everest-forms' ),
			'CN22' => __( 'Hainan / 海南', 'everest-forms' ),
			'CN23' => __( 'Chongqing / 重庆', 'everest-forms' ),
			'CN24' => __( 'Sichuan / 四川', 'everest-forms' ),
			'CN25' => __( 'Guizhou / 贵州', 'everest-forms' ),
			'CN26' => __( 'Shaanxi / 陕西', 'everest-forms' ),
			'CN27' => __( 'Gansu / 甘肃', 'everest-forms' ),
			'CN28' => __( 'Qinghai / 青海', 'everest-forms' ),
			'CN29' => __( 'Ningxia Hui / 宁夏', 'everest-forms' ),
			'CN30' => __( 'Macao / 澳门', 'everest-forms' ),
			'CN31' => __( 'Tibet / 西藏', 'everest-forms' ),
			'CN32' => __( 'Xinjiang / 新疆', 'everest-forms' ),
		),
		'CO' => array( // Colombian states.
			'CO-AMA' => __( 'Amazonas', 'everest-forms' ),
			'CO-ANT' => __( 'Antioquia', 'everest-forms' ),
			'CO-ARA' => __( 'Arauca', 'everest-forms' ),
			'CO-ATL' => __( 'Atlántico', 'everest-forms' ),
			'CO-BOL' => __( 'Bolívar', 'everest-forms' ),
			'CO-BOY' => __( 'Boyacá', 'everest-forms' ),
			'CO-CAL' => __( 'Caldas', 'everest-forms' ),
			'CO-CAQ' => __( 'Caquetá', 'everest-forms' ),
			'CO-CAS' => __( 'Casanare', 'everest-forms' ),
			'CO-CAU' => __( 'Cauca', 'everest-forms' ),
			'CO-CES' => __( 'Cesar', 'everest-forms' ),
			'CO-CHO' => __( 'Chocó', 'everest-forms' ),
			'CO-COR' => __( 'Córdoba', 'everest-forms' ),
			'CO-CUN' => __( 'Cundinamarca', 'everest-forms' ),
			'CO-DC'  => __( 'Capital District', 'everest-forms' ),
			'CO-GUA' => __( 'Guainía', 'everest-forms' ),
			'CO-GUV' => __( 'Guaviare', 'everest-forms' ),
			'CO-HUI' => __( 'Huila', 'everest-forms' ),
			'CO-LAG' => __( 'La Guajira', 'everest-forms' ),
			'CO-MAG' => __( 'Magdalena', 'everest-forms' ),
			'CO-MET' => __( 'Meta', 'everest-forms' ),
			'CO-NAR' => __( 'Nariño', 'everest-forms' ),
			'CO-NSA' => __( 'Norte de Santander', 'everest-forms' ),
			'CO-PUT' => __( 'Putumayo', 'everest-forms' ),
			'CO-QUI' => __( 'Quindío', 'everest-forms' ),
			'CO-RIS' => __( 'Risaralda', 'everest-forms' ),
			'CO-SAN' => __( 'Santander', 'everest-forms' ),
			'CO-SAP' => __( 'San Andrés & Providencia', 'everest-forms' ),
			'CO-SUC' => __( 'Sucre', 'everest-forms' ),
			'CO-TOL' => __( 'Tolima', 'everest-forms' ),
			'CO-VAC' => __( 'Valle del Cauca', 'everest-forms' ),
			'CO-VAU' => __( 'Vaupés', 'everest-forms' ),
			'CO-VID' => __( 'Vichada', 'everest-forms' ),
		),
		'CR' => array( // Costa Rican states.
			'CR-A'  => __( 'Alajuela', 'everest-forms' ),
			'CR-C'  => __( 'Cartago', 'everest-forms' ),
			'CR-G'  => __( 'Guanacaste', 'everest-forms' ),
			'CR-H'  => __( 'Heredia', 'everest-forms' ),
			'CR-L'  => __( 'Limón', 'everest-forms' ),
			'CR-P'  => __( 'Puntarenas', 'everest-forms' ),
			'CR-SJ' => __( 'San José', 'everest-forms' ),
		),
		'CZ' => array(),
		'DE' => array( // German states.
			'DE-BW' => __( 'Baden-Württemberg', 'everest-forms' ),
			'DE-BY' => __( 'Bavaria', 'everest-forms' ),
			'DE-BE' => __( 'Berlin', 'everest-forms' ),
			'DE-BB' => __( 'Brandenburg', 'everest-forms' ),
			'DE-HB' => __( 'Bremen', 'everest-forms' ),
			'DE-HH' => __( 'Hamburg', 'everest-forms' ),
			'DE-HE' => __( 'Hesse', 'everest-forms' ),
			'DE-MV' => __( 'Mecklenburg-Vorpommern', 'everest-forms' ),
			'DE-NI' => __( 'Lower Saxony', 'everest-forms' ),
			'DE-NW' => __( 'North Rhine-Westphalia', 'everest-forms' ),
			'DE-RP' => __( 'Rhineland-Palatinate', 'everest-forms' ),
			'DE-SL' => __( 'Saarland', 'everest-forms' ),
			'DE-SN' => __( 'Saxony', 'everest-forms' ),
			'DE-ST' => __( 'Saxony-Anhalt', 'everest-forms' ),
			'DE-SH' => __( 'Schleswig-Holstein', 'everest-forms' ),
			'DE-TH' => __( 'Thuringia', 'everest-forms' ),
		),
		'DK' => array(),
		'DO' => array( // Dominican states.
			'DO-01' => __( 'Distrito Nacional', 'everest-forms' ),
			'DO-02' => __( 'Azua', 'everest-forms' ),
			'DO-03' => __( 'Baoruco', 'everest-forms' ),
			'DO-04' => __( 'Barahona', 'everest-forms' ),
			'DO-33' => __( 'Cibao Nordeste', 'everest-forms' ),
			'DO-34' => __( 'Cibao Noroeste', 'everest-forms' ),
			'DO-35' => __( 'Cibao Norte', 'everest-forms' ),
			'DO-36' => __( 'Cibao Sur', 'everest-forms' ),
			'DO-05' => __( 'Dajabón', 'everest-forms' ),
			'DO-06' => __( 'Duarte', 'everest-forms' ),
			'DO-08' => __( 'El Seibo', 'everest-forms' ),
			'DO-37' => __( 'El Valle', 'everest-forms' ),
			'DO-07' => __( 'Elías Piña', 'everest-forms' ),
			'DO-38' => __( 'Enriquillo', 'everest-forms' ),
			'DO-09' => __( 'Espaillat', 'everest-forms' ),
			'DO-30' => __( 'Hato Mayor', 'everest-forms' ),
			'DO-19' => __( 'Hermanas Mirabal', 'everest-forms' ),
			'DO-39' => __( 'Higüamo', 'everest-forms' ),
			'DO-10' => __( 'Independencia', 'everest-forms' ),
			'DO-11' => __( 'La Altagracia', 'everest-forms' ),
			'DO-12' => __( 'La Romana', 'everest-forms' ),
			'DO-13' => __( 'La Vega', 'everest-forms' ),
			'DO-14' => __( 'María Trinidad Sánchez', 'everest-forms' ),
			'DO-28' => __( 'Monseñor Nouel', 'everest-forms' ),
			'DO-15' => __( 'Monte Cristi', 'everest-forms' ),
			'DO-29' => __( 'Monte Plata', 'everest-forms' ),
			'DO-40' => __( 'Ozama', 'everest-forms' ),
			'DO-16' => __( 'Pedernales', 'everest-forms' ),
			'DO-17' => __( 'Peravia', 'everest-forms' ),
			'DO-18' => __( 'Puerto Plata', 'everest-forms' ),
			'DO-20' => __( 'Samaná', 'everest-forms' ),
			'DO-21' => __( 'San Cristóbal', 'everest-forms' ),
			'DO-31' => __( 'San José de Ocoa', 'everest-forms' ),
			'DO-22' => __( 'San Juan', 'everest-forms' ),
			'DO-23' => __( 'San Pedro de Macorís', 'everest-forms' ),
			'DO-24' => __( 'Sánchez Ramírez', 'everest-forms' ),
			'DO-25' => __( 'Santiago', 'everest-forms' ),
			'DO-26' => __( 'Santiago Rodríguez', 'everest-forms' ),
			'DO-32' => __( 'Santo Domingo', 'everest-forms' ),
			'DO-41' => __( 'Valdesia', 'everest-forms' ),
			'DO-27' => __( 'Valverde', 'everest-forms' ),
			'DO-42' => __( 'Yuma', 'everest-forms' ),
		),
		'DZ' => array( // Algerian states.
			'DZ-01' => __( 'Adrar', 'everest-forms' ),
			'DZ-02' => __( 'Chlef', 'everest-forms' ),
			'DZ-03' => __( 'Laghouat', 'everest-forms' ),
			'DZ-04' => __( 'Oum El Bouaghi', 'everest-forms' ),
			'DZ-05' => __( 'Batna', 'everest-forms' ),
			'DZ-06' => __( 'Béjaïa', 'everest-forms' ),
			'DZ-07' => __( 'Biskra', 'everest-forms' ),
			'DZ-08' => __( 'Béchar', 'everest-forms' ),
			'DZ-09' => __( 'Blida', 'everest-forms' ),
			'DZ-10' => __( 'Bouira', 'everest-forms' ),
			'DZ-11' => __( 'Tamanghasset', 'everest-forms' ),
			'DZ-12' => __( 'Tébessa', 'everest-forms' ),
			'DZ-13' => __( 'Tlemcen', 'everest-forms' ),
			'DZ-14' => __( 'Tiaret', 'everest-forms' ),
			'DZ-15' => __( 'Tizi Ouzou', 'everest-forms' ),
			'DZ-16' => __( 'Algiers', 'everest-forms' ),
			'DZ-17' => __( 'Djelfa', 'everest-forms' ),
			'DZ-18' => __( 'Jijel', 'everest-forms' ),
			'DZ-19' => __( 'Sétif', 'everest-forms' ),
			'DZ-20' => __( 'Saïda', 'everest-forms' ),
			'DZ-21' => __( 'Skikda', 'everest-forms' ),
			'DZ-22' => __( 'Sidi Bel Abbès', 'everest-forms' ),
			'DZ-23' => __( 'Annaba', 'everest-forms' ),
			'DZ-24' => __( 'Guelma', 'everest-forms' ),
			'DZ-25' => __( 'Constantine', 'everest-forms' ),
			'DZ-26' => __( 'Médéa', 'everest-forms' ),
			'DZ-27' => __( 'Mostaganem', 'everest-forms' ),
			'DZ-28' => __( 'M’Sila', 'everest-forms' ),
			'DZ-29' => __( 'Mascara', 'everest-forms' ),
			'DZ-30' => __( 'Ouargla', 'everest-forms' ),
			'DZ-31' => __( 'Oran', 'everest-forms' ),
			'DZ-32' => __( 'El Bayadh', 'everest-forms' ),
			'DZ-33' => __( 'Illizi', 'everest-forms' ),
			'DZ-34' => __( 'Bordj Bou Arréridj', 'everest-forms' ),
			'DZ-35' => __( 'Boumerdès', 'everest-forms' ),
			'DZ-36' => __( 'El Tarf', 'everest-forms' ),
			'DZ-37' => __( 'Tindouf', 'everest-forms' ),
			'DZ-38' => __( 'Tissemsilt', 'everest-forms' ),
			'DZ-39' => __( 'El Oued', 'everest-forms' ),
			'DZ-40' => __( 'Khenchela', 'everest-forms' ),
			'DZ-41' => __( 'Souk Ahras', 'everest-forms' ),
			'DZ-42' => __( 'Tipasa', 'everest-forms' ),
			'DZ-43' => __( 'Mila', 'everest-forms' ),
			'DZ-44' => __( 'Aïn Defla', 'everest-forms' ),
			'DZ-45' => __( 'Naama', 'everest-forms' ),
			'DZ-46' => __( 'Aïn Témouchent', 'everest-forms' ),
			'DZ-47' => __( 'Ghardaïa', 'everest-forms' ),
			'DZ-48' => __( 'Relizane', 'everest-forms' ),
		),
		'EE' => array(),
		'EC' => array( // Ecuadorian states.
			'EC-A'  => __( 'Azuay', 'everest-forms' ),
			'EC-B'  => __( 'Bolívar', 'everest-forms' ),
			'EC-F'  => __( 'Cañar', 'everest-forms' ),
			'EC-C'  => __( 'Carchi', 'everest-forms' ),
			'EC-H'  => __( 'Chimborazo', 'everest-forms' ),
			'EC-X'  => __( 'Cotopaxi', 'everest-forms' ),
			'EC-O'  => __( 'El Oro', 'everest-forms' ),
			'EC-E'  => __( 'Esmeraldas', 'everest-forms' ),
			'EC-W'  => __( 'Galápagos', 'everest-forms' ),
			'EC-G'  => __( 'Guayas', 'everest-forms' ),
			'EC-I'  => __( 'Imbabura', 'everest-forms' ),
			'EC-L'  => __( 'Loja', 'everest-forms' ),
			'EC-R'  => __( 'Los Ríos', 'everest-forms' ),
			'EC-M'  => __( 'Manabí', 'everest-forms' ),
			'EC-S'  => __( 'Morona-Santiago', 'everest-forms' ),
			'EC-N'  => __( 'Napo', 'everest-forms' ),
			'EC-D'  => __( 'Orellana', 'everest-forms' ),
			'EC-Y'  => __( 'Pastaza', 'everest-forms' ),
			'EC-P'  => __( 'Pichincha', 'everest-forms' ),
			'EC-SE' => __( 'Santa Elena', 'everest-forms' ),
			'EC-SD' => __( 'Santo Domingo de los Tsáchilas', 'everest-forms' ),
			'EC-U'  => __( 'Sucumbíos', 'everest-forms' ),
			'EC-T'  => __( 'Tungurahua', 'everest-forms' ),
			'EC-Z'  => __( 'Zamora-Chinchipe', 'everest-forms' ),
		),
		'EG' => array( // Egyptian states.
			'EGALX' => __( 'Alexandria', 'everest-forms' ),
			'EGASN' => __( 'Aswan', 'everest-forms' ),
			'EGAST' => __( 'Asyut', 'everest-forms' ),
			'EGBA'  => __( 'Red Sea', 'everest-forms' ),
			'EGBH'  => __( 'Beheira', 'everest-forms' ),
			'EGBNS' => __( 'Beni Suef', 'everest-forms' ),
			'EGC'   => __( 'Cairo', 'everest-forms' ),
			'EGDK'  => __( 'Dakahlia', 'everest-forms' ),
			'EGDT'  => __( 'Damietta', 'everest-forms' ),
			'EGFYM' => __( 'Faiyum', 'everest-forms' ),
			'EGGH'  => __( 'Gharbia', 'everest-forms' ),
			'EGGZ'  => __( 'Giza', 'everest-forms' ),
			'EGIS'  => __( 'Ismailia', 'everest-forms' ),
			'EGJS'  => __( 'South Sinai', 'everest-forms' ),
			'EGKB'  => __( 'Qalyubia', 'everest-forms' ),
			'EGKFS' => __( 'Kafr el-Sheikh', 'everest-forms' ),
			'EGKN'  => __( 'Qena', 'everest-forms' ),
			'EGLX'  => __( 'Luxor', 'everest-forms' ),
			'EGMN'  => __( 'Minya', 'everest-forms' ),
			'EGMNF' => __( 'Monufia', 'everest-forms' ),
			'EGMT'  => __( 'Matrouh', 'everest-forms' ),
			'EGPTS' => __( 'Port Said', 'everest-forms' ),
			'EGSHG' => __( 'Sohag', 'everest-forms' ),
			'EGSHR' => __( 'Al Sharqia', 'everest-forms' ),
			'EGSIN' => __( 'North Sinai', 'everest-forms' ),
			'EGSUZ' => __( 'Suez', 'everest-forms' ),
			'EGWAD' => __( 'New Valley', 'everest-forms' ),
		),
		'ES' => array( // Spanish states.
			'C'  => __( 'A Coruña', 'everest-forms' ),
			'VI' => __( 'Araba/Álava', 'everest-forms' ),
			'AB' => __( 'Albacete', 'everest-forms' ),
			'A'  => __( 'Alicante', 'everest-forms' ),
			'AL' => __( 'Almería', 'everest-forms' ),
			'O'  => __( 'Asturias', 'everest-forms' ),
			'AV' => __( 'Ávila', 'everest-forms' ),
			'BA' => __( 'Badajoz', 'everest-forms' ),
			'PM' => __( 'Baleares', 'everest-forms' ),
			'B'  => __( 'Barcelona', 'everest-forms' ),
			'BU' => __( 'Burgos', 'everest-forms' ),
			'CC' => __( 'Cáceres', 'everest-forms' ),
			'CA' => __( 'Cádiz', 'everest-forms' ),
			'S'  => __( 'Cantabria', 'everest-forms' ),
			'CS' => __( 'Castellón', 'everest-forms' ),
			'CE' => __( 'Ceuta', 'everest-forms' ),
			'CR' => __( 'Ciudad Real', 'everest-forms' ),
			'CO' => __( 'Córdoba', 'everest-forms' ),
			'CU' => __( 'Cuenca', 'everest-forms' ),
			'GI' => __( 'Girona', 'everest-forms' ),
			'GR' => __( 'Granada', 'everest-forms' ),
			'GU' => __( 'Guadalajara', 'everest-forms' ),
			'SS' => __( 'Gipuzkoa', 'everest-forms' ),
			'H'  => __( 'Huelva', 'everest-forms' ),
			'HU' => __( 'Huesca', 'everest-forms' ),
			'J'  => __( 'Jaén', 'everest-forms' ),
			'LO' => __( 'La Rioja', 'everest-forms' ),
			'GC' => __( 'Las Palmas', 'everest-forms' ),
			'LE' => __( 'León', 'everest-forms' ),
			'L'  => __( 'Lleida', 'everest-forms' ),
			'LU' => __( 'Lugo', 'everest-forms' ),
			'M'  => __( 'Madrid', 'everest-forms' ),
			'MA' => __( 'Málaga', 'everest-forms' ),
			'ML' => __( 'Melilla', 'everest-forms' ),
			'MU' => __( 'Murcia', 'everest-forms' ),
			'NA' => __( 'Navarra', 'everest-forms' ),
			'OR' => __( 'Ourense', 'everest-forms' ),
			'P'  => __( 'Palencia', 'everest-forms' ),
			'PO' => __( 'Pontevedra', 'everest-forms' ),
			'SA' => __( 'Salamanca', 'everest-forms' ),
			'TF' => __( 'Santa Cruz de Tenerife', 'everest-forms' ),
			'SG' => __( 'Segovia', 'everest-forms' ),
			'SE' => __( 'Sevilla', 'everest-forms' ),
			'SO' => __( 'Soria', 'everest-forms' ),
			'T'  => __( 'Tarragona', 'everest-forms' ),
			'TE' => __( 'Teruel', 'everest-forms' ),
			'TO' => __( 'Toledo', 'everest-forms' ),
			'V'  => __( 'Valencia', 'everest-forms' ),
			'VA' => __( 'Valladolid', 'everest-forms' ),
			'BI' => __( 'Biscay', 'everest-forms' ),
			'ZA' => __( 'Zamora', 'everest-forms' ),
			'Z'  => __( 'Zaragoza', 'everest-forms' ),
		),
		'FI' => array(),
		'FR' => array(),
		'GF' => array(),
		'GH' => array( // Ghanaian regions.
			'AF' => __( 'Ahafo', 'everest-forms' ),
			'AH' => __( 'Ashanti', 'everest-forms' ),
			'BA' => __( 'Brong-Ahafo', 'everest-forms' ),
			'BO' => __( 'Bono', 'everest-forms' ),
			'BE' => __( 'Bono East', 'everest-forms' ),
			'CP' => __( 'Central', 'everest-forms' ),
			'EP' => __( 'Eastern', 'everest-forms' ),
			'AA' => __( 'Greater Accra', 'everest-forms' ),
			'NE' => __( 'North East', 'everest-forms' ),
			'NP' => __( 'Northern', 'everest-forms' ),
			'OT' => __( 'Oti', 'everest-forms' ),
			'SV' => __( 'Savannah', 'everest-forms' ),
			'UE' => __( 'Upper East', 'everest-forms' ),
			'UW' => __( 'Upper West', 'everest-forms' ),
			'TV' => __( 'Volta', 'everest-forms' ),
			'WP' => __( 'Western', 'everest-forms' ),
			'WN' => __( 'Western North', 'everest-forms' ),
		),
		'GP' => array(),
		'GR' => array( // Greek regions.
			'I' => __( 'Attica', 'everest-forms' ),
			'A' => __( 'East Macedonia and Thrace', 'everest-forms' ),
			'B' => __( 'Central Macedonia', 'everest-forms' ),
			'C' => __( 'West Macedonia', 'everest-forms' ),
			'D' => __( 'Epirus', 'everest-forms' ),
			'E' => __( 'Thessaly', 'everest-forms' ),
			'F' => __( 'Ionian Islands', 'everest-forms' ),
			'G' => __( 'West Greece', 'everest-forms' ),
			'H' => __( 'Central Greece', 'everest-forms' ),
			'J' => __( 'Peloponnese', 'everest-forms' ),
			'K' => __( 'North Aegean', 'everest-forms' ),
			'L' => __( 'South Aegean', 'everest-forms' ),
			'M' => __( 'Crete', 'everest-forms' ),
		),
		'GT' => array( // Guatemalan states.
			'GT-AV' => __( 'Alta Verapaz', 'everest-forms' ),
			'GT-BV' => __( 'Baja Verapaz', 'everest-forms' ),
			'GT-CM' => __( 'Chimaltenango', 'everest-forms' ),
			'GT-CQ' => __( 'Chiquimula', 'everest-forms' ),
			'GT-PR' => __( 'El Progreso', 'everest-forms' ),
			'GT-ES' => __( 'Escuintla', 'everest-forms' ),
			'GT-GU' => __( 'Guatemala', 'everest-forms' ),
			'GT-HU' => __( 'Huehuetenango', 'everest-forms' ),
			'GT-IZ' => __( 'Izabal', 'everest-forms' ),
			'GT-JA' => __( 'Jalapa', 'everest-forms' ),
			'GT-JU' => __( 'Jutiapa', 'everest-forms' ),
			'GT-PE' => __( 'Petén', 'everest-forms' ),
			'GT-QZ' => __( 'Quetzaltenango', 'everest-forms' ),
			'GT-QC' => __( 'Quiché', 'everest-forms' ),
			'GT-RE' => __( 'Retalhuleu', 'everest-forms' ),
			'GT-SA' => __( 'Sacatepéquez', 'everest-forms' ),
			'GT-SM' => __( 'San Marcos', 'everest-forms' ),
			'GT-SR' => __( 'Santa Rosa', 'everest-forms' ),
			'GT-SO' => __( 'Sololá', 'everest-forms' ),
			'GT-SU' => __( 'Suchitepéquez', 'everest-forms' ),
			'GT-TO' => __( 'Totonicapán', 'everest-forms' ),
			'GT-ZA' => __( 'Zacapa', 'everest-forms' ),
		),
		'HK' => array( // Hong Kong states.
			'HONG KONG'       => __( 'Hong Kong Island', 'everest-forms' ),
			'KOWLOON'         => __( 'Kowloon', 'everest-forms' ),
			'NEW TERRITORIES' => __( 'New Territories', 'everest-forms' ),
		),
		'HN' => array( // Honduran states.
			'HN-AT' => __( 'Atlántida', 'everest-forms' ),
			'HN-IB' => __( 'Bay Islands', 'everest-forms' ),
			'HN-CH' => __( 'Choluteca', 'everest-forms' ),
			'HN-CL' => __( 'Colón', 'everest-forms' ),
			'HN-CM' => __( 'Comayagua', 'everest-forms' ),
			'HN-CP' => __( 'Copán', 'everest-forms' ),
			'HN-CR' => __( 'Cortés', 'everest-forms' ),
			'HN-EP' => __( 'El Paraíso', 'everest-forms' ),
			'HN-FM' => __( 'Francisco Morazán', 'everest-forms' ),
			'HN-GD' => __( 'Gracias a Dios', 'everest-forms' ),
			'HN-IN' => __( 'Intibucá', 'everest-forms' ),
			'HN-LE' => __( 'Lempira', 'everest-forms' ),
			'HN-LP' => __( 'La Paz', 'everest-forms' ),
			'HN-OC' => __( 'Ocotepeque', 'everest-forms' ),
			'HN-OL' => __( 'Olancho', 'everest-forms' ),
			'HN-SB' => __( 'Santa Bárbara', 'everest-forms' ),
			'HN-VA' => __( 'Valle', 'everest-forms' ),
			'HN-YO' => __( 'Yoro', 'everest-forms' ),
		),
		'HU' => array( // Hungarian states.
			'BK' => __( 'Bács-Kiskun', 'everest-forms' ),
			'BE' => __( 'Békés', 'everest-forms' ),
			'BA' => __( 'Baranya', 'everest-forms' ),
			'BZ' => __( 'Borsod-Abaúj-Zemplén', 'everest-forms' ),
			'BU' => __( 'Budapest', 'everest-forms' ),
			'CS' => __( 'Csongrád-Csanád', 'everest-forms' ),
			'FE' => __( 'Fejér', 'everest-forms' ),
			'GS' => __( 'Győr-Moson-Sopron', 'everest-forms' ),
			'HB' => __( 'Hajdú-Bihar', 'everest-forms' ),
			'HE' => __( 'Heves', 'everest-forms' ),
			'JN' => __( 'Jász-Nagykun-Szolnok', 'everest-forms' ),
			'KE' => __( 'Komárom-Esztergom', 'everest-forms' ),
			'NO' => __( 'Nógrád', 'everest-forms' ),
			'PE' => __( 'Pest', 'everest-forms' ),
			'SO' => __( 'Somogy', 'everest-forms' ),
			'SZ' => __( 'Szabolcs-Szatmár-Bereg', 'everest-forms' ),
			'TO' => __( 'Tolna', 'everest-forms' ),
			'VA' => __( 'Vas', 'everest-forms' ),
			'VE' => __( 'Veszprém', 'everest-forms' ),
			'ZA' => __( 'Zala', 'everest-forms' ),
		),
		'ID' => array( // Indonesian provinces.
			'AC' => __( 'Daerah Istimewa Aceh', 'everest-forms' ),
			'SU' => __( 'Sumatera Utara', 'everest-forms' ),
			'SB' => __( 'Sumatera Barat', 'everest-forms' ),
			'RI' => __( 'Riau', 'everest-forms' ),
			'KR' => __( 'Kepulauan Riau', 'everest-forms' ),
			'JA' => __( 'Jambi', 'everest-forms' ),
			'SS' => __( 'Sumatera Selatan', 'everest-forms' ),
			'BB' => __( 'Bangka Belitung', 'everest-forms' ),
			'BE' => __( 'Bengkulu', 'everest-forms' ),
			'LA' => __( 'Lampung', 'everest-forms' ),
			'JK' => __( 'DKI Jakarta', 'everest-forms' ),
			'JB' => __( 'Jawa Barat', 'everest-forms' ),
			'BT' => __( 'Banten', 'everest-forms' ),
			'JT' => __( 'Jawa Tengah', 'everest-forms' ),
			'JI' => __( 'Jawa Timur', 'everest-forms' ),
			'YO' => __( 'Daerah Istimewa Yogyakarta', 'everest-forms' ),
			'BA' => __( 'Bali', 'everest-forms' ),
			'NB' => __( 'Nusa Tenggara Barat', 'everest-forms' ),
			'NT' => __( 'Nusa Tenggara Timur', 'everest-forms' ),
			'KB' => __( 'Kalimantan Barat', 'everest-forms' ),
			'KT' => __( 'Kalimantan Tengah', 'everest-forms' ),
			'KI' => __( 'Kalimantan Timur', 'everest-forms' ),
			'KS' => __( 'Kalimantan Selatan', 'everest-forms' ),
			'KU' => __( 'Kalimantan Utara', 'everest-forms' ),
			'SA' => __( 'Sulawesi Utara', 'everest-forms' ),
			'ST' => __( 'Sulawesi Tengah', 'everest-forms' ),
			'SG' => __( 'Sulawesi Tenggara', 'everest-forms' ),
			'SR' => __( 'Sulawesi Barat', 'everest-forms' ),
			'SN' => __( 'Sulawesi Selatan', 'everest-forms' ),
			'GO' => __( 'Gorontalo', 'everest-forms' ),
			'MA' => __( 'Maluku', 'everest-forms' ),
			'MU' => __( 'Maluku Utara', 'everest-forms' ),
			'PA' => __( 'Papua', 'everest-forms' ),
			'PB' => __( 'Papua Barat', 'everest-forms' ),
		),
		'IE' => array( // Irish states.
			'CW' => __( 'Carlow', 'everest-forms' ),
			'CN' => __( 'Cavan', 'everest-forms' ),
			'CE' => __( 'Clare', 'everest-forms' ),
			'CO' => __( 'Cork', 'everest-forms' ),
			'DL' => __( 'Donegal', 'everest-forms' ),
			'D'  => __( 'Dublin', 'everest-forms' ),
			'G'  => __( 'Galway', 'everest-forms' ),
			'KY' => __( 'Kerry', 'everest-forms' ),
			'KE' => __( 'Kildare', 'everest-forms' ),
			'KK' => __( 'Kilkenny', 'everest-forms' ),
			'LS' => __( 'Laois', 'everest-forms' ),
			'LM' => __( 'Leitrim', 'everest-forms' ),
			'LK' => __( 'Limerick', 'everest-forms' ),
			'LD' => __( 'Longford', 'everest-forms' ),
			'LH' => __( 'Louth', 'everest-forms' ),
			'MO' => __( 'Mayo', 'everest-forms' ),
			'MH' => __( 'Meath', 'everest-forms' ),
			'MN' => __( 'Monaghan', 'everest-forms' ),
			'OY' => __( 'Offaly', 'everest-forms' ),
			'RN' => __( 'Roscommon', 'everest-forms' ),
			'SO' => __( 'Sligo', 'everest-forms' ),
			'TA' => __( 'Tipperary', 'everest-forms' ),
			'WD' => __( 'Waterford', 'everest-forms' ),
			'WH' => __( 'Westmeath', 'everest-forms' ),
			'WX' => __( 'Wexford', 'everest-forms' ),
			'WW' => __( 'Wicklow', 'everest-forms' ),
		),
		'IN' => array( // Indian states.
			'AP' => __( 'Andhra Pradesh', 'everest-forms' ),
			'AR' => __( 'Arunachal Pradesh', 'everest-forms' ),
			'AS' => __( 'Assam', 'everest-forms' ),
			'BR' => __( 'Bihar', 'everest-forms' ),
			'CT' => __( 'Chhattisgarh', 'everest-forms' ),
			'GA' => __( 'Goa', 'everest-forms' ),
			'GJ' => __( 'Gujarat', 'everest-forms' ),
			'HR' => __( 'Haryana', 'everest-forms' ),
			'HP' => __( 'Himachal Pradesh', 'everest-forms' ),
			'JK' => __( 'Jammu and Kashmir', 'everest-forms' ),
			'JH' => __( 'Jharkhand', 'everest-forms' ),
			'KA' => __( 'Karnataka', 'everest-forms' ),
			'KL' => __( 'Kerala', 'everest-forms' ),
			'LA' => __( 'Ladakh', 'everest-forms' ),
			'MP' => __( 'Madhya Pradesh', 'everest-forms' ),
			'MH' => __( 'Maharashtra', 'everest-forms' ),
			'MN' => __( 'Manipur', 'everest-forms' ),
			'ML' => __( 'Meghalaya', 'everest-forms' ),
			'MZ' => __( 'Mizoram', 'everest-forms' ),
			'NL' => __( 'Nagaland', 'everest-forms' ),
			'OR' => __( 'Odisha', 'everest-forms' ),
			'PB' => __( 'Punjab', 'everest-forms' ),
			'RJ' => __( 'Rajasthan', 'everest-forms' ),
			'SK' => __( 'Sikkim', 'everest-forms' ),
			'TN' => __( 'Tamil Nadu', 'everest-forms' ),
			'TS' => __( 'Telangana', 'everest-forms' ),
			'TR' => __( 'Tripura', 'everest-forms' ),
			'UK' => __( 'Uttarakhand', 'everest-forms' ),
			'UP' => __( 'Uttar Pradesh', 'everest-forms' ),
			'WB' => __( 'West Bengal', 'everest-forms' ),
			'AN' => __( 'Andaman and Nicobar Islands', 'everest-forms' ),
			'CH' => __( 'Chandigarh', 'everest-forms' ),
			'DN' => __( 'Dadra and Nagar Haveli', 'everest-forms' ),
			'DD' => __( 'Daman and Diu', 'everest-forms' ),
			'DL' => __( 'Delhi', 'everest-forms' ),
			'LD' => __( 'Lakshadeep', 'everest-forms' ),
			'PY' => __( 'Pondicherry (Puducherry)', 'everest-forms' ),
		),
		'IR' => array( // Irania states.
			'KHZ' => __( 'Khuzestan (خوزستان)', 'everest-forms' ),
			'THR' => __( 'Tehran (تهران)', 'everest-forms' ),
			'ILM' => __( 'Ilaam (ایلام)', 'everest-forms' ),
			'BHR' => __( 'Bushehr (بوشهر)', 'everest-forms' ),
			'ADL' => __( 'Ardabil (اردبیل)', 'everest-forms' ),
			'ESF' => __( 'Isfahan (اصفهان)', 'everest-forms' ),
			'YZD' => __( 'Yazd (یزد)', 'everest-forms' ),
			'KRH' => __( 'Kermanshah (کرمانشاه)', 'everest-forms' ),
			'KRN' => __( 'Kerman (کرمان)', 'everest-forms' ),
			'HDN' => __( 'Hamadan (همدان)', 'everest-forms' ),
			'GZN' => __( 'Ghazvin (قزوین)', 'everest-forms' ),
			'ZJN' => __( 'Zanjan (زنجان)', 'everest-forms' ),
			'LRS' => __( 'Luristan (لرستان)', 'everest-forms' ),
			'ABZ' => __( 'Alborz (البرز)', 'everest-forms' ),
			'EAZ' => __( 'East Azarbaijan (آذربایجان شرقی)', 'everest-forms' ),
			'WAZ' => __( 'West Azarbaijan (آذربایجان غربی)', 'everest-forms' ),
			'CHB' => __( 'Chaharmahal and Bakhtiari (چهارمحال و بختیاری)', 'everest-forms' ),
			'SKH' => __( 'South Khorasan (خراسان جنوبی)', 'everest-forms' ),
			'RKH' => __( 'Razavi Khorasan (خراسان رضوی)', 'everest-forms' ),
			'NKH' => __( 'North Khorasan (خراسان شمالی)', 'everest-forms' ),
			'SMN' => __( 'Semnan (سمنان)', 'everest-forms' ),
			'FRS' => __( 'Fars (فارس)', 'everest-forms' ),
			'QHM' => __( 'Qom (قم)', 'everest-forms' ),
			'KRD' => __( 'Kurdistan / کردستان)', 'everest-forms' ),
			'KBD' => __( 'Kohgiluyeh and BoyerAhmad (کهگیلوییه و بویراحمد)', 'everest-forms' ),
			'GLS' => __( 'Golestan (گلستان)', 'everest-forms' ),
			'GIL' => __( 'Gilan (گیلان)', 'everest-forms' ),
			'MZN' => __( 'Mazandaran (مازندران)', 'everest-forms' ),
			'MKZ' => __( 'Markazi (مرکزی)', 'everest-forms' ),
			'HRZ' => __( 'Hormozgan (هرمزگان)', 'everest-forms' ),
			'SBN' => __( 'Sistan and Baluchestan (سیستان و بلوچستان)', 'everest-forms' ),
		),
		'IS' => array(),
		'IT' => array( // Italian provinces.
			'AG' => __( 'Agrigento', 'everest-forms' ),
			'AL' => __( 'Alessandria', 'everest-forms' ),
			'AN' => __( 'Ancona', 'everest-forms' ),
			'AO' => __( 'Aosta', 'everest-forms' ),
			'AR' => __( 'Arezzo', 'everest-forms' ),
			'AP' => __( 'Ascoli Piceno', 'everest-forms' ),
			'AT' => __( 'Asti', 'everest-forms' ),
			'AV' => __( 'Avellino', 'everest-forms' ),
			'BA' => __( 'Bari', 'everest-forms' ),
			'BT' => __( 'Barletta-Andria-Trani', 'everest-forms' ),
			'BL' => __( 'Belluno', 'everest-forms' ),
			'BN' => __( 'Benevento', 'everest-forms' ),
			'BG' => __( 'Bergamo', 'everest-forms' ),
			'BI' => __( 'Biella', 'everest-forms' ),
			'BO' => __( 'Bologna', 'everest-forms' ),
			'BZ' => __( 'Bolzano', 'everest-forms' ),
			'BS' => __( 'Brescia', 'everest-forms' ),
			'BR' => __( 'Brindisi', 'everest-forms' ),
			'CA' => __( 'Cagliari', 'everest-forms' ),
			'CL' => __( 'Caltanissetta', 'everest-forms' ),
			'CB' => __( 'Campobasso', 'everest-forms' ),
			'CE' => __( 'Caserta', 'everest-forms' ),
			'CT' => __( 'Catania', 'everest-forms' ),
			'CZ' => __( 'Catanzaro', 'everest-forms' ),
			'CH' => __( 'Chieti', 'everest-forms' ),
			'CO' => __( 'Como', 'everest-forms' ),
			'CS' => __( 'Cosenza', 'everest-forms' ),
			'CR' => __( 'Cremona', 'everest-forms' ),
			'KR' => __( 'Crotone', 'everest-forms' ),
			'CN' => __( 'Cuneo', 'everest-forms' ),
			'EN' => __( 'Enna', 'everest-forms' ),
			'FM' => __( 'Fermo', 'everest-forms' ),
			'FE' => __( 'Ferrara', 'everest-forms' ),
			'FI' => __( 'Firenze', 'everest-forms' ),
			'FG' => __( 'Foggia', 'everest-forms' ),
			'FC' => __( 'Forlì-Cesena', 'everest-forms' ),
			'FR' => __( 'Frosinone', 'everest-forms' ),
			'GE' => __( 'Genova', 'everest-forms' ),
			'GO' => __( 'Gorizia', 'everest-forms' ),
			'GR' => __( 'Grosseto', 'everest-forms' ),
			'IM' => __( 'Imperia', 'everest-forms' ),
			'IS' => __( 'Isernia', 'everest-forms' ),
			'SP' => __( 'La Spezia', 'everest-forms' ),
			'AQ' => __( "L'Aquila", 'everest-forms' ),
			'LT' => __( 'Latina', 'everest-forms' ),
			'LE' => __( 'Lecce', 'everest-forms' ),
			'LC' => __( 'Lecco', 'everest-forms' ),
			'LI' => __( 'Livorno', 'everest-forms' ),
			'LO' => __( 'Lodi', 'everest-forms' ),
			'LU' => __( 'Lucca', 'everest-forms' ),
			'MC' => __( 'Macerata', 'everest-forms' ),
			'MN' => __( 'Mantova', 'everest-forms' ),
			'MS' => __( 'Massa-Carrara', 'everest-forms' ),
			'MT' => __( 'Matera', 'everest-forms' ),
			'ME' => __( 'Messina', 'everest-forms' ),
			'MI' => __( 'Milano', 'everest-forms' ),
			'MO' => __( 'Modena', 'everest-forms' ),
			'MB' => __( 'Monza e della Brianza', 'everest-forms' ),
			'NA' => __( 'Napoli', 'everest-forms' ),
			'NO' => __( 'Novara', 'everest-forms' ),
			'NU' => __( 'Nuoro', 'everest-forms' ),
			'OR' => __( 'Oristano', 'everest-forms' ),
			'PD' => __( 'Padova', 'everest-forms' ),
			'PA' => __( 'Palermo', 'everest-forms' ),
			'PR' => __( 'Parma', 'everest-forms' ),
			'PV' => __( 'Pavia', 'everest-forms' ),
			'PG' => __( 'Perugia', 'everest-forms' ),
			'PU' => __( 'Pesaro e Urbino', 'everest-forms' ),
			'PE' => __( 'Pescara', 'everest-forms' ),
			'PC' => __( 'Piacenza', 'everest-forms' ),
			'PI' => __( 'Pisa', 'everest-forms' ),
			'PT' => __( 'Pistoia', 'everest-forms' ),
			'PN' => __( 'Pordenone', 'everest-forms' ),
			'PZ' => __( 'Potenza', 'everest-forms' ),
			'PO' => __( 'Prato', 'everest-forms' ),
			'RG' => __( 'Ragusa', 'everest-forms' ),
			'RA' => __( 'Ravenna', 'everest-forms' ),
			'RC' => __( 'Reggio Calabria', 'everest-forms' ),
			'RE' => __( 'Reggio Emilia', 'everest-forms' ),
			'RI' => __( 'Rieti', 'everest-forms' ),
			'RN' => __( 'Rimini', 'everest-forms' ),
			'RM' => __( 'Roma', 'everest-forms' ),
			'RO' => __( 'Rovigo', 'everest-forms' ),
			'SA' => __( 'Salerno', 'everest-forms' ),
			'SS' => __( 'Sassari', 'everest-forms' ),
			'SV' => __( 'Savona', 'everest-forms' ),
			'SI' => __( 'Siena', 'everest-forms' ),
			'SR' => __( 'Siracusa', 'everest-forms' ),
			'SO' => __( 'Sondrio', 'everest-forms' ),
			'SU' => __( 'Sud Sardegna', 'everest-forms' ),
			'TA' => __( 'Taranto', 'everest-forms' ),
			'TE' => __( 'Teramo', 'everest-forms' ),
			'TR' => __( 'Terni', 'everest-forms' ),
			'TO' => __( 'Torino', 'everest-forms' ),
			'TP' => __( 'Trapani', 'everest-forms' ),
			'TN' => __( 'Trento', 'everest-forms' ),
			'TV' => __( 'Treviso', 'everest-forms' ),
			'TS' => __( 'Trieste', 'everest-forms' ),
			'UD' => __( 'Udine', 'everest-forms' ),
			'VA' => __( 'Varese', 'everest-forms' ),
			'VE' => __( 'Venezia', 'everest-forms' ),
			'VB' => __( 'Verbano-Cusio-Ossola', 'everest-forms' ),
			'VC' => __( 'Vercelli', 'everest-forms' ),
			'VR' => __( 'Verona', 'everest-forms' ),
			'VV' => __( 'Vibo Valentia', 'everest-forms' ),
			'VI' => __( 'Vicenza', 'everest-forms' ),
			'VT' => __( 'Viterbo', 'everest-forms' ),
		),
		'IL' => array(),
		'IM' => array(),
		'JM' => array( // Jamaican parishes.
			'JM-01' => __( 'Kingston', 'everest-forms' ),
			'JM-02' => __( 'Saint Andrew', 'everest-forms' ),
			'JM-03' => __( 'Saint Thomas', 'everest-forms' ),
			'JM-04' => __( 'Portland', 'everest-forms' ),
			'JM-05' => __( 'Saint Mary', 'everest-forms' ),
			'JM-06' => __( 'Saint Ann', 'everest-forms' ),
			'JM-07' => __( 'Trelawny', 'everest-forms' ),
			'JM-08' => __( 'Saint James', 'everest-forms' ),
			'JM-09' => __( 'Hanover', 'everest-forms' ),
			'JM-10' => __( 'Westmoreland', 'everest-forms' ),
			'JM-11' => __( 'Saint Elizabeth', 'everest-forms' ),
			'JM-12' => __( 'Manchester', 'everest-forms' ),
			'JM-13' => __( 'Clarendon', 'everest-forms' ),
			'JM-14' => __( 'Saint Catherine', 'everest-forms' ),
		),

		'JP' => array(
			'JP01' => __( 'Hokkaido', 'everest-forms' ),
			'JP02' => __( 'Aomori', 'everest-forms' ),
			'JP03' => __( 'Iwate', 'everest-forms' ),
			'JP04' => __( 'Miyagi', 'everest-forms' ),
			'JP05' => __( 'Akita', 'everest-forms' ),
			'JP06' => __( 'Yamagata', 'everest-forms' ),
			'JP07' => __( 'Fukushima', 'everest-forms' ),
			'JP08' => __( 'Ibaraki', 'everest-forms' ),
			'JP09' => __( 'Tochigi', 'everest-forms' ),
			'JP10' => __( 'Gunma', 'everest-forms' ),
			'JP11' => __( 'Saitama', 'everest-forms' ),
			'JP12' => __( 'Chiba', 'everest-forms' ),
			'JP13' => __( 'Tokyo', 'everest-forms' ),
			'JP14' => __( 'Kanagawa', 'everest-forms' ),
			'JP15' => __( 'Niigata', 'everest-forms' ),
			'JP16' => __( 'Toyama', 'everest-forms' ),
			'JP17' => __( 'Ishikawa', 'everest-forms' ),
			'JP18' => __( 'Fukui', 'everest-forms' ),
			'JP19' => __( 'Yamanashi', 'everest-forms' ),
			'JP20' => __( 'Nagano', 'everest-forms' ),
			'JP21' => __( 'Gifu', 'everest-forms' ),
			'JP22' => __( 'Shizuoka', 'everest-forms' ),
			'JP23' => __( 'Aichi', 'everest-forms' ),
			'JP24' => __( 'Mie', 'everest-forms' ),
			'JP25' => __( 'Shiga', 'everest-forms' ),
			'JP26' => __( 'Kyoto', 'everest-forms' ),
			'JP27' => __( 'Osaka', 'everest-forms' ),
			'JP28' => __( 'Hyogo', 'everest-forms' ),
			'JP29' => __( 'Nara', 'everest-forms' ),
			'JP30' => __( 'Wakayama', 'everest-forms' ),
			'JP31' => __( 'Tottori', 'everest-forms' ),
			'JP32' => __( 'Shimane', 'everest-forms' ),
			'JP33' => __( 'Okayama', 'everest-forms' ),
			'JP34' => __( 'Hiroshima', 'everest-forms' ),
			'JP35' => __( 'Yamaguchi', 'everest-forms' ),
			'JP36' => __( 'Tokushima', 'everest-forms' ),
			'JP37' => __( 'Kagawa', 'everest-forms' ),
			'JP38' => __( 'Ehime', 'everest-forms' ),
			'JP39' => __( 'Kochi', 'everest-forms' ),
			'JP40' => __( 'Fukuoka', 'everest-forms' ),
			'JP41' => __( 'Saga', 'everest-forms' ),
			'JP42' => __( 'Nagasaki', 'everest-forms' ),
			'JP43' => __( 'Kumamoto', 'everest-forms' ),
			'JP44' => __( 'Oita', 'everest-forms' ),
			'JP45' => __( 'Miyazaki', 'everest-forms' ),
			'JP46' => __( 'Kagoshima', 'everest-forms' ),
			'JP47' => __( 'Okinawa', 'everest-forms' ),
		),
		'KE' => array( // Kenyan counties.
			'KE01' => __( 'Baringo', 'everest-forms' ),
			'KE02' => __( 'Bomet', 'everest-forms' ),
			'KE03' => __( 'Bungoma', 'everest-forms' ),
			'KE04' => __( 'Busia', 'everest-forms' ),
			'KE05' => __( 'Elgeyo-Marakwet', 'everest-forms' ),
			'KE06' => __( 'Embu', 'everest-forms' ),
			'KE07' => __( 'Garissa', 'everest-forms' ),
			'KE08' => __( 'Homa Bay', 'everest-forms' ),
			'KE09' => __( 'Isiolo', 'everest-forms' ),
			'KE10' => __( 'Kajiado', 'everest-forms' ),
			'KE11' => __( 'Kakamega', 'everest-forms' ),
			'KE12' => __( 'Kericho', 'everest-forms' ),
			'KE13' => __( 'Kiambu', 'everest-forms' ),
			'KE14' => __( 'Kilifi', 'everest-forms' ),
			'KE15' => __( 'Kirinyaga', 'everest-forms' ),
			'KE16' => __( 'Kisii', 'everest-forms' ),
			'KE17' => __( 'Kisumu', 'everest-forms' ),
			'KE18' => __( 'Kitui', 'everest-forms' ),
			'KE19' => __( 'Kwale', 'everest-forms' ),
			'KE20' => __( 'Laikipia', 'everest-forms' ),
			'KE21' => __( 'Lamu', 'everest-forms' ),
			'KE22' => __( 'Machakos', 'everest-forms' ),
			'KE23' => __( 'Makueni', 'everest-forms' ),
			'KE24' => __( 'Mandera', 'everest-forms' ),
			'KE25' => __( 'Marsabit', 'everest-forms' ),
			'KE26' => __( 'Meru', 'everest-forms' ),
			'KE27' => __( 'Migori', 'everest-forms' ),
			'KE28' => __( 'Mombasa', 'everest-forms' ),
			'KE29' => __( 'Murang’a', 'everest-forms' ),
			'KE30' => __( 'Nairobi County', 'everest-forms' ),
			'KE31' => __( 'Nakuru', 'everest-forms' ),
			'KE32' => __( 'Nandi', 'everest-forms' ),
			'KE33' => __( 'Narok', 'everest-forms' ),
			'KE34' => __( 'Nyamira', 'everest-forms' ),
			'KE35' => __( 'Nyandarua', 'everest-forms' ),
			'KE36' => __( 'Nyeri', 'everest-forms' ),
			'KE37' => __( 'Samburu', 'everest-forms' ),
			'KE38' => __( 'Siaya', 'everest-forms' ),
			'KE39' => __( 'Taita-Taveta', 'everest-forms' ),
			'KE40' => __( 'Tana River', 'everest-forms' ),
			'KE41' => __( 'Tharaka-Nithi', 'everest-forms' ),
			'KE42' => __( 'Trans Nzoia', 'everest-forms' ),
			'KE43' => __( 'Turkana', 'everest-forms' ),
			'KE44' => __( 'Uasin Gishu', 'everest-forms' ),
			'KE45' => __( 'Vihiga', 'everest-forms' ),
			'KE46' => __( 'Wajir', 'everest-forms' ),
			'KE47' => __( 'West Pokot', 'everest-forms' ),
		),
		'KR' => array(),
		'KW' => array(),
		'LA' => array( // Laotian provinces.
			'AT' => __( 'Attapeu', 'everest-forms' ),
			'BK' => __( 'Bokeo', 'everest-forms' ),
			'BL' => __( 'Bolikhamsai', 'everest-forms' ),
			'CH' => __( 'Champasak', 'everest-forms' ),
			'HO' => __( 'Houaphanh', 'everest-forms' ),
			'KH' => __( 'Khammouane', 'everest-forms' ),
			'LM' => __( 'Luang Namtha', 'everest-forms' ),
			'LP' => __( 'Luang Prabang', 'everest-forms' ),
			'OU' => __( 'Oudomxay', 'everest-forms' ),
			'PH' => __( 'Phongsaly', 'everest-forms' ),
			'SL' => __( 'Salavan', 'everest-forms' ),
			'SV' => __( 'Savannakhet', 'everest-forms' ),
			'VI' => __( 'Vientiane Province', 'everest-forms' ),
			'VT' => __( 'Vientiane', 'everest-forms' ),
			'XA' => __( 'Sainyabuli', 'everest-forms' ),
			'XE' => __( 'Sekong', 'everest-forms' ),
			'XI' => __( 'Xiangkhouang', 'everest-forms' ),
			'XS' => __( 'Xaisomboun', 'everest-forms' ),
		),
		'LB' => array(),
		'LR' => array( // Liberian provinces.
			'BM' => __( 'Bomi', 'everest-forms' ),
			'BN' => __( 'Bong', 'everest-forms' ),
			'GA' => __( 'Gbarpolu', 'everest-forms' ),
			'GB' => __( 'Grand Bassa', 'everest-forms' ),
			'GC' => __( 'Grand Cape Mount', 'everest-forms' ),
			'GG' => __( 'Grand Gedeh', 'everest-forms' ),
			'GK' => __( 'Grand Kru', 'everest-forms' ),
			'LO' => __( 'Lofa', 'everest-forms' ),
			'MA' => __( 'Margibi', 'everest-forms' ),
			'MY' => __( 'Maryland', 'everest-forms' ),
			'MO' => __( 'Montserrado', 'everest-forms' ),
			'NM' => __( 'Nimba', 'everest-forms' ),
			'RV' => __( 'Rivercess', 'everest-forms' ),
			'RG' => __( 'River Gee', 'everest-forms' ),
			'SN' => __( 'Sinoe', 'everest-forms' ),
		),
		'LU' => array(),
		'MD' => array( // Moldovan states.
			'C'  => __( 'Chișinău', 'everest-forms' ),
			'BL' => __( 'Bălți', 'everest-forms' ),
			'AN' => __( 'Anenii Noi', 'everest-forms' ),
			'BS' => __( 'Basarabeasca', 'everest-forms' ),
			'BR' => __( 'Briceni', 'everest-forms' ),
			'CH' => __( 'Cahul', 'everest-forms' ),
			'CT' => __( 'Cantemir', 'everest-forms' ),
			'CL' => __( 'Călărași', 'everest-forms' ),
			'CS' => __( 'Căușeni', 'everest-forms' ),
			'CM' => __( 'Cimișlia', 'everest-forms' ),
			'CR' => __( 'Criuleni', 'everest-forms' ),
			'DN' => __( 'Dondușeni', 'everest-forms' ),
			'DR' => __( 'Drochia', 'everest-forms' ),
			'DB' => __( 'Dubăsari', 'everest-forms' ),
			'ED' => __( 'Edineț', 'everest-forms' ),
			'FL' => __( 'Fălești', 'everest-forms' ),
			'FR' => __( 'Florești', 'everest-forms' ),
			'GE' => __( 'UTA Găgăuzia', 'everest-forms' ),
			'GL' => __( 'Glodeni', 'everest-forms' ),
			'HN' => __( 'Hîncești', 'everest-forms' ),
			'IL' => __( 'Ialoveni', 'everest-forms' ),
			'LV' => __( 'Leova', 'everest-forms' ),
			'NS' => __( 'Nisporeni', 'everest-forms' ),
			'OC' => __( 'Ocnița', 'everest-forms' ),
			'OR' => __( 'Orhei', 'everest-forms' ),
			'RZ' => __( 'Rezina', 'everest-forms' ),
			'RS' => __( 'Rîșcani', 'everest-forms' ),
			'SG' => __( 'Sîngerei', 'everest-forms' ),
			'SR' => __( 'Soroca', 'everest-forms' ),
			'ST' => __( 'Strășeni', 'everest-forms' ),
			'SD' => __( 'Șoldănești', 'everest-forms' ),
			'SV' => __( 'Ștefan Vodă', 'everest-forms' ),
			'TR' => __( 'Taraclia', 'everest-forms' ),
			'TL' => __( 'Telenești', 'everest-forms' ),
			'UN' => __( 'Ungheni', 'everest-forms' ),
		),
		'MQ' => array(),
		'MT' => array(),
		'MX' => array( // Mexican states.
			'DF' => __( 'Ciudad de México', 'everest-forms' ),
			'JA' => __( 'Jalisco', 'everest-forms' ),
			'NL' => __( 'Nuevo León', 'everest-forms' ),
			'AG' => __( 'Aguascalientes', 'everest-forms' ),
			'BC' => __( 'Baja California', 'everest-forms' ),
			'BS' => __( 'Baja California Sur', 'everest-forms' ),
			'CM' => __( 'Campeche', 'everest-forms' ),
			'CS' => __( 'Chiapas', 'everest-forms' ),
			'CH' => __( 'Chihuahua', 'everest-forms' ),
			'CO' => __( 'Coahuila', 'everest-forms' ),
			'CL' => __( 'Colima', 'everest-forms' ),
			'DG' => __( 'Durango', 'everest-forms' ),
			'GT' => __( 'Guanajuato', 'everest-forms' ),
			'GR' => __( 'Guerrero', 'everest-forms' ),
			'HG' => __( 'Hidalgo', 'everest-forms' ),
			'MX' => __( 'Estado de México', 'everest-forms' ),
			'MI' => __( 'Michoacán', 'everest-forms' ),
			'MO' => __( 'Morelos', 'everest-forms' ),
			'NA' => __( 'Nayarit', 'everest-forms' ),
			'OA' => __( 'Oaxaca', 'everest-forms' ),
			'PU' => __( 'Puebla', 'everest-forms' ),
			'QT' => __( 'Querétaro', 'everest-forms' ),
			'QR' => __( 'Quintana Roo', 'everest-forms' ),
			'SL' => __( 'San Luis Potosí', 'everest-forms' ),
			'SI' => __( 'Sinaloa', 'everest-forms' ),
			'SO' => __( 'Sonora', 'everest-forms' ),
			'TB' => __( 'Tabasco', 'everest-forms' ),
			'TM' => __( 'Tamaulipas', 'everest-forms' ),
			'TL' => __( 'Tlaxcala', 'everest-forms' ),
			'VE' => __( 'Veracruz', 'everest-forms' ),
			'YU' => __( 'Yucatán', 'everest-forms' ),
			'ZA' => __( 'Zacatecas', 'everest-forms' ),
		),
		'MY' => array( // Malaysian states.
			'JHR' => __( 'Johor', 'everest-forms' ),
			'KDH' => __( 'Kedah', 'everest-forms' ),
			'KTN' => __( 'Kelantan', 'everest-forms' ),
			'LBN' => __( 'Labuan', 'everest-forms' ),
			'MLK' => __( 'Malacca (Melaka)', 'everest-forms' ),
			'NSN' => __( 'Negeri Sembilan', 'everest-forms' ),
			'PHG' => __( 'Pahang', 'everest-forms' ),
			'PNG' => __( 'Penang (Pulau Pinang)', 'everest-forms' ),
			'PRK' => __( 'Perak', 'everest-forms' ),
			'PLS' => __( 'Perlis', 'everest-forms' ),
			'SBH' => __( 'Sabah', 'everest-forms' ),
			'SWK' => __( 'Sarawak', 'everest-forms' ),
			'SGR' => __( 'Selangor', 'everest-forms' ),
			'TRG' => __( 'Terengganu', 'everest-forms' ),
			'PJY' => __( 'Putrajaya', 'everest-forms' ),
			'KUL' => __( 'Kuala Lumpur', 'everest-forms' ),
		),
		'MZ' => array( // Mozambican provinces.
			'MZP'   => __( 'Cabo Delgado', 'everest-forms' ),
			'MZG'   => __( 'Gaza', 'everest-forms' ),
			'MZI'   => __( 'Inhambane', 'everest-forms' ),
			'MZB'   => __( 'Manica', 'everest-forms' ),
			'MZL'   => __( 'Maputo Province', 'everest-forms' ),
			'MZMPM' => __( 'Maputo', 'everest-forms' ),
			'MZN'   => __( 'Nampula', 'everest-forms' ),
			'MZA'   => __( 'Niassa', 'everest-forms' ),
			'MZS'   => __( 'Sofala', 'everest-forms' ),
			'MZT'   => __( 'Tete', 'everest-forms' ),
			'MZQ'   => __( 'Zambézia', 'everest-forms' ),
		),
		'NA' => array( // Namibian regions.
			'ER' => __( 'Erongo', 'everest-forms' ),
			'HA' => __( 'Hardap', 'everest-forms' ),
			'KA' => __( 'Karas', 'everest-forms' ),
			'KE' => __( 'Kavango East', 'everest-forms' ),
			'KW' => __( 'Kavango West', 'everest-forms' ),
			'KH' => __( 'Khomas', 'everest-forms' ),
			'KU' => __( 'Kunene', 'everest-forms' ),
			'OW' => __( 'Ohangwena', 'everest-forms' ),
			'OH' => __( 'Omaheke', 'everest-forms' ),
			'OS' => __( 'Omusati', 'everest-forms' ),
			'ON' => __( 'Oshana', 'everest-forms' ),
			'OT' => __( 'Oshikoto', 'everest-forms' ),
			'OD' => __( 'Otjozondjupa', 'everest-forms' ),
			'CA' => __( 'Zambezi', 'everest-forms' ),
		),
		'NG' => array( // Nigerian provinces.
			'AB' => __( 'Abia', 'everest-forms' ),
			'FC' => __( 'Abuja', 'everest-forms' ),
			'AD' => __( 'Adamawa', 'everest-forms' ),
			'AK' => __( 'Akwa Ibom', 'everest-forms' ),
			'AN' => __( 'Anambra', 'everest-forms' ),
			'BA' => __( 'Bauchi', 'everest-forms' ),
			'BY' => __( 'Bayelsa', 'everest-forms' ),
			'BE' => __( 'Benue', 'everest-forms' ),
			'BO' => __( 'Borno', 'everest-forms' ),
			'CR' => __( 'Cross River', 'everest-forms' ),
			'DE' => __( 'Delta', 'everest-forms' ),
			'EB' => __( 'Ebonyi', 'everest-forms' ),
			'ED' => __( 'Edo', 'everest-forms' ),
			'EK' => __( 'Ekiti', 'everest-forms' ),
			'EN' => __( 'Enugu', 'everest-forms' ),
			'GO' => __( 'Gombe', 'everest-forms' ),
			'IM' => __( 'Imo', 'everest-forms' ),
			'JI' => __( 'Jigawa', 'everest-forms' ),
			'KD' => __( 'Kaduna', 'everest-forms' ),
			'KN' => __( 'Kano', 'everest-forms' ),
			'KT' => __( 'Katsina', 'everest-forms' ),
			'KE' => __( 'Kebbi', 'everest-forms' ),
			'KO' => __( 'Kogi', 'everest-forms' ),
			'KW' => __( 'Kwara', 'everest-forms' ),
			'LA' => __( 'Lagos', 'everest-forms' ),
			'NA' => __( 'Nasarawa', 'everest-forms' ),
			'NI' => __( 'Niger', 'everest-forms' ),
			'OG' => __( 'Ogun', 'everest-forms' ),
			'ON' => __( 'Ondo', 'everest-forms' ),
			'OS' => __( 'Osun', 'everest-forms' ),
			'OY' => __( 'Oyo', 'everest-forms' ),
			'PL' => __( 'Plateau', 'everest-forms' ),
			'RI' => __( 'Rivers', 'everest-forms' ),
			'SO' => __( 'Sokoto', 'everest-forms' ),
			'TA' => __( 'Taraba', 'everest-forms' ),
			'YO' => __( 'Yobe', 'everest-forms' ),
			'ZA' => __( 'Zamfara', 'everest-forms' ),
		),
		'NL' => array(),
		'NO' => array(),
		'NP' => array( // Nepalese zones.
			'BAG' => __( 'Bagmati', 'everest-forms' ),
			'BHE' => __( 'Bheri', 'everest-forms' ),
			'DHA' => __( 'Dhaulagiri', 'everest-forms' ),
			'GAN' => __( 'Gandaki', 'everest-forms' ),
			'JAN' => __( 'Janakpur', 'everest-forms' ),
			'KAR' => __( 'Karnali', 'everest-forms' ),
			'KOS' => __( 'Koshi', 'everest-forms' ),
			'LUM' => __( 'Lumbini', 'everest-forms' ),
			'MAH' => __( 'Mahakali', 'everest-forms' ),
			'MEC' => __( 'Mechi', 'everest-forms' ),
			'NAR' => __( 'Narayani', 'everest-forms' ),
			'RAP' => __( 'Rapti', 'everest-forms' ),
			'SAG' => __( 'Sagarmatha', 'everest-forms' ),
			'SET' => __( 'Seti', 'everest-forms' ),
		),
		'NI' => array( // Nicaraguan states.
			'NI-AN' => __( 'Atlántico Norte', 'everest-forms' ),
			'NI-AS' => __( 'Atlántico Sur', 'everest-forms' ),
			'NI-BO' => __( 'Boaco', 'everest-forms' ),
			'NI-CA' => __( 'Carazo', 'everest-forms' ),
			'NI-CI' => __( 'Chinandega', 'everest-forms' ),
			'NI-CO' => __( 'Chontales', 'everest-forms' ),
			'NI-ES' => __( 'Estelí', 'everest-forms' ),
			'NI-GR' => __( 'Granada', 'everest-forms' ),
			'NI-JI' => __( 'Jinotega', 'everest-forms' ),
			'NI-LE' => __( 'León', 'everest-forms' ),
			'NI-MD' => __( 'Madriz', 'everest-forms' ),
			'NI-MN' => __( 'Managua', 'everest-forms' ),
			'NI-MS' => __( 'Masaya', 'everest-forms' ),
			'NI-MT' => __( 'Matagalpa', 'everest-forms' ),
			'NI-NS' => __( 'Nueva Segovia', 'everest-forms' ),
			'NI-RI' => __( 'Rivas', 'everest-forms' ),
			'NI-SJ' => __( 'Río San Juan', 'everest-forms' ),
		),
		'NZ' => array( // New Zealand states.
			'NL' => __( 'Northland', 'everest-forms' ),
			'AK' => __( 'Auckland', 'everest-forms' ),
			'WA' => __( 'Waikato', 'everest-forms' ),
			'BP' => __( 'Bay of Plenty', 'everest-forms' ),
			'TK' => __( 'Taranaki', 'everest-forms' ),
			'GI' => __( 'Gisborne', 'everest-forms' ),
			'HB' => __( 'Hawke’s Bay', 'everest-forms' ),
			'MW' => __( 'Manawatu-Wanganui', 'everest-forms' ),
			'WE' => __( 'Wellington', 'everest-forms' ),
			'NS' => __( 'Nelson', 'everest-forms' ),
			'MB' => __( 'Marlborough', 'everest-forms' ),
			'TM' => __( 'Tasman', 'everest-forms' ),
			'WC' => __( 'West Coast', 'everest-forms' ),
			'CT' => __( 'Canterbury', 'everest-forms' ),
			'OT' => __( 'Otago', 'everest-forms' ),
			'SL' => __( 'Southland', 'everest-forms' ),
		),
		'PA' => array( // Panamanian states.
			'PA-1'  => __( 'Bocas del Toro', 'everest-forms' ),
			'PA-2'  => __( 'Coclé', 'everest-forms' ),
			'PA-3'  => __( 'Colón', 'everest-forms' ),
			'PA-4'  => __( 'Chiriquí', 'everest-forms' ),
			'PA-5'  => __( 'Darién', 'everest-forms' ),
			'PA-6'  => __( 'Herrera', 'everest-forms' ),
			'PA-7'  => __( 'Los Santos', 'everest-forms' ),
			'PA-8'  => __( 'Panamá', 'everest-forms' ),
			'PA-9'  => __( 'Veraguas', 'everest-forms' ),
			'PA-10' => __( 'West Panamá', 'everest-forms' ),
			'PA-EM' => __( 'Emberá', 'everest-forms' ),
			'PA-KY' => __( 'Guna Yala', 'everest-forms' ),
			'PA-NB' => __( 'Ngöbe-Buglé', 'everest-forms' ),
		),
		'PE' => array( // Peruvian states.
			'CAL' => __( 'El Callao', 'everest-forms' ),
			'LMA' => __( 'Municipalidad Metropolitana de Lima', 'everest-forms' ),
			'AMA' => __( 'Amazonas', 'everest-forms' ),
			'ANC' => __( 'Ancash', 'everest-forms' ),
			'APU' => __( 'Apurímac', 'everest-forms' ),
			'ARE' => __( 'Arequipa', 'everest-forms' ),
			'AYA' => __( 'Ayacucho', 'everest-forms' ),
			'CAJ' => __( 'Cajamarca', 'everest-forms' ),
			'CUS' => __( 'Cusco', 'everest-forms' ),
			'HUV' => __( 'Huancavelica', 'everest-forms' ),
			'HUC' => __( 'Huánuco', 'everest-forms' ),
			'ICA' => __( 'Ica', 'everest-forms' ),
			'JUN' => __( 'Junín', 'everest-forms' ),
			'LAL' => __( 'La Libertad', 'everest-forms' ),
			'LAM' => __( 'Lambayeque', 'everest-forms' ),
			'LIM' => __( 'Lima', 'everest-forms' ),
			'LOR' => __( 'Loreto', 'everest-forms' ),
			'MDD' => __( 'Madre de Dios', 'everest-forms' ),
			'MOQ' => __( 'Moquegua', 'everest-forms' ),
			'PAS' => __( 'Pasco', 'everest-forms' ),
			'PIU' => __( 'Piura', 'everest-forms' ),
			'PUN' => __( 'Puno', 'everest-forms' ),
			'SAM' => __( 'San Martín', 'everest-forms' ),
			'TAC' => __( 'Tacna', 'everest-forms' ),
			'TUM' => __( 'Tumbes', 'everest-forms' ),
			'UCA' => __( 'Ucayali', 'everest-forms' ),
		),
		'PH' => array( // Philippine provinces.
			'ABR' => __( 'Abra', 'everest-forms' ),
			'AGN' => __( 'Agusan del Norte', 'everest-forms' ),
			'AGS' => __( 'Agusan del Sur', 'everest-forms' ),
			'AKL' => __( 'Aklan', 'everest-forms' ),
			'ALB' => __( 'Albay', 'everest-forms' ),
			'ANT' => __( 'Antique', 'everest-forms' ),
			'APA' => __( 'Apayao', 'everest-forms' ),
			'AUR' => __( 'Aurora', 'everest-forms' ),
			'BAS' => __( 'Basilan', 'everest-forms' ),
			'BAN' => __( 'Bataan', 'everest-forms' ),
			'BTN' => __( 'Batanes', 'everest-forms' ),
			'BTG' => __( 'Batangas', 'everest-forms' ),
			'BEN' => __( 'Benguet', 'everest-forms' ),
			'BIL' => __( 'Biliran', 'everest-forms' ),
			'BOH' => __( 'Bohol', 'everest-forms' ),
			'BUK' => __( 'Bukidnon', 'everest-forms' ),
			'BUL' => __( 'Bulacan', 'everest-forms' ),
			'CAG' => __( 'Cagayan', 'everest-forms' ),
			'CAN' => __( 'Camarines Norte', 'everest-forms' ),
			'CAS' => __( 'Camarines Sur', 'everest-forms' ),
			'CAM' => __( 'Camiguin', 'everest-forms' ),
			'CAP' => __( 'Capiz', 'everest-forms' ),
			'CAT' => __( 'Catanduanes', 'everest-forms' ),
			'CAV' => __( 'Cavite', 'everest-forms' ),
			'CEB' => __( 'Cebu', 'everest-forms' ),
			'COM' => __( 'Compostela Valley', 'everest-forms' ),
			'NCO' => __( 'Cotabato', 'everest-forms' ),
			'DAV' => __( 'Davao del Norte', 'everest-forms' ),
			'DAS' => __( 'Davao del Sur', 'everest-forms' ),
			'DAC' => __( 'Davao Occidental', 'everest-forms' ),
			'DAO' => __( 'Davao Oriental', 'everest-forms' ),
			'DIN' => __( 'Dinagat Islands', 'everest-forms' ),
			'EAS' => __( 'Eastern Samar', 'everest-forms' ),
			'GUI' => __( 'Guimaras', 'everest-forms' ),
			'IFU' => __( 'Ifugao', 'everest-forms' ),
			'ILN' => __( 'Ilocos Norte', 'everest-forms' ),
			'ILS' => __( 'Ilocos Sur', 'everest-forms' ),
			'ILI' => __( 'Iloilo', 'everest-forms' ),
			'ISA' => __( 'Isabela', 'everest-forms' ),
			'KAL' => __( 'Kalinga', 'everest-forms' ),
			'LUN' => __( 'La Union', 'everest-forms' ),
			'LAG' => __( 'Laguna', 'everest-forms' ),
			'LAN' => __( 'Lanao del Norte', 'everest-forms' ),
			'LAS' => __( 'Lanao del Sur', 'everest-forms' ),
			'LEY' => __( 'Leyte', 'everest-forms' ),
			'MAG' => __( 'Maguindanao', 'everest-forms' ),
			'MAD' => __( 'Marinduque', 'everest-forms' ),
			'MAS' => __( 'Masbate', 'everest-forms' ),
			'MSC' => __( 'Misamis Occidental', 'everest-forms' ),
			'MSR' => __( 'Misamis Oriental', 'everest-forms' ),
			'MOU' => __( 'Mountain Province', 'everest-forms' ),
			'NEC' => __( 'Negros Occidental', 'everest-forms' ),
			'NER' => __( 'Negros Oriental', 'everest-forms' ),
			'NSA' => __( 'Northern Samar', 'everest-forms' ),
			'NUE' => __( 'Nueva Ecija', 'everest-forms' ),
			'NUV' => __( 'Nueva Vizcaya', 'everest-forms' ),
			'MDC' => __( 'Occidental Mindoro', 'everest-forms' ),
			'MDR' => __( 'Oriental Mindoro', 'everest-forms' ),
			'PLW' => __( 'Palawan', 'everest-forms' ),
			'PAM' => __( 'Pampanga', 'everest-forms' ),
			'PAN' => __( 'Pangasinan', 'everest-forms' ),
			'QUE' => __( 'Quezon', 'everest-forms' ),
			'QUI' => __( 'Quirino', 'everest-forms' ),
			'RIZ' => __( 'Rizal', 'everest-forms' ),
			'ROM' => __( 'Romblon', 'everest-forms' ),
			'WSA' => __( 'Samar', 'everest-forms' ),
			'SAR' => __( 'Sarangani', 'everest-forms' ),
			'SIQ' => __( 'Siquijor', 'everest-forms' ),
			'SOR' => __( 'Sorsogon', 'everest-forms' ),
			'SCO' => __( 'South Cotabato', 'everest-forms' ),
			'SLE' => __( 'Southern Leyte', 'everest-forms' ),
			'SUK' => __( 'Sultan Kudarat', 'everest-forms' ),
			'SLU' => __( 'Sulu', 'everest-forms' ),
			'SUN' => __( 'Surigao del Norte', 'everest-forms' ),
			'SUR' => __( 'Surigao del Sur', 'everest-forms' ),
			'TAR' => __( 'Tarlac', 'everest-forms' ),
			'TAW' => __( 'Tawi-Tawi', 'everest-forms' ),
			'ZMB' => __( 'Zambales', 'everest-forms' ),
			'ZAN' => __( 'Zamboanga del Norte', 'everest-forms' ),
			'ZAS' => __( 'Zamboanga del Sur', 'everest-forms' ),
			'ZSI' => __( 'Zamboanga Sibugay', 'everest-forms' ),
			'00'  => __( 'Metro Manila', 'everest-forms' ),
		),
		'PK' => array( // Pakistani states.
			'JK' => __( 'Azad Kashmir', 'everest-forms' ),
			'BA' => __( 'Balochistan', 'everest-forms' ),
			'TA' => __( 'FATA', 'everest-forms' ),
			'GB' => __( 'Gilgit Baltistan', 'everest-forms' ),
			'IS' => __( 'Islamabad Capital Territory', 'everest-forms' ),
			'KP' => __( 'Khyber Pakhtunkhwa', 'everest-forms' ),
			'PB' => __( 'Punjab', 'everest-forms' ),
			'SD' => __( 'Sindh', 'everest-forms' ),
		),
		'PL' => array(),
		'PR' => array(),
		'PT' => array(),
		'PY' => array( // Paraguayan states.
			'PY-ASU' => __( 'Asunción', 'everest-forms' ),
			'PY-1'   => __( 'Concepción', 'everest-forms' ),
			'PY-2'   => __( 'San Pedro', 'everest-forms' ),
			'PY-3'   => __( 'Cordillera', 'everest-forms' ),
			'PY-4'   => __( 'Guairá', 'everest-forms' ),
			'PY-5'   => __( 'Caaguazú', 'everest-forms' ),
			'PY-6'   => __( 'Caazapá', 'everest-forms' ),
			'PY-7'   => __( 'Itapúa', 'everest-forms' ),
			'PY-8'   => __( 'Misiones', 'everest-forms' ),
			'PY-9'   => __( 'Paraguarí', 'everest-forms' ),
			'PY-10'  => __( 'Alto Paraná', 'everest-forms' ),
			'PY-11'  => __( 'Central', 'everest-forms' ),
			'PY-12'  => __( 'Ñeembucú', 'everest-forms' ),
			'PY-13'  => __( 'Amambay', 'everest-forms' ),
			'PY-14'  => __( 'Canindeyú', 'everest-forms' ),
			'PY-15'  => __( 'Presidente Hayes', 'everest-forms' ),
			'PY-16'  => __( 'Alto Paraguay', 'everest-forms' ),
			'PY-17'  => __( 'Boquerón', 'everest-forms' ),
		),
		'RE' => array(),
		'RO' => array( // Romanian states.
			'AB' => __( 'Alba', 'everest-forms' ),
			'AR' => __( 'Arad', 'everest-forms' ),
			'AG' => __( 'Argeș', 'everest-forms' ),
			'BC' => __( 'Bacău', 'everest-forms' ),
			'BH' => __( 'Bihor', 'everest-forms' ),
			'BN' => __( 'Bistrița-Năsăud', 'everest-forms' ),
			'BT' => __( 'Botoșani', 'everest-forms' ),
			'BR' => __( 'Brăila', 'everest-forms' ),
			'BV' => __( 'Brașov', 'everest-forms' ),
			'B'  => __( 'București', 'everest-forms' ),
			'BZ' => __( 'Buzău', 'everest-forms' ),
			'CL' => __( 'Călărași', 'everest-forms' ),
			'CS' => __( 'Caraș-Severin', 'everest-forms' ),
			'CJ' => __( 'Cluj', 'everest-forms' ),
			'CT' => __( 'Constanța', 'everest-forms' ),
			'CV' => __( 'Covasna', 'everest-forms' ),
			'DB' => __( 'Dâmbovița', 'everest-forms' ),
			'DJ' => __( 'Dolj', 'everest-forms' ),
			'GL' => __( 'Galați', 'everest-forms' ),
			'GR' => __( 'Giurgiu', 'everest-forms' ),
			'GJ' => __( 'Gorj', 'everest-forms' ),
			'HR' => __( 'Harghita', 'everest-forms' ),
			'HD' => __( 'Hunedoara', 'everest-forms' ),
			'IL' => __( 'Ialomița', 'everest-forms' ),
			'IS' => __( 'Iași', 'everest-forms' ),
			'IF' => __( 'Ilfov', 'everest-forms' ),
			'MM' => __( 'Maramureș', 'everest-forms' ),
			'MH' => __( 'Mehedinți', 'everest-forms' ),
			'MS' => __( 'Mureș', 'everest-forms' ),
			'NT' => __( 'Neamț', 'everest-forms' ),
			'OT' => __( 'Olt', 'everest-forms' ),
			'PH' => __( 'Prahova', 'everest-forms' ),
			'SJ' => __( 'Sălaj', 'everest-forms' ),
			'SM' => __( 'Satu Mare', 'everest-forms' ),
			'SB' => __( 'Sibiu', 'everest-forms' ),
			'SV' => __( 'Suceava', 'everest-forms' ),
			'TR' => __( 'Teleorman', 'everest-forms' ),
			'TM' => __( 'Timiș', 'everest-forms' ),
			'TL' => __( 'Tulcea', 'everest-forms' ),
			'VL' => __( 'Vâlcea', 'everest-forms' ),
			'VS' => __( 'Vaslui', 'everest-forms' ),
			'VN' => __( 'Vrancea', 'everest-forms' ),
		),
		'SG' => array(),
		'SK' => array(),
		'SI' => array(),
		'SV' => array( // Salvadoran states.
			'SV-AH' => __( 'Ahuachapán', 'everest-forms' ),
			'SV-CA' => __( 'Cabañas', 'everest-forms' ),
			'SV-CH' => __( 'Chalatenango', 'everest-forms' ),
			'SV-CU' => __( 'Cuscatlán', 'everest-forms' ),
			'SV-LI' => __( 'La Libertad', 'everest-forms' ),
			'SV-MO' => __( 'Morazán', 'everest-forms' ),
			'SV-PA' => __( 'La Paz', 'everest-forms' ),
			'SV-SA' => __( 'Santa Ana', 'everest-forms' ),
			'SV-SM' => __( 'San Miguel', 'everest-forms' ),
			'SV-SO' => __( 'Sonsonate', 'everest-forms' ),
			'SV-SS' => __( 'San Salvador', 'everest-forms' ),
			'SV-SV' => __( 'San Vicente', 'everest-forms' ),
			'SV-UN' => __( 'La Unión', 'everest-forms' ),
			'SV-US' => __( 'Usulután', 'everest-forms' ),
		),
		'TH' => array( // Thai states.
			'TH-37' => __( 'Amnat Charoen', 'everest-forms' ),
			'TH-15' => __( 'Ang Thong', 'everest-forms' ),
			'TH-14' => __( 'Ayutthaya', 'everest-forms' ),
			'TH-10' => __( 'Bangkok', 'everest-forms' ),
			'TH-38' => __( 'Bueng Kan', 'everest-forms' ),
			'TH-31' => __( 'Buri Ram', 'everest-forms' ),
			'TH-24' => __( 'Chachoengsao', 'everest-forms' ),
			'TH-18' => __( 'Chai Nat', 'everest-forms' ),
			'TH-36' => __( 'Chaiyaphum', 'everest-forms' ),
			'TH-22' => __( 'Chanthaburi', 'everest-forms' ),
			'TH-50' => __( 'Chiang Mai', 'everest-forms' ),
			'TH-57' => __( 'Chiang Rai', 'everest-forms' ),
			'TH-20' => __( 'Chonburi', 'everest-forms' ),
			'TH-86' => __( 'Chumphon', 'everest-forms' ),
			'TH-46' => __( 'Kalasin', 'everest-forms' ),
			'TH-62' => __( 'Kamphaeng Phet', 'everest-forms' ),
			'TH-71' => __( 'Kanchanaburi', 'everest-forms' ),
			'TH-40' => __( 'Khon Kaen', 'everest-forms' ),
			'TH-81' => __( 'Krabi', 'everest-forms' ),
			'TH-52' => __( 'Lampang', 'everest-forms' ),
			'TH-51' => __( 'Lamphun', 'everest-forms' ),
			'TH-42' => __( 'Loei', 'everest-forms' ),
			'TH-16' => __( 'Lopburi', 'everest-forms' ),
			'TH-58' => __( 'Mae Hong Son', 'everest-forms' ),
			'TH-44' => __( 'Maha Sarakham', 'everest-forms' ),
			'TH-49' => __( 'Mukdahan', 'everest-forms' ),
			'TH-26' => __( 'Nakhon Nayok', 'everest-forms' ),
			'TH-73' => __( 'Nakhon Pathom', 'everest-forms' ),
			'TH-48' => __( 'Nakhon Phanom', 'everest-forms' ),
			'TH-30' => __( 'Nakhon Ratchasima', 'everest-forms' ),
			'TH-60' => __( 'Nakhon Sawan', 'everest-forms' ),
			'TH-80' => __( 'Nakhon Si Thammarat', 'everest-forms' ),
			'TH-55' => __( 'Nan', 'everest-forms' ),
			'TH-96' => __( 'Narathiwat', 'everest-forms' ),
			'TH-39' => __( 'Nong Bua Lam Phu', 'everest-forms' ),
			'TH-43' => __( 'Nong Khai', 'everest-forms' ),
			'TH-12' => __( 'Nonthaburi', 'everest-forms' ),
			'TH-13' => __( 'Pathum Thani', 'everest-forms' ),
			'TH-94' => __( 'Pattani', 'everest-forms' ),
			'TH-82' => __( 'Phang Nga', 'everest-forms' ),
			'TH-93' => __( 'Phatthalung', 'everest-forms' ),
			'TH-56' => __( 'Phayao', 'everest-forms' ),
			'TH-67' => __( 'Phetchabun', 'everest-forms' ),
			'TH-76' => __( 'Phetchaburi', 'everest-forms' ),
			'TH-66' => __( 'Phichit', 'everest-forms' ),
			'TH-65' => __( 'Phitsanulok', 'everest-forms' ),
			'TH-54' => __( 'Phrae', 'everest-forms' ),
			'TH-83' => __( 'Phuket', 'everest-forms' ),
			'TH-25' => __( 'Prachin Buri', 'everest-forms' ),
			'TH-77' => __( 'Prachuap Khiri Khan', 'everest-forms' ),
			'TH-85' => __( 'Ranong', 'everest-forms' ),
			'TH-70' => __( 'Ratchaburi', 'everest-forms' ),
			'TH-21' => __( 'Rayong', 'everest-forms' ),
			'TH-45' => __( 'Roi Et', 'everest-forms' ),
			'TH-27' => __( 'Sa Kaeo', 'everest-forms' ),
			'TH-47' => __( 'Sakon Nakhon', 'everest-forms' ),
			'TH-11' => __( 'Samut Prakan', 'everest-forms' ),
			'TH-74' => __( 'Samut Sakhon', 'everest-forms' ),
			'TH-75' => __( 'Samut Songkhram', 'everest-forms' ),
			'TH-19' => __( 'Saraburi', 'everest-forms' ),
			'TH-91' => __( 'Satun', 'everest-forms' ),
			'TH-17' => __( 'Sing Buri', 'everest-forms' ),
			'TH-33' => __( 'Sisaket', 'everest-forms' ),
			'TH-90' => __( 'Songkhla', 'everest-forms' ),
			'TH-64' => __( 'Sukhothai', 'everest-forms' ),
			'TH-72' => __( 'Suphan Buri', 'everest-forms' ),
			'TH-84' => __( 'Surat Thani', 'everest-forms' ),
			'TH-32' => __( 'Surin', 'everest-forms' ),
			'TH-63' => __( 'Tak', 'everest-forms' ),
			'TH-92' => __( 'Trang', 'everest-forms' ),
			'TH-23' => __( 'Trat', 'everest-forms' ),
			'TH-34' => __( 'Ubon Ratchathani', 'everest-forms' ),
			'TH-41' => __( 'Udon Thani', 'everest-forms' ),
			'TH-61' => __( 'Uthai Thani', 'everest-forms' ),
			'TH-53' => __( 'Uttaradit', 'everest-forms' ),
			'TH-95' => __( 'Yala', 'everest-forms' ),
			'TH-35' => __( 'Yasothon', 'everest-forms' ),
		),
		'TR' => array( // Turkish states.
			'TR01' => __( 'Adana', 'everest-forms' ),
			'TR02' => __( 'Adıyaman', 'everest-forms' ),
			'TR03' => __( 'Afyon', 'everest-forms' ),
			'TR04' => __( 'Ağrı', 'everest-forms' ),
			'TR05' => __( 'Amasya', 'everest-forms' ),
			'TR06' => __( 'Ankara', 'everest-forms' ),
			'TR07' => __( 'Antalya', 'everest-forms' ),
			'TR08' => __( 'Artvin', 'everest-forms' ),
			'TR09' => __( 'Aydın', 'everest-forms' ),
			'TR10' => __( 'Balıkesir', 'everest-forms' ),
			'TR11' => __( 'Bilecik', 'everest-forms' ),
			'TR12' => __( 'Bingöl', 'everest-forms' ),
			'TR13' => __( 'Bitlis', 'everest-forms' ),
			'TR14' => __( 'Bolu', 'everest-forms' ),
			'TR15' => __( 'Burdur', 'everest-forms' ),
			'TR16' => __( 'Bursa', 'everest-forms' ),
			'TR17' => __( 'Çanakkale', 'everest-forms' ),
			'TR18' => __( 'Çankırı', 'everest-forms' ),
			'TR19' => __( 'Çorum', 'everest-forms' ),
			'TR20' => __( 'Denizli', 'everest-forms' ),
			'TR21' => __( 'Diyarbakır', 'everest-forms' ),
			'TR22' => __( 'Edirne', 'everest-forms' ),
			'TR23' => __( 'Elazığ', 'everest-forms' ),
			'TR24' => __( 'Erzincan', 'everest-forms' ),
			'TR25' => __( 'Erzurum', 'everest-forms' ),
			'TR26' => __( 'Eskişehir', 'everest-forms' ),
			'TR27' => __( 'Gaziantep', 'everest-forms' ),
			'TR28' => __( 'Giresun', 'everest-forms' ),
			'TR29' => __( 'Gümüşhane', 'everest-forms' ),
			'TR30' => __( 'Hakkari', 'everest-forms' ),
			'TR31' => __( 'Hatay', 'everest-forms' ),
			'TR32' => __( 'Isparta', 'everest-forms' ),
			'TR33' => __( 'İçel', 'everest-forms' ),
			'TR34' => __( 'İstanbul', 'everest-forms' ),
			'TR35' => __( 'İzmir', 'everest-forms' ),
			'TR36' => __( 'Kars', 'everest-forms' ),
			'TR37' => __( 'Kastamonu', 'everest-forms' ),
			'TR38' => __( 'Kayseri', 'everest-forms' ),
			'TR39' => __( 'Kırklareli', 'everest-forms' ),
			'TR40' => __( 'Kırşehir', 'everest-forms' ),
			'TR41' => __( 'Kocaeli', 'everest-forms' ),
			'TR42' => __( 'Konya', 'everest-forms' ),
			'TR43' => __( 'Kütahya', 'everest-forms' ),
			'TR44' => __( 'Malatya', 'everest-forms' ),
			'TR45' => __( 'Manisa', 'everest-forms' ),
			'TR46' => __( 'Kahramanmaraş', 'everest-forms' ),
			'TR47' => __( 'Mardin', 'everest-forms' ),
			'TR48' => __( 'Muğla', 'everest-forms' ),
			'TR49' => __( 'Muş', 'everest-forms' ),
			'TR50' => __( 'Nevşehir', 'everest-forms' ),
			'TR51' => __( 'Niğde', 'everest-forms' ),
			'TR52' => __( 'Ordu', 'everest-forms' ),
			'TR53' => __( 'Rize', 'everest-forms' ),
			'TR54' => __( 'Sakarya', 'everest-forms' ),
			'TR55' => __( 'Samsun', 'everest-forms' ),
			'TR56' => __( 'Siirt', 'everest-forms' ),
			'TR57' => __( 'Sinop', 'everest-forms' ),
			'TR58' => __( 'Sivas', 'everest-forms' ),
			'TR59' => __( 'Tekirdağ', 'everest-forms' ),
			'TR60' => __( 'Tokat', 'everest-forms' ),
			'TR61' => __( 'Trabzon', 'everest-forms' ),
			'TR62' => __( 'Tunceli', 'everest-forms' ),
			'TR63' => __( 'Şanlıurfa', 'everest-forms' ),
			'TR64' => __( 'Uşak', 'everest-forms' ),
			'TR65' => __( 'Van', 'everest-forms' ),
			'TR66' => __( 'Yozgat', 'everest-forms' ),
			'TR67' => __( 'Zonguldak', 'everest-forms' ),
			'TR68' => __( 'Aksaray', 'everest-forms' ),
			'TR69' => __( 'Bayburt', 'everest-forms' ),
			'TR70' => __( 'Karaman', 'everest-forms' ),
			'TR71' => __( 'Kırıkkale', 'everest-forms' ),
			'TR72' => __( 'Batman', 'everest-forms' ),
			'TR73' => __( 'Şırnak', 'everest-forms' ),
			'TR74' => __( 'Bartın', 'everest-forms' ),
			'TR75' => __( 'Ardahan', 'everest-forms' ),
			'TR76' => __( 'Iğdır', 'everest-forms' ),
			'TR77' => __( 'Yalova', 'everest-forms' ),
			'TR78' => __( 'Karabük', 'everest-forms' ),
			'TR79' => __( 'Kilis', 'everest-forms' ),
			'TR80' => __( 'Osmaniye', 'everest-forms' ),
			'TR81' => __( 'Düzce', 'everest-forms' ),
		),
		'TZ' => array( // Tanzanian states.
			'TZ01' => __( 'Arusha', 'everest-forms' ),
			'TZ02' => __( 'Dar es Salaam', 'everest-forms' ),
			'TZ03' => __( 'Dodoma', 'everest-forms' ),
			'TZ04' => __( 'Iringa', 'everest-forms' ),
			'TZ05' => __( 'Kagera', 'everest-forms' ),
			'TZ06' => __( 'Pemba North', 'everest-forms' ),
			'TZ07' => __( 'Zanzibar North', 'everest-forms' ),
			'TZ08' => __( 'Kigoma', 'everest-forms' ),
			'TZ09' => __( 'Kilimanjaro', 'everest-forms' ),
			'TZ10' => __( 'Pemba South', 'everest-forms' ),
			'TZ11' => __( 'Zanzibar South', 'everest-forms' ),
			'TZ12' => __( 'Lindi', 'everest-forms' ),
			'TZ13' => __( 'Mara', 'everest-forms' ),
			'TZ14' => __( 'Mbeya', 'everest-forms' ),
			'TZ15' => __( 'Zanzibar West', 'everest-forms' ),
			'TZ16' => __( 'Morogoro', 'everest-forms' ),
			'TZ17' => __( 'Mtwara', 'everest-forms' ),
			'TZ18' => __( 'Mwanza', 'everest-forms' ),
			'TZ19' => __( 'Coast', 'everest-forms' ),
			'TZ20' => __( 'Rukwa', 'everest-forms' ),
			'TZ21' => __( 'Ruvuma', 'everest-forms' ),
			'TZ22' => __( 'Shinyanga', 'everest-forms' ),
			'TZ23' => __( 'Singida', 'everest-forms' ),
			'TZ24' => __( 'Tabora', 'everest-forms' ),
			'TZ25' => __( 'Tanga', 'everest-forms' ),
			'TZ26' => __( 'Manyara', 'everest-forms' ),
			'TZ27' => __( 'Geita', 'everest-forms' ),
			'TZ28' => __( 'Katavi', 'everest-forms' ),
			'TZ29' => __( 'Njombe', 'everest-forms' ),
			'TZ30' => __( 'Simiyu', 'everest-forms' ),
		),
		'LK' => array(),
		'RS' => array( // Serbian districts.
			'RS00' => _x( 'Belgrade', 'district', 'everest-forms' ),
			'RS14' => _x( 'Bor', 'district', 'everest-forms' ),
			'RS11' => _x( 'Braničevo', 'district', 'everest-forms' ),
			'RS02' => _x( 'Central Banat', 'district', 'everest-forms' ),
			'RS10' => _x( 'Danube', 'district', 'everest-forms' ),
			'RS23' => _x( 'Jablanica', 'district', 'everest-forms' ),
			'RS09' => _x( 'Kolubara', 'district', 'everest-forms' ),
			'RS08' => _x( 'Mačva', 'district', 'everest-forms' ),
			'RS17' => _x( 'Morava', 'district', 'everest-forms' ),
			'RS20' => _x( 'Nišava', 'district', 'everest-forms' ),
			'RS01' => _x( 'North Bačka', 'district', 'everest-forms' ),
			'RS03' => _x( 'North Banat', 'district', 'everest-forms' ),
			'RS24' => _x( 'Pčinja', 'district', 'everest-forms' ),
			'RS22' => _x( 'Pirot', 'district', 'everest-forms' ),
			'RS13' => _x( 'Pomoravlje', 'district', 'everest-forms' ),
			'RS19' => _x( 'Rasina', 'district', 'everest-forms' ),
			'RS18' => _x( 'Raška', 'district', 'everest-forms' ),
			'RS06' => _x( 'South Bačka', 'district', 'everest-forms' ),
			'RS04' => _x( 'South Banat', 'district', 'everest-forms' ),
			'RS07' => _x( 'Srem', 'district', 'everest-forms' ),
			'RS12' => _x( 'Šumadija', 'district', 'everest-forms' ),
			'RS21' => _x( 'Toplica', 'district', 'everest-forms' ),
			'RS05' => _x( 'West Bačka', 'district', 'everest-forms' ),
			'RS15' => _x( 'Zaječar', 'district', 'everest-forms' ),
			'RS16' => _x( 'Zlatibor', 'district', 'everest-forms' ),
			'RS25' => _x( 'Kosovo', 'district', 'everest-forms' ),
			'RS26' => _x( 'Peć', 'district', 'everest-forms' ),
			'RS27' => _x( 'Prizren', 'district', 'everest-forms' ),
			'RS28' => _x( 'Kosovska Mitrovica', 'district', 'everest-forms' ),
			'RS29' => _x( 'Kosovo-Pomoravlje', 'district', 'everest-forms' ),
			'RSKM' => _x( 'Kosovo-Metohija', 'district', 'everest-forms' ),
			'RSVO' => _x( 'Vojvodina', 'district', 'everest-forms' ),
		),
		'SE' => array(),
		'UA' => array( // Ukrainian oblasts.
			'VN' => __( 'Vinnytsia Oblast', 'everest-forms' ),
			'VL' => __( 'Volyn Oblast', 'everest-forms' ),
			'DP' => __( 'Dnipropetrovsk Oblast', 'everest-forms' ),
			'DT' => __( 'Donetsk Oblast', 'everest-forms' ),
			'ZT' => __( 'Zhytomyr Oblast', 'everest-forms' ),
			'ZK' => __( 'Zakarpattia Oblast', 'everest-forms' ),
			'ZP' => __( 'Zaporizhzhia Oblast', 'everest-forms' ),
			'IF' => __( 'Ivano-Frankivsk Oblast', 'everest-forms' ),
			'KV' => __( 'Kyiv Oblast', 'everest-forms' ),
			'KH' => __( 'Kirovohrad Oblast', 'everest-forms' ),
			'LH' => __( 'Luhansk Oblast', 'everest-forms' ),
			'LV' => __( 'Lviv Oblast', 'everest-forms' ),
			'MY' => __( 'Mykolaiv Oblast', 'everest-forms' ),
			'OD' => __( 'Odessa Oblast', 'everest-forms' ),
			'PL' => __( 'Poltava Oblast', 'everest-forms' ),
			'RV' => __( 'Rivne Oblast', 'everest-forms' ),
			'SM' => __( 'Sumy Oblast', 'everest-forms' ),
			'TP' => __( 'Ternopil Oblast', 'everest-forms' ),
			'KK' => __( 'Kharkiv Oblast', 'everest-forms' ),
			'KS' => __( 'Kherson Oblast', 'everest-forms' ),
			'KM' => __( 'Khmelnytskyi Oblast', 'everest-forms' ),
			'CK' => __( 'Cherkasy Oblast', 'everest-forms' ),
			'CH' => __( 'Chernihiv Oblast', 'everest-forms' ),
			'CV' => __( 'Chernivtsi Oblast', 'everest-forms' ),
		),
		'UG' => array( // Ugandan districts.
			'UG314' => __( 'Abim', 'everest-forms' ),
			'UG301' => __( 'Adjumani', 'everest-forms' ),
			'UG322' => __( 'Agago', 'everest-forms' ),
			'UG323' => __( 'Alebtong', 'everest-forms' ),
			'UG315' => __( 'Amolatar', 'everest-forms' ),
			'UG324' => __( 'Amudat', 'everest-forms' ),
			'UG216' => __( 'Amuria', 'everest-forms' ),
			'UG316' => __( 'Amuru', 'everest-forms' ),
			'UG302' => __( 'Apac', 'everest-forms' ),
			'UG303' => __( 'Arua', 'everest-forms' ),
			'UG217' => __( 'Budaka', 'everest-forms' ),
			'UG218' => __( 'Bududa', 'everest-forms' ),
			'UG201' => __( 'Bugiri', 'everest-forms' ),
			'UG235' => __( 'Bugweri', 'everest-forms' ),
			'UG420' => __( 'Buhweju', 'everest-forms' ),
			'UG117' => __( 'Buikwe', 'everest-forms' ),
			'UG219' => __( 'Bukedea', 'everest-forms' ),
			'UG118' => __( 'Bukomansimbi', 'everest-forms' ),
			'UG220' => __( 'Bukwa', 'everest-forms' ),
			'UG225' => __( 'Bulambuli', 'everest-forms' ),
			'UG416' => __( 'Buliisa', 'everest-forms' ),
			'UG401' => __( 'Bundibugyo', 'everest-forms' ),
			'UG430' => __( 'Bunyangabu', 'everest-forms' ),
			'UG402' => __( 'Bushenyi', 'everest-forms' ),
			'UG202' => __( 'Busia', 'everest-forms' ),
			'UG221' => __( 'Butaleja', 'everest-forms' ),
			'UG119' => __( 'Butambala', 'everest-forms' ),
			'UG233' => __( 'Butebo', 'everest-forms' ),
			'UG120' => __( 'Buvuma', 'everest-forms' ),
			'UG226' => __( 'Buyende', 'everest-forms' ),
			'UG317' => __( 'Dokolo', 'everest-forms' ),
			'UG121' => __( 'Gomba', 'everest-forms' ),
			'UG304' => __( 'Gulu', 'everest-forms' ),
			'UG403' => __( 'Hoima', 'everest-forms' ),
			'UG417' => __( 'Ibanda', 'everest-forms' ),
			'UG203' => __( 'Iganga', 'everest-forms' ),
			'UG418' => __( 'Isingiro', 'everest-forms' ),
			'UG204' => __( 'Jinja', 'everest-forms' ),
			'UG318' => __( 'Kaabong', 'everest-forms' ),
			'UG404' => __( 'Kabale', 'everest-forms' ),
			'UG405' => __( 'Kabarole', 'everest-forms' ),
			'UG213' => __( 'Kaberamaido', 'everest-forms' ),
			'UG427' => __( 'Kagadi', 'everest-forms' ),
			'UG428' => __( 'Kakumiro', 'everest-forms' ),
			'UG101' => __( 'Kalangala', 'everest-forms' ),
			'UG222' => __( 'Kaliro', 'everest-forms' ),
			'UG122' => __( 'Kalungu', 'everest-forms' ),
			'UG102' => __( 'Kampala', 'everest-forms' ),
			'UG205' => __( 'Kamuli', 'everest-forms' ),
			'UG413' => __( 'Kamwenge', 'everest-forms' ),
			'UG414' => __( 'Kanungu', 'everest-forms' ),
			'UG206' => __( 'Kapchorwa', 'everest-forms' ),
			'UG236' => __( 'Kapelebyong', 'everest-forms' ),
			'UG126' => __( 'Kasanda', 'everest-forms' ),
			'UG406' => __( 'Kasese', 'everest-forms' ),
			'UG207' => __( 'Katakwi', 'everest-forms' ),
			'UG112' => __( 'Kayunga', 'everest-forms' ),
			'UG407' => __( 'Kibaale', 'everest-forms' ),
			'UG103' => __( 'Kiboga', 'everest-forms' ),
			'UG227' => __( 'Kibuku', 'everest-forms' ),
			'UG432' => __( 'Kikuube', 'everest-forms' ),
			'UG419' => __( 'Kiruhura', 'everest-forms' ),
			'UG421' => __( 'Kiryandongo', 'everest-forms' ),
			'UG408' => __( 'Kisoro', 'everest-forms' ),
			'UG305' => __( 'Kitgum', 'everest-forms' ),
			'UG319' => __( 'Koboko', 'everest-forms' ),
			'UG325' => __( 'Kole', 'everest-forms' ),
			'UG306' => __( 'Kotido', 'everest-forms' ),
			'UG208' => __( 'Kumi', 'everest-forms' ),
			'UG333' => __( 'Kwania', 'everest-forms' ),
			'UG228' => __( 'Kween', 'everest-forms' ),
			'UG123' => __( 'Kyankwanzi', 'everest-forms' ),
			'UG422' => __( 'Kyegegwa', 'everest-forms' ),
			'UG415' => __( 'Kyenjojo', 'everest-forms' ),
			'UG125' => __( 'Kyotera', 'everest-forms' ),
			'UG326' => __( 'Lamwo', 'everest-forms' ),
			'UG307' => __( 'Lira', 'everest-forms' ),
			'UG229' => __( 'Luuka', 'everest-forms' ),
			'UG104' => __( 'Luwero', 'everest-forms' ),
			'UG124' => __( 'Lwengo', 'everest-forms' ),
			'UG114' => __( 'Lyantonde', 'everest-forms' ),
			'UG223' => __( 'Manafwa', 'everest-forms' ),
			'UG320' => __( 'Maracha', 'everest-forms' ),
			'UG105' => __( 'Masaka', 'everest-forms' ),
			'UG409' => __( 'Masindi', 'everest-forms' ),
			'UG214' => __( 'Mayuge', 'everest-forms' ),
			'UG209' => __( 'Mbale', 'everest-forms' ),
			'UG410' => __( 'Mbarara', 'everest-forms' ),
			'UG423' => __( 'Mitooma', 'everest-forms' ),
			'UG115' => __( 'Mityana', 'everest-forms' ),
			'UG308' => __( 'Moroto', 'everest-forms' ),
			'UG309' => __( 'Moyo', 'everest-forms' ),
			'UG106' => __( 'Mpigi', 'everest-forms' ),
			'UG107' => __( 'Mubende', 'everest-forms' ),
			'UG108' => __( 'Mukono', 'everest-forms' ),
			'UG334' => __( 'Nabilatuk', 'everest-forms' ),
			'UG311' => __( 'Nakapiripirit', 'everest-forms' ),
			'UG116' => __( 'Nakaseke', 'everest-forms' ),
			'UG109' => __( 'Nakasongola', 'everest-forms' ),
			'UG230' => __( 'Namayingo', 'everest-forms' ),
			'UG234' => __( 'Namisindwa', 'everest-forms' ),
			'UG224' => __( 'Namutumba', 'everest-forms' ),
			'UG327' => __( 'Napak', 'everest-forms' ),
			'UG310' => __( 'Nebbi', 'everest-forms' ),
			'UG231' => __( 'Ngora', 'everest-forms' ),
			'UG424' => __( 'Ntoroko', 'everest-forms' ),
			'UG411' => __( 'Ntungamo', 'everest-forms' ),
			'UG328' => __( 'Nwoya', 'everest-forms' ),
			'UG331' => __( 'Omoro', 'everest-forms' ),
			'UG329' => __( 'Otuke', 'everest-forms' ),
			'UG321' => __( 'Oyam', 'everest-forms' ),
			'UG312' => __( 'Pader', 'everest-forms' ),
			'UG332' => __( 'Pakwach', 'everest-forms' ),
			'UG210' => __( 'Pallisa', 'everest-forms' ),
			'UG110' => __( 'Rakai', 'everest-forms' ),
			'UG429' => __( 'Rubanda', 'everest-forms' ),
			'UG425' => __( 'Rubirizi', 'everest-forms' ),
			'UG431' => __( 'Rukiga', 'everest-forms' ),
			'UG412' => __( 'Rukungiri', 'everest-forms' ),
			'UG111' => __( 'Sembabule', 'everest-forms' ),
			'UG232' => __( 'Serere', 'everest-forms' ),
			'UG426' => __( 'Sheema', 'everest-forms' ),
			'UG215' => __( 'Sironko', 'everest-forms' ),
			'UG211' => __( 'Soroti', 'everest-forms' ),
			'UG212' => __( 'Tororo', 'everest-forms' ),
			'UG113' => __( 'Wakiso', 'everest-forms' ),
			'UG313' => __( 'Yumbe', 'everest-forms' ),
			'UG330' => __( 'Zombo', 'everest-forms' ),
		),
		'UM' => array(
			'81' => __( 'Baker Island', 'everest-forms' ),
			'84' => __( 'Howland Island', 'everest-forms' ),
			'86' => __( 'Jarvis Island', 'everest-forms' ),
			'67' => __( 'Johnston Atoll', 'everest-forms' ),
			'89' => __( 'Kingman Reef', 'everest-forms' ),
			'71' => __( 'Midway Atoll', 'everest-forms' ),
			'76' => __( 'Navassa Island', 'everest-forms' ),
			'95' => __( 'Palmyra Atoll', 'everest-forms' ),
			'79' => __( 'Wake Island', 'everest-forms' ),
		),
		'US' => array( // U.S. states.
			'AL' => __( 'Alabama', 'everest-forms' ),
			'AK' => __( 'Alaska', 'everest-forms' ),
			'AZ' => __( 'Arizona', 'everest-forms' ),
			'AR' => __( 'Arkansas', 'everest-forms' ),
			'CA' => __( 'California', 'everest-forms' ),
			'CO' => __( 'Colorado', 'everest-forms' ),
			'CT' => __( 'Connecticut', 'everest-forms' ),
			'DE' => __( 'Delaware', 'everest-forms' ),
			'DC' => __( 'District Of Columbia', 'everest-forms' ),
			'FL' => __( 'Florida', 'everest-forms' ),
			'GA' => _x( 'Georgia', 'US state of Georgia', 'everest-forms' ),
			'HI' => __( 'Hawaii', 'everest-forms' ),
			'ID' => __( 'Idaho', 'everest-forms' ),
			'IL' => __( 'Illinois', 'everest-forms' ),
			'IN' => __( 'Indiana', 'everest-forms' ),
			'IA' => __( 'Iowa', 'everest-forms' ),
			'KS' => __( 'Kansas', 'everest-forms' ),
			'KY' => __( 'Kentucky', 'everest-forms' ),
			'LA' => __( 'Louisiana', 'everest-forms' ),
			'ME' => __( 'Maine', 'everest-forms' ),
			'MD' => __( 'Maryland', 'everest-forms' ),
			'MA' => __( 'Massachusetts', 'everest-forms' ),
			'MI' => __( 'Michigan', 'everest-forms' ),
			'MN' => __( 'Minnesota', 'everest-forms' ),
			'MS' => __( 'Mississippi', 'everest-forms' ),
			'MO' => __( 'Missouri', 'everest-forms' ),
			'MT' => __( 'Montana', 'everest-forms' ),
			'NE' => __( 'Nebraska', 'everest-forms' ),
			'NV' => __( 'Nevada', 'everest-forms' ),
			'NH' => __( 'New Hampshire', 'everest-forms' ),
			'NJ' => __( 'New Jersey', 'everest-forms' ),
			'NM' => __( 'New Mexico', 'everest-forms' ),
			'NY' => __( 'New York', 'everest-forms' ),
			'NC' => __( 'North Carolina', 'everest-forms' ),
			'ND' => __( 'North Dakota', 'everest-forms' ),
			'OH' => __( 'Ohio', 'everest-forms' ),
			'OK' => __( 'Oklahoma', 'everest-forms' ),
			'OR' => __( 'Oregon', 'everest-forms' ),
			'PA' => __( 'Pennsylvania', 'everest-forms' ),
			'RI' => __( 'Rhode Island', 'everest-forms' ),
			'SC' => __( 'South Carolina', 'everest-forms' ),
			'SD' => __( 'South Dakota', 'everest-forms' ),
			'TN' => __( 'Tennessee', 'everest-forms' ),
			'TX' => __( 'Texas', 'everest-forms' ),
			'UT' => __( 'Utah', 'everest-forms' ),
			'VT' => __( 'Vermont', 'everest-forms' ),
			'VA' => __( 'Virginia', 'everest-forms' ),
			'WA' => __( 'Washington', 'everest-forms' ),
			'WV' => __( 'West Virginia', 'everest-forms' ),
			'WI' => __( 'Wisconsin', 'everest-forms' ),
			'WY' => __( 'Wyoming', 'everest-forms' ),
			'AA' => __( 'Armed Forces (AA)', 'everest-forms' ),
			'AE' => __( 'Armed Forces (AE)', 'everest-forms' ),
			'AP' => __( 'Armed Forces (AP)', 'everest-forms' ),
		),
		'UY' => array( // Uruguayan states.
			'UY-AR' => __( 'Artigas', 'everest-forms' ),
			'UY-CA' => __( 'Canelones', 'everest-forms' ),
			'UY-CL' => __( 'Cerro Largo', 'everest-forms' ),
			'UY-CO' => __( 'Colonia', 'everest-forms' ),
			'UY-DU' => __( 'Durazno', 'everest-forms' ),
			'UY-FS' => __( 'Flores', 'everest-forms' ),
			'UY-FD' => __( 'Florida', 'everest-forms' ),
			'UY-LA' => __( 'Lavalleja', 'everest-forms' ),
			'UY-MA' => __( 'Maldonado', 'everest-forms' ),
			'UY-MO' => __( 'Montevideo', 'everest-forms' ),
			'UY-PA' => __( 'Paysandú', 'everest-forms' ),
			'UY-RN' => __( 'Río Negro', 'everest-forms' ),
			'UY-RV' => __( 'Rivera', 'everest-forms' ),
			'UY-RO' => __( 'Rocha', 'everest-forms' ),
			'UY-SA' => __( 'Salto', 'everest-forms' ),
			'UY-SJ' => __( 'San José', 'everest-forms' ),
			'UY-SO' => __( 'Soriano', 'everest-forms' ),
			'UY-TA' => __( 'Tacuarembó', 'everest-forms' ),
			'UY-TT' => __( 'Treinta y Tres', 'everest-forms' ),
		),
		'VE' => array( // Venezuelan states.
			'VE-A' => __( 'Capital', 'everest-forms' ),
			'VE-B' => __( 'Anzoátegui', 'everest-forms' ),
			'VE-C' => __( 'Apure', 'everest-forms' ),
			'VE-D' => __( 'Aragua', 'everest-forms' ),
			'VE-E' => __( 'Barinas', 'everest-forms' ),
			'VE-F' => __( 'Bolívar', 'everest-forms' ),
			'VE-G' => __( 'Carabobo', 'everest-forms' ),
			'VE-H' => __( 'Cojedes', 'everest-forms' ),
			'VE-I' => __( 'Falcón', 'everest-forms' ),
			'VE-J' => __( 'Guárico', 'everest-forms' ),
			'VE-K' => __( 'Lara', 'everest-forms' ),
			'VE-L' => __( 'Mérida', 'everest-forms' ),
			'VE-M' => __( 'Miranda', 'everest-forms' ),
			'VE-N' => __( 'Monagas', 'everest-forms' ),
			'VE-O' => __( 'Nueva Esparta', 'everest-forms' ),
			'VE-P' => __( 'Portuguesa', 'everest-forms' ),
			'VE-R' => __( 'Sucre', 'everest-forms' ),
			'VE-S' => __( 'Táchira', 'everest-forms' ),
			'VE-T' => __( 'Trujillo', 'everest-forms' ),
			'VE-U' => __( 'Yaracuy', 'everest-forms' ),
			'VE-V' => __( 'Zulia', 'everest-forms' ),
			'VE-W' => __( 'Federal Dependencies', 'everest-forms' ),
			'VE-X' => __( 'La Guaira (Vargas)', 'everest-forms' ),
			'VE-Y' => __( 'Delta Amacuro', 'everest-forms' ),
			'VE-Z' => __( 'Amazonas', 'everest-forms' ),
		),
		'VN' => array(),
		'YT' => array(),
		'ZA' => array( // South African states.
			'EC'  => __( 'Eastern Cape', 'everest-forms' ),
			'FS'  => __( 'Free State', 'everest-forms' ),
			'GP'  => __( 'Gauteng', 'everest-forms' ),
			'KZN' => __( 'KwaZulu-Natal', 'everest-forms' ),
			'LP'  => __( 'Limpopo', 'everest-forms' ),
			'MP'  => __( 'Mpumalanga', 'everest-forms' ),
			'NC'  => __( 'Northern Cape', 'everest-forms' ),
			'NW'  => __( 'North West', 'everest-forms' ),
			'WC'  => __( 'Western Cape', 'everest-forms' ),
		),
		'ZM' => array( // Zambian provinces.
			'ZM-01' => __( 'Western', 'everest-forms' ),
			'ZM-02' => __( 'Central', 'everest-forms' ),
			'ZM-03' => __( 'Eastern', 'everest-forms' ),
			'ZM-04' => __( 'Luapula', 'everest-forms' ),
			'ZM-05' => __( 'Northern', 'everest-forms' ),
			'ZM-06' => __( 'North-Western', 'everest-forms' ),
			'ZM-07' => __( 'Southern', 'everest-forms' ),
			'ZM-08' => __( 'Copperbelt', 'everest-forms' ),
			'ZM-09' => __( 'Lusaka', 'everest-forms' ),
			'ZM-10' => __( 'Muchinga', 'everest-forms' ),
		),
	);

	return (array) apply_filters( 'everest_forms_states', $states );
}

/**
 * Get builder fields groups.
 *
 * @return array
 */
function evf_get_fields_groups() {
	return (array) apply_filters(
		'everest_forms_builder_fields_groups',
		array(
			'general'  => __( 'General Fields', 'everest-forms' ),
			'advanced' => __( 'Advanced Fields', 'everest-forms' ),
			'payment'  => __( 'Payment Fields', 'everest-forms' ),
			'survey'   => __( 'Survey Fields', 'everest-forms' ),
		)
	);
}

/**
 * Get a builder fields type's name.
 *
 * @param string $type Coupon type.
 * @return string
 */
function evf_get_fields_group( $type = '' ) {
	$types = evf_get_fields_groups();
	return isset( $types[ $type ] ) ? $types[ $type ] : '';
}

/**
 * Get all fields settings.
 *
 * @return array Settings data.
 */
function evf_get_all_fields_settings() {
	$settings = array(
		'label'         => array(
			'id'       => 'label',
			'title'    => __( 'Label', 'everest-forms' ),
			'desc'     => __( 'Enter text for the form field label. This is recommended and can be hidden in the Advanced Settings.', 'everest-forms' ),
			'default'  => '',
			'type'     => 'text',
			'desc_tip' => true,
		),
		'meta'          => array(
			'id'       => 'meta-key',
			'title'    => __( 'Meta Key', 'everest-forms' ),
			'desc'     => __( 'Enter meta key to be stored in database.', 'everest-forms' ),
			'default'  => '',
			'type'     => 'text',
			'desc_tip' => true,
		),
		'description'   => array(
			'id'       => 'description',
			'title'    => __( 'Description', 'everest-forms' ),
			'type'     => 'textarea',
			'desc'     => __( 'Enter text for the form field description.', 'everest-forms' ),
			'default'  => '',
			'desc_tip' => true,
		),
		'required'      => array(
			'id'       => 'require',
			'title'    => __( 'Required', 'everest-forms' ),
			'type'     => 'checkbox',
			'desc'     => __( 'Check this option to mark the field required.', 'everest-forms' ),
			'default'  => 'no',
			'desc_tip' => true,
		),
		'choices'       => array(
			'id'       => 'choices',
			'title'    => __( 'Choices', 'everest-forms' ),
			'desc'     => __( 'Add choices for the form field.', 'everest-forms' ),
			'type'     => 'choices',
			'desc_tip' => true,
			'defaults' => array(
				1 => __( 'First Choice', 'everest-forms' ),
				2 => __( 'Second Choice', 'everest-forms' ),
				3 => __( 'Third Choice', 'everest-forms' ),
			),
		),
		'placeholder'   => array(
			'id'       => 'placeholder',
			'title'    => __( 'Placeholder Text', 'everest-forms' ),
			'desc'     => __( 'Enter text for the form field placeholder.', 'everest-forms' ),
			'default'  => '',
			'type'     => 'text',
			'desc_tip' => true,
		),
		'css'           => array(
			'id'       => 'css',
			'title'    => __( 'CSS Classes', 'everest-forms' ),
			'desc'     => __( 'Enter CSS class for this field container. Class names should be separated with spaces.', 'everest-forms' ),
			'default'  => '',
			'type'     => 'text',
			'desc_tip' => true,
		),
		'label_hide'    => array(
			'id'       => 'label_hide',
			'title'    => __( 'Hide Label', 'everest-forms' ),
			'type'     => 'checkbox',
			'desc'     => __( 'Check this option to hide the form field label.', 'everest-forms' ),
			'default'  => 'no',
			'desc_tip' => true,
		),
		'sublabel_hide' => array(
			'id'       => 'sublabel_hide',
			'title'    => __( 'Hide Sub-Labels', 'everest-forms' ),
			'type'     => 'checkbox',
			'desc'     => __( 'Check this option to hide the form field sub-label.', 'everest-forms' ),
			'default'  => 'no',
			'desc_tip' => true,
		),
	);

	return apply_filters( 'everest_form_all_fields_settings', $settings );
}

/**
 * Helper function to display debug data.
 *
 * @since 1.3.2
 *
 * @param mixed $expression The expression to be printed.
 * @param bool  $return     Optional. Default false. Set to true to return the human-readable string.
 *
 * @return string
 */
function evf_debug_data( $expression, $return = false ) {
	if ( defined( 'EVF_DEBUG' ) && true === EVF_DEBUG ) {

		if ( ! $return ) {
			echo '<textarea style="color:#666;background:#fff;margin: 20px 0;width:100%;height:500px;font-size:12px;font-family: Consolas,Monaco,Lucida Console,monospace;direction: ltr;unicode-bidi: embed;line-height: 1.4;padding: 4px 6px 1px;" readonly>';

			echo "==================== Everest Forms Debugging ====================\n\n";

			if ( is_array( $expression ) || is_object( $expression ) ) {
				echo esc_html( evf_print_r( $expression, true ) );
			} else {
				echo esc_html( $expression );
			}
			echo '</textarea>';

		} else {
			$output = '<textarea style="color:#666;background:#fff;margin: 20px 0;width:100%;height:500px;font-size:12px;font-family: Consolas,Monaco,Lucida Console,monospace;direction: ltr;unicode-bidi: embed;line-height: 1.4;padding: 4px 6px 1px;" readonly>';

			$output .= "==================== Everest Forms Debugging ====================\n\n";

			if ( is_array( $expression ) || is_object( $expression ) ) {
				$output .= evf_print_r( $expression, true );
			} else {
				$output .= $expression;
			}

			$output .= '</textarea>';

			return $output;
		}
	}
}

/**
 * String translation function.
 *
 * @since 1.4.9
 *
 * @param int    $form_id Form ID.
 * @param string $field_id Field ID.
 * @param mixed  $value The string that needs to be translated.
 * @param string $suffix The suffix to make the field have unique naem.
 *
 * @return mixed The translated string.
 */
function evf_string_translation( $form_id, $field_id, $value, $suffix = '' ) {
	$context = isset( $form_id ) ? 'everest_forms_' . absint( $form_id ) : 0;
	$name    = isset( $field_id ) ? evf_clean( $field_id . $suffix ) : '';

	if ( function_exists( 'icl_register_string' ) ) {
		icl_register_string( $context, $name, $value );
	}

	if ( function_exists( 'icl_t' ) ) {
		$value = icl_t( $context, $name, $value );
	}

	return $value;
}

/**
 * Trigger logging cleanup using the logging class.
 *
 * @since 1.6.2
 */
function evf_cleanup_logs() {
	$logger = evf_get_logger();

	if ( is_callable( array( $logger, 'clear_expired_logs' ) ) ) {
		$logger->clear_expired_logs();
	}
}
add_action( 'everest_forms_cleanup_logs', 'evf_cleanup_logs' );


/**
 * Check whether it device is table or not from HTTP user agent
 *
 * @since 1.7.0
 *
 * @return bool
 */
function evf_is_tablet() {
	return false !== stripos( evf_get_user_agent(), 'tablet' ) || false !== stripos( evf_get_user_agent(), 'tab' );
}

/**
 * Get user device from user agent from HTTP user agent.
 *
 * @since 1.7.0
 *
 * @return string
 */
function evf_get_user_device() {
	if ( evf_is_tablet() ) {
		return esc_html__( 'Tablet', 'everest-forms' );
	} elseif ( wp_is_mobile() ) {
		return esc_html__( 'Mobile', 'everest-forms' );
	} else {
		return esc_html__( 'Desktop', 'everest-forms' );
	}
}


/**
 * A wp_parse_args() for multi-dimensional array.
 *
 * @see https://developer.wordpress.org/reference/functions/wp_parse_args/
 *
 * @since 1.7.0
 *
 * @param array $args       Value to merge with $defaults.
 * @param array $defaults   Array that serves as the defaults.
 *
 * @return array    Merged user defined values with defaults.
 */
function evf_parse_args( &$args, $defaults ) {
	$args     = (array) $args;
	$defaults = (array) $defaults;
	$result   = $defaults;
	foreach ( $args as $k => &$v ) {
		if ( is_array( $v ) && isset( $result[ $k ] ) ) {
			$result[ $k ] = evf_parse_args( $v, $result[ $k ] );
		} else {
			$result[ $k ] = $v;
		}
	}
	return $result;
}

/**
 * Get date of ranges.
 *
 * @since 1.7.0
 *
 * @param string $first Starting date.
 * @param string $last  End date.
 * @param string $step Date step.
 * @param string $format Date format.
 *
 * @return array Range dates.
 */
function evf_date_range( $first, $last = '', $step = '+1 day', $format = 'Y/m/d' ) {
	$dates   = array();
	$current = strtotime( $first );
	$last    = strtotime( $last );

	while ( $current <= $last ) {
		$dates[] = date_i18n( $format, $current );
		$current = strtotime( $step, $current );
	}

	return $dates;
}

/**
 * Process syntaxes in a text.
 *
 * @since 1.7.0
 *
 * @param string $text Text to be processed.
 * @param bool   $escape_html Whether to escape all the htmls before processing or not.
 * @param bool   $trim_trailing_spaces Whether to trim trailing spaces or not.
 *
 * @return string Processed text.
 */
function evf_process_syntaxes( $text, $escape_html = true, $trim_trailing_spaces = true ) {

	if ( true === $trim_trailing_spaces ) {
		$text = trim( $text );
	}
	if ( true === $escape_html ) {
		$text = esc_html( $text );
	}
	$text = evf_process_hyperlink_syntax( $text );
	$text = evf_process_italic_syntax( $text );
	$text = evf_process_bold_syntax( $text );
	$text = evf_process_underline_syntax( $text );
	$text = evf_process_line_breaks( $text );
	return $text;
}

/**
 * Extract page ids from a text.
 *
 * @since 1.7.0
 *
 * @param string $text Text to extract page ids from.
 *
 * @return mixed
 */
function evf_extract_page_ids( $text ) {
	$page_id_syntax_matches = array();
	$page_ids               = array();

	while ( preg_match( '/page_id=([0-9]+)/', $text, $page_id_syntax_matches ) ) {
		$page_id    = $page_id_syntax_matches[1];
		$page_ids[] = $page_id;
		$text       = str_replace( 'page_id=' . $page_id, '', $text );
	}

	if ( count( $page_ids ) > 0 ) {
		return $page_ids;
	}
	return false;
}

/**
 * Process hyperlink syntaxes in a text.
 * The syntax used for hyperlink is: [Link Label](Link URL)
 * Example: [Google Search Page](https://google.com)
 *
 * @since 1.7.0
 *
 * @param string $text         Text to process.
 * @param string $use_no_a_tag If set to `true` only the link will be used and no `a` tag. Particularly useful for exporting CSV,
 *                             as the html tags are escaped in a CSV file.
 *
 * @return string Processed text.
 */
function evf_process_hyperlink_syntax( $text, $use_no_a_tag = false ) {
	$matches = array();
	$regex   = '/(\[[^\[\]]*\])(\([^\(\)]*\))/';

	while ( preg_match( $regex, $text, $matches ) ) {
		$matched_string = $matches[0];
		$label          = $matches[1];
		$link           = $matches[2];
		$class          = '';
		$page_id        = '';

		// Trim brackets.
		$label = trim( substr( $label, 1, -1 ) );
		$link  = trim( substr( $link, 1, -1 ) );

		// Proceed only if label or link is not empty.
		if ( ! empty( $label ) || ! empty( $link ) ) {

			// Use hash(#) if the link is empty.
			if ( empty( $link ) ) {
				$link = '#';
			}

			// Use link as label if it's empty.
			if ( empty( $label ) ) {
				$label = $link;
			}

			// See if it's a link to a local page.
			if ( strpos( $link, '?' ) === 0 ) {
				$class .= ' evf-privacy-policy-local-page-link';

				// Extract page id.
				$page_ids = evf_extract_page_ids( $link );

				if ( false !== $page_ids ) {
					$page_id = $page_ids[0];
					$link    = get_page_link( $page_id );

					if ( empty( $link ) ) {
						$link = '#';
					}
				}
			}

			// Insert hyperlink html.
			if ( true === $use_no_a_tag ) {
				$html = $link;
			} else {
				$html = sprintf( '<a data-page-id="%s" target="_blank" rel="noopener noreferrer nofollow" href="%s" class="%s">%s</a>', $page_id, $link, $class, $label );
			}
			$text = str_replace( $matched_string, $html, $text );
		} else {
			// If both label and link are empty then replace it with empty string.
			$text = str_replace( $matched_string, '', $text );
		}
	}

	return $text;
}

/**
 * Process italic syntaxes in a text.
 * The syntax used for italic text is: `text`
 * Just wrap the text with back tick characters. To escape a backtick insert a backslash(\) before the character like "\`".
 *
 * @since 1.7.0
 *
 * @param string $text Text to process.
 *
 * @return string Processed text.
 */
function evf_process_italic_syntax( $text ) {
	$matches = array();
	$regex   = '/`[^`]+`/';
	$text    = str_replace( '\`', '<&&&&&>', $text ); // To preserve an escaped special character '`'.

	while ( preg_match( $regex, $text, $matches ) ) {
		$matched_string = $matches[0];
		$label          = substr( trim( $matched_string ), 1, -1 );
		$html           = sprintf( '<i>%s</i>', $label );
		$text           = str_replace( $matched_string, $html, $text );
	}

	return str_replace( '<&&&&&>', '`', $text );
}

/**
 * Process bold syntaxes in a text.
 * The syntax used for bold text is: *text*
 * Just wrap the text with asterisk characters. To escape an asterisk insert a backslash(\) before the character like "\*".
 *
 * @since 1.7.0
 *
 * @param string $text Text to process.
 *
 * @return string Processed text.
 */
function evf_process_bold_syntax( $text ) {
	$matches = array();
	$regex   = '/\*[^*]+\*/';
	$text    = str_replace( '\*', '<&&&&&>', $text ); // To preserve an escaped special character '*'.

	while ( preg_match( $regex, $text, $matches ) ) {
		$matched_string = $matches[0];
		$label          = substr( trim( $matched_string ), 1, -1 );
		$html           = sprintf( '<b>%s</b>', $label );
		$text           = str_replace( $matched_string, $html, $text );
	}

	return str_replace( '<&&&&&>', '*', $text );
}

/**
 * Process underline syntaxes in a text.
 * The syntax used for bold text is: __text__
 * Wrap the text with double underscore characters. To escape an underscore insert a backslash(\) before the character like "\_".
 *
 * @since 1.7.0
 *
 * @param string $text Text to process.
 *
 * @return string Processed text.
 */
function evf_process_underline_syntax( $text ) {
	$matches = array();
	$regex   = '/__[^_]+__/';
	$text    = str_replace( '\_', '<&&&&&>', $text ); // To preserve an escaped special character '_'.

	while ( preg_match( $regex, $text, $matches ) ) {
		$matched_string = $matches[0];
		$label          = substr( trim( $matched_string ), 2, -2 );
		$html           = sprintf( '<u>%s</u>', $label );
		$text           = str_replace( $matched_string, $html, $text );
	}

	$text = str_replace( '<&&&&&>', '_', $text );
	return $text;
}

/**
 * It replaces `\n` characters with `<br/>` tag because new line `\n` character is not supported in html.
 *
 * @since 1.7.0
 *
 * @param string $text Text to process.
 *
 * @return string Processed text.
 */
function evf_process_line_breaks( $text ) {
	return str_replace( "\n", '<br/>', $text );
}

/**
 * Check whether the current page is in AMP mode or not.
 * We need to check for specific functions, as there is no special AMP header.
 *
 * @since 1.8.4
 *
 * @param bool $check_theme_support Whether theme support should be checked. Defaults to true.
 *
 * @return bool
 */
function evf_is_amp( $check_theme_support = true ) {

	$is_amp = false;

	if (
		// AMP by Automattic.
		( function_exists( 'amp_is_request' ) && amp_is_request() ) ||
		// Better AMP.
		( function_exists( 'is_better_amp' ) && is_better_amp() )
	) {
		$is_amp = true;
	}

	if ( $is_amp && $check_theme_support ) {
		$is_amp = current_theme_supports( 'amp' );
	}

	return apply_filters( 'evf_is_amp', $is_amp );
}

/**
 * EVF KSES.
 *
 * @since 1.8.2.1
 *
 * @param string $context Context.
 */
function evf_get_allowed_html_tags( $context = '' ) {

	$post_tags = wp_kses_allowed_html( 'post' );
	if ( 'builder' === $context ) {
		$builder_tags = get_transient( 'evf-builder-tags-list' );
		if ( ! empty( $builder_tags ) ) {
			return $builder_tags;
		}
		$allowed_tags = evf_get_json_file_contents( 'assets/allowed_tags/allowed_tags.json', true );
		if ( ! empty( $allowed_tags ) ) {
			foreach ( $allowed_tags as $tag => $args ) {
				if ( array_key_exists( $tag, $post_tags ) ) {
					foreach ( $args as $arg => $value ) {
						if ( ! array_key_exists( $arg, $post_tags[ $tag ] ) ) {
							$post_tags[ $tag ][ $arg ] = true;
						}
					}
				} else {
					$post_tags[ $tag ] = $args;
				}
			}
			set_transient( 'evf-builder-tags-list', $post_tags, DAY_IN_SECONDS );
		}
		return $post_tags;
	}

	return wp_parse_args(
		$post_tags,
		array(
			'input'    => array(
				'type'  => true,
				'name'  => true,
				'value' => true,
			),
			'select'   => array(
				'name' => true,
				'id'   => true,
			),
			'option'   => array(
				'value'    => true,
				'selected' => true,
			),
			'textarea' => array(
				'style' => true,
			),
		)
	);
}

/**
 * Parse Builder Post Data.
 *
 * @param mixed $post_data Post Data.
 *
 * @since 1.8.2.2
 */
function evf_sanitize_builder( $post_data = array() ) {

	if ( empty( $post_data ) || ! is_array( $post_data ) ) {
		return array();
	}

	$form_data = array();
	foreach ( $post_data as $data_key => $data ) {
		$name = sanitize_text_field( $data->name );
		if ( preg_match( '/\<.*\>/', $data->value ) ) {
			$value = wp_kses_post( $data->value );
		} elseif ( 'settings[external_url]' === $data->name ) {
			$value = esc_url_raw( $data->value );
		} elseif ( preg_match( '/evf_email_message/', $data->name ) || preg_match( '/telegram_message/', $data->name ) || preg_match( '/slack_message/', $data->name ) ) {
			$value = wp_kses_post( $data->value );
		} elseif ( preg_match( '/calculation_field/', $data->name ) ) {
			$value = wp_kses_post( $data->value );
		} elseif ( preg_match( '/successful_form_submission_message/', $data->name ) ) {
			$value = wp_kses_post( $data->value );
		} else {
			$value = sanitize_text_field( $data->value );
		}

		$form_data[ sanitize_text_field( $data_key ) ] = (object) array(
			'name'  => $name,
			'value' => $value,
		);
	}
	return $form_data;
}

/**
 * Entry Post Data.
 *
 * @param mixed $entry Post Data.
 *
 * @since 1.8.2.2
 */
function evf_sanitize_entry( $entry = array() ) {
	if ( empty( $entry ) || ! is_array( $entry ) || empty( $entry['form_fields'] ) ) {
		return $entry;
	}

	$form_id   = absint( $entry['id'] );
	$form_data = evf()->form->get( $form_id, array( 'contents_only' => true ) );

	if ( ! $form_data ) {
		return array();
	}

	$form_data = evf_decode( $form_data->post_content );

	$form_fields = $form_data['form_fields'];

	if ( empty( $form_fields ) ) {
		return array();
	}

	foreach ( $form_fields as $key => $field ) {
		$key = sanitize_text_field( $key );
		if ( array_key_exists( $key, $entry['form_fields'] ) ) {
			switch ( $field['type'] ) {
				case 'email':
					if ( isset( $entry['form_fields'][ $key ]['primary'] ) ) {
						$entry['form_fields'][ $key ]['primary']   = sanitize_email( $entry['form_fields'][ $key ]['primary'] );
						$entry['form_fields'][ $key ]['secondary'] = sanitize_email( $entry['form_fields'][ $key ]['secondary'] );
					} else {
						$entry['form_fields'][ $key ] = sanitize_email( $entry['form_fields'][ $key ] );
					}
					break;
				case 'file-upload':
				case 'signature':
				case 'image-upload':
					$entry['form_fields'][ $key ] = is_array( $entry['form_fields'][ $key ] ) ? $entry['form_fields'][ $key ] : esc_url_raw( $entry['form_fields'][ $key ] );
					break;
				case 'textarea':
				case 'html':
				case 'privacy-policy':
				case 'wysiwug':
					$entry['form_fields'][ $key ] = wp_kses_post( $entry['form_fields'][ $key ] );
					break;
				case 'repeater-fields':
					$entry['form_fields'][ $key ] = $entry['form_fields'][ $key ];
					break;
				default:
					if ( is_array( $entry['form_fields'][ $key ] ) ) {
						foreach ( $entry['form_fields'][ $key ] as $field_key => $value ) {
							$field_key                                  = sanitize_text_field( $field_key );
							$entry['form_fields'][ $key ][ $field_key ] = sanitize_text_field( $value );
						}
					} else {
						$entry['form_fields'][ $key ] = sanitize_text_field( $entry['form_fields'][ $key ] );
					}
			}
		}
		return $entry;
	}
}

/**
 * EVF Get json file contents.
 *
 * @param mixed $file File path.
 * @param mixed $to_array Returned data in array.
 */
function evf_get_json_file_contents( $file, $to_array = false ) {
	if ( $to_array ) {
		return json_decode( evf_file_get_contents( $file ), true );
	}
	return json_decode( evf_file_get_contents( $file ) );
}

/**
 * EVF file get contents.
 *
 * @param mixed $file File path.
 */
function evf_file_get_contents( $file ) {
	if ( $file ) {
		$local_file = preg_replace( '/\\\\|\/\//', '/', plugin_dir_path( EVF_PLUGIN_FILE ) . $file );
		$response   = file_get_contents( $local_file );
		if ( $response ) {
			return $response;
		}
		global $wp_filesystem;
		require_once ABSPATH . '/wp-admin/includes/file.php';
		WP_Filesystem();
		$local_file = preg_replace( '/\\\\|\/\//', '/', plugin_dir_path( EVF_PLUGIN_FILE ) . $file );
		if ( $wp_filesystem->exists( $local_file ) ) {
			$response = $wp_filesystem->get_contents( $local_file );
			return $response;
		}
	}
	return;
}

/**
 * Parses datetime values based on the provided format and mode.
 *
 * @param string $datetime_value   The datetime value to parse.
 * @param string $datetime_format  The format of the datetime value.
 * @param string $date_format      The format of the date.
 * @param string $mode             The mode of the datetime field.
 * @param int    $time_interval    The time interval in minutes.
 * @param int    $entry_id         The entry id.
 * @return array
 */
function parse_datetime_values( $datetime_value, $datetime_format, $date_format, $mode, $time_interval, $entry_id = 0 ) {
	$datetime_arr = array();

	switch ( $datetime_format ) {
		case 'time':
			$current_date   = gmdate( 'Y-m-d' );
			$datetime_value = gmdate( 'H:i', strtotime( $datetime_value ) );
			$datetime_start = "$current_date $datetime_value";
			$date_time      = new DateTime( $datetime_start );
			$date_time->modify( "+$time_interval minute" );
			$datetime_end              = $date_time->format( 'Y-m-d H:i' );
			$datetime_arr[ $entry_id ] = array( $datetime_start, $datetime_end );
			break;
		case 'date':
			if ( 'range' === $mode ) {
				$datetime_value = apply_filters( 'everest_forms_time_date_format', $datetime_value );
				$selected_dates = explode( ' to ', $datetime_value );
				if ( count( $selected_dates ) >= 2 ) {
					if ( count( $selected_dates ) >= 2 ) {
						$start_date = DateTime::createFromFormat( $date_format, $selected_dates[0] );
						if ( $start_date === false ) {
							evf_get_logger()->debug( print_r( "Invalid start date format: {$selected_dates[0]}", true ) );
						}
						$start_date->setTime( 0, 0 );
						$datetime_start = $start_date->format( 'Y-m-d H:i' );

						$end_date = DateTime::createFromFormat( $date_format, $selected_dates[1] );
						if ( $end_date === false ) {
							evf_get_logger()->debug( print_r( "Invalid end date format: {$selected_dates[1]}", true ) );
						}
						$end_date->modify( '+23 hours' );
						$datetime_end = $end_date->format( 'Y-m-d H:i' );

						$datetime_arr[ $entry_id ] = array( $datetime_start, $datetime_end );
					}
				}else{
					if ( !empty($datetime_value) && ! is_array ( $datetime_value) ) {
						$datetime_arr[ $entry_id ] = $datetime_value ;
					}
				}
			} else {
				$selected_dates = explode( ', ', $datetime_value );

				foreach ( $selected_dates as $selected_date ) {
					$datetime_start = "$selected_date 00:00";
					$datetime_start = gmdate( 'Y-m-d H:i', strtotime( $datetime_start ) );
					$date_time      = new DateTime( $datetime_start );
					$date_time->modify( '+23 hour' );

					$datetime_end              = $date_time->format( 'Y-m-d H:i' );
					$datetime_arr[ $entry_id ] = array( $datetime_start, $datetime_end );
				}
			}
			break;
		case 'date-time':
			if ( 'range' === $mode ) {
				$datetime_value = apply_filters( 'everest_forms_time_date_format', $datetime_value );
				$selected_dates = explode( ' to ', $datetime_value );
				if ( count( $selected_dates ) >= 2 ) {
					$datetime_start            = gmdate( 'Y-m-d H:i', strtotime( $selected_dates[0] ) );
					$datetime_end              = gmdate( 'Y-m-d H:i', strtotime( $selected_dates[1] ) );
					$datetime_arr[ $entry_id ] = array( $datetime_start, $datetime_end );
				}
			} else {
				$selected_dates = explode( ', ', $datetime_value );

				foreach ( $selected_dates as $selected_date ) {
					$datetime_start = gmdate( 'Y-m-d H:i', strtotime( $selected_date ) );
					$date_time      = new DateTime( $datetime_start );
					$date_time->modify( "+$time_interval minute" );
					$datetime_end              = $date_time->format( 'Y-m-d H:i' );
					$datetime_arr[ $entry_id ] = array( $datetime_start, $datetime_end );
				}
			}
			break;
	}

	return $datetime_arr;
}

/**
 * EVF word Count.
 *
 * @param string $text Text.
 * @param string $type Type of text.
 * @param array  $settings Settings.
 *
 * @since 2.0.2
 */
function _evf_word_count( $text, $type = 'words', $settings = array() ) {
	$defaults = array(
		'html_regexp'                        => '/<\/?[a-z][^>]*?>/i',
		'html_comment_regexp'                => '/<!--[\s\S]*?-->/',
		'space_regexp'                       => '/&nbsp;|&#160;/i',
		'html_entity_regexp'                 => '/&\S+?;/',
		'connector_regexp'                   => "/--|\x{2014}/u",
		'remove_regexp'                      => "/[\x{0021}-\x{0040}\x{005B}-\x{0060}\x{007B}-\x{007E}\x{0080}-\x{00BF}\x{00D7}\x{00F7}\x{2000}-\x{2BFF}\x{2E00}-\x{2E7F}]/u",
		'astral_regexp'                      => "/[\x{010000}-\x{10FFFF}]/u",
		'words_regexp'                       => '/\S\s+/u',
		'characters_excluding_spaces_regexp' => '/\S/u',
		'characters_including_spaces_regexp' => "/[^\f\n\r\t\v\x{00AD}\x{2028}\x{2029}]/u",
		'shortcodes'                         => array(),
	);

	$count = 0;

	if ( '' === trim( $text ) ) {
		return $count;
	}

	$settings = wp_parse_args( $settings, $defaults );

	// If there are any shortcodes, add this as a shortcode regular expression.
	if ( is_array( $settings['shortcodes'] ) && ! empty( $settings['shortcodes'] ) ) {
		$settings['shortcodes_regexp'] = '/\\[\\/?(?:' . implode( '|', $settings['shortcodes'] ) . ')[^\\]]*?\\]/';
	}

	// Sanitize type to one of three possibilities: 'words', 'characters_excluding_spaces' or 'characters_including_spaces'.
	if ( 'characters_excluding_spaces' !== $type && 'characters_including_spaces' !== $type ) {
		$type = 'words';
	}

	$text .= "\n";

	// Replace all HTML with a new-line.
	$text = preg_replace( $settings['html_regexp'], "\n", $text );

	// Remove all HTML comments.
	$text = preg_replace( $settings['html_comment_regexp'], '', $text );

	// If a shortcode regular expression has been provided use it to remove shortcodes.
	if ( ! empty( $settings['shortcodes_regexp'] ) ) {
		$text = preg_replace( $settings['shortcodes_regexp'], "\n", $text );
	}

	// Normalize non-breaking space to a normal space.
	$text = preg_replace( $settings['space_regexp'], ' ', $text );

	if ( 'words' === $type ) {
		// Remove HTML Entities.
		$text = preg_replace( $settings['html_entity_regexp'], '', $text );

		// Convert connectors to spaces to count attached text as words.
		$text = preg_replace( $settings['connector_regexp'], ' ', $text );

		// Remove unwanted characters.
		$text = preg_replace( $settings['remove_regexp'], '', $text );
	} else {
		// Convert HTML Entities to "a".
		$text = preg_replace( $settings['html_entity_regexp'], 'a', $text );

		// Remove surrogate points.
		$text = preg_replace( $settings['astral_regexp'], 'a', $text );
	}

	// Match with the selected type regular expression to count the items.
	return (int) preg_match_all( $settings[ $type . '_regexp' ], $text );
}

/**
 * EVF word Count
 *
 * @param string $text Text.
 * @param string $type Type of text.
 * @param array  $settings Settings.
 *
 * @since 2.0.2
 */
function evf_word_count( $text, $type = 'words', $settings = array() ) {
	if ( function_exists( ' wp_word_count ' ) ) {
		return wp_word_count( $text, $type = 'words', $settings = array() );
	} else {
		return _evf_word_count( $text, $type = 'words', $settings = array() );
	}
}

if ( ! function_exists( 'evf_maybe_get_local_font_url' ) ) {
	/**
	 * If load fonts locally option is checked in settings, we download the font
	 * locally and return the url for download font file.
	 *
	 * @param [string] $font_url Remote font url.
	 * @return string
	 */
	function evf_maybe_get_local_font_url( $font_url ) {
		$load_locally = get_option( 'everest_forms_load_fonts_locally', 'no' );

		if ( 'yes' === $load_locally ) {
			$font_url = wptt_get_webfont_url( $font_url );
		}

		return $font_url;
	}
}

if ( ! function_exists( 'evf_is_akismet_configured' ) ) {

	/**
	 * Has the Akismet plugin been configured wih a valid API key?
	 *
	 * @since 2.4.0
	 *
	 * @return bool
	 */
	function evf_is_akismet_configured() {

		if ( ! is_plugin_active( 'akismet/akismet.php' ) ) {
			return false;
		}

		require_once WP_PLUGIN_DIR . '/akismet/akismet.php';

		$akismet_instance = new Akismet();
		// Akismet will only allow an API key to be saved if it is a valid key.
		// We can assume that if there is an API key saved, it is valid.
		$api_key = $akismet_instance->get_api_key();

		if ( ! empty( $api_key ) ) {
			return true;
		}

		return false;
	}
}

if ( ! function_exists( 'evf_current_url' ) ) {
	/**
	 * Get the current URL.
	 *
	 * @since 2.4.0
	 *
	 * @return string
	 */
	function evf_current_url() {

		$parsed_home_url = wp_parse_url( home_url() );

		$url = $parsed_home_url['scheme'] . '://' . $parsed_home_url['host'];

		if ( ! empty( $parsed_home_url['port'] ) ) {
			$url .= ':' . $parsed_home_url['port'];
		}

		// phpcs:ignore WordPress.Security.ValidatedSanitizedInput.InputNotValidated, WordPress.Security.ValidatedSanitizedInput.InputNotSanitized
		$url .= wp_unslash( $_SERVER['REQUEST_URI'] );

		return esc_url_raw( $url );
	}
}

if ( ! function_exists( 'evf_get_utc_time_to' ) ) {
	/**
	 * Formats the end time in UTC format.
	 *
	 * @since 2.0.9
	 *
	 * @param string $evf_entries_report_summary_offset Time offest to be formatted in UTC time.
	 * @param string $evf_format DateTime format for UTC time.
	 * @param bool   $evf_display Display the time.
	 *
	 * @return datetime end_time in UTC format.
	 */
	function evf_get_utc_time_to( $evf_entries_report_summary_offset, $evf_format = 'Y-m-d H:i:s', $evf_display = false ) {

		// Get local time 23:59:59 today.
		$evf_time_to_local = wp_date( 'Y-m-d 23:59:59' );
		$evf_format        = 'Y-m-d H:i:s';

		// Get local time to.
		$evf_time_to_offset = strtotime( $evf_entries_report_summary_offset, strtotime( $evf_time_to_local ) );

		if ( $evf_display ) {

			return gmdate( $evf_format, $evf_time_to_offset );

		} else {

			return strtotime( get_gmt_from_date( gmdate( $evf_format, $evf_time_to_offset ) ) );
		}
	}
}


if ( ! function_exists( 'evf_get_utc_time_from' ) ) {
	/**
	 * Extarcts the start time in UTC format.
	 *
	 * @since 2.0.9
	 *
	 * @param string $evf_entries_report_summary_offset Start time to be formated in UTC format.
	 * @param string $evf_format DateTime format for start time.
	 * @param bool   $evf_display To hide or display the time.
	 *
	 * @return datetime start_time in utc format.
	 */
	function evf_get_utc_time_from( $evf_entries_report_summary_offset, $evf_format = 'Y-m-d H:i:s', $evf_display = false ) {

		// Get local time midnight today.
		$evf_time_from_local = wp_date( 'Y-m-d 00:00:00' );
		$evf_format          = 'Y-m-d H:i:s';

		// Get local time from.
		$evf_time_from_offset = strtotime( $evf_entries_report_summary_offset, strtotime( $evf_time_from_local ) );

		if ( $evf_display ) {

			return gmdate( $evf_format, $evf_time_from_offset );

		} else {

			return strtotime( get_gmt_from_date( gmdate( $evf_format, $evf_time_from_offset ) ) );
		}
	}
}


if ( ! function_exists( 'evf_summary_start_offset_time' ) ) {
	/**
	 * Extracts the start offset time according to the duration.
	 *
	 * @since 2.0.9
	 * @return datetime $starttime.
	 */
	function evf_summary_start_offset_time() {
		// Get options.
		$evf_report_frequency   = get_option( 'everest_forms_entries_reporting_frequency', 'Weekly' );
		$evf_report_offset_from = '';
		$evf_report_email_to    = '';
		$evf_date_format        = '';
		$evf_report_offset_to   = '';

		// Set everest forms reporting frequency specific variables.
		switch ( $evf_report_frequency ) {

			case 'Daily':
				$evf_report_email_title = __( 'Everest Forms Daily Entries Statistics Report', 'everest-forms' );
				$evf_report_offset_from = '-1 days';
				break;

			case 'Weekly':
				$evf_report_email_title = __( 'Everest Forms Weekly Entries Statistics Report', 'everest-forms' );
				$evf_report_offset_from = '-8 days';
				break;

			case 'Monthly':
				$evf_report_email_title = __( 'Everest Forms Monthly Entries Statistics Report', 'everest-forms' );
				$evf_report_offset_from = '-1 month -1 day';
				break;
		}

		// Build date range.
		$date_format = get_option( 'date_format' );

		$start_time = evf_get_utc_time_from( $evf_report_offset_from, $date_format, true );
		return $start_time;
	}
}

if ( ! function_exists( 'evf_summary_end_offset_time' ) ) {
	/**
	 * Extracts the end offset time according to the duration.
	 *
	 * @since 2.0.9
	 * @return datetime $end_time.
	 */
	function evf_summary_end_offset_time() {
		// Get options.
		$evf_report_frequency   = get_option( 'everest_forms_entries_reporting_frequency', 'Weekly' );
		$evf_report_offset_from = '';
		$evf_report_email_to    = '';
		$evf_date_format        = '';
		$evf_report_offset_to   = '';

		// Set everest forms reporting frequency specific variables.
		switch ( $evf_report_frequency ) {

			case 'Daily':
				$evf_report_email_title = __( 'Everest Forms Daily Entries Statistics Report', 'everest-forms' );
				$evf_report_offset_to   = '-1 day';
				break;

			case 'Weekly':
				$evf_report_email_title = __( 'Everest Forms Weekly Entries Statistics Report', 'everest-forms' );
				$evf_report_offset_to   = '-1 day';
				break;

			case 'Monthly':
				$evf_report_email_title = __( 'Everest Forms Monthly Entries Statistics Report', 'everest-forms' );
				$evf_report_offset_to   = '-1 day';
				break;
		}

		// Build date range.
		$date_format = get_option( 'date_format' );

		$end_time = evf_get_utc_time_to( $evf_report_offset_to, $date_format, true );

		return $end_time;
	}
}


if ( ! function_exists( 'evf_entries_summaries' ) ) {
	/**
	 * Function to extract the entries summary from the database.
	 *
	 * @since 2.0.9.
	 * @return array $evf_stat_data_output Statistics data from the database as an output.
	 */
	function evf_entries_summaries() {
		// Get options.
		$evf_report_frequency = get_option( 'everest_forms_entries_reporting_frequency', 'Weekly' );
		$offset_from          = '';
		$offset_to            = '';

		// Set everest forms reporting frequency specific variables.
		switch ( $evf_report_frequency ) {

			case 'Daily':
				$evf_report_email_title = __( 'Everest Forms Daily Entries Statistics Report', 'everest-forms' );
				$offset_from            = '-1 days';
				$offset_to              = '-1 day';
				break;

			case 'Weekly':
				$evf_report_email_title = __( 'Everest Forms Weekly Entries Statistics Report', 'everest-forms' );
				$offset_from            = '-8 days';
				$offset_to              = '-1 day';
				break;

			case 'Monthly':
				$evf_report_email_title = __( 'Everest Forms Monthly Entries Statistics Report', 'everest-forms' );
				$offset_from            = '-1 month -1 day';
				$offset_to              = '-1 day';
				break;
		}

		global $wpdb;

		$evf_date_format         = 'Y-m-d H:i:s';
		$evf_stat_start          = evf_get_utc_time_from( $offset_from, $evf_date_format, true );
		$evf_stat_end            = evf_get_utc_time_to( $offset_to, $evf_date_format, true );
		$evf_stat_selected_forms = get_option( 'everest_forms_reporting_form_lists', array() );
		$evf_stat_data_output    = '';
		foreach ( $evf_stat_selected_forms as $evf_stat_selected_form ) {
			$evf_stat_data_output = $wpdb->get_results(
				$wpdb->prepare(
					"SELECT
				{$wpdb->prefix}posts.post_title,
				{$wpdb->prefix}evf_entries.form_id,
				COUNT(form_id) AS entries_count
			FROM
			{$wpdb->prefix}posts
			INNER JOIN
			{$wpdb->prefix}evf_entries ON {$wpdb->prefix}posts.id = {$wpdb->prefix}evf_entries.form_id
			WHERE
			{$wpdb->prefix}evf_entries.date_created BETWEEN '%1s' AND '%2s'
			GROUP BY
			{$wpdb->prefix}evf_entries.form_id",
					$evf_stat_start,
					$evf_stat_end
				)
			);
			break;
		}
		return $evf_stat_data_output;
	}
}

if ( ! function_exists( 'evf_process_all_fields_smart_tag' ) ) {
	/**
	 * Return email content wrapped in email template if {all_fields} is there in email content.
	 *
	 * @since 2.0.5
	 * @param string $email_content Email Content.
	 * @return string
	 */
	function evf_process_all_fields_smart_tag( $email_content ) {

		$email_content  = '<div class="evf-all-fields-smart-tag-email-body" background-color: #ebebeb;">';
		$email_content .= '<table border="0" cellpadding="0" cellspacing="0" width="100%" style="min-width:100%;border-collapse:collapse background:#cccccc" >';
		$email_content .= '<tbody>';
		$email_content .= '<tr>';
		$email_content .= '<td valign="top">';
		$email_content .= '<table align="left" border="0" cellpadding="0" cellspacing="0" width="100%" style="min-width:100%;border-collapse:collapse" class="mcnTextContentContainer">';
		$email_content .= '<tbody>';
		$email_content .= '<tr>';
		$email_content .= '<td valign = "top" class = "mcnTextContent">';
		$email_content .= "<table align = 'left' border = '0' cellpadding = '0' cellspacing = '0' width = '100%' style = 'display:block;min-width:100%;border-collapse:collapse;width:100%'>";
		$email_content .= '<tbody>';
		$email_content .= '<tr>';
		$email_content .= "<td style = 'color:#333333;padding-top:20px;padding-bottom:3px'><strong>Name</strong></td>";
		$email_content .= '</tr>';
		$email_content .= '<tr>';
		$email_content .= "<td style = 'color:#555555;padding-top:3px;padding-bottom:20px'>Demo Name</td>";
		$email_content .= '</tr>';
		$email_content .= '</tbody>';
		$email_content .= '</table>';
		$email_content .= "<table align = 'left' border = '0' cellpadding = '0' cellspacing = '0' width = '100%' style = 'border-top:1px solid #dddddd;display:block;min-width:100%;border-collapse:collapse;width:100%'>";
		$email_content .= '<tbody>';
		$email_content .= '<tr>';
		$email_content .= "<td style = 'color:#333333;padding-top:20px;padding-bottom:3px'> <strong>Email</strong><tr / td >";
		$email_content .= '</tr>';
		$email_content .= '<tr>';
		$email_content .= "<td style = 'color:#555555;padding-top:3px;padding-bottom:20px' > <a href = '#' target = '_blank'>Demo Email</a></td>";
		$email_content .= '</tr>';
		$email_content .= '</tbody>';
		$email_content .= '</table>';
		$email_content .= "<table align = 'left' border = '0' cellpadding = '0' cellspacing = '0' width = '100%' style = 'border-top:1px solid #dddddd;display:block;min-width:100%;border-collapse:collapse;width:100%'>";
		$email_content .= '<tbody>';
		$email_content .= '<tr>';
		$email_content .= "<td style = 'color:#333333;padding-top:20px;padding-bottom:3px'><strong>Email Subject</strong></td>";
		$email_content .= '</tr>';
		$email_content .= '<tr>';
		$email_content .= "<td style = 'color:#555555;padding-top:3px;padding-bottom:20px'>Demo Email Subject</td>";
		$email_content .= '</tr>';
		$email_content .= '</tbody>';
		$email_content .= '</table>';
		$email_content .= "<table align = 'left' border = '0' cellpadding = '0' cellspacing = '0' width = '100%' style = 'border-top:1px solid #dddddd;display:block;min-width:100%;border-collapse:collapse;width:100%'>";
		$email_content .= '<tbody>';
		$email_content .= '<tr>';
		$email_content .= "<td style = 'color:#333333;padding-top:20px;padding-bottom:3px'><strong>Email Message</strong></td>";
		$email_content .= '</tr>';
		$email_content .= '<tr>';
		$email_content .= "<td style = 'color:#555555;padding-top:3px;padding-bottom:20px'>Demo Email Message</td>";
		$email_content .= '</tr>';
		$email_content .= '</tbody>';
		$email_content .= '</table>';
		$email_content .= '</td>';
		$email_content .= '</tr>';
		$email_content .= '</tbody>';
		$email_content .= '</table>';
		$email_content .= '</td>';
		$email_content .= '</tr>';
		$email_content .= '</tbody>';
		$email_content .= '</table>';
		$email_content .= '</div>';

		return $email_content;
	}
}



/**
 * Get one time draggable fields fields.
 *
 * @return array
 */
function evf_get_one_time_draggable_fields() {
	return apply_filters(
		'everest_forms_one_time_draggable_form_fields',
		array(
			'file-upload',
		)
	);
}

/**
 * Retrieve the next key in an array from given key.
 *
 * @param    array   $arr        List of items in a form of array.
 * @param    integer $key        Key to search and find within the array.
 * @return   mixed
 */
function evf_get_next_key_array( $arr, $key ) {
	$keys     = array_keys( $arr );
	$position = array_search( $key, $keys, true );

	if ( isset( $keys[ $position + 1 ] ) ) {
		$next_key = $keys[ $position + 1 ];
	}

	return isset( $next_key ) ? $next_key : '';
}
/**
 * Function to generate the api key base on the string.
 *
 * @since 3.0.5
 * @param $string The string value.
 */
function generate_api_key( $string = 'evf_restapi', $length = 32 ) {
	$key = bin2hex( random_bytes( $length ) );

	return $key;
}

if ( ! function_exists( 'evf_hex_to_rgb' ) ) {
	/**
	 * Converts a hex color code to an RGB array.
	 *
	 * @since 3.0.5
	 * @param string $hexcolor Hex color code, with or without '#'.
	 * @return array RGB values as [red, green, blue].
	 */
	function evf_hex_to_rgb( $hexcolor ) {
		$hexcolor = ltrim( $hexcolor, '#' );

		if ( strlen( $hexcolor ) == 6 ) {
			$r = hexdec( substr( $hexcolor, 0, 2 ) );
			$g = hexdec( substr( $hexcolor, 2, 2 ) );
			$b = hexdec( substr( $hexcolor, 4, 2 ) );
		} elseif ( strlen( $hexcolor ) == 3 ) {
			$r = hexdec( str_repeat( substr( $hexcolor, 0, 1 ), 2 ) );
			$g = hexdec( str_repeat( substr( $hexcolor, 1, 1 ), 2 ) );
			$b = hexdec( str_repeat( substr( $hexcolor, 2, 1 ), 2 ) );
		} else {
			return array( 0, 0, 0 );
		}

		return array( $r, $g, $b );
	}
}

add_action( 'wp_mail_failed', 'evf_email_send_failed_handler', 1 );

if ( ! function_exists( 'evf_email_send_failed_handler' ) ) {

	/**
	 * Handle errors fetch mechanism when mail send failed.
	 *
	 * @param object $error_instance WP_Error message instance.
	 */
	function evf_email_send_failed_handler( $error_instance ) {
		$error_message   = '';
		$decoded_message = json_decode( $error_instance->get_error_message() );

		if ( json_last_error() === JSON_ERROR_NONE && ! empty( $decoded_message ) ) {
			/* translators: %s: Status Log URL */
			$error_message = wp_kses_post( sprintf( __( 'Please check the `evf_mail_errors` log under <a target="_blank" href="%s"> Logs </a> section.', 'everest-forms' ), admin_url( 'admin.php?page=evf-tools&tab=logs' ) ) );
		} else {
			$error_message = $error_instance->get_error_message();
		}

		evf_get_logger()->info(
			$error_message,
			array( 'source' => 'evf_mail_errors' )
		);

		if ( ! empty( $error_message ) ) {
			add_filter(
				'everest_forms_email_send_failed_message',
				function ( $msg ) use ( $error_message ) {
					return $error_message;
				}
			);
		}
	}
}

/**
 * Get form data by field key.
 *
 * @param array  $form_data Form Data.
 * @param string $key Field Key.
 *
 * @return array
 */
function evf_get_form_data_by_key( $form_data, $key = null ) {

	$form_data_array = array();

	foreach ( $form_data['form_fields'] as $field_data ) {

		$field_key = isset( $field_data['type'] ) && null !== $field_data['type'] ? $field_data['type'] : '';

		if ( ! empty( $field_key ) ) {
			if ( $field_key === $key ) {
				$form_data_array[] = $field_data;
			}
		}
	}

	return $form_data_array;
}

add_action(
	'admin_head',
	function () {
		$js = <<<JS
const isSidebarEnabled = localStorage.getItem( 'isPremiumSidebarEnabled' );
const interval = setInterval( () => {
	if ( document.body ) {
		clearInterval(interval);
		if ('true' === isSidebarEnabled) {
			document.body.classList.add( 'evf-premium-sidebar-show' );
		} else {
			document.body.classList.add( 'evf-premium-sidebar-hidden' );
		}
	}
}, 1 );
JS;
		if ( function_exists( 'wp_print_inline_script_tag' ) ) {
			wp_print_inline_script_tag( $js );
		}
	}
);

/**
 * Get the list of addons or module that are depended on another plugins.
 *
 * @since xx.xx.xx
 */
function evf_get_addons_list_depend_on_another_plugins() {
	$required_plugins = apply_filters(
		'everest_forms_required_plugins_lists',
		array(
			'everest-forms-woocommerce'      => array(
				'file' => 'woocommerce/woocommerce.php',
				'name' => 'WooCommerce',
			),
			'everest-forms-mailpoet'         => array(
				'file' => 'mailpoet/mailpoet.php',
				'name' => 'MailPoet',
			),
			'everest-forms-oxygen-builder'   => array(
				'file' => 'oxygen/functions.php',
				'name' => 'Oxygen Builder',
			),
			'everest-forms-beaver-builder'   => array(
				'file' => array(
					'beaver-builder-lite-version/fl-builder.php',
					'bb-plugin/fl-builder.php',
				),
				'name' => 'Beaver Builder',
			),
			'everest-forms-wpbakery-builder' => array(
				'file' => 'js_composer/js_composer.php',
				'name' => 'WPBakery Builder',
			),
			'everest-forms-divi-builder'     => array(
				'is_theme' => true,
				'name'     => 'Divi Builder',
				'id'       => 'divi',
			),
			'everest-forms-bricks-builder'   => array(
				'is_theme' => true,
				'name'     => 'Bricks Builder',
				'id'       => 'bricks',
			),
		)
	);

	return $required_plugins;
}


if ( ! function_exists( 'evf_maybe_unserialize' ) ) {
	/**
	 * EVF Unserialize data.
	 *
	 * @param string $data Data that might be unserialized.
	 * @param array  $options Options.
	 *
	 * @return mixed Unserialized data can be any type.
	 *
	 * @since 3.1.2
	 */
	function evf_maybe_unserialize( $data, $options = array() ) {

		if ( is_serialized( $data ) ) {
			if ( version_compare( PHP_VERSION, '7.1.0', '>=' ) ) {
				$options = wp_parse_args( $options, array( 'allowed_classes' => false ) );
				return @unserialize( trim( $data ), $options ); //phpcs:ignore.
			}
			return @unserialize( trim( $data ) ); //phpcs:ignore.
		}

		return $data;
	}
}

Youez - 2016 - github.com/yon3zu
LinuXploit