共1546行

cloudflare.js的作用解释

2026-04-14 14:08:06

!function() {
    var e = {
        36: function(e, n) {
            "use strict";
            Object.defineProperty(n, "__esModule", {
                value: !0
            }),
            n.sendObjectBeacon = function(e, n, t, r, i) {
                void 0 === r && (r = !1),
                void 0 === i && (i = null);
                var o = i || "/cdn-cgi/rum?".concat(e)
                  , a = !0;
                if (navigator && "string" == typeof navigator.userAgent)
                    try {
                        var c = navigator.userAgent.match(/Chrome\/([0-9]+)/);
                        c && c[0].toLowerCase().indexOf("chrome") > -1 && parseInt(c[1]) < 81 && (a = !1)
                    } catch (e) {}
                if (navigator && "function" == typeof navigator.sendBeacon && a && r) {
                    n.st = 1;
                    var u = JSON.stringify(n)
                      , s = navigator.sendBeacon && navigator.sendBeacon.bind(navigator);
                    null == s || s(o, new Blob([u],{
                        type: "application/json"
                    }))
                } else {
                    n.st = 2,
                    u = JSON.stringify(n);
                    var f = new XMLHttpRequest;
                    t && (f.onreadystatechange = function() {
                        4 == this.readyState && 204 == this.status && t()
                    }
                    ),
                    f.open("POST", o, !0),
                    f.setRequestHeader("content-type", "application/json"),
                    f.send(u)
                }
            }
        },
        173: function(e, n) {
            !function(e) {
                "use strict";
                var n, t, r, i, o, a = function() {
                    return window.performance && performance.getEntriesByType && performance.getEntriesByType("navigation")[0]
                }, c = function(e) {
                    if ("loading" === document.readyState)
                        return "loading";
                    var n = a();
                    if (n) {
                        if (e < n.domInteractive)
                            return "loading";
                        if (0 === n.domContentLoadedEventStart || e < n.domContentLoadedEventStart)
                            return "dom-interactive";
                        if (0 === n.domComplete || e < n.domComplete)
                            return "dom-content-loaded"
                    }
                    return "complete"
                }, u = function(e) {
                    var n = e.nodeName;
                    return 1 === e.nodeType ? n.toLowerCase() : n.toUpperCase().replace(/^#/, "")
                }, s = function(e, n) {
                    var t = "";
                    try {
                        for (; e && 9 !== e.nodeType; ) {
                            var r = e
                              , i = r.id ? "#" + r.id : u(r) + (r.classList && r.classList.value && r.classList.value.trim() && r.classList.value.trim().length ? "." + r.classList.value.trim().replace(/\s+/g, ".") : "");
                            if (t.length + i.length > (n || 100) - 1)
                                return t || i;
                            if (t = t ? i + ">" + t : i,
                            r.id)
                                break;
                            e = r.parentNode
                        }
                    } catch (e) {}
                    return t
                }, f = -1, l = function() {
                    return f
                }, d = function(e) {
                    addEventListener("pageshow", function(n) {
                        n.persisted && (f = n.timeStamp,
                        e(n))
                    }, !0)
                }, v = function() {
                    var e = a();
                    return e && e.activationStart || 0
                }, p = function(e, n) {
                    var t = a()
                      , r = "navigate";
                    return l() >= 0 ? r = "back-forward-cache" : t && (document.prerendering || v() > 0 ? r = "prerender" : document.wasDiscarded ? r = "restore" : t.type && (r = t.type.replace(/_/g, "-"))),
                    {
                        name: e,
                        value: void 0 === n ? -1 : n,
                        rating: "good",
                        delta: 0,
                        entries: [],
                        id: "v3-".concat(Date.now(), "-").concat(Math.floor(8999999999999 * Math.random()) + 1e12),
                        navigationType: r
                    }
                }, m = function(e, n, t) {
                    try {
                        if (PerformanceObserver.supportedEntryTypes.includes(e)) {
                            var r = new PerformanceObserver(function(e) {
                                Promise.resolve().then(function() {
                                    n(e.getEntries())
                                })
                            }
                            );
                            return r.observe(Object.assign({
                                type: e,
                                buffered: !0
                            }, t || {})),
                            r
                        }
                    } catch (e) {}
                }, g = function(e, n, t, r) {
                    var i, o;
                    return function(a) {
                        n.value >= 0 && (a || r) && ((o = n.value - (i || 0)) || void 0 === i) && (i = n.value,
                        n.delta = o,
                        n.rating = function(e, n) {
                            return e > n[1] ? "poor" : e > n[0] ? "needs-improvement" : "good"
                        }(n.value, t),
                        e(n))
                    }
                }, y = function(e) {
                    requestAnimationFrame(function() {
                        return requestAnimationFrame(function() {
                            return e()
                        })
                    })
                }, h = function(e) {
                    var n = function(n) {
                        "pagehide" !== n.type && "hidden" !== document.visibilityState || e(n)
                    };
                    addEventListener("visibilitychange", n, !0),
                    addEventListener("pagehide", n, !0)
                }, T = function(e) {
                    var n = !1;
                    return function(t) {
                        n || (e(t),
                        n = !0)
                    }
                }, w = -1, b = function() {
                    return "hidden" !== document.visibilityState || document.prerendering ? 1 / 0 : 0
                }, S = function(e) {
                    "hidden" === document.visibilityState && w > -1 && (w = "visibilitychange" === e.type ? e.timeStamp : 0,
                    L())
                }, E = function() {
                    addEventListener("visibilitychange", S, !0),
                    addEventListener("prerenderingchange", S, !0)
                }, L = function() {
                    removeEventListener("visibilitychange", S, !0),
                    removeEventListener("prerenderingchange", S, !0)
                }, P = function() {
                    return w < 0 && (w = b(),
                    E(),
                    d(function() {
                        setTimeout(function() {
                            w = b(),
                            E()
                        }, 0)
                    })),
                    {
                        get firstHiddenTime() {
                            return w
                        }
                    }
                }, C = function(e) {
                    document.prerendering ? addEventListener("prerenderingchange", function() {
                        return e()
                    }, !0) : e()
                }, I = [1800, 3e3], U = function(e, n) {
                    n = n || {},
                    C(function() {
                        var t, r = P(), i = p("FCP"), o = m("paint", function(e) {
                            e.forEach(function(e) {
                                "first-contentful-paint" === e.name && (o.disconnect(),
                                e.startTime < r.firstHiddenTime && (i.value = Math.max(e.startTime - v(), 0),
                                i.entries.push(e),
                                t(!0)))
                            })
                        });
                        o && (t = g(e, i, I, n.reportAllChanges),
                        d(function(r) {
                            i = p("FCP"),
                            t = g(e, i, I, n.reportAllChanges),
                            y(function() {
                                i.value = performance.now() - r.timeStamp,
                                t(!0)
                            })
                        }))
                    })
                }, A = [.1, .25], R = {
                    passive: !0,
                    capture: !0
                }, O = new Date, B = function(e, i) {
                    n || (n = i,
                    t = e,
                    r = new Date,
                    k(removeEventListener),
                    D())
                }, D = function() {
                    if (t >= 0 && t < r - O) {
                        var e = {
                            entryType: "first-input",
                            name: n.type,
                            target: n.target,
                            cancelable: n.cancelable,
                            startTime: n.timeStamp,
                            processingStart: n.timeStamp + t
                        };
                        i.forEach(function(n) {
                            n(e)
                        }),
                        i = []
                    }
                }, _ = function(e) {
                    if (e.cancelable) {
                        var n = (e.timeStamp > 1e12 ? new Date : performance.now()) - e.timeStamp;
                        "pointerdown" == e.type ? function(e, n) {
                            var t = function() {
                                B(e, n),
                                i()
                            }
                              , r = function() {
                                i()
                            }
                              , i = function() {
                                removeEventListener("pointerup", t, R),
                                removeEventListener("pointercancel", r, R)
                            };
                            addEventListener("pointerup", t, R),
                            addEventListener("pointercancel", r, R)
                        }(n, e) : B(n, e)
                    }
                }, k = function(e) {
                    ["mousedown", "keydown", "touchstart", "pointerdown"].forEach(function(n) {
                        return e(n, _, R)
                    })
                }, M = [100, 300], j = function(e, r) {
                    r = r || {},
                    C(function() {
                        var o, a = P(), c = p("FID"), u = function(e) {
                            e.startTime < a.firstHiddenTime && (c.value = e.processingStart - e.startTime,
                            c.entries.push(e),
                            o(!0))
                        }, s = function(e) {
                            e.forEach(u)
                        }, f = m("first-input", s);
                        o = g(e, c, M, r.reportAllChanges),
                        f && h(T(function() {
                            s(f.takeRecords()),
                            f.disconnect()
                        })),
                        f && d(function() {
                            var a;
                            c = p("FID"),
                            o = g(e, c, M, r.reportAllChanges),
                            i = [],
                            t = -1,
                            n = null,
                            k(addEventListener),
                            a = u,
                            i.push(a),
                            D()
                        })
                    })
                }, F = 0, x = 1 / 0, q = 0, N = function(e) {
                    e.forEach(function(e) {
                        e.interactionId && (x = Math.min(x, e.interactionId),
                        q = Math.max(q, e.interactionId),
                        F = q ? (q - x) / 7 + 1 : 0)
                    })
                }, V = function() {
                    return o ? F : performance.interactionCount || 0
                }, H = function() {
                    "interactionCount"in performance || o || (o = m("event", N, {
                        type: "event",
                        buffered: !0,
                        durationThreshold: 0
                    }))
                }, z = [200, 500], K = 0, J = function() {
                    return V() - K
                }, W = [], Q = {}, X = function(e) {
                    var n = W[W.length - 1]
                      , t = Q[e.interactionId];
                    if (t || W.length < 10 || e.duration > n.latency) {
                        if (t)
                            t.entries.push(e),
                            t.latency = Math.max(t.latency, e.duration);
                        else {
                            var r = {
                                id: e.interactionId,
                                latency: e.duration,
                                entries: [e]
                            };
                            Q[r.id] = r,
                            W.push(r)
                        }
                        W.sort(function(e, n) {
                            return n.latency - e.latency
                        }),
                        W.splice(10).forEach(function(e) {
                            delete Q[e.id]
                        })
                    }
                }, $ = [2500, 4e3], G = {}, Y = [800, 1800], Z = function e(n) {
                    document.prerendering ? C(function() {
                        return e(n)
                    }) : "complete" !== document.readyState ? addEventListener("load", function() {
                        return e(n)
                    }, !0) : setTimeout(n, 0)
                }, ee = function(e, n) {
                    n = n || {};
                    var t = p("TTFB")
                      , r = g(e, t, Y, n.reportAllChanges);
                    Z(function() {
                        var i = a();
                        if (i) {
                            var o = i.responseStart;
                            if (o <= 0 || o > performance.now())
                                return;
                            t.value = Math.max(o - v(), 0),
                            t.entries = [i],
                            r(!0),
                            d(function() {
                                t = p("TTFB", 0),
                                (r = g(e, t, Y, n.reportAllChanges))(!0)
                            })
                        }
                    })
                };
                e.CLSThresholds = A,
                e.FCPThresholds = I,
                e.FIDThresholds = M,
                e.INPThresholds = z,
                e.LCPThresholds = $,
                e.TTFBThresholds = Y,
                e.onCLS = function(e, n) {
                    !function(e, n) {
                        n = n || {},
                        U(T(function() {
                            var t, r = p("CLS", 0), i = 0, o = [], a = function(e) {
                                e.forEach(function(e) {
                                    if (!e.hadRecentInput) {
                                        var n = o[0]
                                          , t = o[o.length - 1];
                                        i && e.startTime - t.startTime < 1e3 && e.startTime - n.startTime < 5e3 ? (i += e.value,
                                        o.push(e)) : (i = e.value,
                                        o = [e])
                                    }
                                }),
                                i > r.value && (r.value = i,
                                r.entries = o,
                                t())
                            }, c = m("layout-shift", a);
                            c && (t = g(e, r, A, n.reportAllChanges),
                            h(function() {
                                a(c.takeRecords()),
                                t(!0)
                            }),
                            d(function() {
                                i = 0,
                                r = p("CLS", 0),
                                t = g(e, r, A, n.reportAllChanges),
                                y(function() {
                                    return t()
                                })
                            }),
                            setTimeout(t, 0))
                        }))
                    }(function(n) {
                        !function(e) {
                            if (e.entries.length) {
                                var n = e.entries.reduce(function(e, n) {
                                    return e && e.value > n.value ? e : n
                                });
                                if (n && n.sources && n.sources.length) {
                                    var t = (r = n.sources).find(function(e) {
                                        return e.node && 1 === e.node.nodeType
                                    }) || r[0];
                                    if (t)
                                        return void (e.attribution = {
                                            largestShiftTarget: s(t.node),
                                            largestShiftTime: n.startTime,
                                            largestShiftValue: n.value,
                                            largestShiftSource: t,
                                            largestShiftEntry: n,
                                            loadState: c(n.startTime)
                                        })
                                }
                            }
                            var r;
                            e.attribution = {}
                        }(n),
                        e(n)
                    }, n)
                }
                ,
                e.onFCP = function(e, n) {
                    U(function(n) {
                        !function(e) {
                            if (e.entries.length) {
                                var n = a()
                                  , t = e.entries[e.entries.length - 1];
                                if (n) {
                                    var r = n.activationStart || 0
                                      , i = Math.max(0, n.responseStart - r);
                                    return void (e.attribution = {
                                        timeToFirstByte: i,
                                        firstByteToFCP: e.value - i,
                                        loadState: c(e.entries[0].startTime),
                                        navigationEntry: n,
                                        fcpEntry: t
                                    })
                                }
                            }
                            e.attribution = {
                                timeToFirstByte: 0,
                                firstByteToFCP: e.value,
                                loadState: c(l())
                            }
                        }(n),
                        e(n)
                    }, n)
                }
                ,
                e.onFID = function(e, n) {
                    j(function(n) {
                        !function(e) {
                            var n = e.entries[0];
                            e.attribution = {
                                eventTarget: s(n.target),
                                eventType: n.name,
                                eventTime: n.startTime,
                                eventEntry: n,
                                loadState: c(n.startTime)
                            }
                        }(n),
                        e(n)
                    }, n)
                }
                ,
                e.onINP = function(e, n) {
                    !function(e, n) {
                        n = n || {},
                        C(function() {
                            var t;
                            H();
                            var r, i = p("INP"), o = function(e) {
                                e.forEach(function(e) {
                                    e.interactionId && X(e),
                                    "first-input" === e.entryType && !W.some(function(n) {
                                        return n.entries.some(function(n) {
                                            return e.duration === n.duration && e.startTime === n.startTime
                                        })
                                    }) && X(e)
                                });
                                var n, t = (n = Math.min(W.length - 1, Math.floor(J() / 50)),
                                W[n]);
                                t && t.latency !== i.value && (i.value = t.latency,
                                i.entries = t.entries,
                                r())
                            }, a = m("event", o, {
                                durationThreshold: null !== (t = n.durationThreshold) && void 0 !== t ? t : 40
                            });
                            r = g(e, i, z, n.reportAllChanges),
                            a && ("PerformanceEventTiming"in window && "interactionId"in PerformanceEventTiming.prototype && a.observe({
                                type: "first-input",
                                buffered: !0
                            }),
                            h(function() {
                                o(a.takeRecords()),
                                i.value < 0 && J() > 0 && (i.value = 0,
                                i.entries = []),
                                r(!0)
                            }),
                            d(function() {
                                W = [],
                                K = V(),
                                i = p("INP"),
                                r = g(e, i, z, n.reportAllChanges)
                            }))
                        })
                    }(function(n) {
                        !function(e) {
                            if (e.entries.length) {
                                var n = e.entries.sort(function(e, n) {
                                    return n.duration - e.duration || n.processingEnd - n.processingStart - (e.processingEnd - e.processingStart)
                                })[0]
                                  , t = e.entries.find(function(e) {
                                    return e.target
                                });
                                e.attribution = {
                                    eventTarget: s(t && t.target),
                                    eventType: n.name,
                                    eventTime: n.startTime,
                                    eventEntry: n,
                                    loadState: c(n.startTime)
                                }
                            } else
                                e.attribution = {}
                        }(n),
                        e(n)
                    }, n)
                }
                ,
                e.onLCP = function(e, n) {
                    !function(e, n) {
                        n = n || {},
                        C(function() {
                            var t, r = P(), i = p("LCP"), o = function(e) {
                                var n = e[e.length - 1];
                                n && n.startTime < r.firstHiddenTime && (i.value = Math.max(n.startTime - v(), 0),
                                i.entries = [n],
                                t())
                            }, a = m("largest-contentful-paint", o);
                            if (a) {
                                t = g(e, i, $, n.reportAllChanges);
                                var c = T(function() {
                                    G[i.id] || (o(a.takeRecords()),
                                    a.disconnect(),
                                    G[i.id] = !0,
                                    t(!0))
                                });
                                ["keydown", "click"].forEach(function(e) {
                                    addEventListener(e, function() {
                                        return setTimeout(c, 0)
                                    }, !0)
                                }),
                                h(c),
                                d(function(r) {
                                    i = p("LCP"),
                                    t = g(e, i, $, n.reportAllChanges),
                                    y(function() {
                                        i.value = performance.now() - r.timeStamp,
                                        G[i.id] = !0,
                                        t(!0)
                                    })
                                })
                            }
                        })
                    }(function(n) {
                        !function(e) {
                            if (e.entries.length) {
                                var n = a();
                                if (n) {
                                    var t = n.activationStart || 0
                                      , r = e.entries[e.entries.length - 1]
                                      , i = r.url && performance.getEntriesByType("resource").filter(function(e) {
                                        return e.name === r.url
                                    })[0]
                                      , o = Math.max(0, n.responseStart - t)
                                      , c = Math.max(o, i ? (i.requestStart || i.startTime) - t : 0)
                                      , u = Math.max(c, i ? i.responseEnd - t : 0)
                                      , f = Math.max(u, r ? r.startTime - t : 0)
                                      , l = {
                                        element: s(r.element),
                                        timeToFirstByte: o,
                                        resourceLoadDelay: c - o,
                                        resourceLoadTime: u - c,
                                        elementRenderDelay: f - u,
                                        navigationEntry: n,
                                        lcpEntry: r
                                    };
                                    return r.url && (l.url = r.url),
                                    i && (l.lcpResourceEntry = i),
                                    void (e.attribution = l)
                                }
                            }
                            e.attribution = {
                                timeToFirstByte: 0,
                                resourceLoadDelay: 0,
                                resourceLoadTime: 0,
                                elementRenderDelay: e.value
                            }
                        }(n),
                        e(n)
                    }, n)
                }
                ,
                e.onTTFB = function(e, n) {
                    ee(function(n) {
                        !function(e) {
                            if (e.entries.length) {
                                var n = e.entries[0]
                                  , t = n.activationStart || 0
                                  , r = Math.max(n.domainLookupStart - t, 0)
                                  , i = Math.max(n.connectStart - t, 0)
                                  , o = Math.max(n.requestStart - t, 0);
                                e.attribution = {
                                    waitingTime: r,
                                    dnsTime: i - r,
                                    connectionTime: o - i,
                                    requestTime: e.value - o,
                                    navigationEntry: n
                                }
                            } else
                                e.attribution = {
                                    waitingTime: 0,
                                    dnsTime: 0,
                                    connectionTime: 0,
                                    requestTime: 0
                                }
                        }(n),
                        e(n)
                    }, n)
                }
            }(n)
        },
        559: function(e, n) {
            "use strict";
            Object.defineProperty(n, "__esModule", {
                value: !0
            }),
            n.timingsV2TargetKeys = n.timingsTargetKeys = void 0,
            n.buildTimingsObject = function(e, n, t) {
                for (var r = 0, i = t; r < i.length; r++) {
                    var o = i[r]
                      , a = e[o];
                    void 0 !== n && ("number" != typeof a && "string" != typeof a || (n[o] = a))
                }
            }
            ,
            n.timingsTargetKeys = ["navigationStart", "domainLookupStart", "domainLookupEnd", "connectStart", "connectEnd", "requestStart", "responseStart", "responseEnd", "domLoading", "domComplete", "loadEventStart", "loadEventEnd"],
            n.timingsV2TargetKeys = ["nextHopProtocol", "domainLookupStart", "domainLookupEnd", "connectStart", "connectEnd", "requestStart", "responseStart", "responseEnd", "domInteractive", "domComplete", "loadEventStart", "loadEventEnd", "finalResponseHeadersStart", "firstInterimResponseStart", "transferSize", "decodedBodySize"]
        },
        570: function(e, n, t) {
            "use strict";
            var r = this && this.__assign || function() {
                return r = Object.assign || function(e) {
                    for (var n, t = 1, r = arguments.length; t < r; t++)
                        for (var i in n = arguments[t])
                            Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]);
                    return e
                }
                ,
                r.apply(this, arguments)
            }
            ;
            Object.defineProperty(n, "__esModule", {
                value: !0
            });
            var i = t(613)
              , o = t(36)
              , a = t(173)
              , c = t(976)
              , u = t(559);
            !function() {
                function e(e) {
                    var n = "";
                    if (n = window.location.origin ? window.location.origin : "".concat(window.location.protocol, "://").concat(window.location.host),
                    e && "string" == typeof e)
                        if (0 === e.indexOf("/"))
                            n += e;
                        else
                            try {
                                var t = new URL(e);
                                return "".concat(t.protocol, "://").concat(t.host).concat(t.pathname)
                            } catch (e) {}
                    else {
                        var r = window.location.pathname;
                        r && r.length > 0 && (n += r)
                    }
                    return n
                }
                !function() {
                    var n, t, s = window.performance || window.webkitPerformance || window.msPerformance || window.mozPerformance, f = "data-cf-beacon", l = document.currentScript || ("function" == typeof document.querySelector ? document.querySelector("script[".concat(f, "]")) : void 0), d = (0,
                    c.v4)(), v = [], p = window.__cfBeacon ? window.__cfBeacon : {};
                    if (!p || "single" !== p.load) {
                        if (l) {
                            var m = l.getAttribute(f);
                            if (m)
                                try {
                                    p = r(r({}, p), JSON.parse(m))
                                } catch (e) {}
                            else {
                                var g = l.getAttribute("src");
                                if (g && "function" == typeof URLSearchParams) {
                                    var y = new URLSearchParams(g.replace(/^[^\?]+\??/, ""))
                                      , h = y.get("token");
                                    h && (p.token = h);
                                    var T = y.get("spa");
                                    p.spa = null === T || "true" === T
                                }
                            }
                            p && "multi" !== p.load && (p.load = "single"),
                            window.__cfBeacon = p
                        }
                        if (s && p && p.token) {
                            var w, b, S = !1;
                            document.addEventListener("visibilitychange", function() {
                                if ("hidden" === document.visibilityState) {
                                    if (L && A()) {
                                        var n = e();
                                        (null == w ? void 0 : w.url) == n && (null == w ? void 0 : w.triggered) || C(),
                                        R(n)
                                    }
                                    !S && w && (S = !0,
                                    I())
                                } else
                                    "visible" === document.visibilityState && (new Date).getTime()
                            });
                            var E = {};
                            "function" == typeof PerformanceObserver && ((0,
                            a.onLCP)(O),
                            (0,
                            a.onFID)(O),
                            (0,
                            a.onFCP)(O),
                            (0,
                            a.onINP)(O),
                            (0,
                            a.onTTFB)(O),
                            PerformanceObserver.supportedEntryTypes && PerformanceObserver.supportedEntryTypes.includes("layout-shift") && (0,
                            a.onCLS)(O));
                            var L = p && (void 0 === p.spa || !0 === p.spa)
                              , P = p.send && p.send.to ? p.send.to : void 0 === p.version ? "https://cloudflareinsights.com/cdn-cgi/rum" : null
                              , C = function(t) {
                                var r = function(t) {
                                    var r, o, a = s.timing, c = s.memory, f = t || e(), l = {
                                        memory: {},
                                        timings: {},
                                        resources: [],
                                        referrer: (r = document.referrer || "",
                                        o = v[v.length - 1],
                                        L && w && o ? o.url : r),
                                        eventType: i.EventType.Load,
                                        firstPaint: 0,
                                        firstContentfulPaint: 0,
                                        startTime: B(),
                                        versions: {
                                            fl: p ? p.version : "",
                                            js: "2026.2.0",
                                            timings: 1
                                        },
                                        pageloadId: d,
                                        location: f,
                                        nt: b,
                                        serverTimings: D()
                                    };
                                    if (null == n) {
                                        if ("function" == typeof s.getEntriesByType) {
                                            var m = s.getEntriesByType("navigation");
                                            if (m && Array.isArray(m) && m.length > 0) {
                                                l.timingsV2 = {},
                                                l.versions.timings = 2,
                                                l.dt = m[0].deliveryType,
                                                delete l.timings;
                                                var g = m[0];
                                                (0,
                                                u.buildTimingsObject)(g, l.timingsV2, u.timingsV2TargetKeys)
                                            }
                                        }
                                        if (1 === l.versions.timings) {
                                            var y = a;
                                            l.timings && (0,
                                            u.buildTimingsObject)(y, l.timings, u.timingsTargetKeys)
                                        }
                                        !function(e, n) {
                                            for (var t in e) {
                                                var r = e[t];
                                                void 0 !== n && ("number" != typeof r && "string" != typeof r || (n[t] = r))
                                            }
                                        }(c, l.memory)
                                    } else
                                        _(l);
                                    return l.firstPaint = k("first-paint"),
                                    l.firstContentfulPaint = k("first-contentful-paint"),
                                    p && (p.icTag && (l.icTag = p.icTag),
                                    l.siteToken = p.token),
                                    void 0 !== n && (delete l.timings,
                                    delete l.memory),
                                    l
                                }(t);
                                r && p && (r.resources = [],
                                p && ((0,
                                o.sendObjectBeacon)("", r, function() {}, !1, P),
                                void 0 !== p.forward && void 0 !== p.forward.url && (0,
                                o.sendObjectBeacon)("", r, function() {}, !1, p.forward.url)))
                            }
                              , I = function() {
                                var n = function() {
                                    var n = s.getEntriesByType("navigation")[0]
                                      , r = "";
                                    try {
                                        r = "function" == typeof s.getEntriesByType ? new URL(null == n ? void 0 : n.name).pathname : t ? new URL(t).pathname : window.location.pathname
                                    } catch (e) {}
                                    var o = {
                                        referrer: document.referrer || "",
                                        eventType: i.EventType.WebVitalsV2,
                                        versions: {
                                            js: "2026.2.0"
                                        },
                                        pageloadId: d,
                                        location: e(),
                                        landingPath: r,
                                        startTime: B(),
                                        nt: b,
                                        serverTimings: D()
                                    };
                                    return p && (p.version && (o.versions.fl = p.version),
                                    p.icTag && (o.icTag = p.icTag),
                                    o.siteToken = p.token),
                                    E && ["lcp", "fid", "cls", "fcp", "ttfb", "inp"].forEach(function(e) {
                                        o[e] = {
                                            value: -1,
                                            path: void 0
                                        },
                                        E[e] && void 0 !== E[e].value && (o[e] = E[e])
                                    }),
                                    _(o),
                                    o
                                }();
                                p && (0,
                                o.sendObjectBeacon)("", n, function() {}, !0, P)
                            }
                              , U = function() {
                                var n = window.__cfRl && window.__cfRl.done || window.__cfQR && window.__cfQR.done;
                                n ? n.then(C) : C(),
                                w = {
                                    id: d,
                                    url: e(),
                                    ts: (new Date).getTime(),
                                    triggered: !0
                                }
                            };
                            "complete" === window.document.readyState ? U() : window.addEventListener("load", function() {
                                window.setTimeout(U)
                            });
                            var A = function() {
                                return L && 0 === v.filter(function(e) {
                                    return e.id === d
                                }).length
                            }
                              , R = function(e) {
                                v.push({
                                    id: d,
                                    url: e,
                                    ts: (new Date).getTime()
                                }),
                                v.length > 3 && v.shift()
                            };
                            L && (t = e(),
                            function(t) {
                                var r = t.pushState;
                                if (r) {
                                    var i = function() {
                                        d = (0,
                                        c.v4)()
                                    };
                                    t.pushState = function(o, a, c) {
                                        n = e(c);
                                        var u = e()
                                          , s = !0;
                                        return n == u && (s = !1),
                                        s && (A() && ((null == w ? void 0 : w.url) == u && (null == w ? void 0 : w.triggered) || C(u),
                                        R(u)),
                                        i()),
                                        r.apply(t, [o, a, c])
                                    }
                                    ,
                                    window.addEventListener("popstate", function(t) {
                                        A() && ((null == w ? void 0 : w.url) == n && (null == w ? void 0 : w.triggered) || C(n),
                                        R(n)),
                                        n = e(),
                                        i()
                                    })
                                }
                            }(window.history))
                        }
                    }
                    function O(e) {
                        var n, t, r, i, o, a, c, u = window.location.pathname;
                        switch (b || (b = e.navigationType),
                        "INP" !== e.name && (E[e.name.toLowerCase()] = {
                            value: e.value,
                            path: u
                        }),
                        e.name) {
                        case "CLS":
                            (c = e.attribution) && E.cls && (E.cls.element = c.largestShiftTarget,
                            E.cls.currentRect = null === (n = c.largestShiftSource) || void 0 === n ? void 0 : n.currentRect,
                            E.cls.previousRect = null === (t = c.largestShiftSource) || void 0 === t ? void 0 : t.previousRect);
                            break;
                        case "FID":
                            (c = e.attribution) && E.fid && (E.fid.element = c.eventTarget,
                            E.fid.name = c.eventType);
                            break;
                        case "LCP":
                            (c = e.attribution) && E.lcp && (E.lcp.element = c.element,
                            E.lcp.size = null === (r = c.lcpEntry) || void 0 === r ? void 0 : r.size,
                            E.lcp.url = c.url,
                            E.lcp.rld = c.resourceLoadDelay,
                            E.lcp.rlt = c.resourceLoadTime,
                            E.lcp.erd = c.elementRenderDelay,
                            E.lcp.it = null === (i = c.lcpResourceEntry) || void 0 === i ? void 0 : i.initiatorType,
                            E.lcp.fp = null === (a = null === (o = c.lcpEntry) || void 0 === o ? void 0 : o.element) || void 0 === a ? void 0 : a.getAttribute("fetchpriority"));
                            break;
                        case "INP":
                            (null == E.inp || Number(E.inp.value) < Number(e.value)) && (E.inp = {
                                value: Number(e.value),
                                path: u
                            },
                            (c = e.attribution) && E.inp && (E.inp.element = c.eventTarget,
                            E.inp.name = c.eventType))
                        }
                    }
                    function B() {
                        return s.timeOrigin
                    }
                    function D() {
                        if (p && p.serverTiming) {
                            for (var e = [], n = 0, t = ["navigation", "resource"]; n < t.length; n++)
                                for (var r = t[n], i = 0, o = s.getEntriesByType(r); i < o.length; i++) {
                                    var a = o[i]
                                      , c = a.name
                                      , u = a.serverTiming;
                                    if (u) {
                                        if ("resource" === r) {
                                            var f = p.serverTiming.location_startswith;
                                            if (!f || !Array.isArray(f))
                                                continue;
                                            for (var l = !1, d = 0, v = f; d < v.length; d++) {
                                                var m = v[d];
                                                if (c.startsWith(m)) {
                                                    l = !0;
                                                    break
                                                }
                                            }
                                            if (!l)
                                                continue
                                        }
                                        for (var g = 0, y = u; g < y.length; g++) {
                                            var h = y[g]
                                              , T = h.name
                                              , w = h.description
                                              , b = h.duration;
                                            if (p.serverTiming.name && p.serverTiming.name[T])
                                                try {
                                                    var S = new URL(c);
                                                    e.push({
                                                        location: "resource" === r ? "".concat(S.origin).concat(S.pathname) : void 0,
                                                        name: T,
                                                        dur: b,
                                                        desc: w
                                                    })
                                                } catch (e) {}
                                        }
                                    }
                                }
                            return e
                        }
                    }
                    function _(e) {
                        if ("function" == typeof s.getEntriesByType) {
                            var n = s.getEntriesByType("navigation")
                              , t = {};
                            e.timingsV2 = {},
                            n && n[0] && (n[0].nextHopProtocol && (t.nextHopProtocol = n[0].nextHopProtocol),
                            n[0].transferSize && (t.transferSize = n[0].transferSize),
                            n[0].decodedBodySize && (t.decodedBodySize = n[0].decodedBodySize),
                            e.dt = n[0].deliveryType),
                            (0,
                            u.buildTimingsObject)(t, e.timingsV2, u.timingsV2TargetKeys)
                        }
                    }
                    function k(e) {
                        var n;
                        if ("first-contentful-paint" === e && E.fcp && E.fcp.value)
                            return E.fcp.value;
                        if ("function" == typeof s.getEntriesByType) {
                            var t = null === (n = s.getEntriesByType("paint")) || void 0 === n ? void 0 : n.filter(function(n) {
                                return n.name === e
                            })[0];
                            return t ? t.startTime : 0
                        }
                        return 0
                    }
                }()
            }()
        },
        613: function(e, n) {
            "use strict";
            var t, r;
            Object.defineProperty(n, "__esModule", {
                value: !0
            }),
            n.FetchPriority = n.EventType = void 0,
            function(e) {
                e[e.Load = 1] = "Load",
                e[e.Additional = 2] = "Additional",
                e[e.WebVitalsV2 = 3] = "WebVitalsV2"
            }(t || (n.EventType = t = {})),
            function(e) {
                e.High = "high",
                e.Low = "low",
                e.Auto = "auto"
            }(r || (n.FetchPriority = r = {}))
        },
        976: function(e, n, t) {
            "use strict";
            t.r(n),
            t.d(n, {
                MAX: function() {
                    return r
                },
                NIL: function() {
                    return i
                },
                parse: function() {
                    return c
                },
                stringify: function() {
                    return d
                },
                v1: function() {
                    return y
                },
                v1ToV6: function() {
                    return h
                },
                v3: function() {
                    return O
                },
                v4: function() {
                    return D
                },
                v5: function() {
                    return F
                },
                v6: function() {
                    return q
                },
                v6ToV1: function() {
                    return N
                },
                v7: function() {
                    return z
                },
                validate: function() {
                    return a
                },
                version: function() {
                    return K
                }
            });
            for (var r = "ffffffff-ffff-ffff-ffff-ffffffffffff", i = "00000000-0000-0000-0000-000000000000", o = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$/i, a = function(e) {
                return "string" == typeof e && o.test(e)
            }, c = function(e) {
                if (!a(e))
                    throw TypeError("Invalid UUID");
                var n;
                return Uint8Array.of((n = parseInt(e.slice(0, 8), 16)) >>> 24, n >>> 16 & 255, n >>> 8 & 255, 255 & n, (n = parseInt(e.slice(9, 13), 16)) >>> 8, 255 & n, (n = parseInt(e.slice(14, 18), 16)) >>> 8, 255 & n, (n = parseInt(e.slice(19, 23), 16)) >>> 8, 255 & n, (n = parseInt(e.slice(24, 36), 16)) / 1099511627776 & 255, n / 4294967296 & 255, n >>> 24 & 255, n >>> 16 & 255, n >>> 8 & 255, 255 & n)
            }, u = [], s = 0; s < 256; ++s)
                u.push((s + 256).toString(16).slice(1));
            function f(e, n) {
                return void 0 === n && (n = 0),
                (u[e[n + 0]] + u[e[n + 1]] + u[e[n + 2]] + u[e[n + 3]] + "-" + u[e[n + 4]] + u[e[n + 5]] + "-" + u[e[n + 6]] + u[e[n + 7]] + "-" + u[e[n + 8]] + u[e[n + 9]] + "-" + u[e[n + 10]] + u[e[n + 11]] + u[e[n + 12]] + u[e[n + 13]] + u[e[n + 14]] + u[e[n + 15]]).toLowerCase()
            }
            var l, d = function(e, n) {
                void 0 === n && (n = 0);
                var t = f(e, n);
                if (!a(t))
                    throw TypeError("Stringified UUID is invalid");
                return t
            }, v = new Uint8Array(16);
            function p() {
                if (!l) {
                    if ("undefined" == typeof crypto || !crypto.getRandomValues)
                        throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");
                    l = crypto.getRandomValues.bind(crypto)
                }
                return l(v)
            }
            var m = {};
            function g(e, n, t, r, i, o, a) {
                if (void 0 === a && (a = 0),
                e.length < 16)
                    throw new Error("Random bytes length must be >= 16");
                if (o) {
                    if (a < 0 || a + 16 > o.length)
                        throw new RangeError("UUID byte range ".concat(a, ":").concat(a + 15, " is out of buffer bounds"))
                } else
                    o = new Uint8Array(16),
                    a = 0;
                null != n || (n = Date.now()),
                null != t || (t = 0),
                null != r || (r = 16383 & (e[8] << 8 | e[9])),
                null != i || (i = e.slice(10, 16));
                var c = (1e4 * (268435455 & (n += 122192928e5)) + t) % 4294967296;
                o[a++] = c >>> 24 & 255,
                o[a++] = c >>> 16 & 255,
                o[a++] = c >>> 8 & 255,
                o[a++] = 255 & c;
                var u = n / 4294967296 * 1e4 & 268435455;
                o[a++] = u >>> 8 & 255,
                o[a++] = 255 & u,
                o[a++] = u >>> 24 & 15 | 16,
                o[a++] = u >>> 16 & 255,
                o[a++] = r >>> 8 | 128,
                o[a++] = 255 & r;
                for (var s = 0; s < 6; ++s)
                    o[a++] = i[s];
                return o
            }
            var y = function(e, n, t) {
                var r, i, o, a, c, u = null !== (r = null == e ? void 0 : e._v6) && void 0 !== r && r;
                if (e) {
                    var s = Object.keys(e);
                    1 === s.length && "_v6" === s[0] && (e = void 0)
                }
                if (e)
                    c = g(null !== (a = null !== (i = e.random) && void 0 !== i ? i : null === (o = e.rng) || void 0 === o ? void 0 : o.call(e)) && void 0 !== a ? a : p(), e.msecs, e.nsecs, e.clockseq, e.node, n, t);
                else {
                    var l = Date.now()
                      , d = p();
                    !function(e, n, t) {
                        var r, i;
                        null !== (r = e.msecs) && void 0 !== r || (e.msecs = -1 / 0),
                        null !== (i = e.nsecs) && void 0 !== i || (e.nsecs = 0),
                        n === e.msecs ? (e.nsecs++,
                        e.nsecs >= 1e4 && (e.node = void 0,
                        e.nsecs = 0)) : n > e.msecs ? e.nsecs = 0 : n < e.msecs && (e.node = void 0),
                        e.node || (e.node = t.slice(10, 16),
                        e.node[0] |= 1,
                        e.clockseq = 16383 & (t[8] << 8 | t[9])),
                        e.msecs = n
                    }(m, l, d),
                    c = g(d, m.msecs, m.nsecs, u ? void 0 : m.clockseq, u ? void 0 : m.node, n, t)
                }
                return null != n ? n : f(c)
            };
            function h(e) {
                var n = function(e) {
                    return Uint8Array.of((15 & e[6]) << 4 | e[7] >> 4 & 15, (15 & e[7]) << 4 | (240 & e[4]) >> 4, (15 & e[4]) << 4 | (240 & e[5]) >> 4, (15 & e[5]) << 4 | (240 & e[0]) >> 4, (15 & e[0]) << 4 | (240 & e[1]) >> 4, (15 & e[1]) << 4 | (240 & e[2]) >> 4, 96 | 15 & e[2], e[3], e[8], e[9], e[10], e[11], e[12], e[13], e[14], e[15])
                }("string" == typeof e ? c(e) : e);
                return "string" == typeof e ? f(n) : n
            }
            function T(e) {
                return 14 + (e + 64 >>> 9 << 4) + 1
            }
            function w(e, n) {
                var t = (65535 & e) + (65535 & n);
                return (e >> 16) + (n >> 16) + (t >> 16) << 16 | 65535 & t
            }
            function b(e, n, t, r, i, o) {
                return w((a = w(w(n, e), w(r, o))) << (c = i) | a >>> 32 - c, t);
                var a, c
            }
            function S(e, n, t, r, i, o, a) {
                return b(n & t | ~n & r, e, n, i, o, a)
            }
            function E(e, n, t, r, i, o, a) {
                return b(n & r | t & ~r, e, n, i, o, a)
            }
            function L(e, n, t, r, i, o, a) {
                return b(n ^ t ^ r, e, n, i, o, a)
            }
            function P(e, n, t, r, i, o, a) {
                return b(t ^ (n | ~r), e, n, i, o, a)
            }
            var C = function(e) {
                var n = function(e) {
                    if (0 === e.length)
                        return new Uint32Array;
                    for (var n = new Uint32Array(T(8 * e.length)).fill(0), t = 0; t < e.length; t++)
                        n[t >> 2] |= (255 & e[t]) << t % 4 * 8;
                    return n
                }(e)
                  , t = function(e, n) {
                    var t = new Uint32Array(T(n)).fill(0);
                    t.set(e),
                    t[n >> 5] |= 128 << n % 32,
                    t[t.length - 1] = n,
                    e = t;
                    for (var r = 1732584193, i = -271733879, o = -1732584194, a = 271733878, c = 0; c < e.length; c += 16) {
                        var u = r
                          , s = i
                          , f = o
                          , l = a;
                        r = S(r, i, o, a, e[c], 7, -680876936),
                        a = S(a, r, i, o, e[c + 1], 12, -389564586),
                        o = S(o, a, r, i, e[c + 2], 17, 606105819),
                        i = S(i, o, a, r, e[c + 3], 22, -1044525330),
                        r = S(r, i, o, a, e[c + 4], 7, -176418897),
                        a = S(a, r, i, o, e[c + 5], 12, 1200080426),
                        o = S(o, a, r, i, e[c + 6], 17, -1473231341),
                        i = S(i, o, a, r, e[c + 7], 22, -45705983),
                        r = S(r, i, o, a, e[c + 8], 7, 1770035416),
                        a = S(a, r, i, o, e[c + 9], 12, -1958414417),
                        o = S(o, a, r, i, e[c + 10], 17, -42063),
                        i = S(i, o, a, r, e[c + 11], 22, -1990404162),
                        r = S(r, i, o, a, e[c + 12], 7, 1804603682),
                        a = S(a, r, i, o, e[c + 13], 12, -40341101),
                        o = S(o, a, r, i, e[c + 14], 17, -1502002290),
                        r = E(r, i = S(i, o, a, r, e[c + 15], 22, 1236535329), o, a, e[c + 1], 5, -165796510),
                        a = E(a, r, i, o, e[c + 6], 9, -1069501632),
                        o = E(o, a, r, i, e[c + 11], 14, 643717713),
                        i = E(i, o, a, r, e[c], 20, -373897302),
                        r = E(r, i, o, a, e[c + 5], 5, -701558691),
                        a = E(a, r, i, o, e[c + 10], 9, 38016083),
                        o = E(o, a, r, i, e[c + 15], 14, -660478335),
                        i = E(i, o, a, r, e[c + 4], 20, -405537848),
                        r = E(r, i, o, a, e[c + 9], 5, 568446438),
                        a = E(a, r, i, o, e[c + 14], 9, -1019803690),
                        o = E(o, a, r, i, e[c + 3], 14, -187363961),
                        i = E(i, o, a, r, e[c + 8], 20, 1163531501),
                        r = E(r, i, o, a, e[c + 13], 5, -1444681467),
                        a = E(a, r, i, o, e[c + 2], 9, -51403784),
                        o = E(o, a, r, i, e[c + 7], 14, 1735328473),
                        r = L(r, i = E(i, o, a, r, e[c + 12], 20, -1926607734), o, a, e[c + 5], 4, -378558),
                        a = L(a, r, i, o, e[c + 8], 11, -2022574463),
                        o = L(o, a, r, i, e[c + 11], 16, 1839030562),
                        i = L(i, o, a, r, e[c + 14], 23, -35309556),
                        r = L(r, i, o, a, e[c + 1], 4, -1530992060),
                        a = L(a, r, i, o, e[c + 4], 11, 1272893353),
                        o = L(o, a, r, i, e[c + 7], 16, -155497632),
                        i = L(i, o, a, r, e[c + 10], 23, -1094730640),
                        r = L(r, i, o, a, e[c + 13], 4, 681279174),
                        a = L(a, r, i, o, e[c], 11, -358537222),
                        o = L(o, a, r, i, e[c + 3], 16, -722521979),
                        i = L(i, o, a, r, e[c + 6], 23, 76029189),
                        r = L(r, i, o, a, e[c + 9], 4, -640364487),
                        a = L(a, r, i, o, e[c + 12], 11, -421815835),
                        o = L(o, a, r, i, e[c + 15], 16, 530742520),
                        r = P(r, i = L(i, o, a, r, e[c + 2], 23, -995338651), o, a, e[c], 6, -198630844),
                        a = P(a, r, i, o, e[c + 7], 10, 1126891415),
                        o = P(o, a, r, i, e[c + 14], 15, -1416354905),
                        i = P(i, o, a, r, e[c + 5], 21, -57434055),
                        r = P(r, i, o, a, e[c + 12], 6, 1700485571),
                        a = P(a, r, i, o, e[c + 3], 10, -1894986606),
                        o = P(o, a, r, i, e[c + 10], 15, -1051523),
                        i = P(i, o, a, r, e[c + 1], 21, -2054922799),
                        r = P(r, i, o, a, e[c + 8], 6, 1873313359),
                        a = P(a, r, i, o, e[c + 15], 10, -30611744),
                        o = P(o, a, r, i, e[c + 6], 15, -1560198380),
                        i = P(i, o, a, r, e[c + 13], 21, 1309151649),
                        r = P(r, i, o, a, e[c + 4], 6, -145523070),
                        a = P(a, r, i, o, e[c + 11], 10, -1120210379),
                        o = P(o, a, r, i, e[c + 2], 15, 718787259),
                        i = P(i, o, a, r, e[c + 9], 21, -343485551),
                        r = w(r, u),
                        i = w(i, s),
                        o = w(o, f),
                        a = w(a, l)
                    }
                    return Uint32Array.of(r, i, o, a)
                }(n, 8 * e.length);
                return function(e) {
                    for (var n = new Uint8Array(4 * e.length), t = 0; t < 4 * e.length; t++)
                        n[t] = e[t >> 2] >>> t % 4 * 8 & 255;
                    return n
                }(t)
            }
              , I = "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
              , U = "6ba7b811-9dad-11d1-80b4-00c04fd430c8";
            function A(e, n, t, r, i, o) {
                var a = "string" == typeof t ? function(e) {
                    e = unescape(encodeURIComponent(e));
                    for (var n = new Uint8Array(e.length), t = 0; t < e.length; ++t)
                        n[t] = e.charCodeAt(t);
                    return n
                }(t) : t
                  , u = "string" == typeof r ? c(r) : r;
                if ("string" == typeof r && (r = c(r)),
                16 !== (null == r ? void 0 : r.length))
                    throw TypeError("Namespace must be array-like (16 iterable integer values, 0-255)");
                var s = new Uint8Array(16 + a.length);
                if (s.set(u),
                s.set(a, u.length),
                (s = n(s))[6] = 15 & s[6] | e,
                s[8] = 63 & s[8] | 128,
                i) {
                    o = o || 0;
                    for (var l = 0; l < 16; ++l)
                        i[o + l] = s[l];
                    return i
                }
                return f(s)
            }
            function R(e, n, t, r) {
                return A(48, C, e, n, t, r)
            }
            R.DNS = I,
            R.URL = U;
            var O = R
              , B = {
                randomUUID: "undefined" != typeof crypto && crypto.randomUUID && crypto.randomUUID.bind(crypto)
            }
              , D = function(e, n, t) {
                return !B.randomUUID || n || e ? function(e, n, t) {
                    var r, i, o, a = null !== (o = null !== (r = (e = e || {}).random) && void 0 !== r ? r : null === (i = e.rng) || void 0 === i ? void 0 : i.call(e)) && void 0 !== o ? o : p();
                    if (a.length < 16)
                        throw new Error("Random bytes length must be >= 16");
                    if (a[6] = 15 & a[6] | 64,
                    a[8] = 63 & a[8] | 128,
                    n) {
                        if ((t = t || 0) < 0 || t + 16 > n.length)
                            throw new RangeError("UUID byte range ".concat(t, ":").concat(t + 15, " is out of buffer bounds"));
                        for (var c = 0; c < 16; ++c)
                            n[t + c] = a[c];
                        return n
                    }
                    return f(a)
                }(e, n, t) : B.randomUUID()
            };
            function _(e, n, t, r) {
                switch (e) {
                case 0:
                    return n & t ^ ~n & r;
                case 1:
                case 3:
                    return n ^ t ^ r;
                case 2:
                    return n & t ^ n & r ^ t & r
                }
            }
            function k(e, n) {
                return e << n | e >>> 32 - n
            }
            var M = function(e) {
                var n = [1518500249, 1859775393, 2400959708, 3395469782]
                  , t = [1732584193, 4023233417, 2562383102, 271733878, 3285377520]
                  , r = new Uint8Array(e.length + 1);
                r.set(e),
                r[e.length] = 128;
                for (var i = (e = r).length / 4 + 2, o = Math.ceil(i / 16), a = new Array(o), c = 0; c < o; ++c) {
                    for (var u = new Uint32Array(16), s = 0; s < 16; ++s)
                        u[s] = e[64 * c + 4 * s] << 24 | e[64 * c + 4 * s + 1] << 16 | e[64 * c + 4 * s + 2] << 8 | e[64 * c + 4 * s + 3];
                    a[c] = u
                }
                for (a[o - 1][14] = 8 * (e.length - 1) / Math.pow(2, 32),
                a[o - 1][14] = Math.floor(a[o - 1][14]),
                a[o - 1][15] = 8 * (e.length - 1) & 4294967295,
                c = 0; c < o; ++c) {
                    for (var f = new Uint32Array(80), l = 0; l < 16; ++l)
                        f[l] = a[c][l];
                    for (l = 16; l < 80; ++l)
                        f[l] = k(f[l - 3] ^ f[l - 8] ^ f[l - 14] ^ f[l - 16], 1);
                    var d = t[0]
                      , v = t[1]
                      , p = t[2]
                      , m = t[3]
                      , g = t[4];
                    for (l = 0; l < 80; ++l) {
                        var y = Math.floor(l / 20)
                          , h = k(d, 5) + _(y, v, p, m) + g + n[y] + f[l] >>> 0;
                        g = m,
                        m = p,
                        p = k(v, 30) >>> 0,
                        v = d,
                        d = h
                    }
                    t[0] = t[0] + d >>> 0,
                    t[1] = t[1] + v >>> 0,
                    t[2] = t[2] + p >>> 0,
                    t[3] = t[3] + m >>> 0,
                    t[4] = t[4] + g >>> 0
                }
                return Uint8Array.of(t[0] >> 24, t[0] >> 16, t[0] >> 8, t[0], t[1] >> 24, t[1] >> 16, t[1] >> 8, t[1], t[2] >> 24, t[2] >> 16, t[2] >> 8, t[2], t[3] >> 24, t[3] >> 16, t[3] >> 8, t[3], t[4] >> 24, t[4] >> 16, t[4] >> 8, t[4])
            };
            function j(e, n, t, r) {
                return A(80, M, e, n, t, r)
            }
            j.DNS = I,
            j.URL = U;
            var F = j
              , x = function() {
                return x = Object.assign || function(e) {
                    for (var n, t = 1, r = arguments.length; t < r; t++)
                        for (var i in n = arguments[t])
                            Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i]);
                    return e
                }
                ,
                x.apply(this, arguments)
            }
              , q = function(e, n, t) {
                null != e || (e = {}),
                null != t || (t = 0);
                var r = y(x(x({}, e), {
                    _v6: !0
                }), new Uint8Array(16));
                if (r = h(r),
                n) {
                    for (var i = 0; i < 16; i++)
                        n[t + i] = r[i];
                    return n
                }
                return f(r)
            };
            function N(e) {
                var n, t = (n = "string" == typeof e ? c(e) : e,
                Uint8Array.of((15 & n[3]) << 4 | n[4] >> 4 & 15, (15 & n[4]) << 4 | (240 & n[5]) >> 4, (15 & n[5]) << 4 | 15 & n[6], n[7], (15 & n[1]) << 4 | (240 & n[2]) >> 4, (15 & n[2]) << 4 | (240 & n[3]) >> 4, 16 | (240 & n[0]) >> 4, (15 & n[0]) << 4 | (240 & n[1]) >> 4, n[8], n[9], n[10], n[11], n[12], n[13], n[14], n[15]));
                return "string" == typeof e ? f(t) : t
            }
            var V = {};
            function H(e, n, t, r, i) {
                if (void 0 === i && (i = 0),
                e.length < 16)
                    throw new Error("Random bytes length must be >= 16");
                if (r) {
                    if (i < 0 || i + 16 > r.length)
                        throw new RangeError("UUID byte range ".concat(i, ":").concat(i + 15, " is out of buffer bounds"))
                } else
                    r = new Uint8Array(16),
                    i = 0;
                return null != n || (n = Date.now()),
                null != t || (t = 127 * e[6] << 24 | e[7] << 16 | e[8] << 8 | e[9]),
                r[i++] = n / 1099511627776 & 255,
                r[i++] = n / 4294967296 & 255,
                r[i++] = n / 16777216 & 255,
                r[i++] = n / 65536 & 255,
                r[i++] = n / 256 & 255,
                r[i++] = 255 & n,
                r[i++] = 112 | t >>> 28 & 15,
                r[i++] = t >>> 20 & 255,
                r[i++] = 128 | t >>> 14 & 63,
                r[i++] = t >>> 6 & 255,
                r[i++] = t << 2 & 255 | 3 & e[10],
                r[i++] = e[11],
                r[i++] = e[12],
                r[i++] = e[13],
                r[i++] = e[14],
                r[i++] = e[15],
                r
            }
            var z = function(e, n, t) {
                var r, i, o, a;
                if (e)
                    a = H(null !== (o = null !== (r = e.random) && void 0 !== r ? r : null === (i = e.rng) || void 0 === i ? void 0 : i.call(e)) && void 0 !== o ? o : p(), e.msecs, e.seq, n, t);
                else {
                    var c = Date.now()
                      , u = p();
                    !function(e, n, t) {
                        var r, i;
                        null !== (r = e.msecs) && void 0 !== r || (e.msecs = -1 / 0),
                        null !== (i = e.seq) && void 0 !== i || (e.seq = 0),
                        n > e.msecs ? (e.seq = t[6] << 23 | t[7] << 16 | t[8] << 8 | t[9],
                        e.msecs = n) : (e.seq = e.seq + 1 | 0,
                        0 === e.seq && e.msecs++)
                    }(V, c, u),
                    a = H(u, V.msecs, V.seq, n, t)
                }
                return null != n ? n : f(a)
            }
              , K = function(e) {
                if (!a(e))
                    throw TypeError("Invalid UUID");
                return parseInt(e.slice(14, 15), 16)
            }
        }
    }
      , n = {};
    function t(r) {
        var i = n[r];
        if (void 0 !== i)
            return i.exports;
        var o = n[r] = {
            exports: {}
        };
        return e[r].call(o.exports, o, o.exports, t),
        o.exports
    }
    t.d = function(e, n) {
        for (var r in n)
            t.o(n, r) && !t.o(e, r) && Object.defineProperty(e, r, {
                enumerable: !0,
                get: n[r]
            })
    }
    ,
    t.o = function(e, n) {
        return Object.prototype.hasOwnProperty.call(e, n)
    }
    ,
    t.r = function(e) {
        "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, {
            value: "Module"
        }),
        Object.defineProperty(e, "__esModule", {
            value: !0
        })
    }
    ,
    t(570)
}();

