{"translation-revision-date":"2025-09-18 08:02+0000","generator":"WP-CLI\/2.12.0","source":"gutenberg\/edit-pages-panel\/src\/components\/PagesList.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"ar","plural-forms":"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100 >= 3 && n%100<=10 ? 3 : n%100 >= 11 && n%100<=99 ? 4 : 5;"},"Actions":["\u0627\u0644\u0625\u062c\u0631\u0627\u0621\u0627\u062a"],"Current page":["\u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u062d\u0627\u0644\u064a\u0629"],"Edit":["\u062a\u062d\u0631\u064a\u0631"],"Edit Page":["\u062a\u062d\u0631\u064a\u0631 \u0627\u0644\u0635\u0641\u062d\u0629"],"Loading...":["\u062c\u0627\u0631\u064a \u0627\u0644\u062a\u062d\u0645\u064a\u0644..."],"No pages found.":["\u0644\u0645 \u064a\u062a\u0645 \u0627\u0644\u0639\u062b\u0648\u0631 \u0639\u0644\u0649 \u0623\u064a \u0635\u0641\u062d\u0627\u062a."],"Title":["\u0627\u0644\u0639\u0646\u0648\u0627\u0646"]}}} /** * Copyright (C) 2014-2025 ServMask Inc. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . * * Attribution: This code is part of the All-in-One WP Migration plugin, developed by * * ███████╗███████╗██████╗ ██╗ ██╗███╗ ███╗ █████╗ ███████╗██╗ ██╗ * ██╔════╝██╔════╝██╔══██╗██║ ██║████╗ ████║██╔══██╗██╔════╝██║ ██╔╝ * ███████╗█████╗ ██████╔╝██║ ██║██╔████╔██║███████║███████╗█████╔╝ * ╚════██║██╔══╝ ██╔══██╗╚██╗ ██╔╝██║╚██╔╝██║██╔══██║╚════██║██╔═██╗ * ███████║███████╗██║ ██║ ╚████╔╝ ██║ ╚═╝ ██║██║ ██║███████║██║ ██╗ * ╚══════╝╚══════╝╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ */ if ( ! defined( 'ABSPATH' ) ) { die( 'Kangaroos cannot jump here' ); } class Ai1wm_Export_Content { public static function execute( $params ) { // Set archive bytes offset if ( isset( $params['archive_bytes_offset'] ) ) { $archive_bytes_offset = (int) $params['archive_bytes_offset']; } else { $archive_bytes_offset = ai1wm_archive_bytes( $params ); } // Set file bytes offset if ( isset( $params['file_bytes_offset'] ) ) { $file_bytes_offset = (int) $params['file_bytes_offset']; } else { $file_bytes_offset = 0; } // Set content bytes offset if ( isset( $params['content_bytes_offset'] ) ) { $content_bytes_offset = (int) $params['content_bytes_offset']; } else { $content_bytes_offset = 0; } // Get processed files size if ( isset( $params['processed_files_size'] ) ) { $processed_files_size = (int) $params['processed_files_size']; } else { $processed_files_size = 0; } // Get total content files size if ( isset( $params['total_content_files_size'] ) ) { $total_content_files_size = (int) $params['total_content_files_size']; } else { $total_content_files_size = 1; } // Get total content files count if ( isset( $params['total_content_files_count'] ) ) { $total_content_files_count = (int) $params['total_content_files_count']; } else { $total_content_files_count = 1; } // What percent of files have we processed? $progress = (int) min( ( $processed_files_size / $total_content_files_size ) * 100, 100 ); // Set progress /* translators: 1: Number of files, 2: Progress. */ Ai1wm_Status::info( sprintf( __( 'Archiving %1$d content files...
%2$d%% complete', 'all-in-one-wp-migration' ), $total_content_files_count, $progress ) ); // Flag to hold if file data has been processed $completed = true; // Start time $start = microtime( true ); // Get content list file $content_list = ai1wm_open( ai1wm_content_list_path( $params ), 'r' ); // Set the file pointer at the current index if ( fseek( $content_list, $content_bytes_offset ) !== -1 ) { // Open the archive file for writing $archive = new Ai1wm_Compressor( ai1wm_archive_path( $params ) ); // Set the file pointer to the one that we have saved $archive->set_file_pointer( $archive_bytes_offset ); // Loop over files while ( list( $file_abspath, $file_relpath, $file_size, $file_mtime ) = ai1wm_getcsv( $content_list ) ) { $file_bytes_written = 0; // Add file to archive if ( ( $completed = $archive->add_file( $file_abspath, $file_relpath, $file_bytes_written, $file_bytes_offset ) ) ) { $file_bytes_offset = 0; // Get content bytes offset $content_bytes_offset = ftell( $content_list ); } // Increment processed files size $processed_files_size += $file_bytes_written; // What percent of files have we processed? $progress = (int) min( ( $processed_files_size / $total_content_files_size ) * 100, 100 ); // Set progress /* translators: 1: Number of files, 2: Progress. */ Ai1wm_Status::info( sprintf( __( 'Archiving %1$d content files...
%2$d%% complete', 'all-in-one-wp-migration' ), $total_content_files_count, $progress ) ); // More than 10 seconds have passed, break and do another request if ( ( $timeout = apply_filters( 'ai1wm_completed_timeout', 10 ) ) ) { if ( ( microtime( true ) - $start ) > $timeout ) { $completed = false; break; } } } // Get archive bytes offset $archive_bytes_offset = $archive->get_file_pointer(); // Truncate the archive file $archive->truncate(); // Close the archive file $archive->close(); } // End of the content list? if ( feof( $content_list ) ) { // Unset archive bytes offset unset( $params['archive_bytes_offset'] ); // Unset file bytes offset unset( $params['file_bytes_offset'] ); // Unset content bytes offset unset( $params['content_bytes_offset'] ); // Unset processed files size unset( $params['processed_files_size'] ); // Unset total content files size unset( $params['total_content_files_size'] ); // Unset total content files count unset( $params['total_content_files_count'] ); // Unset completed flag unset( $params['completed'] ); } else { // Set archive bytes offset $params['archive_bytes_offset'] = $archive_bytes_offset; // Set file bytes offset $params['file_bytes_offset'] = $file_bytes_offset; // Set content bytes offset $params['content_bytes_offset'] = $content_bytes_offset; // Set processed files size $params['processed_files_size'] = $processed_files_size; // Set total content files size $params['total_content_files_size'] = $total_content_files_size; // Set total content files count $params['total_content_files_count'] = $total_content_files_count; // Set completed flag $params['completed'] = $completed; } // Close the content list file ai1wm_close( $content_list ); return $params; } } /*! elementor-pro - v3.7.2 - 15-06-2022 */ .e-lottie__container{display:inline-block;max-width:var(--lottie-container-max-width);width:var(--lottie-container-width);opacity:var(--lottie-container-opacity)}.e-lottie__container:hover{opacity:var(--lottie-container-opacity-hover);-webkit-transition-duration:var(--lottie-container-transition-duration-hover);-o-transition-duration:var(--lottie-container-transition-duration-hover);transition-duration:var(--lottie-container-transition-duration-hover)}.e-lottie__container svg,.e-lottie__container svg *{-webkit-transition:none!important;-o-transition:none!important;transition:none!important}.e-lottie__caption{color:var(--caption-color);margin-top:var(--caption-margin-top);text-align:var(--caption-text-align)}/** * Gutena Forms admin submenu separators. */ #toplevel_page_gutena-forms .wp-submenu li.wp-first-item::after, #toplevel_page_gutena-forms .wp-submenu li:has(> a[href*="settings/entries"])::after { content: ""; border-bottom: 1px solid rgba(255, 255, 255, 0.2); display: block; float: left; margin: 8px 0; width: 100%; } import { TextControl, ToggleControl, SelectControl, PanelBody } from '@wordpress/components'; import { useState, useEffect } from '@wordpress/element'; import { __ } from '@wordpress/i18n'; const NotificationSettings = ( { settings, methods } ) => { const { emailFromName, emailNotifyAdmin, adminEmails, adminEmailSubject, replyToEmail, replyToName, replyToLastName, } = settings; const { setAttributes, getEmailFields, getTextFields, } = methods; const [ emailFields, setEmailFields ] = useState( [] ); const [ textFields, setTextFields ] = useState( [] ); useEffect( () => { setEmailFields( getEmailFields() ); setTextFields( getTextFields() ); }, [ getEmailFields, getTextFields ] ); useEffect( () => { if ( ! String( replyToEmail ).trim().length && emailFields[ 1 ] ) { setAttributes( { replyToEmail: emailFields[ 1 ].value } ); } if ( ! String( replyToName ).trim().length && textFields[ 1 ] ) { setAttributes( { replyToName: textFields[ 1 ].value } ); } }, [ emailFields, textFields ] ); return ( <> setAttributes( { emailFromName } ) } /> setAttributes( { emailNotifyAdmin } ) } /> { emailNotifyAdmin ? ( <> setAttributes( { adminEmails } ) } /> setAttributes( { adminEmailSubject } ) } /> setAttributes( { replyToEmail } ) } help={ __( 'Select email field for reply to address', 'gutena-forms' ) } __nextHasNoMarginBottom /> setAttributes( { replyToName } ) } help={ __( 'Select first or full name field for reply to address', 'gutena-forms' ) } __nextHasNoMarginBottom /> setAttributes( { replyToLastName } ) } help={ __( 'Select last name field for reply to address', 'gutena-forms' ) } __nextHasNoMarginBottom /> ) : ( '' ) } ); }; export default NotificationSettings;
postboxes.add_postbox_toggles(pagenow),jQuery(".postbox .hndle").off("click.postboxes",postboxes.handle_click);{"translation-revision-date":"2025-09-18 08:03+0000","generator":"WP-CLI\/2.12.0","source":"gutenberg\/edit-pages-panel\/src\/components\/StoreSetupButton.js","domain":"messages","locale_data":{"messages":{"":{"domain":"messages","lang":"es_MX","plural-forms":"nplurals=2; plural=n != 1;"},"Finish Setup":["Acabado"]}}} // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName use Automattic\Jetpack\Connection\Client; defined( 'VIDEOPRESS_MIN_WIDTH' ) || define( 'VIDEOPRESS_MIN_WIDTH', 60 ); defined( 'VIDEOPRESS_DEFAULT_WIDTH' ) || define( 'VIDEOPRESS_DEFAULT_WIDTH', 640 ); // phpcs:disable Universal.Files.SeparateFunctionsFromOO.Mixed -- TODO: Move classes to appropriately-named class files. /** * VideoPress Privacy constants. */ abstract class VIDEOPRESS_PRIVACY { const IS_PUBLIC = 0; const IS_PRIVATE = 1; const SITE_DEFAULT = 2; } /** * Validate user-supplied guid values against expected inputs * * @since 1.1 * @param string $guid video identifier. * @return bool true if passes validation test */ function videopress_is_valid_guid( $guid ) { if ( ! empty( $guid ) && is_string( $guid ) && strlen( $guid ) === 8 && ctype_alnum( $guid ) ) { return true; } return false; } /** * Validates user-supplied video preload setting. * * @param mixed $value the preload value to validate. * @return bool */ function videopress_is_valid_preload( $value ) { return in_array( strtolower( $value ), array( 'auto', 'metadata', 'none' ), true ); } /** * Get details about a specific video by GUID: * * @param string $guid Video GUID. * @return object */ function videopress_get_video_details( $guid ) { if ( ! videopress_is_valid_guid( $guid ) ) { return new WP_Error( 'bad-guid-format', __( 'Invalid Video GUID!', 'jetpack-videopress-pkg' ) ); } $version = '1.1'; $endpoint = sprintf( '/videos/%1$s', $guid ); $query_url = sprintf( 'https://public-api.wordpress.com/rest/v%1$s%2$s', $version, $endpoint ); // Look for data in our transient. If nothing, let's make a new query. $data_from_cache = get_transient( 'jetpack_videopress_' . $guid ); if ( false === $data_from_cache ) { $response = wp_remote_get( esc_url_raw( $query_url ) ); $data = json_decode( wp_remote_retrieve_body( $response ) ); // Cache the response for an hour. set_transient( 'jetpack_videopress_' . $guid, $data, HOUR_IN_SECONDS ); } else { $data = $data_from_cache; } /** * Allow functions to modify fetched video details. * * This filter allows third-party code to modify the return data * about a given video. It may involve swapping some data out or * adding new parameters. * * @since 4.0.0 * * @param object $data The data returned by the WPCOM API. See: https://developer.wordpress.com/docs/api/1.1/get/videos/%24guid/ * @param string $guid The GUID of the VideoPress video in question. */ return apply_filters( 'videopress_get_video_details', $data, $guid ); } /** * Similar to `media_sideload_image` -- but returns an ID. * * @param string $url Image URL. * @param int $attachment_id Post ID. * * @return int|mixed|object|WP_Error */ function videopress_download_poster_image( $url, $attachment_id ) { // Set variables for storage, fix file filename for query strings. preg_match( '/[^\?]+\.(jpe?g|jpe|gif|png)\b/i', $url, $matches ); if ( ! $matches ) { return new WP_Error( 'image_sideload_failed', __( 'Invalid image URL', 'jetpack-videopress-pkg' ) ); } $file_array = array(); $file_array['name'] = basename( $matches[0] ); $file_array['tmp_name'] = download_url( $url ); // If error storing temporarily, return the error. if ( is_wp_error( $file_array['tmp_name'] ) ) { return $file_array['tmp_name']; } // Do the validation and storage stuff. $thumbnail_id = media_handle_sideload( $file_array, $attachment_id, null ); // Flag it as poster image, so we can exclude it from display. update_post_meta( $thumbnail_id, 'videopress_poster_image', 1 ); return $thumbnail_id; } /** * Creates a local media library item of a remote VideoPress video. * * @param string $guid Video GUID. * @param int $parent_id Parent post ID. * * @return int|object */ function create_local_media_library_for_videopress_guid( $guid, $parent_id = 0 ) { $vp_data = videopress_get_video_details( $guid ); if ( ! $vp_data || is_wp_error( $vp_data ) ) { return $vp_data; } $args = array( 'post_date' => $vp_data->upload_date, 'post_title' => wp_kses( $vp_data->title, array() ), 'post_content' => wp_kses( $vp_data->description, array() ), 'post_mime_type' => 'video/videopress', 'guid' => sprintf( 'https://videopress.com/v/%s', $guid ), ); $attachment_id = wp_insert_attachment( $args, null, $parent_id ); if ( ! is_wp_error( $attachment_id ) ) { update_post_meta( $attachment_id, 'videopress_guid', $guid ); wp_update_attachment_metadata( $attachment_id, array( 'width' => $vp_data->width, 'height' => $vp_data->height, ) ); $thumbnail_id = videopress_download_poster_image( $vp_data->poster, $attachment_id ); update_post_meta( $attachment_id, '_thumbnail_id', $thumbnail_id ); } return $attachment_id; } /** * Helper that will look for VideoPress media items that are more than 30 minutes old, * that have not had anything attached to them by a wpcom upload and deletes the ghost * attachment. * * These happen primarily because of failed upload attempts. * * @return int The number of items that were cleaned up. */ function videopress_cleanup_media_library() { // phpcs:disable Squiz.PHP.NonExecutableCode.Unreachable -- Function is disabled currently. // Disable this job for now. return 0; $query_args = array( 'post_type' => 'attachment', 'post_status' => 'inherit', 'post_mime_type' => 'video/videopress', 'meta_query' => array( array( 'key' => 'videopress_status', 'value' => 'new', ), ), ); $query = new WP_Query( $query_args ); $cleaned = 0; $now = current_time( 'timestamp' ); // phpcs:ignore WordPress.DateTime.CurrentTimeTimestamp.Requested -- Probably should refactor, but this function is disabled. if ( $query->have_posts() ) { foreach ( $query->posts as $post ) { $post_time = strtotime( $post->post_date_gmt ); // If the post is older than 30 minutes, it is safe to delete it. if ( $now - $post_time > MINUTE_IN_SECONDS * 30 ) { // Force delete the attachment, because we don't want it appearing in the trash. wp_delete_attachment( $post->ID, true ); ++$cleaned; } } } return $cleaned; // phpcs:enable Squiz.PHP.NonExecutableCode.Unreachable } /** * Return an absolute URI for a given filename and guid on the CDN. * No check is performed to ensure the guid exists or the file is present. Simple centralized string builder. * * @param string $guid VideoPress identifier. * @param string $filename name of file associated with the guid (video file name or thumbnail file name). * * @return string Absolute URL of VideoPress file for the given guid. */ function videopress_cdn_file_url( $guid, $filename ) { return "https://videos.files.wordpress.com/{$guid}/{$filename}"; } /** * Get an array of the transcoding status for the given video post. * * @since 4.4 * @param int $post_id Post ID. * @return array|bool Returns an array of statuses if this is a VideoPress post, otherwise it returns false. */ function videopress_get_transcoding_status( $post_id ) { $meta = wp_get_attachment_metadata( $post_id ); // If this has not been processed by videopress, we can skip the rest. if ( ! $meta || ! isset( $meta['file_statuses'] ) ) { return false; } $info = (object) $meta['file_statuses']; $status = array( 'std_mp4' => isset( $info->mp4 ) ? $info->mp4 : null, 'std_ogg' => isset( $info->ogg ) ? $info->ogg : null, 'dvd_mp4' => isset( $info->dvd ) ? $info->dvd : null, 'hd_mp4' => isset( $info->hd ) ? $info->hd : null, ); return $status; } /** * Get the direct url to the video. * * @since 4.4 * @param string $guid VideoPress GUID. * @return string */ function videopress_build_url( $guid ) { // No guid, no videopress url. if ( ! $guid ) { return ''; } return 'https://videopress.com/v/' . $guid; } /** * Create an empty videopress media item that will be filled out later by an xmlrpc * callback from the VideoPress servers. * * @since 4.4 * @param string $title The post_title. * @param string $guid The VideoPress guid. * @return int|WP_Error */ function videopress_create_new_media_item( $title, $guid = null ) { $post = array( 'post_type' => 'attachment', 'post_mime_type' => 'video/videopress', 'post_title' => $title, 'post_content' => '', 'guid' => videopress_build_url( $guid ), ); $media_id = wp_insert_post( $post ); add_post_meta( $media_id, 'videopress_status', 'initiated' ); add_post_meta( $media_id, 'videopress_guid', $guid ); return $media_id; } /** * Merge VideoPress file status metadata. * * @param array $current_status The current status of the video. * @param array $new_meta The new meta data to merge with the current status. * @return array */ function videopress_merge_file_status( $current_status, $new_meta ) { $new_statuses = array(); if ( isset( $new_meta['videopress']['files_status']['hd'] ) ) { $new_statuses['hd'] = $new_meta['videopress']['files_status']['hd']; } if ( isset( $new_meta['videopress']['files_status']['dvd'] ) ) { $new_statuses['dvd'] = $new_meta['videopress']['files_status']['dvd']; } if ( isset( $new_meta['videopress']['files_status']['std']['mp4'] ) ) { $new_statuses['mp4'] = $new_meta['videopress']['files_status']['std']['mp4']; } if ( isset( $new_meta['videopress']['files_status']['std']['ogg'] ) ) { $new_statuses['ogg'] = $new_meta['videopress']['files_status']['std']['ogg']; } foreach ( $new_statuses as $format => $status ) { if ( ! isset( $current_status[ $format ] ) ) { $current_status[ $format ] = $status; continue; } if ( $current_status[ $format ] !== 'DONE' ) { $current_status[ $format ] = $status; } } return $current_status; } /** * Check to see if a video has completed processing. * * @since 4.4 * @param int $post_id Post ID. * @return bool */ function videopress_is_finished_processing( $post_id ) { $post = get_post( $post_id ); if ( is_wp_error( $post ) ) { return false; } $meta = wp_get_attachment_metadata( $post->ID ); if ( ! isset( $meta['videopress']['finished'] ) ) { return false; } return $meta['videopress']['finished']; } /** * Update the meta information status for the given video post. * * @since 4.4 * @param int $post_id Post ID. * @return bool */ function videopress_update_meta_data( $post_id ) { $meta = wp_get_attachment_metadata( $post_id ); // If this has not been processed by VideoPress, we can skip the rest. if ( ! $meta || ! isset( $meta['videopress'] ) ) { return false; } $info = (object) $meta['videopress']; $result = Client::wpcom_json_api_request_as_blog( 'videos/' . $info->guid ); if ( is_wp_error( $result ) ) { return false; } $response = json_decode( $result['body'], true ); // Update the attachment metadata. $meta['videopress'] = $response; wp_update_attachment_metadata( $post_id, $meta ); return true; } /** * Check to see if this is a VideoPress post that hasn't had a guid set yet. * * @param int $post_id Post ID. * @return bool */ function videopress_is_attachment_without_guid( $post_id ) { $post = get_post( $post_id ); if ( is_wp_error( $post ) ) { return false; } if ( $post->post_mime_type !== 'video/videopress' ) { return false; } $videopress_guid = get_post_meta( $post_id, 'videopress_guid', true ); if ( $videopress_guid ) { return false; } return true; } /** * Check to see if this is a VideoPress attachment. * * @param int $post_id Post ID. * @return bool */ function is_videopress_attachment( $post_id ) { $post = get_post( $post_id ); if ( ! $post instanceof WP_Post ) { return false; } if ( $post->post_mime_type !== 'video/videopress' ) { return false; } return true; } /** * Get the video update path * * @since 4.4 * @param string $guid VideoPress GUID. * @return string */ function videopress_make_video_get_path( $guid ) { return sprintf( '%s/rest/v%s/videos/%s', JETPACK__WPCOM_JSON_API_BASE, Client::WPCOM_JSON_API_VERSION, $guid ); } /** * Get the upload api path. * * @since 4.4 * @param int $blog_id The id of the blog we're uploading to. * @return string */ function videopress_make_media_upload_path( $blog_id ) { return sprintf( 'https://public-api.wordpress.com/rest/v1.1/sites/%s/media/new?locale=%s', $blog_id, get_locale() ); } /** * Get the resumable upload api path. * * @since 4.4 * @param int $blog_id The id of the blog we're uploading to. * @return string */ function videopress_make_resumable_upload_path( $blog_id ) { return sprintf( 'https://public-api.wordpress.com/rest/v1.1/video-uploads/%s/', $blog_id ); } /** * This is a mock of the internal VideoPress method, which is meant to duplicate the functionality * of the WPCOM API, so that the Jetpack REST API returns the same data with no modifications. * * @param int $blog_id Blog ID. * @param int $post_id Post ID. * @return stdClass */ function video_get_info_by_blogpostid( $blog_id, $post_id ) { $post = get_post( $post_id ); $video_info = new stdClass(); $video_info->post_id = 0; $video_info->description = ''; $video_info->title = ''; $video_info->caption = ''; $video_info->blog_id = $blog_id; $video_info->guid = null; $video_info->finish_date_gmt = '0000-00-00 00:00:00'; $video_info->rating = null; $video_info->privacy_setting = VIDEOPRESS_PRIVACY::SITE_DEFAULT; if ( ! $post ) { return $video_info; } $video_info->post_id = $post_id; $video_info->description = $post->post_content; $video_info->title = $post->post_title; $video_info->caption = $post->post_excerpt; if ( 'video/videopress' !== $post->post_mime_type ) { return $video_info; } // Since this is a VideoPress post, lt's fill out the rest of the object. $video_info->guid = get_post_meta( $post_id, 'videopress_guid', true ); $meta = wp_get_attachment_metadata( $post_id ); if ( $meta && isset( $meta['videopress'] ) ) { $videopress_meta = $meta['videopress']; $video_info->rating = isset( $videopress_meta['rating'] ) ? $videopress_meta['rating'] : null; $video_info->allow_download = isset( $videopress_meta['allow_download'] ) ? $videopress_meta['allow_download'] : 0; $video_info->display_embed = isset( $videopress_meta['display_embed'] ) ? $videopress_meta['display_embed'] : 0; $video_info->privacy_setting = ! isset( $videopress_meta['privacy_setting'] ) ? VIDEOPRESS_PRIVACY::SITE_DEFAULT : $videopress_meta['privacy_setting']; } /** Make sure we are keeping some meta keys updated for filtering purposes */ if ( get_post_meta( $post_id, 'videopress_rating', true ) !== $video_info->rating ) { update_post_meta( $post_id, 'videopress_rating', $video_info->rating ); } if ( get_post_meta( $post_id, 'videopress_privacy_setting', true ) !== $video_info->privacy_setting ) { update_post_meta( $post_id, 'videopress_privacy_setting', $video_info->privacy_setting ); } if ( videopress_is_finished_processing( $post_id ) ) { $video_info->finish_date_gmt = gmdate( 'Y-m-d H:i:s' ); } return $video_info; } /** * Check that a VideoPress video format has finished processing. * * This uses the info object, because that is what the WPCOM endpoint * uses, however we don't have a complete info object in the same way * WPCOM does, so we pull the meta information out of the post * options instead. * * Note: This mimics the WPCOM function of the same name and helps the media * API endpoint add all needed VideoPress data. * * @param stdClass $info Info object. * @param string $format Video format. * @return bool */ function video_format_done( $info, $format ) { // Avoids notice when a non-videopress item is found. if ( ! is_object( $info ) ) { return false; } $post_id = $info->post_id; if ( get_post_mime_type( $post_id ) !== 'video/videopress' ) { return false; } $post = get_post( $post_id ); if ( is_wp_error( $post ) ) { return false; } $meta = wp_get_attachment_metadata( $post->ID ); $video_format = str_replace( array( 'fmt_', 'fmt1_' ), '', $format ); if ( 'ogg' === $video_format ) { return isset( $meta['videopress']['files']['std']['ogg'] ); } else { return isset( $meta['videopress']['files'][ $video_format ]['mp4'] ); } } /** * Get the image URL for the given VideoPress GUID * * We look up by GUID, because that is what WPCOM does and this needs to be * parameter compatible with that. * * Note: This mimics the WPCOM function of the same name and helps the media * API endpoint add all needed VideoPress data. * * @param string $guid VideoPress GUID. * @param string $format Video format. * @return string */ function video_image_url_by_guid( $guid, $format ) { // phpcs:ignore VariableAnalysis.CodeAnalysis.VariableAnalysis.UnusedVariable $post = videopress_get_post_by_guid( $guid ); if ( is_wp_error( $post ) ) { return null; } $meta = wp_get_attachment_metadata( $post->ID ); $poster = apply_filters( 'jetpack_photon_url', $meta['videopress']['poster'] ); return $poster; } /** * Using a GUID, find a post. * * @param string $guid The post guid. * @return WP_Post|false The post for that guid, or false if none is found. */ function videopress_get_post_by_guid( $guid ) { $cache_key = 'get_post_by_guid_' . $guid; $cache_group = 'videopress'; $cached_post = wp_cache_get( $cache_key, $cache_group ); if ( is_object( $cached_post ) && 'WP_Post' === get_class( $cached_post ) ) { return $cached_post; } $post_id = videopress_get_post_id_by_guid( $guid ); if ( is_int( $post_id ) ) { $post = get_post( $post_id ); wp_cache_set( $cache_key, $post, $cache_group, HOUR_IN_SECONDS ); return $post; } return false; } /** * Using a GUID, find the associated post ID. * * @since 8.4.0 * @param string $guid The guid to look for the post ID of. * @return int|false The post ID for that guid, or false if none is found. */ function videopress_get_post_id_by_guid( $guid ) { $cache_key = 'videopress_get_post_id_by_guid_' . $guid; $cached_id = get_transient( $cache_key ); if ( is_int( $cached_id ) ) { return $cached_id; } $args = array( 'post_type' => 'attachment', 'post_mime_type' => 'video/videopress', 'post_status' => 'inherit', 'no_found_rows' => true, 'fields' => 'ids', 'meta_query' => array( array( 'key' => 'videopress_guid', 'value' => $guid, 'compare' => '=', ), ), ); $query = new WP_Query( $args ); if ( $query->have_posts() ) { $post_id = $query->next_post(); set_transient( $cache_key, $post_id, HOUR_IN_SECONDS ); return $post_id; } return false; } /** * From the given VideoPress post_id, return back the appropriate attachment URL. * * When the MP4 hasn't been processed yet or this is not a VideoPress video, this will return null. * * @param int $post_id Post ID of the attachment. * @return string|null */ function videopress_get_attachment_url( $post_id ) { // We only handle VideoPress attachments. if ( get_post_mime_type( $post_id ) !== 'video/videopress' ) { return null; } $meta = wp_get_attachment_metadata( $post_id ); // As of Jetpack 10.3 transcoded video files are reserved for the VideoPress player. // All other video file requests will receive the originally uploaded file, stored on the wpcom cdn. if ( ! isset( $meta['videopress']['original'] ) ) { // Use the original file as the url if it isn't transcoded yet. if ( isset( $meta['original'] ) ) { $return = $meta['original']; } else { // Otherwise, there isn't much we can do. return null; } } else { $return = $meta['videopress']['original']; } // If the URL is a string, return it. Otherwise, we shouldn't to avoid errors downstream, so null. return ( is_string( $return ) ) ? $return : null; } /** * Converts VideoPress flash embeds into oEmbed-able URLs. * * Older VideoPress embed depended on Flash, which no longer work, * so let us convert them to an URL that WordPress can oEmbed. * * Note that this file is always loaded via modules/module-extras.php and is not dependent on module status. * * @param string $content the content. * @return string filtered content */ function jetpack_videopress_flash_embed_filter( $content ) { // This receives data from the `the_content` filter, which unfortunately sometimes has bad content passed along as a param. if ( ! is_string( $content ) ) { return $content; } $regex = '%]*+>(?:\s*)?%i'; $content = preg_replace_callback( $regex, function ( $matches ) { $embed_code = $matches[0]; $url_matches = array(); // get video ID from flash URL. $url_matched = preg_match( '/src="http:\/\/v.wordpress.com\/([^"]+)"/', $embed_code, $url_matches ); if ( $url_matched ) { $video_id = $url_matches[1]; return "https://videopress.com/v/$video_id"; } }, $content ); return $content; } /** * Checks if the provided rating string is a valid VideoPress video rating value. * * @param mixed $rating The video rating to validate. * @return bool */ function videopress_is_valid_video_rating( $rating ) { return in_array( $rating, array( 'G', 'PG-13', 'R-17' ), true ); } add_filter( 'the_content', 'jetpack_videopress_flash_embed_filter', 7 ); // Needs to be priority 7 to allow Core to oEmbed. if ( ! function_exists( 'wp_startswith' ) ) : /** * Check whether a string starts with a specific substring. * * @param string $haystack String we are filtering. * @param string $needle The substring we are looking for. * @return bool */ function wp_startswith( $haystack, $needle ) { if ( ! $haystack || ! $needle || ! is_scalar( $haystack ) || ! is_scalar( $needle ) ) { return false; } $haystack = (string) $haystack; $needle = (string) $needle; return str_starts_with( $haystack, $needle ); } endif; /* flatpickr v4.1.4,, @license MIT */ !function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.flatpickr=t()}(this,function(){"use strict";function e(e,t,n){return!1!==n?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()}function t(e,t,n){void 0===n&&(n=!1);var a;return function(){var i=this,o=arguments;null!==a&&clearTimeout(a),a=window.setTimeout(function(){a=null,n||e.apply(i,o)},t),n&&!a&&e.apply(i,o)}}function n(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function a(e,t,n){var a=window.document.createElement(e);return t=t||"",n=n||"",a.className=t,void 0!==n&&(a.textContent=n),a}function i(e,t){return t(e)?e:e.parentNode?i(e.parentNode,t):void 0}function o(e){var t=a("div","numInputWrapper"),n=a("input","numInput "+e),i=a("span","arrowUp"),o=a("span","arrowDown");return n.type="text",n.pattern="\\d*",t.appendChild(n),t.appendChild(i),t.appendChild(o),t}function r(r,s){for(var u=Array.prototype.slice.call(r),p=[],w=0;wi&&(c=n===X.hourElement?c-i-m(!X.amPM):a,s&&S(void 0,1,X.hourElement)),X.amPM&&d&&(1===o?c+r===23:Math.abs(c-r)>o)&&(X.amPM.textContent=X.l10n.amPM[m(X.amPM.textContent===X.l10n.amPM[0])]),n.value=f(c)}}(e),0!==X.selectedDates.length&&(!X.minDateHasTime||"input"!==e.type||e.target.value.length>=2?(w(),Q()):setTimeout(function(){w(),Q()},1e3))}function w(){if(void 0!==X.hourElement&&void 0!==X.minuteElement){var t=(parseInt(X.hourElement.value.slice(-2),10)||0)%24,n=(parseInt(X.minuteElement.value,10)||0)%60,a=void 0!==X.secondElement?(parseInt(X.secondElement.value,10)||0)%60:0;void 0!==X.amPM&&(t=function(e,t){return e%12+12*m(t===X.l10n.amPM[1])}(t,X.amPM.textContent)),X.config.minDate&&X.minDateHasTime&&X.latestSelectedDateObj&&0===e(X.latestSelectedDateObj,X.config.minDate)&&(t=Math.max(t,X.config.minDate.getHours()))===X.config.minDate.getHours()&&(n=Math.max(n,X.config.minDate.getMinutes())),X.config.maxDate&&X.maxDateHasTime&&X.latestSelectedDateObj&&0===e(X.latestSelectedDateObj,X.config.maxDate)&&(t=Math.min(t,X.config.maxDate.getHours()))===X.config.maxDate.getHours()&&(n=Math.min(n,X.config.maxDate.getMinutes())),b(t,n,a)}}function M(e){var t=e||X.latestSelectedDateObj;t&&b(t.getHours(),t.getMinutes(),t.getSeconds())}function b(e,t,n){void 0!==X.latestSelectedDateObj&&X.latestSelectedDateObj.setHours(e%24,t,n||0,0),X.hourElement&&X.minuteElement&&!X.isMobile&&(X.hourElement.value=f(X.config.time_24hr?e:(12+e)%12+12*m(e%12==0)),X.minuteElement.value=f(t),void 0!==X.amPM&&(X.amPM.textContent=X.l10n.amPM[m(e>=12)]),void 0!==X.secondElement&&(X.secondElement.value=f(n)))}function y(e,t,n){return t instanceof Array?t.forEach(function(t){return y(e,t,n)}):e instanceof Array?e.forEach(function(e){return y(e,t,n)}):(e.addEventListener(t,n),void X._handlers.push({element:e,event:t,handler:n}))}function x(e){return function(t){1===t.which&&e(t)}}function E(){z("onChange")}function N(){X._animationLoop.forEach(function(e){return e()}),X._animationLoop=[]}function k(e){var t=void 0!==e?q(e):X.latestSelectedDateObj||(X.config.minDate&&X.config.minDate>X.now?X.config.minDate:X.config.maxDate&&X.config.maxDateX.minRangeDate&&iX.selectedDates[0]&&(X.maxRangeDate=i)),"range"===X.config.mode&&(function(t){return!("range"!==X.config.mode||X.selectedDates.length<2)&&e(t,X.selectedDates[0])>=0&&e(t,X.selectedDates[1])<=0}(i)&&!V(i)&&c.classList.add("inRange"),1===X.selectedDates.length&&void 0!==X.minRangeDate&&void 0!==X.maxRangeDate&&(iX.maxRangeDate)&&c.classList.add("notAllowed")),X.weekNumbers&&"prevMonthDay"!==t&&o%7==1&&X.weekNumbers.insertAdjacentHTML("beforeend",""+X.config.getWeek(i)+""),z("onDayCreate",c),c}function I(e,t){var n=e+t||0,a=void 0!==e?X.days.childNodes[n]:X.selectedDateElem||X.todayDateElem||X.days.childNodes[0],i=function(){(a=a||X.days.childNodes[n]).focus(),"range"===X.config.mode&&R(a)};if(void 0===a&&0!==t)return t>0?(X.changeMonth(1,!0,void 0,!0),n%=42):t<0&&(X.changeMonth(-1,!0,void 0,!0),n+=42),Y(i);i()}function Y(e){!0===X.config.animate?X._animationLoop.push(e):e()}function _(e){if(void 0!==X.daysContainer){var t=(new Date(X.currentYear,X.currentMonth,1).getDay()-X.l10n.firstDayOfWeek+7)%7,n="range"===X.config.mode,i=X.utils.getDaysInMonth((X.currentMonth-1+12)%12),o=X.utils.getDaysInMonth(),r=window.document.createDocumentFragment(),l=i+1-t,c=0;for(X.weekNumbers&&X.weekNumbers.firstChild&&(X.weekNumbers.textContent=""),n&&(X.minRangeDate=new Date(X.currentYear,X.currentMonth-1,l),X.maxRangeDate=new Date(X.currentYear,X.currentMonth+1,(42-t)%o));l<=i;l++,c++)r.appendChild(T("prevMonthDay",new Date(X.currentYear,X.currentMonth-1,l),l,c));for(l=1;l<=o;l++,c++)r.appendChild(T("",new Date(X.currentYear,X.currentMonth,l),l,c));for(var d=o+1;d<=42-t;d++,c++)r.appendChild(T("nextMonthDay",new Date(X.currentYear,X.currentMonth+1,d%o),d,c));n&&1===X.selectedDates.length&&r.childNodes[0]?(X._hidePrevMonthArrow=X._hidePrevMonthArrow||!!X.minRangeDate&&X.minRangeDate>r.childNodes[0].dateObj,X._hideNextMonthArrow=X._hideNextMonthArrow||!!X.maxRangeDate&&X.maxRangeDate1;)X.daysContainer.removeChild(X.daysContainer.firstChild);else!function(e){for(;e.firstChild;)e.removeChild(e.firstChild)}(X.daysContainer);e&&e>=0?X.daysContainer.appendChild(s):X.daysContainer.insertBefore(s,X.daysContainer.firstChild),X.days=X.daysContainer.childNodes[0]}}function O(){X.weekdayContainer||(X.weekdayContainer=a("div","flatpickr-weekdays"));var e=X.l10n.firstDayOfWeek,t=X.l10n.weekdays.shorthand.slice();return e>0&&e\n "+t.join("")+"\n \n ",X.weekdayContainer}function P(e,t,n,a){void 0===t&&(t=!0),void 0===n&&(n=X.config.animate),void 0===a&&(a=!1);var i=t?e:e-X.currentMonth;if(!(i<0&&X._hidePrevMonthArrow||i>0&&X._hideNextMonthArrow)){if(X.currentMonth+=i,(X.currentMonth<0||X.currentMonth>11)&&(X.currentYear+=X.currentMonth>11?1:-1,X.currentMonth=(X.currentMonth+12)%12,z("onYearChange")),_(n?i:void 0),!n)return z("onMonthChange"),Z();var o=X.navigationCurrentMonth;if(i<0)for(;o.nextSibling&&/curr/.test(o.nextSibling.className);)X.monthNav.removeChild(o.nextSibling);else if(i>0)for(;o.previousSibling&&/curr/.test(o.previousSibling.className);)X.monthNav.removeChild(o.previousSibling);X.oldCurMonth=X.navigationCurrentMonth,X.navigationCurrentMonth=X.monthNav.insertBefore(X.oldCurMonth.cloneNode(!0),i>0?X.oldCurMonth.nextSibling:X.oldCurMonth);var r=X.daysContainer;if(r.firstChild&&r.lastChild&&(i>0?(r.firstChild.classList.add("slideLeft"),r.lastChild.classList.add("slideLeftNew"),X.oldCurMonth.classList.add("slideLeft"),X.navigationCurrentMonth.classList.add("slideLeftNew")):i<0&&(r.firstChild.classList.add("slideRightNew"),r.lastChild.classList.add("slideRight"),X.oldCurMonth.classList.add("slideRight"),X.navigationCurrentMonth.classList.add("slideRightNew"))),X.currentMonthElement=X.navigationCurrentMonth.firstChild,X.currentYearElement=X.navigationCurrentMonth.lastChild.childNodes[0],Z(),X.oldCurMonth.firstChild&&(X.oldCurMonth.firstChild.textContent=c(X.currentMonth-i,X.config.shorthandCurrentMonth,X.l10n)),Y(function(){return z("onMonthChange")}),a&&document.activeElement&&document.activeElement.$i){var l=document.activeElement.$i;Y(function(){I(l,0)})}}}function F(e){return!(!X.config.appendTo||!X.config.appendTo.contains(e))||X.calendarContainer.contains(e)}function L(e){if(X.isOpen&&!X.config.inline){var t=F(e.target),n=e.target===X.input||e.target===X.altInput||X.element.contains(e.target)||e.path&&e.path.indexOf&&(~e.path.indexOf(X.input)||~e.path.indexOf(X.altInput));("blur"===e.type?n&&e.relatedTarget&&!F(e.relatedTarget):!n&&!t)&&-1===X.config.ignoredFocusElements.indexOf(e.target)&&(X.close(),"range"===X.config.mode&&1===X.selectedDates.length&&(X.clear(!1),X.redraw()))}}function A(e){if(!(!e||X.currentYearElement.min&&eparseInt(X.currentYearElement.max))){var t=e,n=X.currentYear!==t;X.currentYear=t||X.currentYear,X.config.maxDate&&X.currentYear===X.config.maxDate.getFullYear()?X.currentMonth=Math.min(X.config.maxDate.getMonth(),X.currentMonth):X.config.minDate&&X.currentYear===X.config.minDate.getFullYear()&&(X.currentMonth=Math.max(X.config.minDate.getMonth(),X.currentMonth)),n&&(X.redraw(),z("onYearChange"))}}function j(t,n){void 0===n&&(n=!0);var a=X.parseDate(t,void 0,n);if(X.config.minDate&&a&&e(a,X.config.minDate,void 0!==n?n:!X.minDateHasTime)<0||X.config.maxDate&&a&&e(a,X.config.maxDate,void 0!==n?n:!X.maxDateHasTime)>0)return!1;if(!X.config.enable.length&&!X.config.disable.length)return!0;if(void 0===a)return!1;for(var i=X.config.enable.length>0,o=i?X.config.enable:X.config.disable,r=0,l=void 0;r=l.from.getTime()&&a.getTime()<=l.to.getTime())return i}return!i}function H(e){var t=e.target===X._input,n=F(e.target),a=X.config.allowInput,i=X.isOpen&&(!a||!t),o=X.config.inline&&t&&!a;if("Enter"===e.key&&t){if(a)return X.setDate(X._input.value,!0,e.target===X.altInput?X.config.altFormat:X.config.dateFormat),e.target.blur();X.open()}else if(n||i||o){var r=!!X.timeContainer&&X.timeContainer.contains(e.target);switch(e.key){case"Enter":r?Q():K(e);break;case"Escape":e.preventDefault(),X.close();break;case"Backspace":case"Delete":t&&!X.config.allowInput&&X.clear();break;case"ArrowLeft":case"ArrowRight":if(r)X.hourElement&&X.hourElement.focus();else if(e.preventDefault(),X.daysContainer){var l="ArrowRight"===e.key?1:-1;e.ctrlKey?P(l,!0,void 0,!0):I(e.target.$i,l)}break;case"ArrowUp":case"ArrowDown":e.preventDefault();var c="ArrowDown"===e.key?1:-1;X.daysContainer&&void 0!==e.target.$i?e.ctrlKey?(A(X.currentYear-c),I(e.target.$i,0)):r||I(e.target.$i,7*c):X.config.enableTime&&(!r&&X.hourElement&&X.hourElement.focus(),p(e),X._debouncedChange());break;case"Tab":e.target===X.hourElement?(e.preventDefault(),X.minuteElement.select()):e.target===X.minuteElement&&(X.secondElement||X.amPM)?(e.preventDefault(),void 0!==X.secondElement?X.secondElement.focus():void 0!==X.amPM&&X.amPM.focus()):e.target===X.secondElement&&X.amPM&&(e.preventDefault(),X.amPM.focus());break;case X.l10n.amPM[0].charAt(0):void 0!==X.amPM&&e.target===X.amPM&&(X.amPM.textContent=X.l10n.amPM[0],w(),Q());break;case X.l10n.amPM[1].charAt(0):void 0!==X.amPM&&e.target===X.amPM&&(X.amPM.textContent=X.l10n.amPM[1],w(),Q())}z("onKeyDown",e)}}function R(e){if(1===X.selectedDates.length&&e.classList.contains("flatpickr-day")&&void 0!==X.minRangeDate&&void 0!==X.maxRangeDate){for(var t=e.dateObj,n=X.parseDate(X.selectedDates[0],void 0,!0),a=Math.min(t.getTime(),X.selectedDates[0].getTime()),i=Math.max(t.getTime(),X.selectedDates[0].getTime()),o=!1,r=a;rX.maxRangeDate.getTime(),s=X.days.childNodes[r];if(d)return s.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(e){s.classList.remove(e)}),"continue";if(o&&!d)return"continue";["startRange","inRange","endRange","notAllowed"].forEach(function(e){s.classList.remove(e)});var u=Math.max(X.minRangeDate.getTime(),a),f=Math.min(X.maxRangeDate.getTime(),i);e.classList.add(tt&&c===n.getTime()&&s.classList.add("endRange"),c>=u&&c<=f&&s.classList.add("inRange")}(l,c)}}function W(e){return function(t){var n=X.config["_"+e+"Date"]=X.parseDate(t),a=X.config["_"+("min"===e?"max":"min")+"Date"];void 0!==n&&(X["min"===e?"minDateHasTime":"maxDateHasTime"]=n.getHours()>0||n.getMinutes()>0||n.getSeconds()>0),X.selectedDates&&(X.selectedDates=X.selectedDates.filter(function(e){return j(e)}),X.selectedDates.length||"min"!==e||M(n),Q()),X.daysContainer&&(J(),void 0!==n?X.currentYearElement[e]=n.getFullYear().toString():X.currentYearElement.removeAttribute(e),X.currentYearElement.disabled=!!a&&void 0!==n&&a.getFullYear()===n.getFullYear())}}function B(e){if(void 0===e&&(e=X._positionElement),void 0!==X.calendarContainer){var t=X.calendarContainer.offsetHeight,a=X.calendarContainer.offsetWidth,i=X.config.position,o=e.getBoundingClientRect(),r=window.innerHeight-o.bottom,l="above"===i||"below"!==i&&rt,c=window.pageYOffset+o.top+(l?-t-2:e.offsetHeight+2);if(n(X.calendarContainer,"arrowTop",!l),n(X.calendarContainer,"arrowBottom",l),!X.config.inline){var d=window.pageXOffset+o.left,s=window.document.body.offsetWidth-o.right,u=d+a>window.document.body.offsetWidth;n(X.calendarContainer,"rightMost",u),X.config.static||(X.calendarContainer.style.top=c+"px",u?(X.calendarContainer.style.left="auto",X.calendarContainer.style.right=s+"px"):(X.calendarContainer.style.left=d+"px",X.calendarContainer.style.right="auto"))}}}function J(){X.config.noCalendar||X.isMobile||(O(),Z(),_())}function K(t){t.preventDefault(),t.stopPropagation();var n=i(t.target,function(e){return e.classList&&e.classList.contains("flatpickr-day")&&!e.classList.contains("disabled")&&!e.classList.contains("notAllowed")});if(void 0!==n){var a=n,o=X.latestSelectedDateObj=new Date(a.dateObj.getTime()),r=o.getMonth()!==X.currentMonth&&"range"!==X.config.mode;if(X.selectedDateElem=a,"single"===X.config.mode)X.selectedDates=[o];else if("multiple"===X.config.mode){var l=V(o);l?X.selectedDates.splice(parseInt(l),1):X.selectedDates.push(o)}else"range"===X.config.mode&&(2===X.selectedDates.length&&X.clear(),X.selectedDates.push(o),0!==e(o,X.selectedDates[0],!0)&&X.selectedDates.sort(function(e,t){return e.getTime()-t.getTime()}));if(w(),r){var c=X.currentYear!==o.getFullYear();X.currentYear=o.getFullYear(),X.currentMonth=o.getMonth(),c&&z("onYearChange"),z("onMonthChange")}if(_(),X.config.minDate&&X.minDateHasTime&&X.config.enableTime&&0===e(o,X.config.minDate)&&M(X.config.minDate),Q(),X.config.enableTime&&setTimeout(function(){return X.showTimeInput=!0},50),"range"===X.config.mode&&(1===X.selectedDates.length?(R(a),X._hidePrevMonthArrow=X._hidePrevMonthArrow||void 0!==X.minRangeDate&&X.minRangeDate>X.days.childNodes[0].dateObj,X._hideNextMonthArrow=X._hideNextMonthArrow||void 0!==X.maxRangeDate&&X.maxRangeDate0)for(var a=0;n[a]&&aX.config.maxDate.getMonth():X.currentYear>X.config.maxDate.getFullYear()))}function Q(e){if(void 0===e&&(e=!0),!X.selectedDates.length)return X.clear(e);void 0!==X.mobileInput&&X.mobileFormatStr&&(X.mobileInput.value=void 0!==X.latestSelectedDateObj?X.formatDate(X.latestSelectedDateObj,X.mobileFormatStr):"");var t="range"!==X.config.mode?X.config.conjunction:X.l10n.rangeSeparator;X.input.value=X.selectedDates.map(function(e){return X.formatDate(e,X.config.dateFormat)}).join(t),void 0!==X.altInput&&(X.altInput.value=X.selectedDates.map(function(e){return X.formatDate(e,X.config.altFormat)}).join(t)),!1!==e&&z("onValueUpdate")}var X={};return X.parseDate=q,X.formatDate=function(e,t){return void 0!==X.config&&void 0!==X.config.formatDate?X.config.formatDate(e,t):t.split("").map(function(t,n,a){return D[t]&&"\\"!==a[n-1]?D[t](e,X.l10n,X.config):"\\"!==t?t:""}).join("")},X._animationLoop=[],X._handlers=[],X._bind=y,X._setHoursFromDate=M,X.changeMonth=P,X.changeYear=A,X.clear=function(e){void 0===e&&(e=!0),X.input.value="",X.altInput&&(X.altInput.value=""),X.mobileInput&&(X.mobileInput.value=""),X.selectedDates=[],X.latestSelectedDateObj=void 0,X.showTimeInput=!1,X.redraw(),e&&z("onChange")},X.close=function(){X.isOpen=!1,X.isMobile||(X.calendarContainer.classList.remove("open"),X._input.classList.remove("active")),z("onClose")},X._createElement=a,X.destroy=function(){void 0!==X.config&&z("onDestroy");for(var e=X._handlers.length;e--;){var t=X._handlers[e];t.element.removeEventListener(t.event,t.handler)}X._handlers=[],X.mobileInput?(X.mobileInput.parentNode&&X.mobileInput.parentNode.removeChild(X.mobileInput),X.mobileInput=void 0):X.calendarContainer&&X.calendarContainer.parentNode&&X.calendarContainer.parentNode.removeChild(X.calendarContainer),X.altInput&&(X.input.type="text",X.altInput.parentNode&&X.altInput.parentNode.removeChild(X.altInput),delete X.altInput),X.input&&(X.input.type=X.input._type,X.input.classList.remove("flatpickr-input"),X.input.removeAttribute("readonly"),X.input.value=""),["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(e){try{delete X[e]}catch(e){}})},X.isEnabled=j,X.jumpToDate=k,X.open=function(e,t){if(void 0===t&&(t=X._input),X.isMobile)return e&&(e.preventDefault(),e.target&&e.target.blur()),setTimeout(function(){void 0!==X.mobileInput&&X.mobileInput.click()},0),void z("onOpen");if(!X._input.disabled&&!X.config.inline){var n=X.isOpen;X.isOpen=!0,B(t),X.calendarContainer.classList.add("open"),X._input.classList.add("active"),!n&&z("onOpen")}},X.redraw=J,X.set=function(e,t){null!==e&&"object"==typeof e?Object.assign(X.config,e):X.config[e]=t,X.redraw(),k()},X.setDate=function(e,t,n){if(void 0===t&&(t=!1),0!==e&&!e)return X.clear(t);U(e,n),X.showTimeInput=X.selectedDates.length>0,X.latestSelectedDateObj=X.selectedDates[0],X.redraw(),k(),M(),Q(t),t&&z("onChange")},X.toggle=function(){if(X.isOpen)return X.close();X.open()},function(){X.element=X.input=r,X.isOpen=!1,function(){var e=["wrap","weekNumbers","allowInput","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],t=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange"];X.config=l({},C.defaultConfig);var n=l({},s,JSON.parse(JSON.stringify(r.dataset||{}))),a={};for(Object.defineProperty(X.config,"enable",{get:function(){return X.config._enable||[]},set:function(e){X.config._enable=$(e)}}),Object.defineProperty(X.config,"disable",{get:function(){return X.config._disable||[]},set:function(e){X.config._disable=$(e)}}),!n.dateFormat&&n.enableTime&&(a.dateFormat=n.noCalendar?"H:i"+(n.enableSeconds?":S":""):C.defaultConfig.dateFormat+" H:i"+(n.enableSeconds?":S":"")),n.altInput&&n.enableTime&&!n.altFormat&&(a.altFormat=n.noCalendar?"h:i"+(n.enableSeconds?":S K":" K"):C.defaultConfig.altFormat+" h:i"+(n.enableSeconds?":S":"")+" K"),Object.defineProperty(X.config,"minDate",{get:function(){return X.config._minDate},set:W("min")}),Object.defineProperty(X.config,"maxDate",{get:function(){return X.config._maxDate},set:W("max")}),Object.assign(X.config,a,n),i=0;iX.now.getTime()?X.config.minDate:X.config.maxDate&&X.config.maxDate.getTime()0||X.config.minDate.getMinutes()>0||X.config.minDate.getSeconds()>0),X.maxDateHasTime=!!X.config.maxDate&&(X.config.maxDate.getHours()>0||X.config.maxDate.getMinutes()>0||X.config.maxDate.getSeconds()>0),Object.defineProperty(X,"showTimeInput",{get:function(){return X._showTimeInput},set:function(e){X._showTimeInput=e,X.calendarContainer&&n(X.calendarContainer,"showTimeInput",e),B()}})}(),X.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=X.currentMonth),void 0===t&&(t=X.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:X.l10n.daysInMonth[e]}},X.isMobile||function(){var e=window.document.createDocumentFragment();if(X.calendarContainer=a("div","flatpickr-calendar"),X.calendarContainer.tabIndex=-1,!X.config.noCalendar){if(e.appendChild(function(){var e=window.document.createDocumentFragment();X.monthNav=a("div","flatpickr-month"),X.prevMonthNav=a("span","flatpickr-prev-month"),X.prevMonthNav.innerHTML=X.config.prevArrow,X.currentMonthElement=a("span","cur-month"),X.currentMonthElement.title=X.l10n.scrollTitle;var t=o("cur-year");return X.currentYearElement=t.childNodes[0],X.currentYearElement.title=X.l10n.scrollTitle,X.config.minDate&&(X.currentYearElement.min=X.config.minDate.getFullYear().toString()),X.config.maxDate&&(X.currentYearElement.max=X.config.maxDate.getFullYear().toString(),X.currentYearElement.disabled=!!X.config.minDate&&X.config.minDate.getFullYear()===X.config.maxDate.getFullYear()),X.nextMonthNav=a("span","flatpickr-next-month"),X.nextMonthNav.innerHTML=X.config.nextArrow,X.navigationCurrentMonth=a("div","flatpickr-current-month"),X.navigationCurrentMonth.appendChild(X.currentMonthElement),X.navigationCurrentMonth.appendChild(t),e.appendChild(X.prevMonthNav),e.appendChild(X.navigationCurrentMonth),e.appendChild(X.nextMonthNav),X.monthNav.appendChild(e),Object.defineProperty(X,"_hidePrevMonthArrow",{get:function(){return X.__hidePrevMonthArrow},set:function(e){X.__hidePrevMonthArrow!==e&&(X.prevMonthNav.style.display=e?"none":"block"),X.__hidePrevMonthArrow=e}}),Object.defineProperty(X,"_hideNextMonthArrow",{get:function(){return X.__hideNextMonthArrow},set:function(e){X.__hideNextMonthArrow!==e&&(X.nextMonthNav.style.display=e?"none":"block"),X.__hideNextMonthArrow=e}}),Z(),X.monthNav}()),X.innerContainer=a("div","flatpickr-innerContainer"),X.config.weekNumbers){var t=function(){X.calendarContainer.classList.add("hasWeeks");var e=a("div","flatpickr-weekwrapper");e.appendChild(a("span","flatpickr-weekday",X.l10n.weekAbbreviation));var t=a("div","flatpickr-weeks");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),i=t.weekWrapper,r=t.weekNumbers;X.innerContainer.appendChild(i),X.weekNumbers=r,X.weekWrapper=i}X.rContainer=a("div","flatpickr-rContainer"),X.rContainer.appendChild(O()),X.daysContainer||(X.daysContainer=a("div","flatpickr-days"),X.daysContainer.tabIndex=-1),_(),X.rContainer.appendChild(X.daysContainer),X.innerContainer.appendChild(X.rContainer),e.appendChild(X.innerContainer)}X.config.enableTime&&e.appendChild(function(){X.calendarContainer.classList.add("hasTime"),X.config.noCalendar&&X.calendarContainer.classList.add("noCalendar"),X.timeContainer=a("div","flatpickr-time"),X.timeContainer.tabIndex=-1;var e=a("span","flatpickr-time-separator",":"),t=o("flatpickr-hour");X.hourElement=t.childNodes[0];var n=o("flatpickr-minute");if(X.minuteElement=n.childNodes[0],X.hourElement.tabIndex=X.minuteElement.tabIndex=-1,X.hourElement.value=f(X.latestSelectedDateObj?X.latestSelectedDateObj.getHours():X.config.time_24hr?X.config.defaultHour:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(X.config.defaultHour)),X.minuteElement.value=f(X.latestSelectedDateObj?X.latestSelectedDateObj.getMinutes():X.config.defaultMinute),X.hourElement.step=X.config.hourIncrement.toString(),X.minuteElement.step=X.config.minuteIncrement.toString(),X.hourElement.min=X.config.time_24hr?"0":"1",X.hourElement.max=X.config.time_24hr?"23":"12",X.minuteElement.min="0",X.minuteElement.max="59",X.hourElement.title=X.minuteElement.title=X.l10n.scrollTitle,X.timeContainer.appendChild(t),X.timeContainer.appendChild(e),X.timeContainer.appendChild(n),X.config.time_24hr&&X.timeContainer.classList.add("time24hr"),X.config.enableSeconds){X.timeContainer.classList.add("hasSeconds");var i=o("flatpickr-second");X.secondElement=i.childNodes[0],X.secondElement.value=f(X.latestSelectedDateObj?X.latestSelectedDateObj.getSeconds():X.config.defaultSeconds),X.secondElement.step=X.minuteElement.step,X.secondElement.min=X.minuteElement.min,X.secondElement.max=X.minuteElement.max,X.timeContainer.appendChild(a("span","flatpickr-time-separator",":")),X.timeContainer.appendChild(i)}return X.config.time_24hr||(X.amPM=a("span","flatpickr-am-pm",X.l10n.amPM[m((X.latestSelectedDateObj?X.hourElement.value:X.config.defaultHour)>11)]),X.amPM.title=X.l10n.toggleTitle,X.amPM.tabIndex=-1,X.timeContainer.appendChild(X.amPM)),X.timeContainer}()),n(X.calendarContainer,"rangeMode","range"===X.config.mode),n(X.calendarContainer,"animate",X.config.animate),X.calendarContainer.appendChild(e);var l=void 0!==X.config.appendTo&&X.config.appendTo.nodeType;if((X.config.inline||X.config.static)&&(X.calendarContainer.classList.add(X.config.inline?"inline":"static"),X.config.inline&&(!l&&X.element.parentNode?X.element.parentNode.insertBefore(X.calendarContainer,X._input.nextSibling):void 0!==X.config.appendTo&&X.config.appendTo.appendChild(X.calendarContainer)),X.config.static)){var c=a("div","flatpickr-wrapper");X.element.parentNode&&X.element.parentNode.insertBefore(c,X.element),c.appendChild(X.element),X.altInput&&c.appendChild(X.altInput),c.appendChild(X.calendarContainer)}X.config.static||X.config.inline||(void 0!==X.config.appendTo?X.config.appendTo:window.document.body).appendChild(X.calendarContainer)}(),function(){if(X.config.wrap&&["open","close","toggle","clear"].forEach(function(e){Array.prototype.forEach.call(X.element.querySelectorAll("[data-"+e+"]"),function(t){return y(t,"click",X[e])})}),X.isMobile)!function(){var e=X.config.enableTime?X.config.noCalendar?"time":"datetime-local":"date";X.mobileInput=a("input",X.input.className+" flatpickr-mobile"),X.mobileInput.step=X.input.getAttribute("step")||"any",X.mobileInput.tabIndex=1,X.mobileInput.type=e,X.mobileInput.disabled=X.input.disabled,X.mobileInput.placeholder=X.input.placeholder,X.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",X.selectedDates.length&&(X.mobileInput.defaultValue=X.mobileInput.value=X.formatDate(X.selectedDates[0],X.mobileFormatStr)),X.config.minDate&&(X.mobileInput.min=X.formatDate(X.config.minDate,"Y-m-d")),X.config.maxDate&&(X.mobileInput.max=X.formatDate(X.config.maxDate,"Y-m-d")),X.input.type="hidden",void 0!==X.altInput&&(X.altInput.type="hidden");try{X.input.parentNode&&X.input.parentNode.insertBefore(X.mobileInput,X.input.nextSibling)}catch(e){}y(X.mobileInput,"change",function(e){X.setDate(e.target.value,!1,X.mobileFormatStr),z("onChange"),z("onClose")})}();else{var e=t(function(){!X.isOpen||X.config.static||X.config.inline||B()},50);X._debouncedChange=t(E,300),"range"===X.config.mode&&X.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&y(X.daysContainer,"mouseover",function(e){return R(e.target)}),y(window.document.body,"keydown",H),X.config.static||y(X._input,"keydown",H),X.config.inline||X.config.static||y(window,"resize",e),void 0!==window.ontouchstart&&y(window.document.body,"touchstart",L),y(window.document.body,"mousedown",x(L)),y(X._input,"blur",L),!0===X.config.clickOpens&&(y(X._input,"focus",X.open),y(X._input,"mousedown",x(X.open))),void 0!==X.daysContainer&&(X.monthNav.addEventListener("wheel",function(e){return e.preventDefault()}),y(X.monthNav,"wheel",t(function(e){e.preventDefault();var t=X.currentYearElement.parentNode&&X.currentYearElement.parentNode.contains(e.target);if(e.target===X.currentMonthElement||t){var n=function(e){return(e.wheelDelta||-e.deltaY)>=0?1:-1}(e);t?(A(X.currentYear+n),e.target.value=X.currentYear.toString()):X.changeMonth(n,!0,!1)}},10)),y(X.monthNav,"mousedown",x(function(e){var t=X.prevMonthNav.contains(e.target),n=X.nextMonthNav.contains(e.target);t||n?P(t?-1:1):e.target===X.currentYearElement?(e.preventDefault(),X.currentYearElement.select()):"arrowUp"===e.target.className?X.changeYear(X.currentYear+1):"arrowDown"===e.target.className&&X.changeYear(X.currentYear-1)})),y(X.monthNav,["keyup","increment"],function(e){var t=parseInt(e.target.value)+(e.delta||0);4!==t.toString().length&&"Enter"!==e.key||(X.currentYearElement.blur(),/[^\d]/.test(t.toString())||A(t))}),y(X.daysContainer,"mousedown",x(K)),X.config.animate&&(y(X.daysContainer,["webkitAnimationEnd","animationend"],function(e){if(X.daysContainer&&X.daysContainer.childNodes.length>1)switch(e.animationName){case"fpSlideLeft":X.daysContainer.lastChild&&X.daysContainer.lastChild.classList.remove("slideLeftNew"),X.daysContainer.removeChild(X.daysContainer.firstChild),X.days=X.daysContainer.firstChild,N();break;case"fpSlideRight":X.daysContainer.firstChild&&X.daysContainer.firstChild.classList.remove("slideRightNew"),X.daysContainer.removeChild(X.daysContainer.lastChild),X.days=X.daysContainer.firstChild,N()}}),y(X.monthNav,["webkitAnimationEnd","animationend"],function(e){switch(e.animationName){case"fpSlideLeftNew":case"fpSlideRightNew":X.navigationCurrentMonth.classList.remove("slideLeftNew"),X.navigationCurrentMonth.classList.remove("slideRightNew");for(var t=X.navigationCurrentMonth;t.nextSibling&&/curr/.test(t.nextSibling.className);)X.monthNav.removeChild(t.nextSibling);for(;t.previousSibling&&/curr/.test(t.previousSibling.className);)X.monthNav.removeChild(t.previousSibling);X.oldCurMonth=void 0}}))),void 0!==X.timeContainer&&void 0!==X.minuteElement&&void 0!==X.hourElement&&(y(X.timeContainer,["wheel","input","increment"],p),y(X.timeContainer,"mousedown",x(function(e){~e.target.className.indexOf("arrow")&&S(e,e.target.classList.contains("arrowUp")?1:-1)})),y(X.timeContainer,["wheel","increment"],X._debouncedChange),y(X.timeContainer,"input",E),y([X.hourElement,X.minuteElement],["focus","click"],function(e){return e.target.select()}),void 0!==X.secondElement&&y(X.secondElement,"focus",function(){return X.secondElement&&X.secondElement.select()}),void 0!==X.amPM&&y(X.amPM,"mousedown",x(function(e){p(e),E()})))}}(),(X.selectedDates.length||X.config.noCalendar)&&(X.config.enableTime&&M(X.config.noCalendar?X.latestSelectedDateObj||X.config.minDate:void 0),Q(!1)),X.showTimeInput=X.selectedDates.length>0||X.config.noCalendar,void 0!==X.weekWrapper&&void 0!==X.daysContainer&&(X.calendarContainer.style.width=X.daysContainer.offsetWidth+X.weekWrapper.offsetWidth+"px"),X.isMobile||B(),z("onReady")}(),X}(M,s||{}),p.push(M._flatpickr)}catch(e){console.error(e)}}return 1===p.length?p[0]:p}var l=Object.assign||function(e){for(var t,n=1,a=arguments.length;n",noCalendar:!1,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"",shorthandCurrentMonth:!1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},u={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"]},f=function(e){return("0"+e).slice(-2)},m=function(e){return!0===e?1:0},g=function(e){return e instanceof Array?e:[e]},p=function(){},h={D:p,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours(parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*m(new RegExp(n.amPM[1],"i").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t){var n=parseInt(t);return new Date(e.getFullYear(),0,2+7*(n-1),0,0,0,0)},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours(parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:p,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},w:p,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},v={D:"(\\w+)",F:"(\\w+)",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"(\\w+)",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"(\\w+)",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},D={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[D.w(e,t,n)]},F:function(e,t,n){return c(D.n(e,t,n)-1,!1,t)},G:function(e,t,n){return f(D.h(e,t,n))},H:function(e){return f(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[m(e.getHours()>11)]},M:function(e,t){return c(e.getMonth(),!0,t)},S:function(e){return f(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return e.getFullYear()},d:function(e){return f(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return f(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return f(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}};"function"!=typeof Object.assign&&(Object.assign=function(e){for(var t=[],n=1;n Um Guia Simples para Apostas Laterais de Casino - Surol
regulamentado My Empire Casino bónus mensal banner promocional
top My Empire Casino casino online anúncio

Existe algo que converte uma sessão de casino online numa experiência emocionante: as apostas secundárias. Estas apostas extras , colocadas ao lado da aposta principal, ampliam os seus ganhos de forma impressionante e adicionam uma camada de emoção a jogos clássicos como blackjack, roleta e baccarat. No My Empire Casino, possuímos uma seleção impressionante de mesas com apostas secundárias, tanto no casino ao vivo como nos jogos de mesa virtuais, e queremos partilhar consigo tudo o que deve saber para tirar o máximo partido delas. Este guia explicar-lhe-á o que são, como funcionam, quais as mais populares e como integrá-las na sua estratégia de jogo de forma sensata e divertida. Esteja preparado para vivenciar um novo nível de adrenalina.

Em Que Consistem Apostas Secundárias e De Que Forma Funcionam?

Uma aposta secundária é uma aposta extra que corre em paralelo com a aposta principal em múltiplos jogos de mesa. Ao passo que a aposta base respeita as regras normais do jogo, a aposta secundária é resolvida de forma independente e baseia-se em combinações específicas de cartas ou em desfechos específicos. No blackjack, a popular aposta Perfect Pairs oferece retorno se as suas duas primeiras cartas formarem um par, à parte de ganhar ou perder a mão principal contra o dealer. Cada aposta secundária tem a sua própria tabela de pagamentos e uma vantagem da casa diferente. A decisão de a efetuar não afeta a estratégia básica do jogo principal, mas acrescenta uma dose extra de suspense a cada ronda.

As apostas secundárias estão acessíveis numa grande variedade de jogos, desde os clássicos de mesa às versões mais inovadoras com dealer ao vivo. No My Empire Casino, oferecemos um leque diversificado de títulos que abrangem estas opções, permitindo-lhe experimentar diferentes dinâmicas sem sair da mesma plataforma. A chave para desfrutar destas apostas é entender as regras e os pagamentos antes de investir. Nas próximas secções, vamos analisar as apostas secundárias mais comuns, descrever como afetam a sua banca e mostrar como pode incorporá-las na sua sessão de jogo com confiança.

O Papel das Apostas Laterais no Cassino ao Vivo

Os jogos de crupiê ao vivo levaram as apostas laterais a um novo nível. O contato com distribuidores reais e com outros jogadores, quando coloca as suas side bets, acrescenta uma vertente social que as mesas online não são capazes de replicar. No My Empire Casino, o nosso salão ao vivo é abastecido por desenvolvedores de renome como Evolution Gaming e Pragmatic Play, com mesas exclusivas a apostas secundárias conhecidas como Lightning Blackjack e Infinite Blackjack. Cada ronda ganha vida com transmissão em alta definição.

Na roleta ao vivo, apostas secundárias como “Hot Numbers” ou os bónus especiais da Lightning Roulette produzem uma ambição dinâmica e inesperada. O chat ao vivo permite-lhe festejar uma vitória expressiva numa side bet com o dealer e os restantes participantes, tornando cada momento inesquecível. A experiência é imersiva. Com a conveniência de jogar de casa em Portugal, tem a sensação de estar num casino físico de luxo. No My Empire Casino, a tecnologia avançada e a estabilidade da transmissão asseguram a melhor experiência, para que nada o desvie da excitação das suas apostas secundárias favoritas.

Apostas Laterais Noutros Jogos de Casino: Roda da Fortuna, Baccarat e Póquer

As side bets não são reservadas do blackjack. Na roleta, apesar de as apostas convencionais como vizinhos e órfãs sejam habituais, as reais side bets ganham vida em versões como a Lightning Roulette, onde consegue apostar em números diretos e obter multiplicadores imprevisíveis até 500x. No baccarat, as apostas Dragon Bonus e Panda 8 gratificam margens vencedoras específicas ou combinações de cartas, proporcionando pagamentos que podem ultrapassar 30:1. Estas escolhas alteram jogos por natureza emocionantes em aventuras ainda mais imprevisíveis e gratificantes.

Os jogos de mesa fundados em póquer também proporcionam extraordinárias oportunidades. No Three Card Poker, a aposta Pair Plus paga se a sua mão incluir um par ou mais alto, sem depender do dealer, com prémios que alcançam 40:1 por um straight flush. O Caribbean Stud Poker contém uma aposta secundária progressiva que é capaz de acionar jackpots substanciais. No My Empire Casino, a nossa seleção integra todas estas variantes, permitindo-lhe alternar entre variados estilos de apostas secundárias com simplicidade. A multiplicidade é um dos nossos principais trunfos. Convidamos você a percorrer cada canto da nossa seleção para identificar a sua side bet preferida.

mais recente My Empire Casino rodadas bónus oferta

As Apostas Secundárias Mais Famosas no Blackjack

O blackjack é o mestre das apostas secundárias. Em praticamente todas as variantes modernas, vai achar espaços dedicados no layout da mesa para posicionar fichas extra antes de as cartas serem distribuídas. As mais conhecidas incluem Perfect Pairs, 21+3 e Insurance, cada uma com as suas próprias regras e potencial de pagamento. No My Empire Casino, fornecemos múltiplas mesas de blackjack, virtuais e ao vivo, onde estas apostas estão integradas de forma intuitiva. Pode adicionar emoção a cada mão com apenas um clique.

  • Perfect Pairs: Oferece se as suas duas primeiras cartas constituírem um par. Par misto (cores diferentes) paga 5:1, par colorido (mesma cor, naipes diferentes) paga 10:1, par perfeito (mesmo naipe) paga 30:1.
  • 21+3: Combina as suas duas cartas com a carta visível do dealer para criar uma mão de póquer de três cartas. Sequência, flush, trio e straight flush premiam prémios que podem alcançar a 100:1.
  • Insurance: Aposta de seguro contra um blackjack do dealer quando ele revela um Ás. Paga 2:1, mas tem uma vantagem da casa elevada, pelo que deve ser usada com moderação.
  • Bet Behind: Possibilita apostar na mão de outro jogador, comum em mesas ao vivo com lugares limitados. Poderá incluir apostas secundárias associadas, expandindo as suas opções.

Estas apostas são tentadoras, mas a vantagem da casa é geralmente mais alta do que na aposta principal de blackjack. O Perfect Pairs pode ter uma margem entre 2% e 8%, dependendo da tabela de pagamentos, enquanto a mão base com estratégia básica fica abaixo de 0,5%. Recomendamos que veja estas apostas como um extra divertido, destinando uma pequena fração da sua banca para elas. No My Empire Casino, pode testá-las com limites mínimos acessíveis, perfeitos para se familiarizar com a mecânica sem comprometer o saldo principal.

Como Encontrar as Maiores Opções de Apostas Secundárias no My Empire Casino

Navegar na nossa plataforma é simples e direto. Recorra a barra de pesquisa ou os filtros por categoria, como “Blackjack” ou “Roleta”, para identificar rapidamente jogos que incluam apostas secundárias. Procure títulos que mencionem “Perfect Pairs”, “21+3”, “Lightning” ou “Dragon Bonus” — são sinais claros de que a diversão extra está garantida. A nossa coleção é revista regularmente com novos lançamentos, por isso há sempre algo novo para experimentar. Ainda pode tirar partido do nosso generoso bónus de boas-vindas, que muitas vezes pode ser aproveitado em jogos de mesa, dando-lhe fundos adicionais para explorar as side bets sem pressa.

Depositar é veloz e seguro, com métodos amplamente utilizados em Portugal, como Multibanco, MB Way, cartões Visa e Mastercard, Skrill, Neteller e transferência bancária. Os levantamentos são efetuados de forma eficaz, normalmente num prazo de 24 a 72 horas, dependendo do método escolhido. Todo o site está adaptado para dispositivos móveis, permitindo-lhe fazer as suas apostas secundárias favoritas no smartphone ou tablet, a qualquer hora e em qualquer lugar. A segurança é uma preocupação: operamos sob uma licença de jogo reconhecida e utilizamos encriptação SSL para proteger todos os seus dados. Dedique-se apenas na emoção do jogo.

O Impacto das Apostas Secundárias na Banca e na Estratégia

É crucial perceber que as apostas secundárias têm, em regra, uma vantagem da casa superior à do jogo principal. Enquanto uma mão de blackjack disputada com estratégia básica pode apresentar uma margem inferior a 0,5%, uma aposta Perfect Pairs pode atingir os 5,9%. Isto significa que, a longo prazo, a possibilidade de perda é maior nestas apostas. Ainda assim, elas dão a oportunidade de ganhos rápidos e significativos que podem aumentar a sua sessão. A nossa filosofia é clara: trate as side bets como entretenimento genuíno, nunca como uma estratégia fiável para gerar lucro consistente.

Uma abordagem inteligente implica separar uma pequena parte da sua banca exclusivamente para apostas secundárias. Se definir um orçamento de 100 euros para a sessão, pode destinar 10 euros para as side bets, distribuindo esse montante por várias rondas. Desta forma, salvaguarda o seu capital principal enquanto usufrui da emoção adicional. No novos slots casino my empire, promovemos o jogo informado e disponibilizamos ferramentas de gestão de limites, como limites de depósito e de sessão, para que a diversão se mantenha sempre dentro do controlo. Desejamos que cada aposta secundária seja um momento de pura adrenalina, sem surpresas desagradáveis.

Jogo Seguro e Apostas Adicionais: Desfrute da Excitação Adicional com Proteção

As side bets são extremamente empolgantes, mas manter o controle em cada jogada é essencial. No My Empire Casino, levamos o jogo responsável a sério e oferecemos várias ferramentas para o apoiar a manter hábitos saudáveis. É possível definir limites de depósito por dia, por semana ou mês, ativar verificações de realidade que o informam sobre a duração da sessão e, se necessário, pedir períodos de autoexclusão. Antes de explorar as apostas secundárias, aconselhamos que crie um limite financeiro definido e que jamais o exceda, não importa o desfecho.

Não se esqueça: as apostas adicionais são um complemento divertido, não uma forma de ganhar dinheiro. A percentagem da casa é genuína e as vitórias, embora alcançáveis, não são certas. Jogue de forma moderada, faça pausas regulares e, se notar que o jogo já não é prazeroso, recorra a suporte. No My Empire Casino, pretendemos que cada momento seja seguro e agradável, onde a excitação das apostas adicionais se permanece sempre no âmbito do lazer. A sua proteção e conforto são a prioridade máxima, para que possa desfrutar de cada ronda com total tranquilidade.

SUROL is a non-profit organization that has been in operation since 1971. We reach out to the most marginalized group of people in society.
Get In Touch
Support
No one has ever become poor by giving. Join us today and be a part of our mission.
SUROL is a non-profit organization that has been in operation since 1971. We reach out to the most marginalized group of people in society.
Get In Touch
Support
No one has ever become poor by giving. Join us today and be a part of our mission.
@ Copyright 2025 surol All rights reserved