(() => {
    var e = {
        491: function(e) {
            (function() {
                var t, r, n;
                "undefined" != typeof performance && null !== performance && performance.now ? e.exports = function() {
                    return performance.now()
                } : "undefined" != typeof process && null !== process && process.hrtime ? (e.exports = function() {
                    return (t() - n) / 1e6
                }, r = process.hrtime, n = (t = function() {
                    var e;
                    return 1e9 * (e = r())[0] + e[1]
                })()) : Date.now ? (e.exports = function() {
                    return Date.now() - n
                }, n = Date.now()) : (e.exports = function() {
                    return (new Date).getTime() - n
                }, n = (new Date).getTime())
            }).call(this)
        },
        287: (e, t, r) => {
            "use strict";
            Object.defineProperty(t, "__esModule", {
                value: !0
            }), t.default = function(e) {
                var t = void 0,
                    r = void 0;
                return {
                    fn: function() {
                        for (var n = arguments.length, a = Array(n), i = 0; i < n; i++) a[i] = arguments[i];
                        r || (r = o.default(function() {
                            r = null, e.apply(void 0, function(e) {
                                if (Array.isArray(e)) {
                                    for (var t = 0, r = Array(e.length); t < e.length; t++) r[t] = e[t];
                                    return r
                                }
                                return Array.from(e)
                            }(t))
                        })), t = a
                    },
                    cancel: function() {
                        r && o.default.cancel(r)
                    }
                }
            };
            var n, o = (n = r(146)) && n.__esModule ? n : {
                default: n
            };
            e.exports = t.default
        },
        146: (e, t, r) => {
            for (var n = r(491), o = "undefined" == typeof window ? {} : window, a = ["moz", "webkit"], i = "AnimationFrame", l = o["request" + i], u = o["cancel" + i] || o["cancelRequest" + i], c = !0, f = 0; f < a.length && !l; f++) l = o[a[f] + "Request" + i], u = o[a[f] + "Cancel" + i] || o[a[f] + "CancelRequest" + i];
            if (!l || !u) {
                c = !1;
                var s = 0,
                    d = 0,
                    p = [],
                    v = 1e3 / 60;
                l = function(e) {
                    if (0 === p.length) {
                        var t = n(),
                            r = Math.max(0, v - (t - s));
                        s = r + t, setTimeout(function() {
                            var e = p.slice(0);
                            p.length = 0;
                            for (var t = 0; t < e.length; t++)
                                if (!e[t].cancelled) try {
                                    e[t].callback(s)
                                } catch (e) {
                                    setTimeout(function() {
                                        throw e
                                    }, 0)
                                }
                        }, Math.round(r))
                    }
                    return p.push({
                        handle: ++d,
                        callback: e,
                        cancelled: !1
                    }), d
                }, u = function(e) {
                    for (var t = 0; t < p.length; t++) p[t].handle === e && (p[t].cancelled = !0)
                }
            }
            e.exports = function(e) {
                return c ? l.call(o, function() {
                    try {
                        e.apply(this, arguments)
                    } catch (e) {
                        setTimeout(function() {
                            throw e
                        }, 0)
                    }
                }) : l.call(o, e)
            }, e.exports.cancel = function() {
                u.apply(o, arguments)
            }
        }
    };
    var t = {};

    function r(n) {
        var o = t[n];
        if (void 0 !== o) return o.exports;
        var a = t[n] = {
            exports: {}
        };
        return e[n].call(a.exports, a, a.exports, r), a.exports
    }
    r.n = e => {
        var t = e && e.__esModule ? () => e.default : () => e;
        return r.d(t, {
            a: t
        }), t
    }, r.d = (e, t) => {
        for (var n in t) r.o(t, n) && !r.o(e, n) && Object.defineProperty(e, n, {
            enumerable: !0,
            get: t[n]
        })
    }, r.o = (e, t) => Object.prototype.hasOwnProperty.call(e, t), (() => {
        "use strict";
        var e = r(287),
            t = r.n(e);

        // Fonction pour extraire l'ID YouTube de différents formats d'URL
        function extractYouTubeID(url) {
            if (!url) return null;
            
            // Patterns pour différents formats d'URL YouTube
            var patterns = [
                /youtube\.com\/watch\?v=([^&]+)/,
                /youtube\.com\/embed\/([^/?]+)/,
                /youtu\.be\/([^/?]+)/,
                /youtube\.com\/v\/([^/?]+)/
            ];
            
            for (var i = 0; i < patterns.length; i++) {
                var match = url.match(patterns[i]);
                if (match) return match[1];
            }
            
            return null;
        }

        // Fonction pour convertir une URL YouTube en URL d'embed valide
        function convertToEmbedURL(originalSrc) {
            var videoId = extractYouTubeID(originalSrc);
            if (videoId) {
                return 'https://www.youtube.com/embed/' + videoId;
            }
            return originalSrc; // Retourne l'URL originale si ce n'est pas une URL YouTube valide
        }

        // Fonction principale pour traiter les iframes YouTube
        function processYouTubeIframes() {
            // Cherche toutes les iframes qui pourraient être des vidéos YouTube
            var iframes = document.querySelectorAll('iframe[src*="youtu"], iframe[src*="youtube"]');
            
            for (var i = 0; i < iframes.length; i++) {
                var iframe = iframes[i];
                if (!iframe.__vp) {
                    setupYouTubeIframe(iframe);
                }
            }
        }

        // Configure l'iframe YouTube pour qu'elle soit responsive
        function setupYouTubeIframe(iframe) {
            var originalSrc = iframe.src;
            
            // Corrige l'URL si nécessaire (convertit youtu.be en youtube.com/embed/)
            var correctEmbedUrl = convertToEmbedURL(originalSrc);
            if (correctEmbedUrl !== originalSrc) {
                iframe.src = correctEmbedUrl;
            }
            
            // Marque l'iframe comme traitée
            iframe.__vp = true;
            
            // Ajoute allowfullscreen si manquant
            if (!iframe.hasAttribute('allowfullscreen')) {
                iframe.setAttribute('allowfullscreen', 'allowfullscreen');
            }
            
            // Style de base pour le responsive
            iframe.style.maxWidth = '100%';
            
            var wrapper = iframe.parentNode;
            
            // Fonction de redimensionnement
            var resizeHandler = function() {
                var wrapperWidth = wrapper.offsetWidth;
                
                if (wrapperWidth > 0 && iframe.offsetWidth !== wrapperWidth) {
                    // Garde le ratio 16:9 pour YouTube
                    var height = wrapperWidth * 9 / 16;
                    iframe.style.width = '100%';
                    iframe.style.height = height + 'px';
                    
                    // Met à jour les attributs pour certains thèmes qui en ont besoin
                    iframe.width = wrapperWidth;
                    iframe.height = height;
                }
            };
            
            // Applique le redimensionnement initial
            setTimeout(resizeHandler, 100); // Petit délai pour laisser le DOM se stabiliser
            
            // Utilise ResizeObserver si disponible
            if (window.ResizeObserver) {
                var observer = new ResizeObserver(resizeHandler);
                observer.observe(wrapper);
                // Stocke l'observer pour nettoyage éventuel
                iframe.__resizeObserver = observer;
            } else {
                // Fallback pour les navigateurs sans ResizeObserver
                addResizeFallback(iframe, wrapper, resizeHandler);
            }
            
            // Réapplique au chargement de l'iframe
            iframe.addEventListener('load', resizeHandler);
            
            // Réapplique aussi quand la fenêtre est redimensionnée
            window.addEventListener('resize', function() {
                resizeHandler();
            });
        }

        // Collection pour le fallback
        var resizeFallbacks = [];

        // Ajoute un fallback pour les navigateurs sans ResizeObserver
        function addResizeFallback(iframe, wrapper, handler) {
            resizeFallbacks.push({
                iframe: iframe,
                wrapper: wrapper,
                handler: handler
            });
            
            if (resizeFallbacks.length === 1) {
                setupResizeFallback();
            }
        }

        // Configure le fallback avec debounce
        function setupResizeFallback() {
            var debouncedResize = t()(function() {
                resizeFallbacks = resizeFallbacks.filter(function(item) {
                    if (document.body.contains(item.iframe)) {
                        item.handler();
                        return true;
                    }
                    return false;
                });
            });
            
            var fn = debouncedResize.fn;
            
            window.addEventListener('resize', fn, false);
            
            // Vérifie périodiquement les changements
            var interval = setInterval(function() {
                if (resizeFallbacks.length > 0) {
                    fn();
                } else {
                    clearInterval(interval);
                    window.removeEventListener('resize', fn, false);
                }
            }, 1000);
        }

        // Lancement initial
        processYouTubeIframes();

        // Réexécute au chargement du DOM
        if (document.readyState === 'loading') {
            document.addEventListener('DOMContentLoaded', processYouTubeIframes);
        } else {
            processYouTubeIframes();
        }
        
        // Et quand de nouvelles iframes sont ajoutées dynamiquement
        if (window.MutationObserver) {
            var bodyObserver = new MutationObserver(function(mutations) {
                mutations.forEach(function(mutation) {
                    if (mutation.addedNodes.length) {
                        // Vérifie si des iframes ont été ajoutées
                        var hasNewIframe = false;
                        mutation.addedNodes.forEach(function(node) {
                            if (node.nodeName === 'IFRAME' || (node.querySelector && node.querySelector('iframe'))) {
                                hasNewIframe = true;
                            }
                        });
                        if (hasNewIframe) {
                            processYouTubeIframes();
                        }
                    }
                });
            });
            
            bodyObserver.observe(document.body, {
                childList: true,
                subtree: true
            });
        }
    })()
})();