这个JavaScript文件的作用分析

这是一个Cloudflare RUM(Real User Monitoring)性能监控脚本,用于收集和发送网页性能数据到Cloudflare的监控服务。以下是详细的功能解释:

核心功能

1. 性能指标收集

脚本主要收集以下Web Vitals性能指标:

2. 数据发送机制

脚本使用两种方式发送性能数据:

3. SPA支持

脚本支持单页应用(SPA),通过监听history的pushState和popstate事件,自动跟踪页面路由变化并发送性能数据。

4. 性能阈值评估

脚本内置了性能阈值评估,将指标分为三个等级:

5. 资源和服务器计时

脚本收集页面加载的详细计时数据,包括DNS查询、TCP连接、请求响应等阶段的时间。

关键模块分析

1. sendObjectBeacon (第36模块)

负责将性能数据发送到Cloudflare服务器,自动选择合适的发送方式。

2. Web Vitals监控 (第173模块)

包含所有Web Vitals指标的监控逻辑,使用PerformanceObserver API实时收集性能数据。

3. 性能数据构建 (第559模块)

负责构建性能数据对象,整理导航计时和资源计时数据。

4. 主入口 (第570模块)

脚本的主入口,初始化监控配置,设置事件监听器,启动性能数据收集。

使用场景

这个脚本通常通过Cloudflare的CDN服务注入到网页中,用于: