{"version":3,"file":"main.a30f292381a69501c3f0.bundle.mjs","mappings":"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","sources":["webpack://socialUX/./consts.js","webpack://socialUX/./context.js","webpack://socialUX/./context/eventBus.js","webpack://socialUX/./context/intersectionObserverProvider.js","webpack://socialUX/./elementChangeListener.js","webpack://socialUX/./views/assemblerSlideshowLoader.js","webpack://socialUX/./views/hamburgerMenu.js","webpack://socialUX/./views/products/loader.js","webpack://socialUX/./views/keepReading/loader.js","webpack://socialUX/./views/liveBlog/loader.js","webpack://socialUX/./views/userBehavior/loader.js","webpack://socialUX/./views/mediaLazyLoad/lazyFacebook.js","webpack://socialUX/./views/mediaLazyLoad/lazyIframe.js","webpack://socialUX/./utils/getMaxWidthAndHeight.js","webpack://socialUX/./views/mediaLazyLoad/lazyImage.js","webpack://socialUX/./views/mediaLazyLoad/utils.js","webpack://socialUX/./views/mediaLazyLoad/lazyInstagram.js","webpack://socialUX/./views/mediaLazyLoad/lazyThreads.js","webpack://socialUX/./views/mediaLazyLoad/lazyReddit.js","webpack://socialUX/./views/mediaLazyLoad/lazyTwitter.js","webpack://socialUX/./views/mediaLazyLoad/lazyTikTok.js","webpack://socialUX/./views/mediaLazyLoad/lazyBrightcove.js","webpack://socialUX/./views/mediaLazyLoad/viewportStyle.js","webpack://socialUX/./views/mediaLazyLoad/lazyImgur.js","webpack://socialUX/./views/loginSignup/loader.js","webpack://socialUX/./views/nativeTalks/loader.js","webpack://socialUX/./views/scrollTriggerLoader.js","webpack://socialUX/./views/doubleStickyLoader.js","webpack://socialUX/./views/searchForm.js","webpack://socialUX/./stats/ga4Stats.js","webpack://socialUX/./stats/nativeStats.js","webpack://socialUX/./utils/postJsonData.js","webpack://socialUX/./utils/postStatus.js","webpack://socialUX/./stats/parselyStats.js","webpack://socialUX/./stats/streamsScores.js","webpack://socialUX/./stats/metadata.js","webpack://socialUX/./stats/statsTracker.js","webpack://socialUX/./stats/index.js","webpack://socialUX/./views/subscriptionFormLoader.js","webpack://socialUX/./views/tabs/loader.js","webpack://socialUX/./views/videoPlayerLoader.js","webpack://socialUX/./views/uplynk/loader.js","webpack://socialUX/./views/assemblerUpDownVoting/loader.js","webpack://socialUX/./views/followButton/loader.js","webpack://socialUX/./views/likeButton/loader.js","webpack://socialUX/./views/folders/foldersButton/loader.js","webpack://socialUX/./views/folders/foldersPostManager/loader.js","webpack://socialUX/./views/mediaLazyLoad/lazyScript.js","webpack://socialUX/./utils/createIdleQueue.js","webpack://socialUX/./lib/sliderLoader.js","webpack://socialUX/./utils/onPageIdle.js","webpack://socialUX/./utils/loadFontFace.js","webpack://socialUX/./utils/gsapPluginRegistry.js","webpack://socialUX/./utils/loadGsap.js","webpack://socialUX/./components/componentHandler.js","webpack://socialUX/./transport/components.js","webpack://socialUX/./utils/evaluateScriptOnDom.js","webpack://socialUX/./components/_common.js","webpack://socialUX/./components/loadLazySlots.js","webpack://socialUX/./components/nextPage.js","webpack://socialUX/./components/channelLoader.js","webpack://socialUX/./stdlib/index.js","webpack://socialUX/./adLoader/index.js","webpack://socialUX/./smartLinks/customizations/index.js","webpack://socialUX/./transport/customizations.js","webpack://socialUX/./app.js","webpack://socialUX/./views/scrollParticleIntoView.js","webpack://socialUX/./views/mediaLazyLoad/index.js","webpack://socialUX/./views/stickyHeader.js","webpack://socialUX/./views/shares/postShares.js","webpack://socialUX/./views/pageFetch/loader.js","webpack://socialUX/./views/shares/bodyImageSharesLoader.js","webpack://socialUX/./views/changeUrlOnScrollLoader.js","webpack://socialUX/./views/floatingElementsLoader.js","webpack://socialUX/./views/gdprCookieAcceptHandler.js","webpack://socialUX/./stats/resumableTimer.js","webpack://socialUX/./ldDebugger/loader.js","webpack://socialUX/./index.js","webpack://socialUX/./legacyMain.js","webpack://socialUX/./lib/core/functional/call.js","webpack://socialUX/./lib/core/functional/curry.js","webpack://socialUX/./lib/core/functional/fromNullable.js","webpack://socialUX/./lib/core/functional/noop.js","webpack://socialUX/./lib/core/functional/partial.js","webpack://socialUX/./lib/core/functional/pipe.js","webpack://socialUX/./lib/core/functional/thunk.js","webpack://socialUX/./renderer/loadRenderer.js","webpack://socialUX/./transport/fullBootstrap.js","webpack://socialUX/./transport/utils.js","webpack://socialUX/./upgradeToLoggedInLoader.js","webpack://socialUX/./utils/applyStyles.js","webpack://socialUX/./utils/callbackRunner.js","webpack://socialUX/./utils/connectionHandler.js","webpack://socialUX/./utils/createIdleScrollListener.js","webpack://socialUX/./utils/createSmartIntersector.js","webpack://socialUX/./utils/getDevice.js","webpack://socialUX/./utils/htmlDecode.js","webpack://socialUX/./utils/idleCallback.js","webpack://socialUX/./utils/initClickHandler.js","webpack://socialUX/./utils/loadContextData.js","webpack://socialUX/./utils/loadExternalResource.js","webpack://socialUX/./utils/loadExternalScript.js","webpack://socialUX/./utils/loadExternalStylesheet.js","webpack://socialUX/./utils/loadModuleOnElement.js","webpack://socialUX/./utils/loadModuleOnScroll.js","webpack://socialUX/./utils/loggedInControl.js","webpack://socialUX/./utils/moduleLoader.js","webpack://socialUX/./utils/onPostLcp.js","webpack://socialUX/./utils/raiseNotification.js","webpack://socialUX/./utils/simpleQueue.js","webpack://socialUX/./utils/spawnTask.js","webpack://socialUX/./utils/translateParamsToObject.js","webpack://socialUX/./views/informer/loader.js","webpack://socialUX/./views/liveBlog/postParticleLoader.js","webpack://socialUX/./views/mediaLazyLoad/_mediaPool.js","webpack://socialUX/./views/mediaLazyLoad/jwplayer/loader.js","webpack://socialUX/./views/shares/common.js","webpack://socialUX/./node_modules/web-vitals/dist/web-vitals.js"],"sourcesContent":["export const URL_CHANGE_EVENT = \"url:change\";\nexport const URL_SCROLLED_EVENT = \"url:scrolled\";\nexport const PAGE_LOAD_EVENT = \"page:loaded\";\nexport const READ_ARTICLE_EVENT = \"read-article:click\";\nexport const POST_SHARED_EVENT = \"post:shared\";\n","import eventBus from \"./context/eventBus\";\nimport intersectionObserverProvider from \"./context/intersectionObserverProvider\";\nimport translateParamsToObject from \"./utils/translateParamsToObject\";\n\nlet CONTEXT = null;\n\nexport default function getContext() {\n    if (CONTEXT == null) {\n        CONTEXT = {\n            intersectionObserverProvider,\n            eventBus,\n            settings: window.REBELMOUSE_BOOTSTRAP_DATA,\n            path: window.location.pathname,\n            pathParams: translateParamsToObject(window.location.search),\n        };\n    }\n\n    return CONTEXT;\n}\n","const handlersByEvent = {};\n\nfunction publish(event, data) {\n    const subscribers = handlersByEvent[event] || [];\n    subscribers.forEach(subscriber => {\n        subscriber(data);\n    });\n}\n\nfunction subscribe(event, handler) {\n    handlersByEvent[event] = handlersByEvent[event] || [];\n    handlersByEvent[event].push(handler);\n}\n\nexport default {\n    subscribe,\n    publish\n};\n","import elementChangeListener from \"../elementChangeListener\";\n\nfunction addTask(task) {\n    task._reportedIntersections = task._reportedIntersections || 0;\n    task.threshold = task.threshold || 0;\n    task.finished = task.finished || new Set([]);\n\n    function handleNonIntersection(entry) {\n        if (task.onNonIntersect) {\n            task.onNonIntersect(entry);\n        }\n        const { target } = entry;\n\n        if (task.onBellowViewport || task.onAboveViewport) {\n            const { top } = target.getBoundingClientRect();\n            if (top < 0 && task.onAboveViewport) {\n                task.onAboveViewport(target);\n            }\n\n            if (top >= 0 && task.onBellowViewport) {\n                task.onBellowViewport(target);\n            }\n        }\n    }\n\n    function reportIntersection(entry) {\n        const { target } = entry;\n\n        if (!entry.isIntersecting) {\n            handleNonIntersection(entry);\n            return null;\n        }\n\n        if (task.firstOnly && task._reportedIntersections > 0) {\n            return null;\n        }\n\n        task._reportedIntersections++;\n\n        if (task.firstOnly) {\n            task.observer.disconnect();\n            task.mutationObserver.disconnect();\n        } else if (task.oneTime) {\n            task.observer.unobserve(target);\n            task.finished.add(target);\n        }\n\n        if (task.onIntersect) {\n            task.onIntersect(entry);\n        }\n    }\n\n    function entriesHandler(entries) {\n        entries.forEach(reportIntersection);\n    }\n\n    const rootMargin = task.rootMargin || `0px 0px ${task.threshold}px 0px`;\n    task.observer = new IntersectionObserver(task.entriesHandler || entriesHandler, {\n        rootMargin,\n    });\n\n    if (task.selector) {\n        task.mutationObserver = elementChangeListener(task.selector, (node) => {\n            if (!task.finished.has(node)) {\n                task.onAppear && task.onAppear(node);\n                task.observer.observe(node);\n            }\n        });\n    }\n\n    if (task.rawNodes) {\n        task.rawNodes.forEach((element) => {\n            task.observer.observe(element);\n        });\n    }\n\n    return [task.observer, task.mutationObserver];\n}\n\nexport default {\n    addTask,\n};\n","export default function createElementChangeListener(selector, callback, oneTime, target) {\n    const initializedNodes = new Set([]);\n    let reported = false;\n\n    const root = target || document;\n    const observeRoot = target || document.body;\n\n    root.querySelectorAll(selector).forEach((node) => {\n        if (oneTime && reported) {\n            return;\n        }\n        reported = true;\n        callback(node);\n        initializedNodes.add(node);\n    });\n\n    const mutationObserver = new MutationObserver(() => {\n        const nodes = root.querySelectorAll(selector);\n        nodes.forEach((node) => {\n            if (oneTime && reported) {\n                return;\n            }\n\n            if (!initializedNodes.has(node)) {\n                reported = true;\n                callback(node);\n                initializedNodes.add(node);\n                if (oneTime) {\n                    mutationObserver.disconnect();\n                }\n            }\n        });\n    });\n\n    if (!oneTime || !reported) {\n        mutationObserver.observe(observeRoot, {\n            childList: true,\n            subtree: true,\n        });\n    }\n    return mutationObserver;\n}\n","import loadModuleOnElement from \"../utils/loadModuleOnElement\";\n\nconst slideshowSelector = \".listicle-slideshow\";\nconst fullscreenSlideshowSelector = \".js--fullscreen-preview\";\nconst paginationSelector = \".js-listicle-switch-page\";\nconst votingSelector = \".listicle-voting\";\n\nconst slideshowLoader = () => import(\"./assemblerSlideshow\");\nconst fullScreenSlideshowLoader = () => import(\"./assemblerFullScreenSlideshow\");\nconst paginationLoader = () => import(\"./assemblerPagination\");\nconst votingLoader = () => import(\"./assemblerVoting\");\n\nexport default function assemblerSlideshowLoader(context) {\n    loadModuleOnElement(slideshowSelector, slideshowLoader, context);\n    loadModuleOnElement(fullscreenSlideshowSelector, fullScreenSlideshowLoader, context);\n    loadModuleOnElement(paginationSelector, paginationLoader, context);\n    loadModuleOnElement(votingSelector, votingLoader, context);\n\n    return context;\n}\n","import createElementChangeListener from \"../elementChangeListener\";\n\nconst MENU_OPENED_CLASS = \"menu-opened\";\nconst HAMBURGER_SELECTOR = \".rebelbar__menu-toggle\";\nconst MENU_OVERLAYSELECTOR = \".menu-overlay\";\n\nfunction toggleMenu() {\n    document.body.classList.toggle(MENU_OPENED_CLASS);\n}\n\nfunction onHamburgerToggler(el) {\n    el.addEventListener(\"click\", toggleMenu);\n}\n\nfunction removeMenu() {\n    document.body.classList.remove(MENU_OPENED_CLASS);\n}\n\nexport default function initHamburgerMenu(context) {\n    createElementChangeListener(HAMBURGER_SELECTOR, onHamburgerToggler);\n    const menuOverlay = document.querySelector(MENU_OVERLAYSELECTOR);\n    if (menuOverlay) {\n        menuOverlay.addEventListener(\"click\", removeMenu);\n    }\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./module\");\n\nexport default function initProductsLoader(context) {\n    loadModuleOnElement('img[usemap ^=\"#image-map-\"], [data-use-product-map=\"true\"] .widget__head .widget__image', loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./module\");\n\nexport default function keepReadingLoader(context) {\n    loadModuleOnElement(\".js-keep-reading\", loader, context, true);\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst moduleLoader = () => import(\"./section\");\n\nexport default function loader(context) {\n    loadModuleOnElement(\".live-section-update\", moduleLoader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst moduleLoader = () => import(\"./userBehaviorContent\");\n\nexport default function loader(context) {\n    loadModuleOnElement(\".rm-user-behavior-script\", moduleLoader, context);\n    return context;\n}","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\n\nfunction onIntersect(entry) {\n    function onFreeSlot(resourceID) {\n        function onLoad() {\n            mediaPool.release(resourceID);\n        }\n        const node = entry.target;\n        window.FB.XFBML.parse(node.parentElement, onLoad);\n    }\n\n    mediaPool.request(1500).then(onFreeSlot);\n}\n\nfunction onDependencyLoad() {\n    const bootstrap = window.REBELMOUSE_BOOTSTRAP_DATA;\n    window.FB.init({\n        appId: bootstrap.fbId,\n        version: bootstrap.fbAppVersion,\n        status: true,\n        cookie: true,\n    });\n}\n\nexport default function loadLazyFacebook(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        onDependencyLoad,\n        initialThreshold: 500,\n        selector: \".fb-post, .fb-page, .fb-video, .fb-comments, .fb-like\",\n        dependencySrc: \"https://connect.facebook.net/en_US/sdk.js\",\n    });\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\n\nfunction onIntersect(entry) {\n    function onFreeSlot(resourceID) {\n        function onLoad() {\n            mediaPool.release(resourceID);\n        }\n        const { target } = entry;\n        target.addEventListener(\"load\", onLoad);\n        const { runnerSrc } = target.dataset;\n        if (runnerSrc) {\n            target.src = runnerSrc;\n            delete target.dataset.runnerSrc;\n        }\n    }\n\n    mediaPool.request(1500).then(onFreeSlot);\n}\n\nexport default function loadLazyIFrames(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        selector: \"iframe[data-runner-src]\",\n        initialThreshold: 500,\n    });\n}\n","const possibleContainers = [\n    \".rm-container-resized\",\n    \".rebellt-item\",\n    \".body-description\",\n    \".widget__img\",\n    \"article\",\n];\n\nexport function findAppropiateParent(element) {\n    function testSelector(foundElement, selector) {\n        if (foundElement) {\n            return foundElement;\n        }\n\n        const elementToTest = element.closest(selector);\n\n        if (!elementToTest) {\n            return null;\n        }\n\n        if (elementToTest.dataset && elementToTest.dataset.rmCalcWidth) {\n            return elementToTest;\n        }\n\n        const elWidth = Math.ceil(elementToTest.offsetWidth / 100) * 100;\n\n        if (elWidth > 0) {\n            elementToTest.dataset.rmCalcWidth = elWidth;\n            return elementToTest;\n        } else {\n            return null;\n        }\n    }\n\n    return possibleContainers.reduce(testSelector, null);\n}\n\nexport default function getMaxWidthAndHeight(width, height, containerWidth, containerHeight) {\n    if (containerWidth > width) {\n        return { maxWidth: width, maxHeight: height };\n    }\n\n    let maxWidth = containerWidth;\n    let maxHeight = parseInt((maxWidth * height) / width, 10);\n    if (containerHeight && maxHeight > containerHeight) {\n        maxHeight = containerHeight;\n        maxWidth = parseInt((maxHeight * width) / height, 10);\n    }\n    return { maxWidth, maxHeight };\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport { getConnectionType } from \"../../utils/connectionHandler\";\nimport translateParamsToObject from \"../../utils/translateParamsToObject\";\nimport {\n    default as getMaxWidthAndHeight,\n    findAppropiateParent,\n} from \"../../utils/getMaxWidthAndHeight\";\nimport createElementChangeListener from \"../../elementChangeListener\";\nimport * as mediaPool from \"./_mediaPool\";\n\nfunction pairToQueryParam([key, value]) {\n    return `${key}=${value}`;\n}\n\nfunction objectToQS(obj) {\n    return `?${Object.entries(obj).map(pairToQueryParam).join(\"&\")}`;\n}\n\nconst qualityToConnectionMap = {\n    \"4g\": window.REBELMOUSE_BOOTSTRAP_DATA.engine.image_quality_level || 80,\n    \"2g\": 60,\n    \"slow-2g\": 60,\n    \"3g\": 75,\n};\n\nfunction getPixelDensity() {\n    let devicePixelRatio = window.devicePixelRatio ? parseInt(window.devicePixelRatio, 10) : 1;\n    if (undefined !== window.REBELMOUSE_BOOTSTRAP_DATA.engine.override_device_pixel_ratio) {\n        devicePixelRatio = parseInt(\n            window.REBELMOUSE_BOOTSTRAP_DATA.engine.override_device_pixel_ratio,\n            10\n        );\n    }\n    return Math.min(3, Math.max(devicePixelRatio, 1));\n}\n\nfunction getAppropiateQuality() {\n    return qualityToConnectionMap[getConnectionType()];\n}\n\nfunction getImageParam(paramName, element, queryParams) {\n    let value = queryParams[paramName];\n    const param = element.getAttribute(paramName);\n    if (param && !isNaN(param)) {\n        value = param;\n    } else if (\"dataset\" in element && paramName in element.dataset) {\n        value = element.dataset[paramName];\n    }\n    return value && parseInt(value, 10);\n}\n\nfunction getOptimizedSrc(ogSrc, element, containerWidth, containerHeight) {\n    const maxContainerWidth = parseInt(containerWidth, 10);\n    const maxContainerHeight = containerHeight ? parseInt(containerHeight, 10) : null;\n    const src = new URL(ogSrc);\n    const queryParams = translateParamsToObject(src.search);\n\n    const elWidth = getImageParam(\"width\", element, queryParams);\n    const elHeight = getImageParam(\"height\", element, queryParams);\n\n    const { maxWidth, maxHeight } = getMaxWidthAndHeight(\n        elWidth,\n        elHeight,\n        maxContainerWidth,\n        maxContainerHeight\n    );\n\n    const scale = getPixelDensity();\n    const params = { ...queryParams, quality: getAppropiateQuality() };\n\n    if (\"coordinates\" in queryParams && \"height\" in queryParams) {\n        params.coordinates = queryParams.coordinates;\n        params.height = parseInt(maxHeight * scale);\n    }\n\n    if (\"width\" in queryParams) {\n        params.width = parseInt(maxWidth * scale);\n    }\n\n    if (Object.keys(params).length > 1) {\n        const queryString = objectToQS(params);\n        src.search = queryString;\n        return src.href;\n    } else {\n        return null;\n    }\n}\n\nfunction readjustImages(element) {\n    const closestContainer = findAppropiateParent(element);\n\n    if (!closestContainer) {\n        return;\n    }\n\n    const newMaxWidth = closestContainer.dataset.rmCalcWidth || closestContainer.offsetWidth;\n    const optimizedSrc = getOptimizedSrc(element.dataset.runnerSrc, element, newMaxWidth);\n\n    if (optimizedSrc) {\n        element.dataset.runnerSrc = optimizedSrc;\n        element.dataset.adjustedSrc = true;\n    }\n}\n\nfunction releasePool(resourceID) {\n    return function onLoad() {\n        mediaPool.release(resourceID);\n    };\n}\n\nfunction lazyImageHandler(entry) {\n    function onFreeSlot(resourceID) {\n        const node = entry.target;\n        if (!node.dataset.adjustedSrc) {\n            readjustImages(node);\n        }\n        const url = node.dataset.runnerSrc;\n        const onLoad = releasePool(resourceID);\n        node.addEventListener(\"load\", onLoad);\n        node.src = url;\n        node.removeAttribute(\"data-runner-src\");\n        node.removeAttribute(\"type\");\n    }\n\n    mediaPool.request(1000).then(onFreeSlot);\n}\n\nfunction backgroundImageHandler(entry) {\n    function onFreeSlot(resourceID) {\n        const node = entry.target;\n        let url = node.dataset.runnerImgHd;\n\n        if (window.REBELMOUSE_BOOTSTRAP_DATA.engine.lazyLoadShortcodeImages) {\n            const imageSrc = getOptimizedSrc(url, node, node.offsetWidth, node.offsetHeight);\n            if (imageSrc) {\n                url = imageSrc;\n            }\n        }\n\n        const onLoad = releasePool(resourceID);\n        const img = new Image();\n        img.addEventListener(\"load\", onLoad);\n        img.src = url;\n        node.style.backgroundImage = `url(${url})`;\n    }\n\n    mediaPool.request(1000).then(onFreeSlot);\n}\n\nconst treshholdCalculator = {\n    \"4g\": function on4G() {\n        return 300;\n    },\n    \"3g\": function on3G() {\n        return 700;\n    },\n    \"2g\": function on2G() {\n        return 900;\n    },\n    \"slow-2g\": function onSlow2G() {\n        return 900;\n    },\n};\n\nexport default function loadLazyImages(intersectionObserverProvider) {\n    if (window.REBELMOUSE_BOOTSTRAP_DATA.engine.lazyLoadShortcodeImages) {\n        createElementChangeListener(\"img[data-runner-src]\", readjustImages);\n    }\n\n    createSmartIntersector(intersectionObserverProvider, {\n        treshholdCalculator,\n        initialThreshold: 50,\n        selector: \"img[data-runner-src]\",\n        onIntersect: lazyImageHandler,\n    });\n\n    createSmartIntersector(intersectionObserverProvider, {\n        treshholdCalculator,\n        initialThreshold: 50,\n        selector: \"[data-runner-img-hd]\",\n        onIntersect: backgroundImageHandler,\n    });\n}\n","export function controlSpacer(embed, container) {\n    if (!container || !embed) {\n        return false;\n    }\n\n    const { bottom: embedBottom, height: embedHeight } = embed.getBoundingClientRect();\n    const { bottom: containerBottom, height: containerHeight } = container.getBoundingClientRect();\n\n    if (embedBottom < 0 && containerBottom < 0) {\n        return true;\n    }\n\n    if (embedHeight > containerHeight + 10) {\n        container.classList.add(\"rm-off\");\n        return false;\n    } else {\n        return true;\n    }\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\nimport { controlSpacer } from \"./utils\";\n\nconst instagramClass = \"instagram-media\";\nconst lazyInstagramClass = \"lazy-instagram-media\";\n\nfunction onIntersect(entry) {\n    async function onFreeSlot(resourceID) {\n        const target = entry.target;\n\n        function releaseIGResource(frame) {\n            const container = target.closest(\".rm-embed-container.rm-loading\");\n\n            if (container) {\n                container.classList.remove(\"rm-loading\");\n                container.classList.add(\"rm-loaded\");\n                setTimeout(() => {\n                    controlSpacer(frame, container);\n                }, 500);\n            }\n\n            mediaPool.release(resourceID);\n        }\n\n        target.classList.add(instagramClass);\n        target.classList.remove(lazyInstagramClass);\n\n        try {\n            const { renderInstagramEmbed } = await import(\"./instagramThreadsEmbedRenderer\");\n\n            if (!renderInstagramEmbed(target, releaseIGResource)) {\n                mediaPool.release(resourceID);\n            }\n        } catch (error) {\n            mediaPool.release(resourceID);\n        }\n    }\n    mediaPool.request(1700).then(onFreeSlot, () => {});\n}\n\nfunction invalidate(element) {\n    element.classList.remove(instagramClass);\n    element.classList.add(lazyInstagramClass);\n}\n\nexport default function loadLazyInstagram(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        onAppear: invalidate,\n        initialThreshold: 300,\n        selector: \"blockquote.instagram-media,blockquote.lazy-instagram-media\",\n    });\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\nimport { controlSpacer } from \"./utils\";\n\nconst threadsClass = \"text-post-media\";\nconst lazyThreadsClass = \"lazy-text-post-media\";\n\nfunction onIntersect(entry) {\n    const target = entry.target;\n\n    async function onFreeSlot(resourceID) {\n        function releaseThreadsResource(frame) {\n            const container = target.closest(\".rm-embed-container.rm-loading\");\n\n            if (container) {\n                container.classList.remove(\"rm-loading\");\n                container.classList.add(\"rm-loaded\");\n\n                setTimeout(() => {\n                    controlSpacer(frame, container);\n                }, 500);\n            }\n\n            mediaPool.release(resourceID);\n        }\n\n        target.classList.add(threadsClass);\n        target.classList.remove(lazyThreadsClass);\n\n        try {\n            const { renderThreadsEmbed } = await import(\"./instagramThreadsEmbedRenderer\");\n\n            if (!renderThreadsEmbed(target, releaseThreadsResource)) {\n                mediaPool.release(resourceID);\n            }\n        } catch (error) {\n            mediaPool.release(resourceID);\n        }\n    }\n    mediaPool.request(1700).then(onFreeSlot, () => {});\n}\n\nfunction invalidate(element) {\n    element.classList.remove(threadsClass);\n    element.classList.add(lazyThreadsClass);\n}\n\nexport default function loadLazyThreads(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        onAppear: invalidate,\n        initialThreshold: 300,\n        selector: \"blockquote.text-post-media,blockquote.lazy-text-post-media\",\n    });\n}\n","import createSmartIntersector from '../../utils/createSmartIntersector';\n\nfunction onIntersect(){}\n\nexport default function loadLazyReddit(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        initialThreshold: 500,\n        dependencySrc: \"https://embed.redditmedia.com/widgets/platform.js\",\n        selector: \"blockquote.reddit-card\",\n    });\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\nimport { controlSpacer } from \"./utils\";\n\nconst activeTwitterRequests = [];\n\nfunction releaseTweetResource(event) {\n    const resourceID = activeTwitterRequests.shift();\n    if (resourceID) {\n        mediaPool.release(resourceID);\n    }\n    const container = event.target.closest(\".rm-embed-container.rm-loading\");\n    if (container) {\n        container.classList.remove(\"rm-loading\");\n        container.classList.add(\"rm-loaded\");\n        if (controlSpacer(event.target, container)) {\n            const iframe = event.target.querySelector(\"iframe\");\n            iframe.style.height = `${container.getBoundingClientRect().height}px`;\n        }\n    }\n}\n\nfunction onIntersect(entry) {\n    function onFreeSlot(resourceID) {\n        let tweet = entry.target;\n\n        if (tweet.matches(\".rm-embed-twitter\")) {\n            tweet = tweet.querySelector(\"blockquote.twitter-custom-tweet\");\n        }\n\n        if (tweet.dataset.loading) {\n            mediaPool.release(resourceID);\n            return;\n        }\n\n        if (!tweet.dataset.twitterTweetId) {\n            tweet.dataset.twitterTweetId = tweet.dataset.lazyTweetId;\n        }\n\n        tweet.dataset.loading = true;\n\n        activeTwitterRequests.push(resourceID);\n        tweet.classList.add(\"twitter-tweet\");\n        window.twttr.widgets.load(tweet.parentElement);\n    }\n\n    mediaPool.request(1200).then(onFreeSlot);\n}\n\nfunction onDependencyLoad() {\n    twttr.ready(function onTwitterReady() {\n        twttr.events.bind(\"rendered\", releaseTweetResource);\n    });\n}\n\nfunction invalidate(element) {\n    element.classList.remove(\"twitter-tweet\");\n    element.dataset.lazyTweetId = element.dataset.twitterTweetId;\n    delete element.dataset.twitterTweetId;\n}\n\nfunction beforeDependencyLoad() {\n    document.querySelectorAll(\"blockquote.twitter-custom-tweet\").forEach(invalidate);\n}\n\nexport default function loadLazyTwitter(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        onDependencyLoad,\n        beforeDependencyLoad,\n        selector: \".rm-embed-twitter,blockquote.twitter-custom-tweet\",\n        dependencySrc: \"https://platform.twitter.com/widgets.js\",\n        initialThreshold: 400,\n    });\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\nimport { controlSpacer } from \"./utils\";\n\nconst TIKTOK_CLASS = \"tiktok-embed\";\nconst LAZY_TIKTOK_CLASS = \"tiktok_lazy_shortcode\";\n\nfunction waitForMilis(miliseconds) {\n    function resolver(resolve) {\n        setTimeout(resolve, miliseconds);\n    }\n\n    return new Promise(resolver);\n}\n\nasync function getTiktokLib(attemps) {\n    if (attemps < 0) {\n        return false;\n    }\n\n    if (window.tiktokEmbed && \"lib\" in window.tiktokEmbed) {\n        return window.tiktokEmbed.lib;\n    }\n\n    await waitForMilis(100);\n\n    return getTiktokLib(--attemps);\n}\n\nfunction onIntersect(entry) {\n    const { target } = entry;\n\n    async function onFreeSlot(resourceID) {\n        function releaseTiktokResource() {\n            mediaPool.release(resourceID);\n        }\n\n        function handleGracefulLoad() {\n            const container = target.closest(\".rm-embed-container.rm-loading\");\n            if (!container) {\n                return;\n            }\n            container.classList.remove(\"rm-loading\");\n            container.classList.add(\"rm-loaded\");\n            setTimeout(() => {\n                controlSpacer(target, container);\n            }, 1500);\n        }\n\n        const tiktokLib = await getTiktokLib(50);\n        target.classList.add(TIKTOK_CLASS);\n        target.classList.remove(LAZY_TIKTOK_CLASS);\n\n        if (tiktokLib) {\n            tiktokLib.render([target]).then(releaseTiktokResource).then(handleGracefulLoad);\n        } else {\n            releaseTiktokResource();\n        }\n    }\n    mediaPool.request(1700).then(onFreeSlot);\n}\n\nexport default function loadLazyReddit(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        initialThreshold: 400,\n        selector: \".tiktok_lazy_shortcode\",\n        dependencySrc: \"https://www.tiktok.com/embed.js\",\n    });\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\r\nimport loadExternalScript from \"../../utils/loadExternalScript\";\r\nimport * as mediaPool from \"./_mediaPool\";\r\n\r\nfunction makeScriptUrl(account, player) {\r\n    return `https://players.brightcove.net/${account}/${player}_default/index.min.js`;\r\n}\r\n\r\nfunction onIntersect(entry) {\r\n    const { target } = entry;\r\n    const { account, player } = target.dataset;\r\n\r\n    const scriptUrl = makeScriptUrl(account, player);\r\n\r\n    function onFreeSlot(resourceID) {\r\n        function release() {\r\n            mediaPool.release(resourceID);\r\n        }\r\n\r\n        function onScriptLoad() {\r\n            const player = bc(target);\r\n            player.on(\"loadedmetadata\", release);\r\n        }\r\n\r\n        loadExternalScript(scriptUrl, onScriptLoad);\r\n    }\r\n\r\n    mediaPool.request(1500).then(onFreeSlot);\r\n}\r\n\r\nexport default function lazyBrightcove(intersectionObserverProvider) {\r\n    createSmartIntersector(intersectionObserverProvider, {\r\n        onIntersect,\r\n        initialThreshold: 500,\r\n        dependencySrc: \"https://embed.redditmedia.com/widgets/platform.js\",\r\n        selector: \".rm-embed-brightcove video-js\",\r\n    });\r\n}\r\n","function onIntersect(_entry) {\n    const lazyStyle = document.querySelector(`script.lazy-style`);\n    if (!lazyStyle) {\n        return;\n    }\n    const style = document.createElement(\"style\");\n    style.type = \"text/css\";\n    style.classList.add(\"lazy-style\");\n    style.textContent = lazyStyle.textContent;\n    document.head.appendChild(style);\n    lazyStyle.remove();\n}\n\nexport default function viewportStyle(intersectionObserverProvider) {\n    intersectionObserverProvider.addTask({\n        onIntersect,\n        threshold: 500,\n        selector: \".viewport-css-anchor\",\n        firstOnly: true,\n    });\n}\n","import createSmartIntersector from \"../../utils/createSmartIntersector\";\nimport * as mediaPool from \"./_mediaPool\";\n\nfunction onIntersect(entry) {\n    function onFreeSlot() {\n        const embed = entry.target;\n        const container = embed.closest(\".rm-embed-container.rm-loading\");\n        if (container) {\n            container.classList.remove(\"rm-loading\");\n            container.classList.add(\"rm-loaded\");\n        }\n\n        if (!embed.dataset.id) {\n            embed.classList.add(\"imgur-embed-pub\");\n            embed.dataset.id = embed.dataset.lazyId;\n        }\n\n        if (\"createIframe\" in window.imgurEmbed) {\n            //Their library works in a weird way, while at this point of the script\n            //we've already loaded the imgurEmbed library, the createIframe\n            //function is added later, what's why we need this if statement\n            window.imgurEmbed.createIframe(embed.parentElement);\n        }\n    }\n\n    mediaPool.request(2000).then(onFreeSlot);\n}\n\nfunction invalidate(element) {\n    element.classList.remove(\"imgur-embed-pub\");\n    element.dataset.lazyId = element.dataset.id;\n    delete element.dataset.id;\n}\n\nfunction beforeDependencyLoad() {\n    document.querySelectorAll(\"blockquote.imgur-custom-embed-pub\").forEach(invalidate);\n}\n\nexport default function loadLazyImgur(intersectionObserverProvider) {\n    createSmartIntersector(intersectionObserverProvider, {\n        onIntersect,\n        beforeDependencyLoad,\n        selector: \"blockquote.imgur-custom-embed-pub\",\n        dependencySrc: \"https://s.imgur.com/min/embed.js\",\n        initialThreshold: 400,\n    });\n}\n","import createElementChangeListener from \"../../elementChangeListener\";\n\nconst v1Loader = () => import(\"./view\");\nconst v2Loader = () => import(\"./v2\");\n\nfunction loadSignupBoxOnElement(context, element) {\n    let loader;\n    if (element.children.length) {\n        loader = v2Loader;\n    } else {\n        loader = v1Loader;\n    }\n    loader().then((module) => module.default(context, element));\n}\n\nexport default function loginSignupLoader(context) {\n    function onElement(element) {\n        loadSignupBoxOnElement(context, element);\n    }\n\n    createElementChangeListener(\".login-signup-wrapper\", onElement);\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./nativeTalk\");\n\nexport default function nativeTalkLoader(context) {\n    loadModuleOnElement(\".community-native-wrp\", loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../utils/loadModuleOnElement\";\n\nconst selector = \".js-scroll-trigger[data-toggle-class], .js-scroll-trigger[data-triggers]\";\nconst loader = () => import(\"./scrollTrigger\");\n\nexport default function scrollTriggerLoader(context) {\n    loadModuleOnElement(selector, loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../utils/loadModuleOnElement\";\r\n\r\nconst selector = \".rm-top-sticky\";\r\n\r\nconst loader = () => import(\"./doubleSticky\");\r\n\r\nexport function showFlexibleSticky(stickyElement) {\r\n    loader().then(function onModule(module) {\r\n        module.showFlexibleSticky(stickyElement);\r\n    });\r\n}\r\n\r\nexport default function doubleStickyLoader(context) {\r\n    loadModuleOnElement(selector, loader, context);\r\n    return context;\r\n}\r\n","const ENTER_KEY = 13;\nconst SEARCH_OPENED_CLASS = \"show-search\";\n\nexport default function searchForm(context) {\n    const searchToggle = document.querySelector(\".search-form__open\");\n    const searchForm = document.querySelector(\".search-form\");\n\n    if (searchForm && searchToggle) {\n        searchToggle.addEventListener(\"click\", () => {\n            searchForm.classList.toggle(SEARCH_OPENED_CLASS);\n        });\n    }\n\n    document.addEventListener(\"keypress\", event => {\n        if (\n            event.keyCode === ENTER_KEY &&\n            document.body.classList.contains(SEARCH_OPENED_CLASS)\n        ) {\n            document.querySelector(\".search-form > form\").submit();\n        }\n    });\n\n    return context;\n}\n","export default { trackPageView, trackEvent, trackPostCardClick, trackPostShare };\n\nexport function waitForGtag(callback) {\n  if (typeof window.gtag === \"function\") {\n    callback(window.gtag);\n  } else {\n    setTimeout(() => {\n      waitForGtag(callback);\n    }, 100);\n  }\n}\n\nfunction trackGtagCall(customDimensions, callback) {\n  waitForGtag((gtag) => {\n    const dimensionsData = customDimensions\n      ? buildCustomDimensions(customDimensions)\n      : {};\n\n    callback(gtag, \"event\", \"send\", dimensionsData);\n  });\n}\n\nfunction trackPageView({ url, customDimensions, headline, id }) {\n  const titleElement = document.querySelector(`[elid=\"${id}\"] .headline`);\n\n  const params = {\n    page_title: titleElement ? titleElement.innerText : headline,\n    page_location: url,\n  };\n\n  trackGtagCall(customDimensions, (gtag, event, send, additionalInfo) =>\n    gtag(event, \"page_view\", { ...params, ...additionalInfo })\n  );\n}\n\nfunction trackEvent({ eventType, action, customDimensions }) {\n  trackGtagCall(customDimensions, (gtag, event, send, params) =>\n    gtag(event, action, { event_category: eventType, ...params })\n  );\n}\n\nfunction trackPostCardClick(context) {\n    trackEvent({\n        ...context,\n        eventType: 'post_interaction',\n        action: 'post_card_click',\n    });\n}\n\nfunction trackPostShare({ customDimensions, provider }) {\n    trackGtagCall(\n        customDimensions,\n        (gtag, event) => gtag(\n            event,\n            'share',\n            {\n                method: provider,\n                content_type: 'post',\n            }\n        )\n    )\n    trackEvent({\n        customDimensions,\n        eventType: 'share_click-post',\n        action: 'click-post',\n    });\n}\n\nfunction buildCustomDimensions(customDimensionsConfig) {\n  return Object.entries(customDimensionsConfig).reduce((acc, [iden, value]) => {\n    return { ...acc, ...{ [`dimension${iden}`]: value.toString() } };\n  }, {});\n}\n","import getDevice from \"../utils/getDevice\";\nimport { isUserLoggedIn } from \"../utils/loggedInControl.js\";\nimport postJsonData from \"../utils/postJsonData\";\n\nconst ENDPOINT_EXCEPTIONS = {\n    \"page-view\": \"user\",\n};\n\nconst SHORT_FULL_NAME_MAP = {\n    dp: \"post\",\n    pp: \"post\",\n    fp: \"section\",\n    sp: \"section\",\n    tp: \"tag\",\n};\n\nconst MAX_POST_RM_BEHAVIOR_LOCAL_STORAGE = 50;\nconst MAX_DAYS_RM_BEHAVIOR_LOCAL_STORAGE = 30;\n\nfunction getPageTypeName(shortName) {\n    return SHORT_FULL_NAME_MAP[shortName] || \"public\";\n}\n\nfunction getPageTypeFromResourceId() {\n    const [resource] = window.REBELMOUSE_BOOTSTRAP_DATA.resourceId.split(\"_\");\n    return getPageTypeName(resource);\n}\n\nfunction makeBaseParams() {\n    const device = getDevice();\n    const siteId = window.REBELMOUSE_BOOTSTRAP_DATA.site.id;\n    const roarId = window.REBELMOUSE_BOOTSTRAP_DATA.runner.id;\n    return {\n        site_id: siteId,\n        roar_id: roarId,\n        client: device !== \"tablet\" ? device : \"other\",\n        referrer: document.referrer,\n    };\n}\n\nfunction makeSimpleBaseParams() {\n    const site_id = window.REBELMOUSE_BOOTSTRAP_DATA.site.id;\n    return { site_id };\n}\n\nfunction sendStats(action, params, isSplitTesting) {\n    const statsVersion = 1;\n    const statsFormat = \"json\";\n\n    const requestParams = isSplitTesting\n        ? { ...makeSimpleBaseParams(), ...params }\n        : { ...makeBaseParams(), ...params };\n\n    const query = {\n        event: action,\n        version: statsVersion,\n        format: statsFormat,\n        data: JSON.stringify(requestParams),\n    };\n\n    const prefix = isSplitTesting ? \"split-testing\" : ENDPOINT_EXCEPTIONS[action] || \"pages\";\n    const paramsStr = new URLSearchParams(query).toString();\n\n    const statsUrl = `https://${prefix}-stats.rbl.ms/spacer.gif?${Date.now()}&${paramsStr}`;\n    const pageViewUrl = `https://pages-stats.rbl.ms/spacer.gif?${Date.now()}&${paramsStr}`;\n\n    fetch(statsUrl);\n    if (isSplitTesting && \"post-page-view\" == action) {\n        fetch(pageViewUrl);\n    }\n}\n\nfunction addSplitTestingParams(params, splitTesting) {\n    const {\n        current: { campaign_id, hypothesis_id },\n    } = splitTesting;\n    return { ...params, campaign_id, hypothesis_id };\n}\n\nfunction checkIfPostHasSplitTesting(post) {\n    return post && post.split_testing && post.split_testing.current;\n}\n\nfunction trackPageView(data) {\n    const { post } = data;\n    const bootstrapData = window.REBELMOUSE_BOOTSTRAP_DATA;\n\n    let pageType = getPageTypeFromResourceId();\n    let params;\n    let isSplitTesting = false;\n\n    if (post) {\n        pageType = 'post';\n        params = {\n            post_id: data.id,\n            provider_id: post.providerId,\n            sections: ensureIds(post.sections),\n            authors: ensureIds(post.authors),\n        };\n\n        isSplitTesting = checkIfPostHasSplitTesting(post);\n\n        if (isSplitTesting) {\n            params = addSplitTestingParams(params, post.split_testing);\n        }\n    }\n    // @NOTE: community/author pages also have \"fp\" resourceId\n    else if (pageType === \"section\" && !bootstrapData.site.isCommunitySite) {\n        const sectionId = bootstrapData.section.id || 0; // @NOTE: 0 is for the home/frontpage (fp)\n        params = {\n            section_id: sectionId,\n            sections: [sectionId],\n        };\n    } else if (pageType === \"tag\") {\n        const tagSlug = bootstrapData.tag.slug;\n        params = {\n            tag: tagSlug,\n            sections: [],\n        };\n    } else {\n        params = {\n            sections: [],\n        };\n    }\n\n    const action = isSplitTesting || `${pageType}-page-view`;\n    sendStats(action, params, isSplitTesting);\n}\n\nfunction trackTimeOnPage({ timeMarker }) {\n    sendStats(`${getPageTypeFromResourceId()}-page-view-duration`, {\n        duration: timeMarker,\n    });\n}\n\nfunction getUserTrackingId() {\n    const trackingId = localStorage.getItem(\"userTrackingId\");\n    const prevLoggedStatus = localStorage.getItem(\"userTrackingLoggedStatus\") === \"true\";\n    if (trackingId && prevLoggedStatus === isUserLoggedIn()) {\n        return Promise.resolve(trackingId);\n    }\n    const newVisitorData = {\n        user_tracking_id: null,\n        last_page_view_timestamp: null,\n        user_type: \"casual\",\n    };\n\n    return postJsonData(\n        `${window.REBELMOUSE_BASE_SSL_DOMAIN}/core/users/tracking/`,\n        newVisitorData\n    ).then((data) => {\n        const { user_tracking_id } = data;\n        localStorage.setItem(\"userTrackingId\", user_tracking_id);\n        localStorage.setItem(\"userTrackingLoggedStatus\", isUserLoggedIn());\n        return user_tracking_id;\n    });\n}\n\nfunction cleanUpOtherUserData(currentUserId) {\n    const keysToRemove = Object.keys(localStorage).filter(function (key) {\n        return key.startsWith(\"history-\") && key !== \"history-\" + currentUserId;\n    });\n\n    if (keysToRemove) {\n        keysToRemove.forEach(function (key) {\n            localStorage.removeItem(key);\n        });\n    }\n}\n\nfunction storePostHistory(userId, id) {\n    const userHistoryKey = `history-${userId}`;\n    const userHistory = localStorage.getItem(userHistoryKey);\n    const visitedPosts = userHistory ? JSON.parse(userHistory) : [];\n    const idNotStored = !visitedPosts.some((entry) => entry.id === id);\n\n    if (id && idNotStored) {\n        const timestamp = new Date().getTime();\n        visitedPosts.push({ id, timestamp });\n\n        const daysToTimestamp = 24 * 60 * 60 * 1000;\n        const expirationTime =\n            new Date().getTime() - MAX_DAYS_RM_BEHAVIOR_LOCAL_STORAGE * daysToTimestamp;\n        const filteredPosts = visitedPosts.filter((entry) => entry.timestamp > expirationTime);\n\n        if (filteredPosts.length > MAX_POST_RM_BEHAVIOR_LOCAL_STORAGE) {\n            filteredPosts.splice(0, filteredPosts.length - MAX_POST_RM_BEHAVIOR_LOCAL_STORAGE);\n        }\n\n        localStorage.setItem(userHistoryKey, JSON.stringify(filteredPosts));\n    }\n\n    cleanUpOtherUserData(userId);\n}\n\nfunction trackUser() {\n    const {\n        engine: { enableLoggedOutUserTracking },\n    } = window.REBELMOUSE_BOOTSTRAP_DATA;\n\n    if (!enableLoggedOutUserTracking && !isUserLoggedIn()) {\n        return;\n    }\n\n    const mainPost = window.REBELMOUSE_BOOTSTRAP_DATA.post;\n    getUserTrackingId().then((trackingId) => {\n        storePostHistory(trackingId, mainPost.id);\n        const data = {\n            user_tracking_id: trackingId,\n        };\n\n        if (Object.keys(mainPost).length > 0) {\n            data.post_id = mainPost.id;\n            data.sections = ensureIds(mainPost.sections);\n            data.tags = mainPost.tags;\n        }\n        sendStats(\"page-view\", data);\n    });\n}\n\nfunction trackPostCardClick({ id, post }) {\n    const params = {\n        post_id: id,\n        provider_id: post.providerId,\n        sections: ensureIds(post.sections),\n    };\n\n    const isSplitTesting = checkIfPostHasSplitTesting(post);\n\n    if (isSplitTesting) {\n        sendStats(\"post-card-click\", addSplitTestingParams(params, post.split_testing), true);\n    } else {\n        sendStats(\"post-card-click\", params);\n    }\n}\n\nfunction trackPostCardView({ id, post }) {\n    const params = {\n        site_id: window.REBELMOUSE_BOOTSTRAP_DATA.site.id,\n        roar_id: window.REBELMOUSE_BOOTSTRAP_DATA.runner.id,\n        sections: ensureIds(post.sections),\n        posts: [\n            {\n                post_id: id,\n                authors: ensureIds(post.authors),\n                provider_id: post.providerId,  // TODO: Check if we still need provider_id\n            },\n        ],\n    };\n\n    sendStats(\"batch-post-card-view\", params);\n}\n\nfunction ensureIds(items) {\n    return (items || []).map((item) => (item && typeof item === \"object\" ? item.id : item));\n}\n\nfunction batchPostCardView(posts) {\n    sendStats(\"batch-post-card-view\", { posts }, true);\n}\n\nexport default {\n    trackPageView,\n    trackTimeOnPage,\n    trackUser,\n    trackPostCardClick,\n    trackPostCardView,\n    batchPostCardView,\n};\n","export default function postJsonData(url, data) {\n    return fetch(url, {\n        method: \"POST\",\n        body: JSON.stringify(data),\n    }).then((resp) => resp.json());\n}\n","const STATUS_ADMIN = 0;\r\nconst STATUS_COMMUNITY = 1;\r\nconst STATUS_FEATURED = 2;\r\n\r\nconst PUBLISHED_POST_STATUSES = [STATUS_ADMIN, STATUS_COMMUNITY, STATUS_FEATURED];\r\n\r\nexport function isPostPublished(post) {\r\n    const { status } = post;\r\n    return PUBLISHED_POST_STATUSES.includes(parseInt(status, 10));\r\n}\r\n","import { isUserLoggedIn } from \"../utils/loggedInControl.js\";\nimport { isPostPublished } from \"../utils/postStatus\";\n\nfunction customNameReducer(acc, [key, value]) {\n    acc[`_${key}`] = value;\n    return acc;\n}\n\nfunction customizeNames(obj) {\n    if (typeof obj !== \"object\") {\n        return {};\n    }\n\n    return Object.entries(obj).reduce(customNameReducer, {});\n}\n\nconst IEEE_SPECTRUM_SITE_ID = 20265424;\n\nconst SPECIAL_LOGIC = {\n    //IEEE spectrum\n    [IEEE_SPECTRUM_SITE_ID]() {\n        window.PARSELY.updateDefaults({\n            data: {\n                level: isUserLoggedIn()\n                    ? localStorage.getItem(\"userMembershipStatus\")\n                        ? localStorage.getItem(\"userMembershipStatus\")\n                        : \"anonymous\"\n                    : \"anonymous\",\n            },\n        });\n    },\n};\n\nfunction shouldSendParselyStats() {\n    const isParselyReady =\n        window.PARSELY &&\n        window.PARSELY.beacon &&\n        typeof window.PARSELY.beacon.trackPageView === \"function\";\n\n    const isPostPage = Object.keys(window.REBELMOUSE_BOOTSTRAP_DATA.post).length > 0;\n    const isPublishedPostPage =\n        isPostPage && isPostPublished(window.REBELMOUSE_BOOTSTRAP_DATA.post);\n\n    return isParselyReady && (!isPostPage || isPublishedPostPage);\n}\n\nfunction sendStats(data, pageInfo) {\n    if (!shouldSendParselyStats()) {\n        return;\n    }\n\n    if (window.REBELMOUSE_BOOTSTRAP_DATA.site.id in SPECIAL_LOGIC) {\n        SPECIAL_LOGIC[window.REBELMOUSE_BOOTSTRAP_DATA.site.id]();\n    }\n\n    const url = (pageInfo && pageInfo.url) || document.URL;\n    const urlref = (pageInfo && pageInfo.previousUrl) || document.referrer;\n\n    window.PARSELY.beacon.trackPageView({\n        ...data,\n        url,\n        urlref,\n    });\n}\n\nfunction trackPageView(pageInfo) {\n    sendStats({ js: 1 }, pageInfo);\n}\n\nfunction trackCustomEvent(action, data) {\n    sendStats({\n        action,\n        data: customizeNames(data),\n    });\n}\n\nfunction trackPageLoad(data) {\n    trackCustomEvent(\"_pageLoad\", data);\n}\n\nfunction trackPostMouseOver(data) {\n    trackCustomEvent(\"_post_mouse_over\", data);\n}\n\nfunction trackTimeOnPage({ timeMarker }) {\n    trackCustomEvent(\"_page-view-duration\", timeMarker);\n}\n\nfunction trackPostCardClick(data) {\n    trackCustomEvent(\"_post_card_click\", data);\n}\n\nexport default {\n    trackPageView,\n    trackPageLoad,\n    trackPostMouseOver,\n    trackTimeOnPage,\n    trackPostCardClick,\n};\n","import getContext from \"../context\";\n\nconst PROTOCOL_VERSION = 1;\nconst MAX_STREAMS_PER_REQUEST = 16;\n\nfunction trackPageView(data) {\n    function _isPostPage() {\n        const [resourceType] = getContext().settings.resourceId.split(\"_\");\n        return resourceType === \"dp\" || resourceType === \"pp\";\n    }\n\n    if (_isPostPage()) {\n        _trackPostPageView(data);\n    }\n}\n\nfunction _trackPostPageView({ id, streams }) {\n    _asyncTrackPostEvent(\"post-page-view\", {id, streams});\n}\n\nfunction trackPostCardClick({ id, streams }) {\n    _asyncTrackPostEvent(\"post-teaser-click\", {id, streams});\n}\n\nfunction trackPostCardView({ id, streams }) {\n    _asyncTrackPostEvent(\"post-teaser-view\", {id, streams});\n}\n\nfunction _asyncTrackPostEvent(eventType, { id, streams }) {\n    _asyncTrackEvent(eventType, {\"post\": id}, streams);\n}\n\nfunction _asyncTrackEvent(eventType, entity, streams) {\n    setTimeout(function () {\n        _trackEvent(eventType, entity, streams);\n    }, 0);\n}\n\nfunction _trackEvent(eventType, entity, streams) {\n    function _calculateStreamScore(streamScoreEvents) {\n        return Object.entries(streamScoreEvents).reduce((acc, [event, weight]) => {\n            if (event === eventType) {\n                acc += weight;\n            }\n            return acc;\n        }, 0);\n    }\n\n    function _updateStreamScore(stream) {\n        const [bucket, {period, events}] = Object.entries(stream)[0];\n        return {[bucket]: {\n            period: period,\n            score: _calculateStreamScore(events),\n        }};\n    }\n\n    const siteId = _getSiteId();\n    const affectedStreams = streams.map(_updateStreamScore).filter(stream => stream[Object.keys(stream)[0]].score !== 0);\n    while (affectedStreams.length > 0) {\n        _send({\n            entity: entity,\n            site_id: siteId,\n            streams: affectedStreams.splice(0, MAX_STREAMS_PER_REQUEST),\n        });\n    }\n}\n\nfunction _getSiteId() {\n    return getContext().settings.runner.id;\n}\n\nfunction _send(payload) {\n    const basePath = _getBasePath();\n    fetch(`${basePath}?version=${PROTOCOL_VERSION}&format=json&data=${JSON.stringify(payload)}`);\n}\n\nfunction _getBasePath() {\n    if (_shouldSendEventsToCurrentDomain()) {\n        return `${window.location.origin}/core/stats/tracking/streams-scores`;\n    }\n    else {\n        return 'https://streams-scores.rbl.ms/spacer.gif';\n    }\n}\n\nfunction _shouldSendEventsToCurrentDomain() {\n    return getContext().settings.engine.sendEventsToCurrentDomain;\n}\n\nexport default {\n    trackPageView,\n    trackPostCardView,\n    trackPostCardClick\n};\n","import curry from \"../lib/core/functional/curry\";\r\n\r\nconst fieldUpdater = curry(function fieldUpdater(selector, elementField, dataField, data) {\r\n    if (!data[dataField]) {\r\n        return;\r\n    }\r\n\r\n    const element = document.querySelector(selector);\r\n    if (element) {\r\n        element[elementField] = data[dataField];\r\n    }\r\n});\r\n\r\nconst updateTitle = fieldUpdater(\"title\", \"textContent\", \"headline\");\r\nconst updateCanonical = fieldUpdater('link[rel=\"canonical\"]', \"href\", \"url\");\r\n\r\nexport default function updateMetaData(data) {\r\n    updateTitle(data);\r\n    updateCanonical(data);\r\n}\r\n","import ga4Stats from \"./ga4Stats\";\nimport nativeStats from \"./nativeStats\";\nimport parselyStats from \"./parselyStats\";\nimport streamsScores from \"./streamsScores\";\nimport loadContextData from \"../utils/loadContextData\";\nimport updateMetaData from \"./metadata\";\n\nconst providers = [nativeStats, ga4Stats, parselyStats];\n\nfunction getPostContext(post) {\n  const id = post.getAttribute(\"elid\");\n  return { id, ...loadContextData(`.post-context-${id}`) };\n}\n\nexport default {\n  trackPageView(pageData) {\n    const postContext = loadContextData(`.post-context-${pageData.id}`);\n    const data = { ...pageData, ...postContext };\n    updateMetaData(data);\n    providers.forEach((provider) => {\n      provider.trackPageView({...data});\n    });\n    if (postContext.post) {\n      streamsScores.trackPageView(postContext.post);\n    }\n  },\n  trackPageLoad(pageData) {\n    const postContext = loadContextData(`.post-context-${pageData.id}`);\n    nativeStats.trackPageView({ ...pageData, ...postContext });\n    parselyStats.trackPageLoad({ ...pageData, ...postContext });\n    if (postContext.post) {\n      streamsScores.trackPageView(postContext.post);\n    }\n  },\n  trackTimeOnPage(timeMarker) {\n    nativeStats.trackTimeOnPage({ timeMarker });\n    parselyStats.trackTimeOnPage({ timeMarker });\n  },\n  trackUser(pageData) {\n    nativeStats.trackUser({ ...pageData });\n  },\n  trackPostCardClick(post) {\n    providers.forEach(provider => {\n      provider.trackPostCardClick(getPostContext(post));\n    });\n    const context = getPostContext(post);\n    if (context.post) {\n      streamsScores.trackPostCardClick(context.post);\n    }\n  },\n  trackEvent(pageData) {\n    const postContext = loadContextData(`.post-context-${pageData.id}`);\n    ga4Stats.trackEvent({ ...pageData, ...postContext });\n  },\n  trackSocialShare(data) {\n    const postContext = loadContextData(`.post-context-${data.id}`);\n    ga4Stats.trackPostShare({ ...postContext, ...data });\n  },\n  batchPostCardView(data) {  // TODO: looks like it works for split testing only which does not make a lot of sense\n    nativeStats.batchPostCardView(data);\n  },\n  trackPostCardView(post){\n    nativeStats.trackPostCardView(getPostContext(post));\n    const context = getPostContext(post);\n    if (context.post) {\n      streamsScores.trackPostCardView(context.post);\n    }\n  },\n};\n","import StatsTracker from \"./statsTracker\";\nimport createElementChangeListener from \"../elementChangeListener\";\nimport createTimer from \"./resumableTimer\";\nimport {\n  PAGE_LOAD_EVENT,\n  READ_ARTICLE_EVENT,\n  URL_CHANGE_EVENT,\n  POST_SHARED_EVENT,\n} from \"../consts\";\n\nfunction checkForDuplicatedPosts(post) {\n  const postId = post.getAttribute(\"elid\");\n  return SPLIT_TESTED_POSTS.some(splitedPost => splitedPost.post_id === postId);\n}\n\nfunction trackPostCardClick(post) {\n  function onLinkClick(event){\n    const currentTarget = event.currentTarget;\n    const isTargetBlank = currentTarget.getAttribute(\"target\") === \"_blank\";\n    const isPagination = currentTarget.classList.contains(\"js-listicle-switch-page\");\n\n    if (!isTargetBlank) {\n      event.preventDefault();\n    }\n\n    setTimeout(() => StatsTracker.trackPostCardClick(post), 0);\n\n    if (!isTargetBlank && !isPagination) {\n      // @NOTE: check if we redirect on the same path ignore it\n      if(event.metaKey || event.ctrlKey){\n        window.open(currentTarget.href)\n      }\n      else {\n        document.location.href = currentTarget.href;\n      }\n    }\n  }\n\n  function forEachLink(link){\n    if (!/^(https?:)?\\/\\/\\w+/.exec(link.href) || link.classList.contains('rm-stats-tracked')) {\n      return;\n    }\n    link.classList.add('rm-stats-tracked');\n    link.addEventListener(\"click\", onLinkClick);\n  }\n\n  post.querySelectorAll(\"a[href]:not(.rm-stats-tracked)\").forEach(forEachLink);\n}\n\nfunction trackPostCardView(post){\n  function onCardVisible(){\n    if (!SPLIT_TESTED_POSTS.length || (SPLIT_TESTED_POSTS.length && !checkForDuplicatedPosts(post))) {\n      StatsTracker.trackPostCardView(post);\n    }\n  }\n\n  function isCardVisible(postCard){\n      if (postCard.isIntersecting) {\n        onCardVisible();\n      }\n  }\n\n  const options = {\n    root: null,\n    rootMargin: '0px',\n    threshold: 0.8,\n  };\n\n  function callback (entries, observer) {\n    entries.forEach(isCardVisible);\n  }\n\n  const observer = new IntersectionObserver(callback, options);\n\n  function forEachCard(postCard){\n    if(postCard.classList.contains('rm-stats-tracked')) {\n      return;\n    }\n    postCard.classList.add('rm-stats-tracked');\n    observer.observe(postCard);\n  }\n\n  post.querySelectorAll(\"article:not(.rm-stats-tracked)\").forEach(forEachCard);\n}\n\nfunction initPostsTracker() {\n  createElementChangeListener(\"[elid]\", (post) => {\n    trackPostCardClick(post);\n    trackPostCardView(post);\n  });\n}\n\nfunction initTimeOnPageTracker() {\n  const maxTotalDuration = 30 * 60 * 1000;\n  const reportTimeFrames = [1, 2, 5, 10, 20, 30].map((frame) => frame * 1000);\n\n  const timer = createTimer(\n    StatsTracker.trackTimeOnPage,\n    reportTimeFrames,\n    maxTotalDuration\n  );\n\n  timer.start();\n\n  document.addEventListener(\"visibilitychange\", () => {\n    if (document.visibilityState === \"visible\") {\n      timer.start();\n    } else {\n      timer.pause();\n    }\n  });\n}\n\nfunction initUrlChangeListeners(context) {\n  const { eventBus } = context;\n  let initialPageUrl = \"\";\n\n  eventBus.subscribe(READ_ARTICLE_EVENT, (data) => {\n    if (data.trackPageView) {\n      StatsTracker.trackPageView(data);\n    } else {\n      StatsTracker.trackEvent({\n        ...data,\n        eventType: \"keep_reading\",\n        action: \"view_more\",\n      });\n    }\n  });\n\n  eventBus.subscribe(PAGE_LOAD_EVENT, (data) => {\n    StatsTracker.trackPageLoad(data, true);\n    StatsTracker.trackUser(data);\n    initialPageUrl = data.url;\n  });\n\n  eventBus.subscribe(URL_CHANGE_EVENT, (data) => {\n    if (data.url !== initialPageUrl && data.trackPageView) {\n      data.previousUrl = initialPageUrl;\n      StatsTracker.trackPageView(data);\n      initialPageUrl = data.url;\n    }\n  });\n}\n\nfunction initPostsShareListener({ eventBus, settings }) {\n  eventBus.subscribe(POST_SHARED_EVENT, (data) => {\n    StatsTracker.trackSocialShare({\n      provider: data.provider,\n      id: settings.post.id,\n    });\n  })\n}\n\nconst SPLIT_TESTED_POSTS = [];\n\nfunction onSplitTestedPost(scriptElement) {\n  const contextData = JSON.parse(scriptElement.text);\n  if (\"current\" in contextData.post.split_testing) {\n    const { campaign_id, hypothesis_id } = contextData.post.split_testing.current;\n    SPLIT_TESTED_POSTS.push({\n      post_id: parseInt(scriptElement.closest(\"article[elid]\").getAttribute(\"elid\"), 10),\n      campaign_id: campaign_id,\n      hypothesis_id: hypothesis_id,\n    });\n  }\n}\n\nfunction fireBatchPostCardView(event) {\n  if (\n    SPLIT_TESTED_POSTS.length > 0 &&\n    (event.type === \"pagehide\" || document.visibilityState === \"hidden\")\n  ) {\n    StatsTracker.batchPostCardView(SPLIT_TESTED_POSTS);\n    SPLIT_TESTED_POSTS.length = 0;\n  }\n}\n\nfunction initBatchPostCardView() {\n  createElementChangeListener(\"script.post-context-split-testing\", onSplitTestedPost);\n  window.addEventListener(\"visibilitychange\", fireBatchPostCardView, { passive: true });\n  window.addEventListener(\"pagehide\", fireBatchPostCardView, { passive: true });\n}\n\nexport default function statsProvider(context) {\n  initUrlChangeListeners(context);\n  initPostsTracker();\n  initTimeOnPageTracker();\n  initPostsShareListener(context);\n  initBatchPostCardView(context);\n  return context;\n}\n","import loadModuleOnElement from \"../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./subscriptionForm\");\n\nexport default function subscriptionFormLoader(context) {\n    loadModuleOnElement(\".get-alerts\", loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./module\");\n\nexport default function pageFetchLoader(context) {\n    loadModuleOnElement(\".tabs\", loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./videoPlayer\");\n\nexport default function videoLoader(context) {\n    loadModuleOnElement(\".js-show-video\", loader, context);\n    return context;\n}\n","import createElementChangeListener from \"../../elementChangeListener\";\n\nfunction onUplynkElementChange(node) {\n    node.addEventListener('click', function handler() {\n        node.removeEventListener(\"click\", handler, false);\n        node.removeChild(node.firstElementChild);\n        if (window.REBELMOUSE_BOOTSTRAP_DATA.engine.defaultVideoPlayer === 'theo') {\n            import(\"../theoplayer/module\").then((module) => module.default(node));\n        }\n    } , false);\n}\n\nexport default function uplynkLoader(context) {\n    createElementChangeListener(\".uplynk-container\", onUplynkElementChange, false);\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./module\");\nconst selector = \".rebellt-item.has_voting\";\n\nexport default function assemblerUpDownVotingLoader(context) {\n    loadModuleOnElement(selector, loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\r\n\r\nconst loader = () => import(\"./renderer\");\r\nconst selector = \".follow-button\";\r\n\r\nexport default function loadFollowButton(context) {\r\n    loadModuleOnElement(selector, loader, context);\r\n    return context;\r\n}\r\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\r\n\r\nconst loader = () => import(\"./renderer\");\r\nconst selector = \".like-button\";\r\n\r\nexport default function loadFollowButton(context) {\r\n    loadModuleOnElement(selector, loader, context);\r\n    return context;\r\n}\r\n","import loadModuleOnElement from \"../../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./renderer\");\nconst selector = \".rm-folders-button\";\n\nexport default function loadFollowButton(context) {\n    loadModuleOnElement(selector, loader, context);\n    return context;\n}\n","import loadModuleOnElement from \"../../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./renderer\");\nconst selector = \".rm-folders-manage-posts article[elid]\";\n\nexport default function loadFollowButton(context) {\n    loadModuleOnElement(selector, loader, context);\n    return context;\n}\n","import createElementChangeListener from \"../../elementChangeListener\";\n\nfunction loadScript(script) {\n    const node = document.createElement(\"script\");\n    const source = script.getAttribute(\"data-src\");\n    if (source) {\n        node.src = source;\n    } else {\n        node.text = script.text;\n    }\n    script.replaceWith(node);\n}\n\nexport default function loadLazyScripts() {\n    const selector = `[type=\"text/lazy-javascript\"]`;\n    createElementChangeListener(selector, loadScript);\n}\n","import curry from \"../lib/core/functional/curry\";\r\nimport { requestIdleCallback } from \"./idleCallback\";\r\n\r\nconst MIN_THREAD_IDLE_TIME = 1;\r\nconst CALLBACK_INDEX = 0;\r\nconst REMAINING_INDEX = 3;\r\n\r\nexport function _updateTask([fun, ogTimeout, startDate, _remaining], now) {\r\n    let newStartDate = startDate || now;\r\n    let newTimeout = ogTimeout;\r\n    if (newStartDate) {\r\n        const diff = now - newStartDate;\r\n        newTimeout = Math.max(1, ogTimeout - diff);\r\n    }\r\n    return [fun, ogTimeout, newStartDate, newTimeout];\r\n}\r\n\r\nfunction runCallback(callback) {\r\n    try {\r\n        callback();\r\n    } catch (e) {\r\n        console.error(\"Error in user code\", e);\r\n        console.error(callback);\r\n    }\r\n}\r\n\r\nfunction createIdleQueue(onDone) {\r\n    const queue = [];\r\n\r\n    function enQueue(next) {\r\n        const updatedTask = _updateTask(next, Date.now());\r\n        requestIdleCallback(callbackRunner(updatedTask), { timeout: updatedTask[REMAINING_INDEX] });\r\n    }\r\n\r\n    const callbackRunner = curry((next, idleDeadline) => {\r\n        let runningTask = next;\r\n\r\n        if (idleDeadline.timeRemaining() >= MIN_THREAD_IDLE_TIME) {\r\n            do {\r\n                runCallback(runningTask[CALLBACK_INDEX]);\r\n                queue.shift();\r\n                runningTask = queue[0];\r\n            } while (idleDeadline.timeRemaining() >= MIN_THREAD_IDLE_TIME && runningTask);\r\n            runQueue(runningTask);\r\n        } else if (idleDeadline.didTimeout) {\r\n            runCallback(runningTask[CALLBACK_INDEX]);\r\n            queue.shift();\r\n            runQueue(queue[0]);\r\n        } else {\r\n            enQueue(runningTask);\r\n        }\r\n    });\r\n\r\n    function runQueue(nextInLine) {\r\n        if (nextInLine) {\r\n            enQueue(nextInLine);\r\n        } else {\r\n            onDone();\r\n        }\r\n    }\r\n\r\n    function pushTask(fun, timeout) {\r\n        queue.push([fun, timeout]);\r\n        if (queue.length === 1) {\r\n            runQueue(queue[0]);\r\n        }\r\n    }\r\n\r\n    return {\r\n        pushTask,\r\n    };\r\n}\r\n\r\nexport default createIdleQueue;\r\n","export default function rebelSlider(config) {\n    import(\"./slider\").then((module) => {\n        module.default(config);\n    });\n}\n","import callbackRunner from \"./callbackRunner\";\nimport { requestIdleCallback } from \"./idleCallback.js\";\n\nconst PAGE_IDLE_TIME = 2500;\nconst timeoutOptions = { timeout: 600 };\n\nconst { add, run } = callbackRunner(boot, true);\nlet isPageReady = false;\n\nfunction boot() {\n    document.readyState !== \"complete\" ? window.addEventListener(\"load\", onLoad) : onLoad();\n}\n\nfunction onIdle(idleDeadline) {\n    const timeRemaining = idleDeadline.timeRemaining();\n    if (timeRemaining > 49 || idleDeadline.didTimeout) {\n        run();\n    } else {\n        requestIdleCallback(onIdle, timeoutOptions);\n    }\n}\n\nfunction waitForIdle() {\n    requestIdleCallback(onIdle, timeoutOptions);\n}\n\nfunction onLoad() {\n    isPageReady = true;\n    setTimeout(waitForIdle, PAGE_IDLE_TIME);\n}\n\nexport default function onPageIdle(callback) {\n    if (isPageReady) {\n        callback();\n        return;\n    }\n\n    add(callback);\n}\n","import intersectionObserverProvider from \"../context/intersectionObserverProvider\";\nimport onPageIdle from \"./onPageIdle\";\n\nfunction hasLoaded(src) {\n    return localStorage.getItem(`rmFont-${src}`) === \"1\";\n}\n\nfunction storeLoadedFont(src) {\n    localStorage.setItem(`rmFont-${src}`, \"1\");\n}\n\nfunction signalLoad(font) {\n    const className = `rm-fl-${font.family.toLowerCase().replace(/ /g, \"_\")}-${font.weight}`;\n    document.body.classList.add(className);\n}\n\nfunction addFont(font) {\n    document.fonts.add(font);\n    signalLoad(font);\n}\n\nfunction loadFont(name, src, { weight, style, unicodeRange }) {\n    return function triggerLoad() {\n        const fonts = weight.split(\",\").map(function fontFaceFactory(fontWeight) {\n            return new FontFace(name, `url(${src})`, {\n                style,\n                unicodeRange,\n                display: \"swap\",\n                weight: fontWeight,\n            });\n        });\n\n        fonts[0].load().then(function onFontloaded() {\n            storeLoadedFont(src);\n            fonts.forEach(addFont);\n        });\n    };\n}\n\nexport default function loadFontFace(name, src, { selector, ...args }) {\n    const fontLoader = loadFont(name, src, args);\n\n    if (selector) {\n        intersectionObserverProvider.addTask({\n            selector,\n            firstOnly: true,\n            oneTime: true,\n            threshold: 200,\n            onIntersect: fontLoader,\n        });\n    } else if (hasLoaded(src)) {\n        fontLoader();\n    } else {\n        onPageIdle(fontLoader);\n    }\n}\n","function createPluginExportReader(exportName) {\n    return function readPluginExport(module) {\n        return module[exportName];\n    };\n}\n\nfunction loadDraggablePlugin() {\n    return import(\"gsap/Draggable\").then(createPluginExportReader(\"Draggable\"));\n}\n\nfunction loadDrawSvgPlugin() {\n    return import(\"gsap/DrawSVGPlugin\").then(createPluginExportReader(\"DrawSVGPlugin\"));\n}\n\nfunction loadEaselPlugin() {\n    return import(\"gsap/EaselPlugin\").then(createPluginExportReader(\"EaselPlugin\"));\n}\n\nfunction loadFlipPlugin() {\n    return import(\"gsap/Flip\").then(createPluginExportReader(\"Flip\"));\n}\n\nfunction loadGsDevToolsPlugin() {\n    return import(\"gsap/GSDevTools\").then(createPluginExportReader(\"GSDevTools\"));\n}\n\nfunction loadInertiaPlugin() {\n    return import(\"gsap/InertiaPlugin\").then(createPluginExportReader(\"InertiaPlugin\"));\n}\n\nfunction loadMotionPathPlugin() {\n    return import(\"gsap/MotionPathPlugin\").then(createPluginExportReader(\"MotionPathPlugin\"));\n}\n\nfunction loadMotionPathHelperPlugin() {\n    return import(\"gsap/MotionPathHelper\").then(createPluginExportReader(\"MotionPathHelper\"));\n}\n\nfunction loadMorphSvgPlugin() {\n    return import(\"gsap/MorphSVGPlugin\").then(createPluginExportReader(\"MorphSVGPlugin\"));\n}\n\nfunction loadObserverPlugin() {\n    return import(\"gsap/Observer\").then(createPluginExportReader(\"Observer\"));\n}\n\nfunction loadPhysics2DPlugin() {\n    return import(\"gsap/Physics2DPlugin\").then(createPluginExportReader(\"Physics2DPlugin\"));\n}\n\nfunction loadPhysicsPropsPlugin() {\n    return import(\"gsap/PhysicsPropsPlugin\").then(createPluginExportReader(\"PhysicsPropsPlugin\"));\n}\n\nfunction loadPixiPlugin() {\n    return import(\"gsap/PixiPlugin\").then(createPluginExportReader(\"PixiPlugin\"));\n}\n\nfunction loadScrambleTextPlugin() {\n    return import(\"gsap/ScrambleTextPlugin\").then(createPluginExportReader(\"ScrambleTextPlugin\"));\n}\n\nfunction loadScrollToPlugin() {\n    return import(\"gsap/ScrollToPlugin\").then(createPluginExportReader(\"ScrollToPlugin\"));\n}\n\nfunction loadScrollSmootherPlugin() {\n    return import(\"gsap/ScrollSmoother\").then(createPluginExportReader(\"ScrollSmoother\"));\n}\n\nfunction loadScrollTriggerPlugin() {\n    return import(\"gsap/ScrollTrigger\").then(createPluginExportReader(\"ScrollTrigger\"));\n}\n\nfunction loadSplitTextPlugin() {\n    return import(\"gsap/SplitText\").then(createPluginExportReader(\"SplitText\"));\n}\n\nfunction loadTextPlugin() {\n    return import(\"gsap/TextPlugin\").then(createPluginExportReader(\"TextPlugin\"));\n}\n\nfunction loadCustomEasePlugin() {\n    return import(\"gsap/CustomEase\").then(createPluginExportReader(\"CustomEase\"));\n}\n\nfunction loadCustomBouncePlugin() {\n    return import(\"gsap/CustomBounce\").then(createPluginExportReader(\"CustomBounce\"));\n}\n\nfunction loadCustomWigglePlugin() {\n    return import(\"gsap/CustomWiggle\").then(createPluginExportReader(\"CustomWiggle\"));\n}\n\nlet easePackModulePromise = null;\n\nfunction loadEasePackModule() {\n    if (!easePackModulePromise) {\n        easePackModulePromise = import(\"gsap/EasePack\").catch(\n            function handleEasePackLoadFailure(error) {\n                easePackModulePromise = null;\n                throw error;\n            },\n        );\n    }\n    return easePackModulePromise;\n}\n\nfunction loadRoughEasePlugin() {\n    return loadEasePackModule().then(createPluginExportReader(\"RoughEase\"));\n}\n\nfunction loadExpoScaleEasePlugin() {\n    return loadEasePackModule().then(createPluginExportReader(\"ExpoScaleEase\"));\n}\n\nfunction loadSlowMoPlugin() {\n    return loadEasePackModule().then(createPluginExportReader(\"SlowMo\"));\n}\n\nexport const PLUGIN_REGISTRY = {\n    draggable: { name: \"Draggable\", loader: loadDraggablePlugin, requires: [] },\n    drawsvg: { name: \"DrawSVG\", loader: loadDrawSvgPlugin, requires: [] },\n    easel: { name: \"Easel\", loader: loadEaselPlugin, requires: [] },\n    flip: { name: \"Flip\", loader: loadFlipPlugin, requires: [] },\n    gsdevtools: { name: \"GSDevTools\", loader: loadGsDevToolsPlugin, requires: [] },\n    inertia: { name: \"Inertia\", loader: loadInertiaPlugin, requires: [] },\n    motionpath: { name: \"MotionPath\", loader: loadMotionPathPlugin, requires: [] },\n    motionpathhelper: {\n        name: \"MotionPathHelper\",\n        loader: loadMotionPathHelperPlugin,\n        requires: [\"MotionPath\"],\n    },\n    morphsvg: { name: \"MorphSVG\", loader: loadMorphSvgPlugin, requires: [] },\n    observer: { name: \"Observer\", loader: loadObserverPlugin, requires: [] },\n    physics2d: { name: \"Physics2D\", loader: loadPhysics2DPlugin, requires: [] },\n    physicsprops: { name: \"PhysicsProps\", loader: loadPhysicsPropsPlugin, requires: [] },\n    pixi: { name: \"Pixi\", loader: loadPixiPlugin, requires: [] },\n    scrambletext: { name: \"ScrambleText\", loader: loadScrambleTextPlugin, requires: [] },\n    scrollto: { name: \"ScrollTo\", loader: loadScrollToPlugin, requires: [] },\n    scrollsmoother: {\n        name: \"ScrollSmoother\",\n        loader: loadScrollSmootherPlugin,\n        requires: [\"ScrollTrigger\"],\n    },\n    scrolltrigger: { name: \"ScrollTrigger\", loader: loadScrollTriggerPlugin, requires: [] },\n    splittext: { name: \"SplitText\", loader: loadSplitTextPlugin, requires: [] },\n    text: { name: \"Text\", loader: loadTextPlugin, requires: [] },\n    roughease: { name: \"RoughEase\", loader: loadRoughEasePlugin, requires: [] },\n    exposcaleease: { name: \"ExpoScaleEase\", loader: loadExpoScaleEasePlugin, requires: [] },\n    slowmo: { name: \"SlowMo\", loader: loadSlowMoPlugin, requires: [] },\n    customease: { name: \"CustomEase\", loader: loadCustomEasePlugin, requires: [] },\n    custombounce: { name: \"CustomBounce\", loader: loadCustomBouncePlugin, requires: [\"CustomEase\"] },\n    customwiggle: { name: \"CustomWiggle\", loader: loadCustomWigglePlugin, requires: [\"CustomEase\"] },\n};\n\nexport const PLUGIN_ALIASES = {\n    eases: [\"RoughEase\", \"ExpoScaleEase\", \"SlowMo\"],\n};\n","import { PLUGIN_ALIASES, PLUGIN_REGISTRY } from \"./gsapPluginRegistry\";\n\nlet gsapCorePromise = null;\nconst loadedPluginPromises = {};\nconst registeredPluginNames = {};\n\nfunction normalizePluginName(pluginName) {\n    return String(pluginName).toLowerCase().replace(/[^a-z0-9]/g, \"\");\n}\n\nfunction readGsapCoreModule(module) {\n    return module.default || module.gsap;\n}\n\nfunction loadGsapCore() {\n    if (!gsapCorePromise) {\n        gsapCorePromise = import(\"gsap\")\n            .then(readGsapCoreModule)\n            .catch(function handleGsapCoreLoadFailure(error) {\n                gsapCorePromise = null;\n                throw error;\n            });\n    }\n    return gsapCorePromise;\n}\n\nfunction resolveRequestedName(requestedName) {\n    const normalizedKey = normalizePluginName(requestedName);\n    const aliasTargetNames = PLUGIN_ALIASES[normalizedKey];\n    if (aliasTargetNames) {\n        return aliasTargetNames;\n    }\n    const entry = PLUGIN_REGISTRY[normalizedKey];\n    if (entry) {\n        return [entry.name];\n    }\n    return [];\n}\n\nfunction classifyRequestedName(classification, requestedName) {\n    const resolvedNames = resolveRequestedName(requestedName);\n    if (resolvedNames.length === 0) {\n        return {\n            knownNames: classification.knownNames,\n            unknownNames: [...classification.unknownNames, requestedName],\n        };\n    }\n    return {\n        knownNames: [...classification.knownNames, ...resolvedNames],\n        unknownNames: classification.unknownNames,\n    };\n}\n\nfunction resolveRequestedNames(requestedNames) {\n    return requestedNames.reduce(classifyRequestedName, { knownNames: [], unknownNames: [] });\n}\n\nfunction appendPluginNameWithDependencies(orderedNames, visitedNames, pluginName) {\n    const entry = PLUGIN_REGISTRY[normalizePluginName(pluginName)];\n    if (!entry || visitedNames[entry.name]) {\n        return;\n    }\n    visitedNames[entry.name] = true;\n    entry.requires.forEach(function appendRequiredName(requiredName) {\n        appendPluginNameWithDependencies(orderedNames, visitedNames, requiredName);\n    });\n    orderedNames.push(entry.name);\n}\n\nfunction resolveOrderedPluginNames(requestedNames) {\n    const orderedNames = [];\n    const visitedNames = {};\n    requestedNames.forEach(function appendRequestedName(requestedName) {\n        appendPluginNameWithDependencies(orderedNames, visitedNames, requestedName);\n    });\n    return orderedNames;\n}\n\nfunction loadPlugin(pluginName) {\n    if (!loadedPluginPromises[pluginName]) {\n        loadedPluginPromises[pluginName] = PLUGIN_REGISTRY[normalizePluginName(pluginName)]\n            .loader()\n            .catch(function handlePluginLoadFailure(error) {\n                delete loadedPluginPromises[pluginName];\n                throw error;\n            });\n    }\n    return loadedPluginPromises[pluginName];\n}\n\nfunction collectPluginClasses(orderedNames) {\n    return Promise.all(orderedNames.map(loadPlugin));\n}\n\nfunction registerPluginOnce(gsap, pluginName, pluginClass) {\n    if (registeredPluginNames[pluginName]) {\n        return;\n    }\n    registeredPluginNames[pluginName] = true;\n    gsap.registerPlugin(pluginClass);\n}\n\nfunction registerPluginsAndBuildObject(gsap, orderedNames, pluginClasses) {\n    const plugins = {};\n    orderedNames.forEach(function registerAndCollectPlugin(pluginName, pluginIndex) {\n        registerPluginOnce(gsap, pluginName, pluginClasses[pluginIndex]);\n        plugins[pluginName] = pluginClasses[pluginIndex];\n    });\n    return plugins;\n}\n\nfunction runUserCallback(callback, gsap, plugins) {\n    if (typeof callback !== \"function\") {\n        return;\n    }\n    try {\n        callback(gsap, plugins);\n    } catch (error) {\n        console.error(\"loadGsap: error in user callback\", error);\n    }\n}\n\nfunction warnAboutUnknownNames(unknownNames) {\n    if (unknownNames.length === 0) {\n        return;\n    }\n    console.warn(`loadGsap: skipped unknown plugin name(s): ${unknownNames.join(\", \")}`);\n}\n\nexport default function loadGsap(pluginNames, callback) {\n    const requestedNames = Array.isArray(pluginNames) ? pluginNames : [];\n    const resolvedRequest = resolveRequestedNames(requestedNames);\n    warnAboutUnknownNames(resolvedRequest.unknownNames);\n    const orderedNames = resolveOrderedPluginNames(resolvedRequest.knownNames);\n    return loadGsapCore()\n        .then(function loadRequestedPlugins(gsap) {\n            return collectPluginClasses(orderedNames).then(\n                function finishPluginLoading(pluginClasses) {\n                    return {\n                        gsap,\n                        plugins: registerPluginsAndBuildObject(gsap, orderedNames, pluginClasses),\n                    };\n                },\n            );\n        })\n        .then(function invokeUserCallback(loadResult) {\n            runUserCallback(callback, loadResult.gsap, loadResult.plugins);\n            return loadResult;\n        })\n        .catch(function handleLoadGsapFailure(error) {\n            console.error(\"loadGsap: failed to load GSAP module(s)\", error);\n            throw error;\n        });\n}\n","import createElementChangeListener from \"../elementChangeListener.js\";\n\nconst wiredComponents = [];\n\nfunction findAndParseProps(componentWrapper) {\n    const propsHolder = componentWrapper.querySelector(\n        `:scope > script[type=\"application/rmprops+json\"]`\n    );\n\n    const propsText = propsHolder.textContent;\n\n    return JSON.parse(propsText);\n}\n\nexport function wireComponent(componentName, handler) {\n    function onElement(componentWrapper) {\n        let props = {};\n        try {\n            props = findAndParseProps(componentWrapper);\n        } catch (error) {\n            console.error(`Error finding or parsing component props ${componentName}`, error);\n        }\n\n        try {\n            handler(componentWrapper, props);\n        } catch (error) {\n            console.error(`Error executing component handler ${componentName}`, error);\n        }\n    }\n\n    if (wiredComponents.includes(componentName)) {\n        return;\n    }\n\n    wiredComponents.push(componentName);\n\n    createElementChangeListener(`.${componentName}`, onElement);\n}\n","import getContext from \"../context.js\";\nimport { isUserLoggedIn } from \"../utils/loggedInControl.js\";\n\nimport { retrieveJsonRequest } from \"./utils\";\n\nconst LOGGED_IN_PREFIX = \"core\";\nconst LOGGED_OUT_PREFIX = \"res\";\nconst DATA_ENDPOINT = \"load_more_component/data.js\";\n\nfunction makeParams(componentId, lazyDeps, pageNumber, excludePostIds, lastPostId) {\n    const context = getContext();\n\n    const searchParams = new URLSearchParams(context.pathParams);\n    searchParams.set(\"formats\", \"html\");\n    searchParams.set(\"pn_strategy\", \"\");\n    searchParams.set(\"site_id\", context.settings.site.id);\n    searchParams.set(\"resource_id\", context.settings.resourceId);\n    searchParams.set(\"path_params\", JSON.stringify(context.settings.pathParams));\n    searchParams.set(\"pn\", pageNumber);\n    searchParams.set(\"component_node_id\", componentId);\n    searchParams.set(\"lazy_deps\", lazyDeps);\n\n    if (excludePostIds) {\n        searchParams.set(\"exclude_post_ids\", excludePostIds);\n    }\n\n    if (lastPostId) {\n        searchParams.set(\"last_post_id\", lastPostId);\n    }\n\n    if (context.settings.is_section_tag) {\n        searchParams.set(\"is_section_tag\", 1);\n    }\n\n    return searchParams;\n}\n\nfunction makeUrl(componentId, lazyDeps, pageNumber, excludePostIds, lastPostId) {\n    const params = makeParams(componentId, lazyDeps, pageNumber, excludePostIds, lastPostId);\n    const prefix = isUserLoggedIn() ? LOGGED_IN_PREFIX : LOGGED_OUT_PREFIX;\n\n    return `/${prefix}/${DATA_ENDPOINT}?${params.toString()}`;\n}\n\nexport function loadMoreComponent(componentId, lazyDeps, pageNumber, excludePostIds, lastPostId) {\n    const url = makeUrl(componentId, lazyDeps, pageNumber, excludePostIds, lastPostId);\n    return retrieveJsonRequest(url);\n}\n","export function evaluateScript(textContent) {\n    const parsedJavascript = document.createElement(\"script\");\n    parsedJavascript.textContent = textContent;\n    document.head.appendChild(parsedJavascript);\n    setTimeout(() => {\n        parsedJavascript.remove();\n    }, 1);\n}\n","import applyStyles from \"../utils/applyStyles.js\";\nimport { evaluateScript } from \"../utils/evaluateScriptOnDom.js\";\n\nexport class ComponentError extends Error {}\n\nexport const PARSER = new DOMParser();\n\nexport function handleResponse(response) {\n    evaluateScript(response.component_javascript);\n    /**\n     * @TODO ensure that component styles are properly scoped, layered and unique\n     */\n    applyStyles(response.css);\n    applyStyles(response.component_styles);\n}\n\nexport function findComponent(document, componentId) {\n    const element = document.querySelector(`.rm-component[data-node-id=\"${componentId}\"]`);\n    if (element) {\n        return element;\n    }\n    throw new ComponentError(`Component ${componentId} not found`);\n}\n","import { loadMoreComponent } from \"../transport/components.js\";\nimport { ComponentError, findComponent, handleResponse, PARSER } from \"./_common.js\";\n\nconst COMPONENT_CLASS_NAME = \".rm-component\";\nconst SLOT_CLASS_NAME = \".rm-slot\";\n\nfunction findLazyChildren(element) {\n    const slots = Array.from(element.querySelectorAll(`${SLOT_CLASS_NAME}[loading=\"lazy\"]`));\n    const childrenSlots = slots.filter((slot) => slot.closest(COMPONENT_CLASS_NAME) === element);\n\n    return childrenSlots.map((slot) => slot.dataset.slotName);\n}\n\nfunction parseResponse(html, componentId, lazyChildrenNames) {\n    const document = PARSER.parseFromString(html, \"text/html\");\n    const rootComponent = findComponent(document, componentId);\n\n    const elementMap = lazyChildrenNames.reduce(function findChildren(map, name) {\n        const potentialSlots = Array.from(\n            document.querySelectorAll(`${SLOT_CLASS_NAME}[data-slot-name=\"${name}\"]`)\n        );\n\n        const slot = potentialSlots.find(\n            (slot) => slot.closest(COMPONENT_CLASS_NAME) === rootComponent\n        );\n\n        if (slot) {\n            return { ...map, [name]: slot.cloneNode(true) };\n        }\n\n        return slot;\n    }, {});\n\n    return elementMap;\n}\n\nexport async function loadLazySlots(componentId) {\n    const element = findComponent(window.document, componentId);\n    const lazyChildrenNames = findLazyChildren(element);\n\n    if (lazyChildrenNames.length === 0) {\n        throw new ComponentError(\"This component has no lazy children\");\n    }\n\n    const loading = element.getAttribute(\"loading\");\n    if (loading === \"eager\") {\n        throw new ComponentError(\"This component was already eagerly loaded\");\n    }\n\n    const lazyDeps = element.dataset.lazyDeps;\n\n    const response = await loadMoreComponent(componentId, lazyDeps, 1);\n    handleResponse(response);\n    return parseResponse(response.component_html, componentId, lazyChildrenNames);\n}\n","import { loadMoreComponent } from \"../transport/components.js\";\nimport { findComponent, handleResponse, PARSER } from \"./_common.js\";\n\nexport async function loadNextPage(componentId, pageNumber, excludePostIds, lastPostId) {\n    const element = findComponent(window.document, componentId);\n\n    const lazyDeps = element.dataset.lazyDeps;\n    const response = await loadMoreComponent(\n        componentId,\n        lazyDeps,\n        pageNumber,\n        excludePostIds,\n        lastPostId\n    );\n    handleResponse(response);\n\n    const document = PARSER.parseFromString(response.component_html, \"text/html\");\n    const rootComponent = findComponent(document, componentId);\n\n    return rootComponent;\n}\n","export function loadComponentChannelManager() {\n    return import(\"./componentDomChannel\").then((module) => module.initializeChannel(document));\n}\n","import getDevice from \"../utils/getDevice\";\r\nimport loadContextData from \"../utils/loadContextData\";\r\nimport { initClickHandler } from \"../utils/initClickHandler\";\r\nimport htmlDecode from \"../utils/htmlDecode\";\r\nimport * as postStatus from \"../utils/postStatus\";\r\nimport createElementChangeListener from \"../elementChangeListener\";\r\nimport createSmartIntersector from \"../utils/createSmartIntersector\";\r\nimport rebelSlider from \"../lib/sliderLoader\";\r\nimport loadExternalScript from \"../utils/loadExternalScript\";\r\nimport loadExternalStylesheet from \"../utils/loadExternalStylesheet\";\r\nimport loadFontFace from \"../utils/loadFontFace\";\r\nimport loadGsap from \"../utils/loadGsap\";\r\nimport { showFlexibleSticky } from \"../views/doubleStickyLoader\";\r\nimport showInformer from \"../views/informer/loader\";\r\nimport getRenderer from \"../renderer/loadRenderer\";\r\nimport fullBootstrap from \"../transport/fullBootstrap\";\r\nimport partial from \"../lib/core/functional/partial\";\r\nimport raiseNotification from \"../utils/raiseNotification\";\r\nimport { spawnTask, runAsTasks } from \"../utils/spawnTask.js\";\r\nimport { wireComponent } from \"../components/componentHandler.js\";\r\nimport { loadLazySlots } from \"../components/loadLazySlots.js\";\r\nimport { loadNextPage } from \"../components/nextPage.js\";\r\nimport { loadComponentChannelManager } from \"../components/channelLoader.js\";\r\n\r\nfunction protectedWriteComponent(...args) {\r\n    try {\r\n        wireComponent(...args);\r\n    } catch (error) {\r\n        console.error(`Error wiring component`, [...args]);\r\n    }\r\n}\r\n\r\nexport default function initStdLib(context) {\r\n    window.REBELMOUSE_STDLIB = {\r\n        context,\r\n        getDevice,\r\n        loadContextData,\r\n        initClickHandler,\r\n        htmlDecode,\r\n        createElementChangeListener,\r\n        spawnTask,\r\n        runAsTasks,\r\n        createSmartIntersector: partial(\r\n            createSmartIntersector,\r\n            context.intersectionObserverProvider,\r\n        ),\r\n        rebelSlider,\r\n        loadExternalScript,\r\n        loadExternalStylesheet,\r\n        loadFontFace,\r\n        loadGsap,\r\n        getRenderer,\r\n        postStatus,\r\n        raiseNotification,\r\n        components: {\r\n            loadLazySlots,\r\n            loadNextPage,\r\n            loadComponentChannelManager,\r\n            wireComponent: protectedWriteComponent,\r\n        },\r\n        onElementInViewport: context.intersectionObserverProvider.addTask,\r\n        widgetControl: {\r\n            doubleSticky: { showFlexibleSticky },\r\n        },\r\n        showInformer: (config) => {\r\n            showInformer(context, config);\r\n        },\r\n        getBootstrap: () => fullBootstrap(context),\r\n    };\r\n    return context;\r\n}\r\n","import noop from \"../lib/core/functional/noop\";\r\nimport thunk from \"../lib/core/functional/thunk\";\r\nimport curry from \"../lib/core/functional/curry\";\r\nimport pipe from \"../lib/core/functional/pipe\";\r\nimport call from \"../lib/core/functional/call\";\r\n\r\nimport intersectionObserverProvider from \"../context/intersectionObserverProvider\";\r\n\r\nimport onPostLcp from \"../utils/onPostLcp\";\r\nimport {\r\n    getConnectionType,\r\n    listenToConnectionChanges,\r\n    stopListening,\r\n} from \"../utils/connectionHandler\";\r\nimport loadExternalScript from \"../utils/loadExternalScript\";\r\nimport { requestIdleCallback, cancelIdleCallback } from \"../utils/idleCallback.js\";\r\n\r\nlet scrollTimeoutId;\r\nlet idleCallbackId;\r\nconst idleCallbacks = new Set();\r\nconst callbackRunner = call();\r\n\r\nconst loadDeps = thunk(function loadDeps(props, state) {\r\n    const { dependencies } = props;\r\n    const allDeps = dependencies.length;\r\n    let loaded = 0;\r\n\r\n    function onDepLoaded() {\r\n        loaded++;\r\n        if (loaded === allDeps) {\r\n            startAdLifeCycle(props, state);\r\n        }\r\n    }\r\n\r\n    function onEachDep(dep) {\r\n        loadExternalScript(dep, onDepLoaded);\r\n    }\r\n\r\n    if (allDeps > 0) {\r\n        dependencies.forEach(onEachDep);\r\n    } else {\r\n        startAdLifeCycle(props, state);\r\n    }\r\n});\r\n\r\nconst idleHandler = curry(function idleHandler(removeFromSet, addToSet, element) {\r\n    removeFromSet.delete(element);\r\n    addToSet.add(element);\r\n});\r\n\r\nconst nonIdleHandler = curry(function nonIdleHandler(handler, element) {\r\n    handler(element);\r\n});\r\n\r\nconst initiateStaticElement = curry(function initiateStaticElement(displayer, element) {\r\n    markAsStaticElement(element);\r\n    displayer(element);\r\n});\r\n\r\nexport default function init(context) {\r\n    window.RM_AD_LOADER.forEach(processAdRequest);\r\n    upgradeObject();\r\n    return context;\r\n}\r\n\r\nfunction upgradeObject() {\r\n    window.RM_AD_LOADER = { push: processAdRequest };\r\n}\r\n\r\nfunction processAdRequest(props) {\r\n    const { onInit } = props;\r\n    const state = onInit.call(window);\r\n    onPostLcp(loadDeps(props, state));\r\n}\r\n\r\nfunction startAdLifeCycle(props, state) {\r\n    const {\r\n        options,\r\n        staticSelectors = [],\r\n        dynamicSelectors = [],\r\n        disableIdleLoader,\r\n        disableVisibilityWatcher,\r\n    } = props;\r\n    const {\r\n        displayOnElement,\r\n        refreshOnElement,\r\n        destroyOnElement,\r\n        onDependanciesLoaded,\r\n    } = getCallbacks(props);\r\n\r\n    let connectionChangeCallback;\r\n    let refreshRate;\r\n    let intervalId;\r\n    let timeoutId;\r\n    let intersectHandler;\r\n    let nonIntersectHandler;\r\n    let onIterationEnd;\r\n    let userOptions;\r\n    let lastRefresh = Date.now();\r\n\r\n    let previousObsevers = [];\r\n    let staticElements = [];\r\n    let setOptions = saveOptions;\r\n\r\n    const elementsToDestroy = new Set();\r\n    const elementsToRefresh = new Set();\r\n    const elementsToDisplay = new Set();\r\n    const observerSelector = dynamicSelectors.join(\",\");\r\n\r\n    const displayIdleHandler = idleHandler(elementsToDestroy, elementsToDisplay);\r\n    const displayNonIdleHandler = nonIdleHandler(displayElement);\r\n\r\n    const destroyIdleHandler = idleHandler(elementsToDisplay, elementsToDestroy);\r\n    const destroyNonIdleHandler = nonIdleHandler(destroyElement);\r\n\r\n    if (disableIdleLoader) {\r\n        intersectHandler = displayNonIdleHandler;\r\n        nonIntersectHandler = destroyNonIdleHandler;\r\n        onIterationEnd = noop;\r\n    } else {\r\n        intersectHandler = displayIdleHandler;\r\n        nonIntersectHandler = destroyIdleHandler;\r\n        onIterationEnd = waitForIdle;\r\n    }\r\n\r\n    if (staticSelectors.length) {\r\n        setOptions = pipe(saveOptions, setUpAdRefresh);\r\n        staticElements = Array.from(document.querySelectorAll(staticSelectors.join(\",\")));\r\n    }\r\n\r\n    if (observerSelector) {\r\n        setOptions = pipe(saveOptions, setUpAdRefresh, setUpIntersectionObserver);\r\n    }\r\n\r\n    onDependanciesLoaded(state, setOptions);\r\n    setOptions(options || {});\r\n    staticElements.forEach(initiateStaticElement(displayElement));\r\n\r\n    function saveOptions(options) {\r\n        userOptions = options;\r\n    }\r\n\r\n    function displayElement(element) {\r\n        elementsToRefresh.add(element);\r\n        element.dataset.rmLastViewed = Date.now();\r\n        element.dataset.initiated = true;\r\n        displayOnElement(element, state, setOptions);\r\n    }\r\n\r\n    function refreshElement(element) {\r\n        if (Date.now() - parseInt(element.dataset.rmLastViewed, 10) < refreshRate) {\r\n            return;\r\n        }\r\n\r\n        element.dataset.rmLastViewed = Date.now();\r\n        element.dataset.refreshCount = element.dataset.refreshCount\r\n            ? parseInt(element.dataset.refreshCount, 10) + 1\r\n            : 1;\r\n        refreshOnElement(element, state, setOptions);\r\n    }\r\n\r\n    function destroyElement(element) {\r\n        destroyOnElement(element, state, setOptions);\r\n    }\r\n\r\n    function setUpIntersectionObserver() {\r\n        previousObsevers.forEach(disconnect);\r\n        previousObsevers = intersectionObserverProvider.addTask({\r\n            onNonIntersect,\r\n            onIntersect,\r\n            entriesHandler,\r\n            selector: observerSelector,\r\n            threshold: getThreshold(),\r\n        });\r\n    }\r\n\r\n    function setUpAdRefresh() {\r\n        const { refreshTimeout } = userOptions;\r\n        if (!refreshTimeout || refreshTimeout === refreshRate) {\r\n            return;\r\n        }\r\n\r\n        refreshRate = refreshTimeout;\r\n        startInterval(refreshTimeout);\r\n    }\r\n\r\n    function startInterval() {\r\n        clearInterval(intervalId);\r\n        intervalId = setInterval(triggerRefresh, refreshRate);\r\n    }\r\n\r\n    function triggerRefresh() {\r\n        waitForIdle(iterateRefreshElements);\r\n    }\r\n\r\n    function iterateRefreshElements() {\r\n        lastRefresh = Date.now();\r\n        elementsToRefresh.forEach(refreshElement);\r\n    }\r\n\r\n    function getThreshold() {\r\n        const { threshold } = userOptions;\r\n\r\n        if (connectionChangeCallback) {\r\n            stopListening(connectionChangeCallback);\r\n        }\r\n\r\n        if (!isNaN(threshold)) {\r\n            connectionChangeCallback = null;\r\n            return threshold;\r\n        }\r\n        let ogConnectionType = getConnectionType();\r\n\r\n        connectionChangeCallback = function onConnectionChanged(newType) {\r\n            if (ogConnectionType !== newType) {\r\n                setOptions(userOptions);\r\n            }\r\n        };\r\n        listenToConnectionChanges(connectionChangeCallback);\r\n        const currentThreshold = threshold[ogConnectionType];\r\n        return currentThreshold;\r\n    }\r\n\r\n    function entriesHandler(entries) {\r\n        entries.forEach(onEntry);\r\n        onIterationEnd(executeIdleCallbacks);\r\n    }\r\n\r\n    function onEntry(entry) {\r\n        if (entry.isIntersecting) {\r\n            onIntersect(entry, intersectHandler);\r\n        } else {\r\n            onNonIntersect(entry, nonIntersectHandler);\r\n        }\r\n    }\r\n\r\n    function onIntersect(entry, handler) {\r\n        const element = entry.target;\r\n        handler(element);\r\n    }\r\n\r\n    function onNonIntersect(entry, handler) {\r\n        const element = entry.target;\r\n        if (!element.dataset.initiated) {\r\n            return;\r\n        }\r\n        elementsToRefresh.delete(element);\r\n        handler(element);\r\n    }\r\n\r\n    function executeIdleCallbacks() {\r\n        iterateAndClearSet(elementsToDisplay, displayElement);\r\n        iterateAndClearSet(elementsToDestroy, destroyElement);\r\n    }\r\n\r\n    if (!disableVisibilityWatcher) {\r\n        function onVisibilityChange() {\r\n            if (!refreshRate) {\r\n                return;\r\n            }\r\n\r\n            if (document.visibilityState === \"visible\") {\r\n                startInterval();\r\n                const timeSinceLastRefresh = Date.now() - lastRefresh;\r\n                if (timeSinceLastRefresh >= refreshRate) {\r\n                    triggerRefresh();\r\n                } else {\r\n                    const difference = refreshRate - timeSinceLastRefresh;\r\n                    if (difference <= refreshRate / 4) {\r\n                        timeoutId = setTimeout(triggerRefresh, difference);\r\n                    }\r\n                }\r\n            } else {\r\n                clearTimeout(timeoutId);\r\n                clearInterval(intervalId);\r\n            }\r\n        }\r\n\r\n        document.addEventListener(\"visibilitychange\", onVisibilityChange);\r\n    }\r\n}\r\n\r\nfunction waitForIdle(callback) {\r\n    idleCallbacks.add(callback);\r\n    clearTimeout(scrollTimeoutId);\r\n    cancelIdleCallback(idleCallbackId);\r\n    scrollTimeoutId = setTimeout(waitForIdleMainThread, 64);\r\n}\r\n\r\nfunction waitForIdleMainThread() {\r\n    idleCallbackId = requestIdleCallback(runIdleCallbacks, { timeout: 100 });\r\n}\r\n\r\nfunction runIdleCallbacks() {\r\n    idleCallbacks.forEach(callbackRunner);\r\n    idleCallbacks.clear();\r\n}\r\n\r\nfunction getCallbacks(props) {\r\n    const {\r\n        displayOnElement = noop,\r\n        refreshOnElement = noop,\r\n        destroyOnElement = noop,\r\n        onDependanciesLoaded = noop,\r\n    } = props;\r\n\r\n    return {\r\n        displayOnElement: displayOnElement.bind(window),\r\n        refreshOnElement: refreshOnElement.bind(window),\r\n        destroyOnElement: destroyOnElement.bind(window),\r\n        onDependanciesLoaded: onDependanciesLoaded.bind(window),\r\n    };\r\n}\r\n\r\nfunction disconnect(observer) {\r\n    observer.disconnect();\r\n}\r\n\r\nfunction markAsStaticElement(element) {\r\n    element.dataset.isStatic = 1;\r\n}\r\n\r\nfunction iterateAndClearSet(set, callback) {\r\n    set.forEach(callback);\r\n    set.clear();\r\n}\r\n","import createElementChangeListener from \"../../elementChangeListener.js\";\nimport { fetchCustomizations } from \"../../transport/customizations.js\";\nimport loadContextData from \"../../utils/loadContextData.js\";\nimport onPostLcp from \"../../utils/onPostLcp.js\";\nimport { spawnTask } from \"../../utils/spawnTask.js\";\n\nconst CACHE_KEY = \"_rm_smartlinks_\";\nconst MAX_AGE = 1 * 60 * 60 * 1000;\n\nasync function loadFromCache() {\n    const data = localStorage.getItem(CACHE_KEY);\n\n    if (!data) {\n        return null;\n    }\n\n    try {\n        const parsed = JSON.parse(data);\n        if (parsed && Array.isArray(parsed.customizations)) {\n            return parsed;\n        }\n    } catch {\n        return null;\n    }\n\n    return null;\n}\n\nasync function saveOnCache(customizations) {\n    localStorage.setItem(\n        CACHE_KEY,\n        JSON.stringify({\n            customizations,\n            age: Date.now(),\n        })\n    );\n}\n\nfunction doArraysHaveAnyOverlap(longerArray, shorterArray) {\n    if (shorterArray.length > longerArray.length) {\n        return doArraysHaveAnyOverlap(shorterArray, longerArray);\n    }\n\n    function isValueIncluded(value) {\n        return shorterArray.includes(value);\n    }\n\n    return longerArray.some(isValueIncluded);\n}\n\nfunction shouldApplyCustomization(context, customization) {\n    const { post } = context;\n    const { sections, tags, id } = post;\n\n    const {\n        excluded_post_ids,\n        excluded_section_ids,\n        excluded_tags,\n        included_section_ids,\n        included_tags,\n    } = customization;\n\n    /**\n     * If there is an exclude directive, we stop the process\n     * only if the overlap exists\n     */\n    if (\n        doArraysHaveAnyOverlap(excluded_section_ids, sections) ||\n        doArraysHaveAnyOverlap(excluded_tags, tags) ||\n        doArraysHaveAnyOverlap(excluded_post_ids, [id])\n    ) {\n        return false;\n    }\n\n    /**\n     * If there is an include directive, we return whatever is the result of the overlap\n     */\n    if (included_section_ids.length > 0) {\n        return doArraysHaveAnyOverlap(included_section_ids, sections);\n    }\n\n    if (included_tags.length > 0) {\n        return doArraysHaveAnyOverlap(included_section_ids, tags);\n    }\n\n    /**\n     * Apply by default\n     */\n    return true;\n}\n\nfunction applyAttribute(element, attributePair) {\n    const [key, value] = attributePair;\n\n    function addClassToElement(class_) {\n        try {\n            element.classList.add(class_);\n        } catch (error) {\n            console.error(error);\n        }\n    }\n\n    try {\n        if (key === \"class\") {\n            const classes = value.split(\" \");\n            classes.forEach(addClassToElement);\n        } else {\n            element.setAttribute(key, value);\n        }\n    } catch (error) {\n        console.error(error);\n    }\n\n    return element;\n}\n\nfunction applyCustomization(element, customization) {\n    const { extra } = customization;\n\n    Object.entries(extra.attributes || {}).reduce(applyAttribute, element);\n}\n\nfunction attachCustomization(customization) {\n    async function onElement(element) {\n        await spawnTask();\n        const parentPost = element.closest(\"article[elid]\");\n        if (!parentPost) {\n            return;\n        }\n\n        const context = loadContextData(`#post-context-${parentPost.getAttribute(\"elid\")}`);\n\n        if (Object.keys(context).length === 0) {\n            return;\n        }\n\n        const should = shouldApplyCustomization(context, customization);\n\n        if (!should) {\n            return;\n        }\n\n        applyCustomization(element, customization);\n    }\n\n    try {\n        createElementChangeListener(customization.find_phrase, onElement);\n    } catch (error) {\n        console.error(error);\n    }\n}\n\nasync function attachCustomizations(customizations) {\n    customizations.forEach(attachCustomization);\n}\n\nasync function fetchAndSave() {\n    const replacements = await fetchCustomizations();\n    await saveOnCache(replacements).catch(console.error);\n    return replacements;\n}\n\nasync function updateDataIfStale(age) {\n    if (!age || Date.now() - age > MAX_AGE) {\n        return fetchAndSave();\n    }\n}\n\nfunction makeUpdateIfStale(age) {\n    function cb() {\n        updateDataIfStale(age).catch(console.error);\n    }\n\n    return cb;\n}\n\nfunction fetchAndAttach() {\n    fetchAndSave().then(attachCustomizations).catch(console.error);\n}\n\nasync function loadAndAttach() {\n    const data = await loadFromCache();\n    if (data) {\n        onPostLcp(makeUpdateIfStale(data.age));\n        attachCustomizations(data.customizations).catch(console.error);\n    } else {\n        onPostLcp(fetchAndAttach);\n    }\n}\n\nexport function setUpSmartLinkCustomizations(context) {\n    if (context.settings.engine.useSmartLinks2) {\n        loadAndAttach().catch(console.error);\n    }\n    return context;\n}\n","import { retrieveJsonRequest } from \"./utils.js\";\n\nexport async function fetchCustomizations() {\n    return retrieveJsonRequest(`/res/find_and_replace/customizations`, \"GET\", \"omit\");\n}\n","import { PAGE_LOAD_EVENT, POST_SHARED_EVENT, URL_CHANGE_EVENT, URL_SCROLLED_EVENT } from \"./consts\";\n\nimport assemblerSlideshowLoader from \"./views/assemblerSlideshowLoader\";\nimport bodyImageSharesLoader from \"./views/shares/bodyImageSharesLoader\";\nimport changeUrlOnScrollLoader from \"./views/changeUrlOnScrollLoader\";\nimport floatingElementsLoader from \"./views/floatingElementsLoader\";\nimport initHamburgerMenu from \"./views/hamburgerMenu\";\nimport initProductsLoader from \"./views/products/loader\";\nimport keepReadingLoader from \"./views/keepReading/loader\";\nimport liveBlogLoader from \"./views/liveBlog/loader\";\nimport livePostParticleLoader from \"./views/liveBlog/postParticleLoader\";\nimport userBehaviorLoader from \"./views/userBehavior/loader\";\nimport loadLazyMedia from \"./views/mediaLazyLoad\";\nimport loginSignupLoader from \"./views/loginSignup/loader\";\nimport nativeTalksLoader from \"./views/nativeTalks/loader\";\nimport pageFetchLoader from \"./views/pageFetch/loader\";\nimport pipe from \"./lib/core/functional/pipe\";\nimport noop from \"./lib/core/functional/noop\";\nimport postShares from \"./views/shares/postShares\";\nimport scrollParticleIntoView from \"./views/scrollParticleIntoView\";\nimport scrollTriggerLoader from \"./views/scrollTriggerLoader\";\nimport doubleStickyLoader from \"./views/doubleStickyLoader\";\nimport searchForm from \"./views/searchForm\";\nimport statsProvider from \"./stats\";\nimport stickyHeader from \"./views/stickyHeader\";\nimport subscriptionFormLoader from \"./views/subscriptionFormLoader\";\nimport tabsLoader from \"./views/tabs/loader\";\nimport videoPlayerLoader from \"./views/videoPlayerLoader\";\nimport uplynkLoader from \"./views/uplynk/loader\";\nimport assemblerUpDownVotingLoader from \"./views/assemblerUpDownVoting/loader\";\nimport gdprCookieAcceptHandler from \"./views/gdprCookieAcceptHandler.js\";\nimport followButtonLoader from \"./views/followButton/loader\";\nimport likeButtonLoader from \"./views/likeButton/loader\";\nimport foldersButtonLoader from \"./views/folders/foldersButton/loader\";\nimport foldersPostManagerLoader from \"./views/folders/foldersPostManager/loader\";\nimport loadLegacyLazyScripts from \"./views/mediaLazyLoad/lazyScript\";\nimport onPostLcp from \"./utils/onPostLcp.js\";\nimport createIdleQueue from \"./utils/createIdleQueue\";\nimport upgradeToLoggedInExperience from \"./upgradeToLoggedInLoader\";\nimport moduleLoader from \"./utils/moduleLoader\";\nimport initStdLib from \"./stdlib\";\nimport initAdLoader from \"./adLoader\";\nimport loadLdDebugger from \"./ldDebugger/loader\";\nimport { setUpSmartLinkCustomizations } from \"./smartLinks/customizations/index.js\";\nimport { evaluateScript } from \"./utils/evaluateScriptOnDom.js\";\n\nconst HIGH_PRIORITY_TASK_TIMEOUT = 200;\nconst LOW_PRIORITY_TASK_TIMEOUT = 700;\n\nfunction triggerLoaded(context) {\n    let eventData = { url: location.href };\n    if (context.settings.post) {\n        eventData[\"id\"] = context.settings.post.id;\n    }\n    context.eventBus.publish(PAGE_LOAD_EVENT, eventData);\n\n    return context;\n}\n\nfunction urlEventListener(context) {\n    const eventMap = {\n        [URL_CHANGE_EVENT]: [\n            \"rebelmouse.urlChange\",\n            (data) => {\n                window.history.replaceState({}, data.headline || \"\", data.url);\n            },\n        ],\n        [URL_SCROLLED_EVENT]: [\"rebelmouse.urlScrolled\"],\n        [POST_SHARED_EVENT]: [\"rebelmouse.postShared\"],\n    };\n\n    Object.keys(eventMap).forEach((busName) => {\n        const eventData = eventMap[busName];\n        context.eventBus.subscribe(busName, (detail) => {\n            const [eventName, eventAction] = eventData;\n            const customEvent = new CustomEvent(eventName, { detail });\n            document.dispatchEvent(customEvent);\n            if (eventAction) {\n                eventAction(detail);\n            }\n        });\n    });\n\n    return context;\n}\n\nfunction addTaskToQueue(queue, timeout) {\n    return function onTask(task) {\n        return queue.pushTask(task, timeout);\n    };\n}\n\nfunction loadUnparsedQueue(tasksQueue, queueName, loader, timeout) {\n    return function processQueue() {\n        loader();\n\n        if (queueName && queueName.length) {\n            queueName.forEach(addTaskToQueue(tasksQueue, timeout));\n            queueName.length = 0;\n        }\n    };\n}\n\nfunction loadUnparsed(selector) {\n    return function loader() {\n        const element = document.querySelector(selector);\n\n        if (element && element.textContent) {\n            evaluateScript(element.textContent);\n            element.remove();\n        }\n    };\n}\n\nfunction prepareLowPriorityQueues(tasksQueue, queue) {\n    return function onPageIdle() {\n        queue.forEach(addTaskToQueue(tasksQueue, LOW_PRIORITY_TASK_TIMEOUT));\n    };\n}\n\nfunction initIdleQueue(tasksQ, lowerPriorityTasksQ, lowestPriorityTaskQ, activePriorityQueue) {\n    const tasksQueue = createIdleQueue(noop);\n\n    return function startIdleQueue(context) {\n        tasksQ.forEach(addTaskToQueue(tasksQueue, HIGH_PRIORITY_TASK_TIMEOUT));\n\n        const activeQueueLoader = loadUnparsedQueue(\n            tasksQueue,\n            activePriorityQueue,\n            loadUnparsed(\"script#user-javascript-active\"),\n            HIGH_PRIORITY_TASK_TIMEOUT\n        );\n\n        const componentsWiring = loadUnparsed(\"script#user-javascript-components\");\n\n        const lowestQueueLoader = loadUnparsedQueue(\n            tasksQueue,\n            lowestPriorityTaskQ,\n            loadUnparsed(\"script#user-javascript-lowest\"),\n            LOW_PRIORITY_TASK_TIMEOUT\n        );\n        lowerPriorityTasksQ.push(lowestQueueLoader);\n        lowestPriorityTaskQ.push(loadLegacyLazyScripts);\n\n        const handlePriorityQueues = pipe(\n            activeQueueLoader,\n            componentsWiring,\n            prepareLowPriorityQueues(tasksQueue, lowerPriorityTasksQ)\n        );\n\n        onPostLcp(handlePriorityQueues);\n        return context;\n    };\n}\n\nwindow.REBELMOUSE_INIT_IDLE_QUEUE = initIdleQueue;\n\nconst moduleList = [\n    scrollParticleIntoView,\n    initHamburgerMenu,\n    loadLazyMedia,\n    stickyHeader,\n    searchForm,\n    postShares,\n    keepReadingLoader,\n    pageFetchLoader,\n    bodyImageSharesLoader,\n    doubleStickyLoader,\n    scrollTriggerLoader,\n    changeUrlOnScrollLoader,\n    assemblerSlideshowLoader,\n    floatingElementsLoader,\n    liveBlogLoader,\n    subscriptionFormLoader,\n    videoPlayerLoader,\n    uplynkLoader,\n    nativeTalksLoader,\n    livePostParticleLoader,\n    userBehaviorLoader,\n    loginSignupLoader,\n    tabsLoader,\n    initProductsLoader,\n    assemblerUpDownVotingLoader,\n    gdprCookieAcceptHandler,\n    followButtonLoader,\n    likeButtonLoader,\n    foldersButtonLoader,\n    foldersPostManagerLoader,\n];\n\nconst bootQueue = initIdleQueue(\n    window.REBELMOUSE_TASKS_QUEUE,\n    window.REBELMOUSE_LOW_TASKS_QUEUE,\n    window.REBELMOUSE_LOWEST_TASKS_QUEUE,\n    window.REBELMOUSE_ACTIVE_TASKS_QUEUE\n);\n\nfunction reactiveQueueLoad(context) {\n    function onPageRendered() {\n        bootQueue(context);\n    }\n\n    if (document.prerendering) {\n        document.addEventListener(\"prerenderingchange\", onPageRendered, { once: true });\n    } else {\n        onPageRendered();\n    }\n\n    return context;\n}\n\nconst startApp = pipe(\n    statsProvider,\n    triggerLoaded,\n    urlEventListener,\n    initStdLib,\n    initAdLoader,\n    setUpSmartLinkCustomizations,\n    reactiveQueueLoad,\n    moduleLoader(moduleList),\n    upgradeToLoggedInExperience,\n    loadLdDebugger\n);\n\nexport default startApp;\n","export default function scrollParticleIntoView(context) {\n    window.addEventListener(\"load\", () => {\n        const selector = `[data-href=\"https://${location.host}${location.pathname}\"]`;\n        const elementToScroll = document.querySelector(selector);\n        if (elementToScroll) {\n            elementToScroll.scrollIntoView({block: 'nearest'});\n        }\n    });\n    return context;\n}\n","import loadLazyFacebook from \"./lazyFacebook\";\nimport loadLazyIFrames from \"./lazyIframe\";\nimport loadLazyImages from \"./lazyImage\";\nimport loadLazyInstagram from \"./lazyInstagram\";\nimport loadLazyThreads from \"./lazyThreads.js\";\nimport loadLazyReddit from \"./lazyReddit\";\nimport loadLazyTwitter from \"./lazyTwitter\";\nimport loadLazyTikTok from \"./lazyTikTok\";\nimport loadLazyBrightcove from \"./lazyBrightcove\";\nimport loadModuleOnScroll from \"../../utils/loadModuleOnScroll\";\nimport viewportStyle from \"./viewportStyle\";\nimport loadLazyImgur from \"./lazyImgur\";\nimport loadLazyJWPlayer from \"./jwplayer/loader\";\n\nexport default function loadLazyMedia(context) {\n    loadLazyJWPlayer(context);\n    loadLazyImages(context.intersectionObserverProvider);\n    loadLazyIFrames(context.intersectionObserverProvider);\n    loadLazyInstagram(context.intersectionObserverProvider);\n    loadLazyThreads(context.intersectionObserverProvider);\n    loadLazyFacebook(context.intersectionObserverProvider);\n    loadLazyReddit(context.intersectionObserverProvider);\n    loadLazyTwitter(context.intersectionObserverProvider);\n    loadLazyTikTok(context.intersectionObserverProvider);\n    loadLazyBrightcove(context.intersectionObserverProvider);\n    viewportStyle(context.intersectionObserverProvider);\n    loadLazyImgur(context.intersectionObserverProvider);\n\n    loadModuleOnScroll(() => {\n        import(\"./lazyStyle\").then((module) => {\n            module.default();\n        });\n    });\n\n    return context;\n}\n","import loadModuleOnScroll from \"../utils/loadModuleOnScroll\";\nimport createIdleScrollListener from \"../utils/createIdleScrollListener\";\n\nconst TOGGLE_CLASS_NAME = \"with-fixed-header\";\n\nfunction positionOnScroll(triggerNode) {\n    return createIdleScrollListener(() => {\n        const { toggleClass } = triggerNode.dataset;\n        if (triggerNode.getBoundingClientRect().top <= 0) {\n            document.body.classList.add(toggleClass);\n        } else {\n            document.body.classList.remove(toggleClass);\n        }\n    });\n}\n\nexport default function stickyElement(context) {\n    loadModuleOnScroll(() => {\n        const stickyHeader = document.querySelector(`[data-toggle-class=${TOGGLE_CLASS_NAME}]`);\n\n        if (stickyHeader) {\n            document.addEventListener(\"scroll\", positionOnScroll(stickyHeader), { passive: true });\n        }\n    });\n\n    return context;\n}\n","import { openPopup } from \"./common\";\nimport { POST_SHARED_EVENT } from \"../../consts\";\nimport createElementChangeListener from \"../../elementChangeListener\";\nimport raiseNotification from \"../../utils/raiseNotification\";\n\nconst selector = \".share-panel .share\";\n\nfunction popupHandler(el, eventBus) {\n    el.addEventListener(\n        \"click\",\n        (event) => {\n            const { currentTarget } = event;\n            const { trackShare } = currentTarget.dataset;\n            // Fallback to the anchor's href: site layouts may still carry the\n            // pre-PRODT-3435 hardcoded <a href> share markup without data-href.\n            const href = currentTarget.dataset.href || currentTarget.href;\n\n            if (trackShare != \"Email\" && trackShare != \"Sms\") {\n                event.preventDefault();\n                event.stopPropagation();\n            }\n\n            openPopup(href, (trackShare || \"\").toLowerCase());\n            eventBus.publish(POST_SHARED_EVENT, {\n                url: href,\n                provider: (trackShare || \"\").toLowerCase(),\n            });\n            return false;\n        },\n        true\n    );\n}\n\nfunction copyTextHandler(el) {\n    el.addEventListener(\"click\", (event) => {\n        event.preventDefault();\n        navigator.clipboard.writeText(event.currentTarget.dataset.clipboardText);\n        raiseNotification(\"copied to clipboard\", \"success\");\n    });\n}\n\nfunction plusButtonHandler(el) {\n    const buttonsList = el.parentElement.children;\n    let found = false;\n    const hideButtonList = Array.from(buttonsList).reduce((acc, button) => {\n        found && acc.push(button);\n        found = found || button === el;\n        return acc;\n    }, []);\n\n    hideButtonList.forEach((button) => (button.style.display = \"none\"));\n\n    el.addEventListener(\"click\", (event) => {\n        event.currentTarget.remove();\n        hideButtonList.forEach((button) => (button.style.display = \"inline-block\"));\n    });\n}\n\nfunction initShareButtonFactory(el, eventBus) {\n    if (el.dataset.clipboardText) {\n        return copyTextHandler(el);\n    } else if (el.classList.contains(\"share-plus\")) {\n        return plusButtonHandler(el);\n    } else {\n        return popupHandler(el, eventBus);\n    }\n}\n\nexport default function postShares(context) {\n    createElementChangeListener(selector, (el) => {\n        initShareButtonFactory(el, context.eventBus);\n    });\n    return context;\n}\n","import loadModuleOnScroll from \"../../utils/loadModuleOnScroll\";\nimport onPostLcp from \"../../utils/onPostLcp\";\n\nexport default function pageFetchLoader(context) {\n    function onModule(module) {\n        module.default(context);\n    }\n\n    loadModuleOnScroll(() => {\n        import(\"./module\").then(onModule);\n    });\n\n    onPostLcp(() => {\n        import(\"./postLcp\").then(onModule);\n    });\n\n    return context;\n}\n","import loadModuleOnScroll from \"../../utils/loadModuleOnScroll\";\n\nexport default function bodyImageSharesLoader(context) {\n    loadModuleOnScroll(() => {\n        import(\"./bodyImageShares\").then((module) => module.default(context.settings));\n    });\n    return context;\n}\n","import loadModuleOnScroll from \"../utils/loadModuleOnScroll\";\n\nexport default function changeUrlOnScrollLoader(context) {\n    loadModuleOnScroll(() => {\n        import(\"./changeUrlOnScroll\").then((module) => {\n            module.default(context);\n        });\n    });\n    return context;\n}\n","import loadModuleOnScroll from \"../utils/loadModuleOnScroll\";\n\nexport default function floatingElementsLoader(context) {\n    loadModuleOnScroll(() => {\n        const floatingElements = document.querySelectorAll(\".js-hidden-panel\");\n        if (floatingElements.length) {\n            import(\"./floatingElements\").then((module) => {\n                module.default(floatingElements);\n            });\n        }\n    });\n    return context;\n}\n","import createElementChangeListener from \"../elementChangeListener\";\n\nexport default function gdprCookieAcceptHandler(context) {\n    if (window.localStorage.getItem(\"gdpr-cookie\")) return context;\n\n    createElementChangeListener(\".gdpr-cookie\", (el) => {\n        el.classList.remove(\"hidden\");\n    });\n\n    createElementChangeListener(\".gdpr-cookie-accept\", (el) => {\n        el.addEventListener(\"click\", () => {\n            window.localStorage.setItem(\"gdpr-cookie\", \"accepted\");\n            document.querySelectorAll(\".gdpr-cookie\").forEach(node => {\n                node.classList.add(\"hidden\");\n            })\n        })\n    });\n\n    return context;\n}\n","export default function createTimer(callback, delayList, maxTotalDuration) {\n    const timerCreationTime = +new Date();\n    let timerId;\n    let startTime = 0;\n    let remaining = delayList[0];\n\n    const stop = () => {\n        clearTimeout(timerId);\n    };\n\n    const pause = () => {\n        stop();\n        remaining -= new Date() - startTime;\n    };\n\n    const start = step => {\n        startTime = +new Date();\n        timerId = setTimeout(() => {\n            step = step || 0;\n            if (startTime - timerCreationTime > maxTotalDuration) {\n                return;\n            }\n\n            callback(remaining);\n            step += 1;\n            remaining = delayList[step] || delayList[delayList.length - 1];\n            start(step);\n        }, remaining);\n    };\n\n    return {\n        start,\n        pause,\n        stop\n    };\n}\n","export default function loadLdDebugger(context) {\n    const queryParams = new URLSearchParams(document.location.search);\n    if (queryParams.has(\"debugld\")) {\n        const value = queryParams.get(\"debugld\");\n        if (value) {\n            import(\"./index.js\").then((module) => module.default(context, value.split(\",\")));\n        }\n    }\n}\n","__webpack_public_path__ = window.REBELMOUSE_BASE_ASSETS_URL;\n\nimport startApp from \"./app\";\nimport getContext from \"./context\";\n\nexport default function onDomReady() {\n    startApp(getContext());\n}\n","import onDomReady from \"./index\";\n\nvar neededPolyfills = 0;\n\nfunction loadApp() {\n    if (document.readyState !== \"loading\") {\n        onDomReady();\n    } else {\n        window.addEventListener(\"DOMContentLoaded\", onDomReady);\n    }\n}\n\nfunction onPolyfillLoad() {\n    neededPolyfills--;\n    if (neededPolyfills === 0) {\n        loadApp();\n    }\n}\n\nfunction existsOrPolyfill(api, file) {\n    if (api) {\n        return;\n    }\n    neededPolyfills++;\n    var script = document.createElement(\"script\");\n    script.src = `${window.REBELMOUSE_BASE_SSL_DOMAIN}/static/polyfills/${file}.js`;\n    script.addEventListener(\"load\", onPolyfillLoad);\n    document.head.appendChild(script);\n}\n\nexistsOrPolyfill(window.requestAnimationFrame, \"requestAnimationFrame\");\nexistsOrPolyfill(window.MutationObserver, \"mutationobserver-polyfill\");\nexistsOrPolyfill(window.IntersectionObserver, \"intersection-observer\");\nexistsOrPolyfill(typeof URL === \"function\", \"url-polyfill\");\nexistsOrPolyfill(window.URLSearchParams, \"urlsearchparams-polyfill\");\nexistsOrPolyfill(window.Array.from, \"arrayfrom-polyfill\");\nexistsOrPolyfill(window.Array.prototype.find, \"find-polyfill\");\nexistsOrPolyfill(Element.prototype.replaceWith, \"replace-with-polyfill\");\nexistsOrPolyfill(\"content\" in document.createElement(\"template\"), \"template-v2\");\nexistsOrPolyfill(window.NodeList.prototype.forEach, \"polyfill-ie11-nodelist-foreach\");\nexistsOrPolyfill(typeof window.CustomEvent === \"function\", \"event-polyfill\");\nexistsOrPolyfill(Element.prototype.closest && Element.prototype.matches, \"closest-polyfill\");\nexistsOrPolyfill(Object.values, \"object-values-polyfill\");\nexistsOrPolyfill(Object.entries, \"entries-polyfill\");\nexistsOrPolyfill(Object.fromEntries, \"fromEntries-polyfill\");\nexistsOrPolyfill(Element.prototype.remove, \"remove-polyfill\");\nexistsOrPolyfill(\"classList\" in Element.prototype, \"classList-polyfill\");\nexistsOrPolyfill(window.Promise, \"promise-polyfill\");\nexistsOrPolyfill(window.fetch, \"fetch-polyfill-v3\");\nexistsOrPolyfill(Array.prototype.flatMap, \"flatMap-polyfill\");\nexistsOrPolyfill(Array.prototype.includes, \"includes-polyfills\");\n\nif (neededPolyfills === 0) {\n    loadApp();\n}\n","export default function call(...args) {\n    return function callFunction(fun) {\n        return fun.call(null, ...args);\n    };\n}\n","export default function curry(fun) {\n    const expectedArguments = fun.length;\n\n    return function curried(...args) {\n        if (args.length === expectedArguments) return fun.call(null, ...args);\n        return fun.bind(null, ...args);\n    };\n}\n","const fromNullable = (thing) =>\n    new Promise((res, rej) => (thing === null || thing === undefined ? rej(thing) : res(thing)));\n\nexport default fromNullable;\n","export default function () {}\r\n","export default function partial(fun, ...args) {\r\n    return function (...moreArgs) {\r\n        return fun.apply(null, args.concat(moreArgs));\r\n    };\r\n}\r\n","export default function pipe(...functions) {\n    return (value) => {\n        return functions.reduce((currentValue, currentFunction) => {\n            return currentFunction(currentValue);\n        }, value);\n    };\n}\n","export default function thunk(fun) {\r\n    return function recieveArguments(...args) {\r\n        return function call() {\r\n            return fun.apply(null, args);\r\n        };\r\n    };\r\n}\r\n","export default function loadRenderer() {\r\n    return import(\"./renderer\").then((module) => module.default());\r\n}\r\n","import fromNullable from \"../lib/core/functional/fromNullable\";\nimport thunk from \"../lib/core/functional/thunk\";\n\nimport { retrieveJsonRequest } from \"./utils\";\n\nlet bootstrap;\n\nconst fetchFullBootstrap = thunk((bootstrapUrl) => retrieveJsonRequest(bootstrapUrl));\n\nfunction getStoredBootstrap() {\n    return fromNullable(bootstrap);\n}\n\nfunction cacheBootstrap(loadedBootstrap) {\n    bootstrap = loadedBootstrap;\n    return bootstrap;\n}\n\nexport default function fullBootstrap(context) {\n    return getStoredBootstrap()\n        .catch(fetchFullBootstrap(context.settings.fullBootstrapUrl))\n        .then(cacheBootstrap);\n}\n","import curry from \"../lib/core/functional/curry\";\n\nfunction sendFetch(url, options) {\n    const [fetchUrl, fetchOptions] = prepareSSLRequest(url, options);\n    return fetch(fetchUrl, fetchOptions).then(jsonHandler).catch(handleFetchError);\n}\n\nexport function sendRawRequest(url, method, body) {\n    const options = {\n        method,\n        body,\n    };\n    return sendFetch(url, options);\n}\n\nexport function sendXHRRequest(url, method, body) {\n    const options = {\n        method,\n        body,\n        headers: { ...HEADER_XMLHTTPREQUEST },\n    };\n    return sendFetch(url, options);\n}\n\nexport function sendJsonRequest(url, method, body) {\n    const options = {\n        method,\n        body: JSON.stringify(body),\n        headers: { ...HEADER_CONTENT_JSON },\n    };\n    return sendFetch(url, options);\n}\n\nexport function retrieveJsonRequest(url, method, credentials) {\n    const options = { method: method || \"GET\" };\n\n    if (credentials) {\n        options.credentials = credentials;\n    }\n\n    return sendFetch(url, options);\n}\n\nconst prepareSSLRequest = (url, userOptions) => {\n    const options = { ...userOptions } || {};\n    const baseSSLDomain = window.REBELMOUSE_BASE_SSL_DOMAIN;\n    url = (baseSSLDomain || \"https://\" + location.host) + url;\n    options.credentials = \"include\";\n    return [url, options];\n};\n\nconst HEADER_XMLHTTPREQUEST = {\n    \"X-Requested-With\": \"XMLHttpRequest\",\n};\n\nconst HEADER_CONTENT_JSON = {\n    Accept: \"application/json\",\n    \"Content-Type\": \"application/json\",\n};\n\nconst DEFAULT_ERROR = { message: \"It wasn't possible to fulfil this request\" };\n\nfunction isObject(maybeObject) {\n    return maybeObject && typeof maybeObject === \"object\";\n}\n\nconst rejectEvaluators = [\n    (_rawRes, res) => (res === false ? { ...DEFAULT_ERROR } : false),\n    (rawRes, res) => (!rawRes.ok ? res : false),\n    (_rawRes, res) => (isObject(res) && \"error\" in res ? { ...res, message: res.error } : false),\n    (_rawRes, res) => (isObject(res) && \"message\" in res && \"code\" in res ? res : false),\n    (_rawRes, res) =>\n        isObject(res) && \"errors\" in res && res.errors && Array.isArray(res.errors.email)\n            ? { ...res, message: res.errors.email[0] }\n            : false,\n];\n\nconst resolveEvaluators = [(_rawRes, res) => (res === true ? {} : false), (_rawRes, res) => res];\n\nfunction evaluatePipeline(rawRes, res, evaluators) {\n    let transformedResponse;\n    evaluators.some((fun) => {\n        try {\n            transformedResponse = fun(rawRes, res);\n        } catch {\n            transformedResponse = false;\n        }\n        return transformedResponse;\n    });\n    return transformedResponse;\n}\n\nconst handleJsonResponse = curry((rawResponse, response) => {\n    const rejectResponse = evaluatePipeline(rawResponse, response, rejectEvaluators);\n    if (rejectResponse) {\n        throw rejectResponse;\n    }\n\n    return evaluatePipeline(rawResponse, response, resolveEvaluators);\n});\n\nconst coerceResponseToJson = curry((rawResponse, textResponse) => {\n    let readableResponse;\n    try {\n        readableResponse = JSON.parse(textResponse);\n    } catch {\n        if (rawResponse.ok) {\n            return { message: textResponse };\n        } else {\n            return { error: textResponse };\n        }\n    }\n    return readableResponse;\n});\n\nfunction jsonHandler(response) {\n    return response.text().then(coerceResponseToJson(response)).then(handleJsonResponse(response));\n}\n\nconst NETWORK_ERROR = { message: \"There was a network error, please try again\" };\n\nfunction handleFetchError(error) {\n    if (error instanceof TypeError) {\n        throw NETWORK_ERROR;\n    }\n\n    throw error;\n}\n","import noop from \"./lib/core/functional/noop\";\r\nimport { isUserLoggedIn, updateLoggedIn } from \"./utils/loggedInControl.js\";\r\n\r\nconst error = new Error(\"User is not logged in\");\r\nconst waiters = [];\r\nconst listeners = [];\r\n\r\nfunction upgrade(context) {\r\n    if (isUserLoggedIn()) {\r\n        import(\"./upgradeToLoggedIn\").then((module) => module.default(context, waiters, listeners));\r\n    }\r\n}\r\n\r\nexport function doUpgradeToLoggedIn(context) {\r\n    if (isUserLoggedIn()) {\r\n        return context;\r\n    }\r\n    updateLoggedIn(true, context);\r\n    upgrade(context);\r\n    return context;\r\n}\r\n\r\nexport default function upgradeToLoggedInExperienceLoader(context) {\r\n    context.refreshUserInfo = noop;\r\n    context.getUserInfo = () =>\r\n        new Promise((resolve, reject) => {\r\n            if (isUserLoggedIn()) {\r\n                waiters.push([resolve, reject]);\r\n            } else {\r\n                reject(error);\r\n            }\r\n        });\r\n\r\n    context.listenForUserInfo = (cb) => {\r\n        listeners.push(cb);\r\n        if (!isUserLoggedIn()) {\r\n            cb(error, null);\r\n        }\r\n    };\r\n\r\n    upgrade(context);\r\n\r\n    return context;\r\n}\r\n","export default function applyStyles(css) {\n    const contentStyles = document.createElement(\"style\");\n    contentStyles.innerHTML = css;\n    document.head.appendChild(contentStyles);\n}\n","import { runAsTasks } from \"./spawnTask.js\";\r\n\r\nexport default function createCallbackRunner(boot, autoTriggerAfterRun) {\r\n    const callbacks = [];\r\n    let ran = false;\r\n\r\n    function add(callback) {\r\n        if (autoTriggerAfterRun && ran) {\r\n            callback();\r\n            return;\r\n        }\r\n\r\n        callbacks.push(callback);\r\n        if (callbacks.length == 1) {\r\n            boot();\r\n        }\r\n    }\r\n\r\n    function onceRan() {\r\n        callbacks.length = 0;\r\n    }\r\n\r\n    function run() {\r\n        ran = true;\r\n        runAsTasks(...callbacks).then(onceRan);\r\n    }\r\n\r\n    function hasRun() {\r\n        return ran;\r\n    }\r\n\r\n    return { add, run, hasRun };\r\n}\r\n","const connection = navigator.connection || navigator.mozConnection || navigator.webkitConnection;\r\nconst knownConnections = [\"4g\", \"3g\", \"2g\", \"slow-2g\"];\r\nconst listenerMap = {};\r\nlet listeners = [];\r\n\r\nfunction normalizeConnection(connection) {\r\n    if (knownConnections.includes(connection)) {\r\n        return connection;\r\n    } else {\r\n        return \"4g\";\r\n    }\r\n}\r\n\r\nfunction runCallbacks([callback, once]) {\r\n    callback(normalizeConnection(connection.effectiveType));\r\n    return !once;\r\n}\r\n\r\nfunction onConnectionInfoChanged() {\r\n    listeners = listeners.filter(runCallbacks);\r\n}\r\n\r\nfunction startListeningChanges() {\r\n    connection.addEventListener(\"change\", onConnectionInfoChanged);\r\n}\r\n\r\nexport function getConnectionType() {\r\n    return connection ? normalizeConnection(connection.effectiveType) : \"4g\";\r\n}\r\n\r\nexport function stopListening(callback) {\r\n    if (!(callback in listenerMap)) {\r\n        return;\r\n    }\r\n\r\n    const callbackObject = listenerMap[callback];\r\n    delete listenerMap[callback];\r\n    const index = listeners.indexOf(callbackObject);\r\n    listeners.splice(index, 1);\r\n    if (listeners.length === 0) {\r\n        connection.removeEventListener(\"change\", onConnectionInfoChanged);\r\n    }\r\n}\r\n\r\nexport function listenToConnectionChanges(callback, once) {\r\n    if (!connection) {\r\n        return;\r\n    }\r\n\r\n    const callbackObject = [callback, once || false];\r\n    listeners.push(callbackObject);\r\n    listenerMap[callback] = callbackObject;\r\n    if (listeners.length === 1) {\r\n        startListeningChanges();\r\n    }\r\n}\r\n","export default function createIdleScrollListener(callback) {\n    let ticking = false;\n\n    const runCallback = () => {\n        callback();\n        ticking = false;\n    };\n\n    return function onScrollIdle() {\n        if (ticking) {\n            return;\n        }\n        ticking = true;\n        setTimeout(runCallback, 1);\n    };\n}\n","import curry from \"../lib/core/functional/curry\";\nimport thunk from \"../lib/core/functional/thunk\";\nimport createElementChangeListener from \"../elementChangeListener\";\n\nimport { listenToConnectionChanges, getConnectionType } from \"./connectionHandler\";\nimport loadModuleOnScroll from \"./loadModuleOnScroll\";\nimport loadExternalScript from \"./loadExternalScript\";\n\nconst noop = () => {};\nconst defaultTreshholdCalculator = {\n    \"4g\": function on4G() {\n        return Math.max(window.innerHeight * 1.5, 700);\n    },\n    \"3g\": function on3G() {\n        return Math.max(window.innerHeight * 2, 900);\n    },\n    \"2g\": function on2G() {\n        return window.innerHeight * 3;\n    },\n    \"slow-2g\": function onSlow2G() {\n        return window.innerHeight * 3;\n    },\n};\n\nexport default function createSmartIntersector(\n    intersectionObserverProvider,\n    {\n        dependencySrc,\n        selector,\n        onIntersect,\n        onAppear,\n        beforeDependencyLoad = noop,\n        onDependencyLoad = noop,\n        oneTime = true,\n        initialThreshold = 500,\n        thresholdCalculator = {},\n    }\n) {\n    const intersectorContext = createIntersectorContext({\n        dependencySrc,\n        onDependencyLoad,\n        beforeDependencyLoad,\n    });\n    const onIntersectCallback = createIntersectorCallback(intersectorContext, onIntersect);\n\n    const realTreshholdCalculator = {\n        ...defaultTreshholdCalculator,\n        ...thresholdCalculator,\n    };\n    const passiveObservers = observerCreator(\n        intersectionObserverProvider,\n        initialThreshold,\n        selector,\n        onIntersectCallback,\n        onAppear,\n        oneTime\n    );\n    const onScroll = createActiveObservers(\n        passiveObservers,\n        initialThreshold,\n        realTreshholdCalculator,\n        intersectionObserverProvider,\n        selector,\n        onIntersectCallback,\n        onAppear,\n        oneTime\n    );\n\n    loadModuleOnScroll(onScroll);\n\n    if (dependencySrc) {\n        loadModuleOnScroll(eagerDependencyLoader(intersectorContext, selector));\n    }\n}\n\nfunction createActiveObservers(\n    previousObservers,\n    previousTreshhold,\n    treshholdCalculator,\n    intersectionObserverProvider,\n    selector,\n    onIntersectCallback,\n    onAppear,\n    oneTime\n) {\n    return function onChange() {\n        const newThreshold = getActiveUserThreshold(treshholdCalculator);\n\n        let changedObservers = previousObservers;\n        if (newThreshold !== previousTreshhold) {\n            previousObservers.observers.flatMap(flattenObserver).forEach(disconnectObserver);\n            changedObservers = observerCreator(\n                intersectionObserverProvider,\n                newThreshold,\n                selector,\n                onIntersectCallback,\n                onAppear,\n                oneTime,\n                previousObservers.task\n            );\n        }\n\n        const nextChange = createActiveObservers(\n            changedObservers,\n            newThreshold,\n            treshholdCalculator,\n            intersectionObserverProvider,\n            selector,\n            onIntersectCallback,\n            onAppear,\n            oneTime\n        );\n\n        listenToConnectionChanges(nextChange, true);\n    };\n}\n\nfunction flattenObserver(observer) {\n    return observer;\n}\n\nfunction disconnectObserver(observer) {\n    observer.disconnect();\n}\n\nfunction getActiveUserThreshold(treshholdCalculator) {\n    return treshholdCalculator[getConnectionType()]();\n}\n\nfunction createIntersectorCallback(intersectorContext, onIntersect) {\n    if (intersectorContext.needsDependency) {\n        return createDependencyIntersectorLoader(intersectorContext, onIntersect);\n    }\n    return onIntersect;\n}\n\nconst createDependencyIntersectorLoader = curry((intersectorContext, onIntersect, entry) => {\n    if (intersectorContext.hasLoadedDependency) {\n        onIntersect(entry);\n        return;\n    }\n\n    function onDependencyLoad() {\n        onIntersect(entry);\n    }\n\n    const dependencyLoader = createDependencyLoader(intersectorContext, onDependencyLoad);\n    dependencyLoader();\n});\n\nfunction observerCreator(\n    intersectionObserverProvider,\n    threshold,\n    selector,\n    onIntersect,\n    onAppear,\n    oneTime,\n    previousState = {}\n) {\n    const task = {\n        ...previousState,\n        selector,\n        threshold,\n        onAppear,\n        oneTime,\n        onIntersect,\n    };\n\n    return { task, observers: intersectionObserverProvider.addTask(task) };\n}\n\nfunction createIntersectorContext({ dependencySrc, onDependencyLoad, beforeDependencyLoad }) {\n    let called = false;\n    let beforeCalled = false;\n    return {\n        dependencySrc,\n        onDependencyLoad() {\n            if (!called) {\n                called = true;\n                onDependencyLoad();\n            }\n        },\n        beforeDependencyLoad() {\n            if (!beforeCalled) {\n                beforeCalled = true;\n                beforeDependencyLoad();\n            }\n        },\n        needsDependency: dependencySrc != undefined,\n        hasLoadedDependency: dependencySrc == undefined,\n    };\n}\n\nconst eagerDependencyLoader = thunk((intersectorContext, selector) => {\n    if (!intersectorContext.needsDependency || intersectorContext.hasLoadedDependency) {\n        return;\n    }\n\n    createElementChangeListener(\n        selector,\n        createDependencyLoader(intersectorContext, intersectorContext.onDependencyLoad),\n        true\n    );\n});\n\nconst createDependencyLoader = thunk((intersectorContext, callback) => {\n    intersectorContext.beforeDependencyLoad();\n    loadExternalScript(intersectorContext.dependencySrc, function onLoad() {\n        intersectorContext.hasLoadedDependency = true;\n        intersectorContext.onDependencyLoad();\n        callback();\n    });\n});\n","const userAgent = navigator.userAgent;\nexport default function getDevice() {\n    return /Android|webOS|iPhone|iPod|BlackBerry/i.test(userAgent)\n        ? \"mobile\"\n        : /iPad/i.test(userAgent)\n        ? \"tablet\"\n        : \"desktop\";\n}\n","const domParser = new DOMParser();\n\nexport default function htmlDecode(htmlString) {\n    const doc = domParser.parseFromString(htmlString, \"text/html\");\n    return doc.documentElement.childNodes[1].innerHTML;\n}\n","export const requestIdleCallback =\r\n    window.requestIdleCallback ||\r\n    function requestIdleCallbackPolyfill(cb) {\r\n        return setTimeout(function triggerIdleCallback() {\r\n            cb({\r\n                didTimeout: false,\r\n                timeRemaining: function timeRemainingPolyfill() {\r\n                    return 50;\r\n                },\r\n            });\r\n        }, 1);\r\n    };\r\n\r\nexport const cancelIdleCallback =\r\n    window.cancelIdleCallback ||\r\n    function cancelIdleCallbackPolyfill(id) {\r\n        clearTimeout(id);\r\n    };\r\n","export function initClickHandler(button, action) {\n    button.addEventListener(\"click\", (event) => {\n        event.preventDefault();\n        action(event);\n    });\n}\n\nexport function initClickHandlerAll(buttons, action) {\n    buttons.forEach((button) => initClickHandler(button, action));\n}\n","const loadedContexts = {};\n\nexport default function loadContextData(selector, baseElement) {\n    if (loadedContexts[selector]) {\n        return loadedContexts[selector];\n    } else {\n        const parent = baseElement || document;\n        const contextElement = parent.querySelector(selector);\n        return (loadedContexts[selector] = contextElement ? JSON.parse(contextElement.text) : {});\n    }\n}\n","import curry from \"../lib/core/functional/curry\";\nimport thunk from \"../lib/core/functional/thunk\";\n\nimport createQueue from \"./simpleQueue\";\nimport { listenToConnectionChanges } from \"./connectionHandler\";\n\nconst DEFAULT_LIMITS = {\n    \"4g\": 5,\n    \"3g\": 3,\n    \"2g\": 2,\n    \"slow-2g\": 2,\n};\n\nconst COMPOSED_LIMITS = {\n    ...DEFAULT_LIMITS,\n    ...(window.RM_EXT_DL_LIMIT || {}),\n};\n\nconst { request, release, changeSettings, onEmpty } = createQueue(COMPOSED_LIMITS[\"4g\"]);\n\nconst loadedResources = {};\nconst loadWaiters = {};\n\nconst connectionMap = {\n    \"4g\": () => changeSettings(COMPOSED_LIMITS[\"4g\"]),\n    \"slow-2g\": () => changeSettings(COMPOSED_LIMITS[\"slow-2g\"]),\n    \"2g\": () => changeSettings(COMPOSED_LIMITS[\"2g\"]),\n    \"3g\": () => changeSettings(COMPOSED_LIMITS[\"3g\"]),\n};\n\nonEmpty(function onDoneLoadingResources() {\n    const event = new CustomEvent(\"externalresourcesqueue:finished\");\n    window.dispatchEvent(event);\n});\n\nlistenToConnectionChanges(function onConnectionInfoChanged(effectiveType) {\n    (connectionMap[effectiveType] || connectionMap[\"4g\"])();\n});\n\nconst createLoadCallback = curry(function createLoadCallback(resourceID, callback, event) {\n    if (resourceID) {\n        release(resourceID);\n    }\n    callback(event);\n});\n\nconst loadElement = curry((element, callback, resourceID) => {\n    element.addEventListener(\"load\", createLoadCallback(resourceID, callback));\n    element.addEventListener(\"error\", createLoadCallback(resourceID, callback));\n    document.head.insertBefore(element, document.head.firstChild);\n});\n\nfunction hasLoaded(selector) {\n    return localStorage.getItem(`rmEx-${selector}`) === \"1\";\n}\n\nfunction storeLoadedResource(selector) {\n    loadedResources[selector] = true;\n    localStorage.setItem(`rmEx-${selector}`, \"1\");\n}\n\nconst runCallback = curry(function runCallback(selector, callbackIndex, callbackPair) {\n    const callback = callbackPair[callbackIndex];\n\n    if (!callback) {\n        console.log(`Callback for index ${callbackIndex} not found in pair.`);\n        return;\n    }\n\n    try {\n        callback();\n    } catch (error) {\n        console.error(`Error on user JS after loading ${selector}`);\n        console.error(error);\n        console.error(callback);\n    }\n});\n\nconst runQueue = thunk((selector, event) => {\n    if (event instanceof ErrorEvent || event.type === \"error\") {\n        loadWaiters[selector].forEach(runCallback(selector, 1));\n    } else {\n        storeLoadedResource(selector);\n        loadWaiters[selector].forEach(runCallback(selector, 0));\n    }\n    loadWaiters[selector].length = 0;\n});\n\nconst makeCallback = curry((selector, event) => {\n    setTimeout(runQueue(selector, event), 1);\n});\n\nexport default function loadExternalResource(selector, element, callback, onError) {\n    const callbackPair = [callback, onError];\n\n    if (selector in loadedResources) {\n        runCallback(selector, 0, callbackPair);\n        return;\n    }\n\n    if (selector in loadWaiters) {\n        loadWaiters[selector].push(callbackPair);\n        return;\n    }\n\n    const existingResource = document.querySelector(selector);\n    if (existingResource) {\n        storeLoadedResource(selector);\n        runCallback(selector, 0, callbackPair);\n        return;\n    }\n\n    loadWaiters[selector] = [callbackPair];\n\n    const load = loadElement(element, makeCallback(selector));\n\n    if (hasLoaded(selector)) {\n        load(false);\n    } else {\n        request().then(load);\n    }\n}\n","import noop from \"../lib/core/functional/noop.js\";\nimport loadExternalResource from \"./loadExternalResource\";\n\nfunction loadTag(src, callback, onError) {\n    const selector = `script[src=\"${src}\"]`;\n    const element = document.createElement(\"script\");\n    element.src = src;\n    element.async = true;\n    loadExternalResource(selector, element, callback || noop, onError || noop);\n}\n\nexport default function loadExternalScript(src, callback, onError) {\n    loadTag(src, callback, onError);\n}\n","import noop from \"../lib/core/functional/noop.js\";\n\nimport loadExternalResource from \"./loadExternalResource\";\n\nexport default function loadExternalStylesheet(href, callback, onError) {\n    const selector = `stylesheet[href=\"${href}\"]`;\n    const element = document.createElement(\"link\");\n    element.href = href;\n    element.rel = \"stylesheet\";\n    loadExternalResource(selector, element, callback, onError || noop);\n}\n","import createElementChangeListener from \"../elementChangeListener\";\r\n\r\nexport default function loadModuleOnElement(selector, moduleLoader, context, oneTime) {\r\n    createElementChangeListener(\r\n        selector,\r\n        (element) => {\r\n            moduleLoader().then((module) => {\r\n                module.default(context, element);\r\n            });\r\n        },\r\n        oneTime\r\n    );\r\n}\r\n","import callbackRunner from \"./callbackRunner\";\n\nconst { add, run } = callbackRunner(boot);\n\nfunction boot() {\n    window.addEventListener(\"scroll\", onScroll, { passive: true });\n}\n\nfunction onScroll() {\n    window.removeEventListener(\"scroll\", onScroll, { passive: true });\n    run();\n}\n\nexport default function loadModuleOnScroll(callback) {\n    add(callback);\n}\n","export function isUltraLightLoggedIn() {\n    return document.cookie.split(\"; \").some((cookie) => cookie === \"__ulleli=true\");\n}\n\nexport function isUserLoggedIn() {\n    return window.REBELMOUSE_BOOTSTRAP_DATA.isUserLoggedIn || isUltraLightLoggedIn();\n}\n\nexport function updateLoggedIn(value, context) {\n    window.REBELMOUSE_BOOTSTRAP_DATA.isUserLoggedIn = value;\n    if (context && context.settings) {\n        context.settings.isUserLoggedIn = value;\n    }\n}\n","import curry from \"../lib/core/functional/curry\";\r\n\r\nconst moduleLoader = curry(function moduleLoader(moduleList, context) {\r\n    moduleList.map((module) =>\r\n        module.then ? module.then((m) => m.default(context)) : module(context)\r\n    );\r\n    return context;\r\n});\r\n\r\nexport default moduleLoader;\r\n","import { onLCP } from \"web-vitals\";\r\nimport noop from \"../lib/core/functional/noop\";\r\nimport callbackRunner from \"./callbackRunner\";\r\nimport { requestIdleCallback, cancelIdleCallback } from \"./idleCallback.js\";\r\nimport { spawnTask } from \"./spawnTask.js\";\r\n\r\nconst USER_ACTIVITY_EVENTS = [\"scroll\", \"click\", \"keydown\"];\r\nconst MAGIC_TIMEOUT = 4001;\r\nconst IDEAL_LCP = 2001; //Magic number based on the LCP we have on our optimied sites\r\nconst REQUIRED_LCP_ELEMENTS = 2;\r\nconst LCP_ELEMENT_SELECTOR = \".rm-lcp-element\";\r\nconst ACCEPTABLE_SCREEN_AREA = window.innerWidth * window.innerHeight * 0.2;\r\n\r\nconst { add, run, hasRun } = callbackRunner(noop, true);\r\n\r\nfunction shouldEnablePostLcp() {\r\n    const params = new URLSearchParams(document.location.search);\r\n    if (params.has(\"sleepy_time\")) {\r\n        return false;\r\n    }\r\n\r\n    const userAgent = navigator.userAgent;\r\n    if (userAgent.indexOf(\"Lighthouse\") >= 0) {\r\n        return false;\r\n    }\r\n\r\n    return true;\r\n}\r\n\r\nlet timeoutId;\r\nlet idleCallbackId;\r\nlet foundLcps = 0;\r\n\r\nconst mainThreadTime = 14;\r\nconst canUsePostLcp = shouldEnablePostLcp();\r\n\r\nfunction canUseLcp() {\r\n    return (\r\n        \"PerformanceObserver\" in window &&\r\n        PerformanceObserver.supportedEntryTypes &&\r\n        PerformanceObserver.supportedEntryTypes.includes(\"largest-contentful-paint\")\r\n    );\r\n}\r\n\r\nfunction onPostLcpReady(_event) {\r\n    if (hasRun()) {\r\n        return;\r\n    }\r\n\r\n    spawnTask().then(run);\r\n\r\n    cancelIdleCallback(idleCallbackId);\r\n    clearTimeout(timeoutId);\r\n    USER_ACTIVITY_EVENTS.forEach(unbindEvent);\r\n}\r\n\r\nfunction bindEvent(eventName) {\r\n    window.addEventListener(eventName, onPostLcpReady, { passive: true });\r\n}\r\n\r\nfunction unbindEvent(eventName) {\r\n    window.removeEventListener(eventName, onPostLcpReady, { passive: true });\r\n}\r\n\r\nfunction onIdle(idleDeadline) {\r\n    const timeRemaining = idleDeadline.timeRemaining();\r\n    if (timeRemaining > mainThreadTime) {\r\n        onPostLcpReady();\r\n    } else {\r\n        idleCallbackId = requestIdleCallback(onIdle);\r\n    }\r\n}\r\n\r\nfunction prepareIdleCallback() {\r\n    cancelIdleCallback(idleCallbackId);\r\n    idleCallbackId = requestIdleCallback(onIdle);\r\n}\r\n\r\nfunction isSelectedLcpElement(element) {\r\n    if (!element) {\r\n        return false;\r\n    }\r\n\r\n    if (\"matches\" in element && element.matches(LCP_ELEMENT_SELECTOR)) {\r\n        return true;\r\n    }\r\n\r\n    if (\"closest\" in element && !!element.closest(LCP_ELEMENT_SELECTOR)) {\r\n        return true;\r\n    }\r\n\r\n    return false;\r\n}\r\n\r\nfunction waitForIdle(event) {\r\n    clearTimeout(timeoutId);\r\n    if (hasRun()) {\r\n        return;\r\n    }\r\n\r\n    const { entries } = event;\r\n    const lastEntry = entries[entries.length - 1];\r\n    foundLcps++;\r\n    if (\r\n        foundLcps >= REQUIRED_LCP_ELEMENTS ||\r\n        lastEntry.url ||\r\n        lastEntry.size > ACCEPTABLE_SCREEN_AREA ||\r\n        isSelectedLcpElement(lastEntry.element)\r\n    ) {\r\n        prepareIdleCallback();\r\n    } else {\r\n        timeoutId = setTimeout(prepareIdleCallback, MAGIC_TIMEOUT);\r\n    }\r\n}\r\n\r\nfunction setUpPostLcpListener() {\r\n    USER_ACTIVITY_EVENTS.forEach(bindEvent);\r\n    if (canUseLcp()) {\r\n        onLCP(waitForIdle, { reportAllChanges: true });\r\n    } else {\r\n        setTimeout(prepareIdleCallback, IDEAL_LCP);\r\n    }\r\n}\r\n\r\nsetUpPostLcpListener();\r\nexport default function onPostLcp(callback) {\r\n    if (canUsePostLcp) {\r\n        add(callback);\r\n    }\r\n}\r\n","/**\n * @param {string} message\n * @param {'success' | 'error' | 'notice'} type\n * @param {number} [timeout]\n */\nexport default function raiseNotification(message, type, timeout) {\n    let notificationList = document.querySelector(\"#notification\");\n    let notificationListItem = document.createElement(\"li\");\n\n    if (!notificationList) {\n        notificationList = document.createElement(\"ul\");\n        notificationList.setAttribute(\"id\", \"notification\");\n        notificationList.classList.add(\"notification\");\n        document.body.prepend(notificationList);\n    }\n\n    type = type || \"\";\n    timeout = timeout || 5000;\n\n    notificationListItem.innerText = message;\n    notificationListItem.classList.add(type);\n    notificationList.append(notificationListItem);\n    notificationList.style.display = \"block\";\n\n    setTimeout(() => {\n        notificationList.removeChild(notificationListItem);\n    }, timeout);\n}\n","import curry from \"../lib/core/functional/curry\";\n\nconst freeResourceFinder = ([_resourceID, isActive]) => !isActive;\n\nexport default function createQueue(startLimit) {\n    const usedResources = {};\n    const queue = [];\n    let onQueueEmpty = () => {};\n    let maxSlots = startLimit;\n    let activeRequests = 0;\n\n    const addToPromiseQueue = curry((timeout, resolve, reject) => {\n        queue.push([resolve, reject, timeout]);\n    });\n\n    function findFreeResource(newestResource) {\n        if (!newestResource in usedResources || !usedResources[newestResource]) {\n            return newestResource;\n        }\n\n        return Object.entries(usedResources).find(freeResourceFinder)[0];\n    }\n\n    function release(resourceID) {\n        if (!usedResources[resourceID]) {\n            return;\n        }\n        activeRequests--;\n        usedResources[resourceID] = false;\n        next();\n    }\n\n    const dispatchResource = curry((timeout, resolve, _reject) => {\n        activeRequests++;\n        const resourceID = findFreeResource(activeRequests);\n        usedResources[resourceID] = true;\n        resolve(resourceID);\n        if (timeout) {\n            function releaseOnTimeout() {\n                release(resourceID);\n            }\n\n            setTimeout(releaseOnTimeout, timeout);\n        }\n    });\n\n    function next() {\n        const nextInLine = queue.shift();\n        if (nextInLine) {\n            const [resolve, _, timeout] = nextInLine;\n            const dispatcher = dispatchResource(timeout);\n            dispatcher(resolve);\n        } else {\n            onQueueEmpty();\n        }\n    }\n\n    function request(timeout) {\n        if (activeRequests < maxSlots) {\n            return new Promise(dispatchResource(timeout));\n        }\n        return new Promise(addToPromiseQueue(timeout));\n    }\n\n    function changeSettings(newLimit) {\n        maxSlots = newLimit;\n    }\n\n    function onEmpty(cb) {\n        onQueueEmpty = cb;\n    }\n\n    return { release, request, changeSettings, onEmpty };\n}\n","function handleAsNewTask(resolve) {\n    setTimeout(resolve, 0);\n}\n\nexport function spawnTask() {\n    return new Promise(handleAsNewTask);\n}\n\nfunction isInputPending() {\n    if (navigator && \"scheduling\" in navigator && \"isInputPending\" in navigator.scheduling) {\n        return navigator.scheduling.isInputPending();\n    }\n\n    return false;\n}\n\nexport async function runAsTasks(...tasks) {\n    let deadline = performance.now() + 50;\n\n    while (tasks.length > 0) {\n        if (isInputPending() || performance.now() >= deadline) {\n            await spawnTask();\n            deadline = performance.now() + 50;\n            continue;\n        }\n\n        const task = tasks.shift();\n        await task();\n    }\n}\n","const mapSplit = (el) => el.split(\"=\");\nconst paramsReducer = (acc, [k, v]) => {\n    acc[k] = v;\n    return acc;\n};\n\nexport default function translateParamsToObject(getParams) {\n    // empty string (no query string) would produce {\"\": undefined} without this guard\n    if (!getParams) return {};\n    return getParams.substr(1).split(\"&\").map(mapSplit).reduce(paramsReducer, {});\n}\n","export function loadInformerAsModule(context) {\r\n    return import(\"./renderer\").then((module) => module.renderAsModule(context));\r\n}\r\n\r\nexport default function loadInformer(context, config) {\r\n    import(\"./renderer\").then((module) => module.default(context, config));\r\n    return context;\r\n}\r\n","import loadModuleOnElement from \"../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./post\");\n\nexport default function postParticleLoader(context) {\n    loadModuleOnElement(\".live-updates-wrapper\", loader, context);\n    return context;\n}\n","import createQueue from \"../../utils/simpleQueue\";\nimport { listenToConnectionChanges } from \"../../utils/connectionHandler\";\n\nconst queue = createQueue(9);\n\nconst connectionMap = {\n    \"4g\": () => queue.changeSettings(15),\n    \"slow-2g\": () => queue.changeSettings(3),\n    \"2g\": () => queue.changeSettings(3),\n    \"3g\": () => queue.changeSettings(6),\n};\n\nlistenToConnectionChanges(function onConnectionInfoChanged(effectiveType) {\n    (connectionMap[effectiveType] || connectionMap[\"4g\"])();\n});\n\nqueue.onEmpty(function onMediaQueueEmpty() {\n    const event = new CustomEvent(\"mediaqueue:finished\");\n    window.dispatchEvent(event);\n});\n\nexport const release = queue.release;\nexport const request = queue.request;\n","import loadModuleOnElement from \"../../../utils/loadModuleOnElement\";\n\nconst loader = () => import(\"./lazyJWPlayer\");\nexport const selector = \".rm-lazy-jwplayer-media\";\n\nexport default function loadFollowButton(context) {\n    loadModuleOnElement(selector, loader, context);\n    return context;\n}\n","const popupDimension = {\n    twitter: [450, 240],\n    pinterest: [750, 546],\n    default: [550, 425]\n};\n\nexport function openPopup(link, provider) {\n    if(link) {\n        const [width, height] = popupDimension[provider] || popupDimension.default;\n        const left = Math.max((window.innerWidth - width) / 2, 0);\n        const top = Math.max((window.innerHeight - height) / 2, 0);\n        const winSpec = `width=${width},height=${height},left=${left},top=${top},resizable=yes,scrollbars=yes`;\n        if (link.substr(0, 4) !== 'tel:' && link.substr(0, 7) !== 'mailto:' && link.substr(0, 4) !== 'sms:') {\n            return window.open(link, \"_blank\", winSpec);\n        }\n    }\n}\n","var e,n,t,i,r,a=-1,o=function(e){addEventListener(\"pageshow\",(function(n){n.persisted&&(a=n.timeStamp,e(n))}),!0)},c=function(){return window.performance&&performance.getEntriesByType&&performance.getEntriesByType(\"navigation\")[0]},u=function(){var e=c();return e&&e.activationStart||0},f=function(e,n){var t=c(),i=\"navigate\";a>=0?i=\"back-forward-cache\":t&&(document.prerendering||u()>0?i=\"prerender\":document.wasDiscarded?i=\"restore\":t.type&&(i=t.type.replace(/_/g,\"-\")));return{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:i}},s=function(e,n,t){try{if(PerformanceObserver.supportedEntryTypes.includes(e)){var i=new PerformanceObserver((function(e){Promise.resolve().then((function(){n(e.getEntries())}))}));return i.observe(Object.assign({type:e,buffered:!0},t||{})),i}}catch(e){}},d=function(e,n,t,i){var r,a;return function(o){n.value>=0&&(o||i)&&((a=n.value-(r||0))||void 0===r)&&(r=n.value,n.delta=a,n.rating=function(e,n){return e>n[1]?\"poor\":e>n[0]?\"needs-improvement\":\"good\"}(n.value,t),e(n))}},l=function(e){requestAnimationFrame((function(){return requestAnimationFrame((function(){return e()}))}))},p=function(e){var n=function(n){\"pagehide\"!==n.type&&\"hidden\"!==document.visibilityState||e(n)};addEventListener(\"visibilitychange\",n,!0),addEventListener(\"pagehide\",n,!0)},v=function(e){var n=!1;return function(t){n||(e(t),n=!0)}},m=-1,h=function(){return\"hidden\"!==document.visibilityState||document.prerendering?1/0:0},g=function(e){\"hidden\"===document.visibilityState&&m>-1&&(m=\"visibilitychange\"===e.type?e.timeStamp:0,T())},y=function(){addEventListener(\"visibilitychange\",g,!0),addEventListener(\"prerenderingchange\",g,!0)},T=function(){removeEventListener(\"visibilitychange\",g,!0),removeEventListener(\"prerenderingchange\",g,!0)},E=function(){return m<0&&(m=h(),y(),o((function(){setTimeout((function(){m=h(),y()}),0)}))),{get firstHiddenTime(){return m}}},C=function(e){document.prerendering?addEventListener(\"prerenderingchange\",(function(){return e()}),!0):e()},L=[1800,3e3],w=function(e,n){n=n||{},C((function(){var t,i=E(),r=f(\"FCP\"),a=s(\"paint\",(function(e){e.forEach((function(e){\"first-contentful-paint\"===e.name&&(a.disconnect(),e.startTime<i.firstHiddenTime&&(r.value=Math.max(e.startTime-u(),0),r.entries.push(e),t(!0)))}))}));a&&(t=d(e,r,L,n.reportAllChanges),o((function(i){r=f(\"FCP\"),t=d(e,r,L,n.reportAllChanges),l((function(){r.value=performance.now()-i.timeStamp,t(!0)}))})))}))},b=[.1,.25],S=function(e,n){n=n||{},w(v((function(){var t,i=f(\"CLS\",0),r=0,a=[],c=function(e){e.forEach((function(e){if(!e.hadRecentInput){var n=a[0],t=a[a.length-1];r&&e.startTime-t.startTime<1e3&&e.startTime-n.startTime<5e3?(r+=e.value,a.push(e)):(r=e.value,a=[e])}})),r>i.value&&(i.value=r,i.entries=a,t())},u=s(\"layout-shift\",c);u&&(t=d(e,i,b,n.reportAllChanges),p((function(){c(u.takeRecords()),t(!0)})),o((function(){r=0,i=f(\"CLS\",0),t=d(e,i,b,n.reportAllChanges),l((function(){return t()}))})),setTimeout(t,0))})))},A={passive:!0,capture:!0},I=new Date,P=function(i,r){e||(e=r,n=i,t=new Date,k(removeEventListener),F())},F=function(){if(n>=0&&n<t-I){var r={entryType:\"first-input\",name:e.type,target:e.target,cancelable:e.cancelable,startTime:e.timeStamp,processingStart:e.timeStamp+n};i.forEach((function(e){e(r)})),i=[]}},M=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(){P(e,n),r()},i=function(){r()},r=function(){removeEventListener(\"pointerup\",t,A),removeEventListener(\"pointercancel\",i,A)};addEventListener(\"pointerup\",t,A),addEventListener(\"pointercancel\",i,A)}(n,e):P(n,e)}},k=function(e){[\"mousedown\",\"keydown\",\"touchstart\",\"pointerdown\"].forEach((function(n){return e(n,M,A)}))},D=[100,300],x=function(t,r){r=r||{},C((function(){var a,c=E(),u=f(\"FID\"),l=function(e){e.startTime<c.firstHiddenTime&&(u.value=e.processingStart-e.startTime,u.entries.push(e),a(!0))},m=function(e){e.forEach(l)},h=s(\"first-input\",m);a=d(t,u,D,r.reportAllChanges),h&&p(v((function(){m(h.takeRecords()),h.disconnect()}))),h&&o((function(){var o;u=f(\"FID\"),a=d(t,u,D,r.reportAllChanges),i=[],n=-1,e=null,k(addEventListener),o=l,i.push(o),F()}))}))},B=0,R=1/0,H=0,N=function(e){e.forEach((function(e){e.interactionId&&(R=Math.min(R,e.interactionId),H=Math.max(H,e.interactionId),B=H?(H-R)/7+1:0)}))},O=function(){return r?B:performance.interactionCount||0},q=function(){\"interactionCount\"in performance||r||(r=s(\"event\",N,{type:\"event\",buffered:!0,durationThreshold:0}))},j=[200,500],_=0,z=function(){return O()-_},G=[],J={},K=function(e){var n=G[G.length-1],t=J[e.interactionId];if(t||G.length<10||e.duration>n.latency){if(t)t.entries.push(e),t.latency=Math.max(t.latency,e.duration);else{var i={id:e.interactionId,latency:e.duration,entries:[e]};J[i.id]=i,G.push(i)}G.sort((function(e,n){return n.latency-e.latency})),G.splice(10).forEach((function(e){delete J[e.id]}))}},Q=function(e,n){n=n||{},C((function(){var t;q();var i,r=f(\"INP\"),a=function(e){e.forEach((function(e){(e.interactionId&&K(e),\"first-input\"===e.entryType)&&(!G.some((function(n){return n.entries.some((function(n){return e.duration===n.duration&&e.startTime===n.startTime}))}))&&K(e))}));var n,t=(n=Math.min(G.length-1,Math.floor(z()/50)),G[n]);t&&t.latency!==r.value&&(r.value=t.latency,r.entries=t.entries,i())},c=s(\"event\",a,{durationThreshold:null!==(t=n.durationThreshold)&&void 0!==t?t:40});i=d(e,r,j,n.reportAllChanges),c&&(\"PerformanceEventTiming\"in window&&\"interactionId\"in PerformanceEventTiming.prototype&&c.observe({type:\"first-input\",buffered:!0}),p((function(){a(c.takeRecords()),r.value<0&&z()>0&&(r.value=0,r.entries=[]),i(!0)})),o((function(){G=[],_=O(),r=f(\"INP\"),i=d(e,r,j,n.reportAllChanges)})))}))},U=[2500,4e3],V={},W=function(e,n){n=n||{},C((function(){var t,i=E(),r=f(\"LCP\"),a=function(e){var n=e[e.length-1];n&&n.startTime<i.firstHiddenTime&&(r.value=Math.max(n.startTime-u(),0),r.entries=[n],t())},c=s(\"largest-contentful-paint\",a);if(c){t=d(e,r,U,n.reportAllChanges);var m=v((function(){V[r.id]||(a(c.takeRecords()),c.disconnect(),V[r.id]=!0,t(!0))}));[\"keydown\",\"click\"].forEach((function(e){addEventListener(e,(function(){return setTimeout(m,0)}),!0)})),p(m),o((function(i){r=f(\"LCP\"),t=d(e,r,U,n.reportAllChanges),l((function(){r.value=performance.now()-i.timeStamp,V[r.id]=!0,t(!0)}))}))}}))},X=[800,1800],Y=function e(n){document.prerendering?C((function(){return e(n)})):\"complete\"!==document.readyState?addEventListener(\"load\",(function(){return e(n)}),!0):setTimeout(n,0)},Z=function(e,n){n=n||{};var t=f(\"TTFB\"),i=d(e,t,X,n.reportAllChanges);Y((function(){var r=c();if(r){var a=r.responseStart;if(a<=0||a>performance.now())return;t.value=Math.max(a-u(),0),t.entries=[r],i(!0),o((function(){t=f(\"TTFB\",0),(i=d(e,t,X,n.reportAllChanges))(!0)}))}}))};export{b as CLSThresholds,L as FCPThresholds,D as FIDThresholds,j as INPThresholds,U as LCPThresholds,X as TTFBThresholds,S as getCLS,w as getFCP,x as getFID,Q as getINP,W as getLCP,Z as getTTFB,S as onCLS,w as onFCP,x as onFID,Q as onINP,W as onLCP,Z as onTTFB};\n"],"names":["URL_CHANGE_EVENT","URL_SCROLLED_EVENT","PAGE_LOAD_EVENT","READ_ARTICLE_EVENT","POST_SHARED_EVENT","CONTEXT","getContext","intersectionObserverProvider","eventBus","settings","window","REBELMOUSE_BOOTSTRAP_DATA","path","location","pathname","pathParams","search","handlersByEvent","subscribe","event","handler","push","publish","data","forEach","subscriber","addTask","task","reportIntersection","entry","target","isIntersecting","firstOnly","_reportedIntersections","observer","disconnect","mutationObserver","oneTime","unobserve","finished","add","onIntersect","onNonIntersect","onBellowViewport","onAboveViewport","top","getBoundingClientRect","handleNonIntersection","threshold","Set","rootMargin","IntersectionObserver","entriesHandler","entries","selector","node","has","onAppear","observe","rawNodes","element","createElementChangeListener","callback","initializedNodes","reported","root","document","observeRoot","body","querySelectorAll","MutationObserver","childList","subtree","slideshowLoader","fullScreenSlideshowLoader","paginationLoader","votingLoader","MENU_OPENED_CLASS","toggleMenu","classList","toggle","onHamburgerToggler","el","addEventListener","removeMenu","remove","loader","moduleLoader","then","resourceID","FB","XFBML","parse","parentElement","onDependencyLoad","bootstrap","init","appId","fbId","version","fbAppVersion","status","cookie","runnerSrc","dataset","src","possibleContainers","pairToQueryParam","key","value","qualityToConnectionMap","engine","image_quality_level","getImageParam","paramName","queryParams","param","getAttribute","isNaN","parseInt","getOptimizedSrc","ogSrc","containerWidth","containerHeight","maxContainerWidth","maxContainerHeight","URL","translateParamsToObject","elWidth","elHeight","maxWidth","maxHeight","width","height","getMaxWidthAndHeight","scale","devicePixelRatio","undefined","override_device_pixel_ratio","Math","min","max","getPixelDensity","params","quality","coordinates","Object","keys","length","queryString","obj","map","join","href","readjustImages","closestContainer","reduce","foundElement","elementToTest","closest","rmCalcWidth","ceil","offsetWidth","findAppropiateParent","newMaxWidth","optimizedSrc","adjustedSrc","releasePool","lazyImageHandler","url","onLoad","removeAttribute","backgroundImageHandler","runnerImgHd","lazyLoadShortcodeImages","imageSrc","offsetHeight","img","Image","style","backgroundImage","treshholdCalculator","controlSpacer","embed","container","bottom","embedBottom","embedHeight","containerBottom","instagramClass","lazyInstagramClass","async","renderInstagramEmbed","frame","setTimeout","error","invalidate","threadsClass","lazyThreadsClass","renderThreadsEmbed","activeTwitterRequests","releaseTweetResource","shift","querySelector","tweet","matches","loading","twitterTweetId","lazyTweetId","twttr","widgets","load","ready","events","bind","beforeDependencyLoad","getTiktokLib","attemps","tiktokEmbed","lib","Promise","resolve","releaseTiktokResource","tiktokLib","render","account","player","scriptUrl","makeScriptUrl","release","loadExternalScript","bc","on","_entry","lazyStyle","createElement","type","textContent","head","appendChild","id","lazyId","imgurEmbed","createIframe","v1Loader","v2Loader","showFlexibleSticky","stickyElement","module","SEARCH_OPENED_CLASS","trackPageView","customDimensions","headline","titleElement","page_title","innerText","page_location","trackGtagCall","gtag","send","additionalInfo","trackEvent","trackPostCardClick","context","eventType","action","trackPostShare","provider","method","content_type","waitForGtag","dimensionsData","customDimensionsConfig","acc","iden","toString","event_category","ENDPOINT_EXCEPTIONS","SHORT_FULL_NAME_MAP","dp","pp","fp","sp","tp","getPageTypeFromResourceId","resource","resourceId","split","makeBaseParams","device","getDevice","site_id","site","roar_id","runner","client","referrer","sendStats","isSplitTesting","requestParams","query","format","JSON","stringify","prefix","paramsStr","URLSearchParams","statsUrl","Date","now","pageViewUrl","fetch","addSplitTestingParams","splitTesting","current","campaign_id","hypothesis_id","checkIfPostHasSplitTesting","post","split_testing","ensureIds","items","item","bootstrapData","pageType","post_id","provider_id","providerId","sections","authors","isCommunitySite","tag","slug","sectionId","section","section_id","trackTimeOnPage","timeMarker","duration","trackUser","enableLoggedOutUserTracking","mainPost","trackingId","localStorage","getItem","prevLoggedStatus","REBELMOUSE_BASE_SSL_DOMAIN","user_tracking_id","last_page_view_timestamp","user_type","resp","json","setItem","getUserTrackingId","userId","userHistoryKey","userHistory","visitedPosts","idNotStored","some","timestamp","getTime","daysToTimestamp","expirationTime","filteredPosts","filter","splice","currentUserId","keysToRemove","startsWith","removeItem","cleanUpOtherUserData","storePostHistory","tags","trackPostCardView","posts","batchPostCardView","PUBLISHED_POST_STATUSES","isPostPublished","includes","customNameReducer","IEEE_SPECTRUM_SITE_ID","SPECIAL_LOGIC","PARSELY","updateDefaults","level","pageInfo","isParselyReady","beacon","isPostPage","isPublishedPostPage","shouldSendParselyStats","urlref","previousUrl","trackCustomEvent","js","trackPageLoad","trackPostMouseOver","PROTOCOL_VERSION","_asyncTrackPostEvent","streams","entity","siteId","affectedStreams","stream","bucket","period","score","streamScoreEvents","weight","_send","_trackEvent","_asyncTrackEvent","payload","basePath","sendEventsToCurrentDomain","origin","resourceType","_isPostPage","_trackPostPageView","fieldUpdater","curry","elementField","dataField","updateTitle","updateCanonical","providers","nativeStats","ga4Stats","parselyStats","getPostContext","loadContextData","pageData","postContext","updateMetaData","streamsScores","trackSocialShare","isCardVisible","postCard","SPLIT_TESTED_POSTS","postId","splitedPost","checkForDuplicatedPosts","contains","onSplitTestedPost","scriptElement","contextData","text","fireBatchPostCardView","visibilityState","onUplynkElementChange","removeEventListener","removeChild","firstElementChild","defaultVideoPlayer","default","loadScript","script","source","replaceWith","loadLazyScripts","runCallback","e","console","rebelSlider","config","timeoutOptions","timeout","run","callbackRunner","readyState","isPageReady","onIdle","idleDeadline","timeRemaining","didTimeout","waitForIdle","addFont","font","fonts","className","family","toLowerCase","replace","signalLoad","loadFontFace","name","args","fontLoader","unicodeRange","fontWeight","FontFace","display","storeLoadedFont","loadFont","hasLoaded","createPluginExportReader","exportName","easePackModulePromise","loadEasePackModule","catch","PLUGIN_REGISTRY","draggable","requires","drawsvg","easel","flip","gsdevtools","inertia","motionpath","motionpathhelper","morphsvg","physics2d","physicsprops","pixi","scrambletext","scrollto","scrollsmoother","scrolltrigger","splittext","roughease","exposcaleease","slowmo","customease","custombounce","customwiggle","PLUGIN_ALIASES","eases","gsapCorePromise","loadedPluginPromises","registeredPluginNames","normalizePluginName","pluginName","String","readGsapCoreModule","gsap","classifyRequestedName","classification","requestedName","resolvedNames","normalizedKey","aliasTargetNames","resolveRequestedName","knownNames","unknownNames","appendPluginNameWithDependencies","orderedNames","visitedNames","requiredName","resolveOrderedPluginNames","requestedNames","loadPlugin","registerPluginsAndBuildObject","pluginClasses","plugins","pluginIndex","pluginClass","registerPlugin","registerPluginOnce","loadGsap","pluginNames","resolvedRequest","Array","isArray","warn","all","collectPluginClasses","loadResult","runUserCallback","wiredComponents","LOGGED_IN_PREFIX","LOGGED_OUT_PREFIX","DATA_ENDPOINT","loadMoreComponent","componentId","lazyDeps","pageNumber","excludePostIds","lastPostId","searchParams","set","is_section_tag","makeParams","makeUrl","evaluateScript","parsedJavascript","ComponentError","Error","PARSER","DOMParser","handleResponse","response","component_javascript","applyStyles","css","component_styles","findComponent","COMPONENT_CLASS_NAME","SLOT_CLASS_NAME","loadLazySlots","lazyChildrenNames","from","slot","slotName","findLazyChildren","html","parseFromString","rootComponent","find","cloneNode","parseResponse","component_html","loadNextPage","loadComponentChannelManager","initializeChannel","protectedWriteComponent","componentName","componentWrapper","props","propsText","findAndParseProps","wireComponent","scrollTimeoutId","idleCallbackId","idleCallbacks","call","loadDeps","thunk","state","dependencies","allDeps","loaded","onDepLoaded","startAdLifeCycle","dep","idleHandler","removeFromSet","addToSet","delete","nonIdleHandler","initiateStaticElement","displayer","isStatic","markAsStaticElement","processAdRequest","onInit","onPostLcp","options","staticSelectors","dynamicSelectors","disableIdleLoader","disableVisibilityWatcher","displayOnElement","refreshOnElement","destroyOnElement","onDependanciesLoaded","noop","getCallbacks","connectionChangeCallback","refreshRate","intervalId","timeoutId","intersectHandler","nonIntersectHandler","onIterationEnd","userOptions","lastRefresh","previousObsevers","staticElements","setOptions","saveOptions","elementsToDestroy","elementsToRefresh","elementsToDisplay","observerSelector","displayIdleHandler","displayNonIdleHandler","displayElement","destroyIdleHandler","destroyNonIdleHandler","destroyElement","rmLastViewed","initiated","refreshElement","refreshCount","setUpAdRefresh","refreshTimeout","startInterval","clearInterval","setInterval","triggerRefresh","iterateRefreshElements","getThreshold","ogConnectionType","newType","onEntry","executeIdleCallbacks","iterateAndClearSet","pipe","onVisibilityChange","timeSinceLastRefresh","difference","clearTimeout","waitForIdleMainThread","runIdleCallbacks","clear","CACHE_KEY","MAX_AGE","doArraysHaveAnyOverlap","longerArray","shorterArray","applyAttribute","attributePair","class_","setAttribute","attachCustomization","customization","find_phrase","spawnTask","parentPost","should","excluded_post_ids","excluded_section_ids","excluded_tags","included_section_ids","included_tags","shouldApplyCustomization","extra","attributes","applyCustomization","attachCustomizations","customizations","fetchAndSave","replacements","fetchCustomizations","age","saveOnCache","fetchAndAttach","loadAndAttach","parsed","loadFromCache","updateDataIfStale","addTaskToQueue","queue","pushTask","loadUnparsedQueue","tasksQueue","queueName","loadUnparsed","initIdleQueue","tasksQ","lowerPriorityTasksQ","lowestPriorityTaskQ","activePriorityQueue","onDone","enQueue","next","updatedTask","fun","ogTimeout","startDate","_remaining","newStartDate","newTimeout","diff","_updateTask","runningTask","runQueue","nextInLine","activeQueueLoader","componentsWiring","lowestQueueLoader","handlePriorityQueues","prepareLowPriorityQueues","REBELMOUSE_INIT_IDLE_QUEUE","moduleList","host","elementToScroll","scrollIntoView","block","menuOverlay","createSmartIntersector","initialThreshold","loadLazyImages","loadLazyIFrames","loadLazyInstagram","loadLazyThreads","dependencySrc","loadLazyFacebook","loadLazyReddit","loadLazyTwitter","viewportStyle","loadLazyImgur","loadModuleOnScroll","stickyHeader","triggerNode","createIdleScrollListener","toggleClass","passive","searchToggle","searchForm","keyCode","submit","clipboardText","preventDefault","navigator","clipboard","writeText","currentTarget","raiseNotification","copyTextHandler","buttonsList","children","found","hideButtonList","button","plusButtonHandler","trackShare","stopPropagation","popupHandler","initShareButtonFactory","loadModuleOnElement","onModule","floatingElements","loadSignupBoxOnElement","bootQueue","REBELMOUSE_TASKS_QUEUE","REBELMOUSE_LOW_TASKS_QUEUE","REBELMOUSE_LOWEST_TASKS_QUEUE","REBELMOUSE_ACTIVE_TASKS_QUEUE","initialPageUrl","initUrlChangeListeners","onLinkClick","isTargetBlank","isPagination","metaKey","ctrlKey","open","link","exec","reportTimeFrames","timer","delayList","maxTotalDuration","timerCreationTime","timerId","startTime","remaining","stop","start","step","pause","createTimer","initTimeOnPageTracker","initPostsShareListener","eventData","eventMap","history","replaceState","busName","detail","eventName","eventAction","customEvent","CustomEvent","dispatchEvent","REBELMOUSE_STDLIB","initClickHandler","htmlDecode","runAsTasks","partial","loadExternalStylesheet","getRenderer","postStatus","components","onElementInViewport","widgetControl","doubleSticky","showInformer","getBootstrap","fullBootstrap","RM_AD_LOADER","useSmartLinks2","onPageRendered","prerendering","once","get","onDomReady","REBELMOUSE_BASE_ASSETS_URL","neededPolyfills","loadApp","onPolyfillLoad","existsOrPolyfill","api","file","requestAnimationFrame","prototype","Element","NodeList","values","fromEntries","flatMap","expectedArguments","thing","res","rej","moreArgs","apply","concat","functions","currentValue","currentFunction","loadRenderer","fetchFullBootstrap","bootstrapUrl","cacheBootstrap","loadedBootstrap","fullBootstrapUrl","sendFetch","fetchUrl","fetchOptions","prepareSSLRequest","jsonHandler","handleFetchError","sendRawRequest","sendXHRRequest","headers","HEADER_XMLHTTPREQUEST","sendJsonRequest","HEADER_CONTENT_JSON","retrieveJsonRequest","credentials","Accept","DEFAULT_ERROR","message","isObject","maybeObject","rejectEvaluators","_rawRes","rawRes","ok","errors","email","resolveEvaluators","evaluatePipeline","evaluators","transformedResponse","handleJsonResponse","rawResponse","rejectResponse","coerceResponseToJson","textResponse","readableResponse","NETWORK_ERROR","TypeError","waiters","listeners","upgrade","doUpgradeToLoggedIn","upgradeToLoggedInExperienceLoader","refreshUserInfo","getUserInfo","reject","listenForUserInfo","cb","contentStyles","innerHTML","createCallbackRunner","boot","autoTriggerAfterRun","callbacks","ran","onceRan","hasRun","connection","mozConnection","webkitConnection","knownConnections","listenerMap","normalizeConnection","runCallbacks","effectiveType","onConnectionInfoChanged","getConnectionType","stopListening","callbackObject","index","indexOf","listenToConnectionChanges","ticking","defaultTreshholdCalculator","innerHeight","thresholdCalculator","intersectorContext","called","beforeCalled","needsDependency","hasLoadedDependency","createIntersectorContext","onIntersectCallback","createDependencyIntersectorLoader","createIntersectorCallback","realTreshholdCalculator","onScroll","createActiveObservers","observerCreator","eagerDependencyLoader","previousObservers","previousTreshhold","newThreshold","getActiveUserThreshold","changedObservers","observers","flattenObserver","disconnectObserver","nextChange","createDependencyLoader","dependencyLoader","previousState","userAgent","test","domParser","htmlString","documentElement","childNodes","requestIdleCallback","cancelIdleCallback","initClickHandlerAll","buttons","loadedContexts","baseElement","contextElement","COMPOSED_LIMITS","RM_EXT_DL_LIMIT","request","changeSettings","onEmpty","loadedResources","loadWaiters","connectionMap","createLoadCallback","loadElement","insertBefore","firstChild","storeLoadedResource","callbackIndex","callbackPair","log","ErrorEvent","makeCallback","loadExternalResource","onError","loadTag","rel","isUltraLightLoggedIn","isUserLoggedIn","updateLoggedIn","m","USER_ACTIVITY_EVENTS","LCP_ELEMENT_SELECTOR","ACCEPTABLE_SCREEN_AREA","innerWidth","foundLcps","mainThreadTime","canUsePostLcp","onPostLcpReady","_event","unbindEvent","prepareIdleCallback","PerformanceObserver","supportedEntryTypes","lastEntry","size","reportAllChanges","notificationList","notificationListItem","prepend","append","freeResourceFinder","_resourceID","isActive","createQueue","startLimit","usedResources","onQueueEmpty","maxSlots","activeRequests","addToPromiseQueue","_","dispatchResource","dispatcher","_reject","newestResource","releaseOnTimeout","newLimit","handleAsNewTask","tasks","deadline","performance","scheduling","isInputPending","mapSplit","paramsReducer","k","v","getParams","substr","loadInformerAsModule","renderAsModule","loadInformer","postParticleLoader","loadFollowButton","popupDimension","twitter","pinterest","openPopup","winSpec","r","a","o","n","persisted","timeStamp","c","getEntriesByType","u","activationStart","f","t","i","wasDiscarded","rating","delta","floor","random","navigationType","s","getEntries","assign","buffered","d","l","p","h","g","T","y","E","firstHiddenTime","C","L","b","S","w","hadRecentInput","takeRecords","B","R","H","N","interactionId","O","interactionCount","q","durationThreshold","j","z","G","J","K","latency","sort","Q","entryType","PerformanceEventTiming","U","V","W"],"sourceRoot":""}