Bobbin Threads Filter (1.0.0)

Filter Threads posts by username, verified status, trending topics, and phrase or regex rules.

คุณจะต้องติดตั้งส่วนขยาย เช่น Tampermonkey, Greasemonkey หรือ Violentmonkey เพื่อติดตั้งสคริปต์นี้

You will need to install an extension such as Tampermonkey to install this script.

คุณจะต้องติดตั้งส่วนขยาย เช่น Tampermonkey หรือ Violentmonkey เพื่อติดตั้งสคริปต์นี้

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name         Bobbin Threads Filter (1.0.0)
// @namespace    https://github.com/Artificial-Sweetener/bobbin-threads-filter
// @version      1.0.0
// @description  Filter Threads posts by username, verified status, trending topics, and phrase or regex rules.
// @icon         data:image/png;base64,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
// @icon64       data:image/png;base64,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
// @homepageURL  https://github.com/Artificial-Sweetener/bobbin-threads-filter
// @supportURL   https://github.com/Artificial-Sweetener/bobbin-threads-filter/issues
// @author       Artificial Sweetener
// @license      GPL-3.0-only; https://www.gnu.org/licenses/gpl-3.0.html
// @match        https://www.threads.com/*
// @match        https://threads.com/*
// @match        https://www.threads.net/*
// @match        https://threads.net/*
// @noframes
// @grant        GM.getValue
// @grant        GM.setValue
// @grant        GM.registerMenuCommand
// @run-at       document-start
// ==/UserScript==

(() => {
  var __getOwnPropNames = Object.getOwnPropertyNames;
  var __typeError = (msg) => {
    throw TypeError(msg);
  };
  var __commonJS = (cb, mod) => function __require() {
    return mod || (0, cb[__getOwnPropNames(cb)[0]])((mod = { exports: {} }).exports, mod), mod.exports;
  };
  var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
  var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);

  // src/dom/activity-watcher.js
  var require_activity_watcher = __commonJS({
    "src/dom/activity-watcher.js"(exports, module) {
      var ActivityWatcher = class {
        /**
         * Initialize watcher options and callback.
         *
         * @param {{
         *   onActivity: Function,
         *   debounceMs?: number,
         *   urlCheckIntervalMs?: number
         * }} options - Activity watcher options.
         */
        constructor(options) {
          const { onActivity, debounceMs = 160, urlCheckIntervalMs = 500 } = options;
          this.onActivity = onActivity;
          this.debounceMs = debounceMs;
          this.urlCheckIntervalMs = urlCheckIntervalMs;
          this.pendingTimerId = null;
          this.urlCheckIntervalId = null;
          this.lastKnownUrl = "";
          this.boundHandleScroll = () => this.schedule();
          this.boundHandlePopstate = () => this.schedule();
        }
        /**
         * Start listening for activity events.
         */
        start() {
          if (typeof window === "undefined") {
            return;
          }
          this.stop();
          this.lastKnownUrl = window.location.href;
          window.addEventListener("scroll", this.boundHandleScroll, { passive: true });
          window.addEventListener("popstate", this.boundHandlePopstate);
          this.urlCheckIntervalId = window.setInterval(() => {
            const currentUrl = window.location.href;
            if (currentUrl !== this.lastKnownUrl) {
              this.lastKnownUrl = currentUrl;
              this.schedule();
            }
          }, this.urlCheckIntervalMs);
        }
        /**
         * Stop all listeners and clear pending callbacks.
         */
        stop() {
          if (typeof window !== "undefined") {
            window.removeEventListener("scroll", this.boundHandleScroll);
            window.removeEventListener("popstate", this.boundHandlePopstate);
          }
          if (this.urlCheckIntervalId !== null) {
            clearInterval(this.urlCheckIntervalId);
            this.urlCheckIntervalId = null;
          }
          if (this.pendingTimerId !== null) {
            clearTimeout(this.pendingTimerId);
            this.pendingTimerId = null;
          }
        }
        /**
         * Schedule one debounced activity callback.
         */
        schedule() {
          if (this.pendingTimerId !== null) {
            return;
          }
          this.pendingTimerId = window.setTimeout(() => {
            this.pendingTimerId = null;
            this.onActivity();
          }, this.debounceMs);
        }
      };
      module.exports = {
        ActivityWatcher
      };
    }
  });

  // src/dom/body-ready.js
  var require_body_ready = __commonJS({
    "src/dom/body-ready.js"(exports, module) {
      function whenBodyReady(callback) {
        if (typeof document === "undefined") {
          return;
        }
        if (document.body) {
          callback();
          return;
        }
        let finished = false;
        let readinessObserver = null;
        const complete = () => {
          if (finished || !document.body) {
            return;
          }
          finished = true;
          if (readinessObserver) {
            readinessObserver.disconnect();
            readinessObserver = null;
          }
          document.removeEventListener("DOMContentLoaded", complete);
          callback();
        };
        if (typeof MutationObserver !== "undefined" && document.documentElement) {
          readinessObserver = new MutationObserver(complete);
          readinessObserver.observe(document.documentElement, {
            childList: true,
            subtree: true
          });
        }
        document.addEventListener("DOMContentLoaded", complete, { once: true });
      }
      module.exports = {
        whenBodyReady
      };
    }
  });

  // src/dom/mutation-manager.js
  var require_mutation_manager = __commonJS({
    "src/dom/mutation-manager.js"(exports, module) {
      var MutationManager = class {
        /**
         * Initialize mutation watcher dependencies and defaults.
         *
         * @param {{
         *   onMutations: Function,
         *   debounceMs?: number,
         *   observerFactory?: (callback: MutationCallback) => MutationObserver
         * }} options - Mutation manager options.
         */
        constructor(options) {
          const {
            onMutations,
            debounceMs = 100,
            observerFactory = (callback) => new MutationObserver(callback)
          } = options;
          this.onMutations = onMutations;
          this.debounceMs = debounceMs;
          this.observerFactory = observerFactory;
          this.observer = null;
          this.debounceTimerId = null;
        }
        /**
         * Start observing target node with configurable observer options.
         *
         * @param {Node} targetNode - Observation root.
         * @param {MutationObserverInit} [observeOptions] - Native observer options.
         */
        start(targetNode, observeOptions = { childList: true, subtree: true }) {
          if (!targetNode || typeof MutationObserver === "undefined") {
            return;
          }
          this.stop();
          this.observer = this.observerFactory(() => {
            if (this.debounceTimerId !== null) {
              return;
            }
            this.debounceTimerId = window.setTimeout(() => {
              this.debounceTimerId = null;
              this.onMutations();
            }, this.debounceMs);
          });
          this.observer.observe(targetNode, observeOptions);
        }
        /**
         * Stop observing and clear pending scheduled reruns.
         */
        stop() {
          if (this.observer && typeof this.observer.disconnect === "function") {
            this.observer.disconnect();
          }
          this.observer = null;
          if (this.debounceTimerId !== null) {
            clearTimeout(this.debounceTimerId);
            this.debounceTimerId = null;
          }
        }
      };
      module.exports = {
        MutationManager
      };
    }
  });

  // src/dom/verified-badge-dom.js
  var require_verified_badge_dom = __commonJS({
    "src/dom/verified-badge-dom.js"(exports, module) {
      var VERIFIED_WORD_PATTERN = /\bverified\b/i;
      var VERIFIED_LABEL_SELECTOR = 'svg[aria-label], img[aria-label], img[alt], [role="img"][aria-label], [title]';
      var VERIFIED_EXPLICIT_SELECTOR = [
        'svg[aria-label="Verified"]',
        'img[alt="Verified"]',
        'img[aria-label="Verified"]',
        '[title="Verified"]'
      ].join(", ");
      var VERIFIED_SIGNATURE_PATH_SELECTOR = [
        'svg[viewBox="0 0 40 40"] path[d^="M19.998 3.094"]',
        'svg[viewBox="-4 0 27 19"] path[d^="M7.84375 17.5625"]'
      ].join(", ");
      function resolveBadgeElement(candidateNode) {
        if (!candidateNode || typeof candidateNode.closest !== "function") {
          return null;
        }
        const tagName = String(candidateNode.tagName || "").toUpperCase();
        if (tagName === "TITLE" || tagName === "PATH") {
          return candidateNode.closest("svg");
        }
        if (tagName === "SVG" || tagName === "IMG") {
          return candidateNode;
        }
        if (String(candidateNode.getAttribute("role") || "").toLowerCase() === "img") {
          return candidateNode;
        }
        return candidateNode.closest('svg, img, [role="img"]');
      }
      function collectVerifiedBadgeElements(rootElement) {
        if (!rootElement || typeof rootElement.querySelectorAll !== "function") {
          return [];
        }
        const badgeElements = /* @__PURE__ */ new Set();
        const addBadgeElement = (candidateNode) => {
          const badgeElement = resolveBadgeElement(candidateNode);
          if (badgeElement) {
            badgeElements.add(badgeElement);
          }
        };
        for (const explicitNode of rootElement.querySelectorAll(VERIFIED_EXPLICIT_SELECTOR)) {
          addBadgeElement(explicitNode);
        }
        for (const labeledNode of rootElement.querySelectorAll(VERIFIED_LABEL_SELECTOR)) {
          const normalizedLabel = `${labeledNode.getAttribute("aria-label") || ""} ${labeledNode.getAttribute("title") || ""} ${labeledNode.getAttribute("alt") || ""}`.trim().toLowerCase();
          if (!VERIFIED_WORD_PATTERN.test(normalizedLabel)) {
            continue;
          }
          addBadgeElement(labeledNode);
        }
        for (const signatureNode of rootElement.querySelectorAll(VERIFIED_SIGNATURE_PATH_SELECTOR)) {
          addBadgeElement(signatureNode);
        }
        return Array.from(badgeElements);
      }
      function containsVerifiedBadge(rootElement) {
        return collectVerifiedBadgeElements(rootElement).length > 0;
      }
      module.exports = {
        collectVerifiedBadgeElements,
        containsVerifiedBadge
      };
    }
  });

  // src/dom/style-manager.js
  var require_style_manager = __commonJS({
    "src/dom/style-manager.js"(exports, module) {
      var { collectVerifiedBadgeElements } = require_verified_badge_dom();
      var FILTER_STYLE_ID = "btf-style";
      var FILTER_HIDDEN_ATTRIBUTE = "data-btf-hidden";
      var FILTER_REASON_ATTRIBUTE = "data-btf-reasons";
      var FILTER_POST_ID_ATTRIBUTE = "data-btf-post-id";
      var VERIFIED_BADGE_HIDDEN_ATTRIBUTE = "data-btf-verified-badge-hidden";
      var FIRST_VISIBLE_TIMELINE_ITEM_ATTRIBUTE = "data-btf-first-visible-timeline-item";
      var TIMELINE_CHROME_LINK_SELECTOR = 'a[href*="/for_you"], a[href*="/following"]';
      var POST_PERMALINK_SELECTOR = 'a[href*="/@"][href*="/post/"]';
      var TIMELINE_REGION_SELECTOR = '[aria-label="Column body"]';
      var _StyleManager_instances, clearNestedMarkers_fn, removeMarkerAttributes_fn, removeTimelineDividerAttributes_fn, groupElementsBySiblingContainer_fn, resolveTimelineSiblingContainer_fn, resolveSiblingContainerChild_fn, isTimelineSiblingContainer_fn, looksLikeTimelineRowShell_fn, resolveDividerTarget_fn, hasVisibleTopBorder_fn, resolveTimelineRegion_fn, isUsableTimelineElement_fn, isUnsafeHideTarget_fn, isDirectChildOfTimelineChromeShell_fn, isViewportScaleContainer_fn;
      var StyleManager = class {
        constructor() {
          __privateAdd(this, _StyleManager_instances);
        }
        /**
         * Ensure filter stylesheet exists exactly once.
         */
        ensureFilterStyles() {
          if (typeof document === "undefined") {
            return;
          }
          const existingTag = document.getElementById(FILTER_STYLE_ID);
          if (existingTag) {
            return;
          }
          const styleTag = document.createElement("style");
          styleTag.id = FILTER_STYLE_ID;
          styleTag.textContent = `
[${FILTER_HIDDEN_ATTRIBUTE}="true"] {
  display: none !important;
}
[${FIRST_VISIBLE_TIMELINE_ITEM_ATTRIBUTE}="true"] {
  border-top-width: 0 !important;
  border-top-color: transparent !important;
}
[${VERIFIED_BADGE_HIDDEN_ATTRIBUTE}="true"] {
  display: none !important;
}
`;
          const head = document.head || document.documentElement;
          if (head) {
            head.appendChild(styleTag);
          }
        }
        /**
         * Hide element and attach deterministic reason metadata.
         *
         * @param {HTMLElement} element - Target content element.
         * @param {string[]} reasons - Blocking reasons.
         * @param {{ postCode?: string }} [options] - Visibility marker options.
         */
        hideElement(element, reasons, options = {}) {
          if (!element) {
            return;
          }
          if (__privateMethod(this, _StyleManager_instances, isUnsafeHideTarget_fn).call(this, element)) {
            this.unhideElement(element);
            return;
          }
          __privateMethod(this, _StyleManager_instances, clearNestedMarkers_fn).call(this, element);
          element.setAttribute(FILTER_HIDDEN_ATTRIBUTE, "true");
          element.setAttribute(FILTER_REASON_ATTRIBUTE, reasons.join(","));
          const postCode = String(options.postCode || "").trim();
          if (postCode) {
            element.setAttribute(FILTER_POST_ID_ATTRIBUTE, postCode);
          } else {
            element.removeAttribute(FILTER_POST_ID_ATTRIBUTE);
          }
        }
        /**
         * Restore element visibility when no rule currently blocks it.
         *
         * @param {HTMLElement} element - Target content element.
         */
        unhideElement(element) {
          if (!element) {
            return;
          }
          __privateMethod(this, _StyleManager_instances, removeMarkerAttributes_fn).call(this, element);
          __privateMethod(this, _StyleManager_instances, clearNestedMarkers_fn).call(this, element);
        }
        /**
         * Clear all hide markers under a root to recover from stale hidden state.
         *
         * @param {Document|HTMLElement} [root=document] - Root scope for cleanup.
         */
        clearAllHiddenMarkers(root = document) {
          if (!root) {
            return;
          }
          if (typeof root.removeAttribute === "function") {
            __privateMethod(this, _StyleManager_instances, removeMarkerAttributes_fn).call(this, root);
            __privateMethod(this, _StyleManager_instances, removeTimelineDividerAttributes_fn).call(this, root);
          }
          if (typeof root.querySelectorAll !== "function") {
            return;
          }
          const markedElements = root.querySelectorAll(
            `[${FILTER_HIDDEN_ATTRIBUTE}], [${FILTER_REASON_ATTRIBUTE}], [${FILTER_POST_ID_ATTRIBUTE}], [${FIRST_VISIBLE_TIMELINE_ITEM_ATTRIBUTE}]`
          );
          for (const markedElement of markedElements) {
            __privateMethod(this, _StyleManager_instances, removeMarkerAttributes_fn).call(this, markedElement);
            __privateMethod(this, _StyleManager_instances, removeTimelineDividerAttributes_fn).call(this, markedElement);
          }
        }
        /**
         * Sync top-divider ownership when hidden rows shift the first visible timeline item.
         *
         * @param {HTMLElement[]} contentElements - Content-row elements in timeline order.
         * @param {Document|HTMLElement} [root=document] - Cleanup scope for stale divider markers.
         */
        syncFirstVisibleTimelineDividers(contentElements, root = document) {
          this.clearAllTimelineDividerMarkers(root);
          const groupedElements = __privateMethod(this, _StyleManager_instances, groupElementsBySiblingContainer_fn).call(this, contentElements);
          for (const [siblingContainer, timelineElements] of groupedElements.entries()) {
            const timelineElementSet = new Set(timelineElements);
            let sawHiddenElement = false;
            const siblingElements = Array.from(siblingContainer.children || []);
            for (const siblingElement of siblingElements) {
              if (!__privateMethod(this, _StyleManager_instances, isUsableTimelineElement_fn).call(this, siblingElement)) {
                continue;
              }
              if (siblingElement.getAttribute(FILTER_HIDDEN_ATTRIBUTE) === "true") {
                sawHiddenElement = true;
                continue;
              }
              if (!timelineElementSet.has(siblingElement)) {
                continue;
              }
              if (sawHiddenElement) {
                const dividerTarget = __privateMethod(this, _StyleManager_instances, resolveDividerTarget_fn).call(this, siblingElement);
                dividerTarget.setAttribute(FIRST_VISIBLE_TIMELINE_ITEM_ATTRIBUTE, "true");
              }
              break;
            }
          }
        }
        /**
         * Toggle visibility markers for verified badge nodes inside one scope.
         *
         * @param {Document|HTMLElement} root - Scope containing badge nodes.
         * @param {boolean} shouldHide - Whether verified badges should be hidden.
         */
        setVerifiedBadgesHidden(root, shouldHide) {
          const badgeElements = collectVerifiedBadgeElements(root);
          for (const badgeElement of badgeElements) {
            if (shouldHide) {
              badgeElement.setAttribute(VERIFIED_BADGE_HIDDEN_ATTRIBUTE, "true");
            } else {
              badgeElement.removeAttribute(VERIFIED_BADGE_HIDDEN_ATTRIBUTE);
            }
          }
        }
        /**
         * Clear every verified badge visibility marker under one root.
         *
         * @param {Document|HTMLElement} [root=document] - Scope for marker cleanup.
         */
        clearAllVerifiedBadgeMarkers(root = document) {
          if (!root || typeof root.querySelectorAll !== "function") {
            return;
          }
          const markedBadgeElements = root.querySelectorAll(`[${VERIFIED_BADGE_HIDDEN_ATTRIBUTE}]`);
          for (const markedBadgeElement of markedBadgeElements) {
            markedBadgeElement.removeAttribute(VERIFIED_BADGE_HIDDEN_ATTRIBUTE);
          }
        }
        /**
         * Clear all top-divider normalization markers under one root.
         *
         * @param {Document|HTMLElement} [root=document] - Scope for divider cleanup.
         */
        clearAllTimelineDividerMarkers(root = document) {
          if (!root) {
            return;
          }
          if (typeof root.removeAttribute === "function") {
            __privateMethod(this, _StyleManager_instances, removeTimelineDividerAttributes_fn).call(this, root);
          }
          if (typeof root.querySelectorAll !== "function") {
            return;
          }
          const markedTimelineElements = root.querySelectorAll(
            `[${FIRST_VISIBLE_TIMELINE_ITEM_ATTRIBUTE}]`
          );
          for (const markedTimelineElement of markedTimelineElements) {
            __privateMethod(this, _StyleManager_instances, removeTimelineDividerAttributes_fn).call(this, markedTimelineElement);
          }
        }
      };
      _StyleManager_instances = new WeakSet();
      /**
       * Remove stale hide metadata from nested descendants.
       *
       * @param {HTMLElement} element - Marker cleanup root.
       */
      clearNestedMarkers_fn = function(element) {
        const nestedMarkedElements = element.querySelectorAll(
          `[${FILTER_HIDDEN_ATTRIBUTE}], [${FILTER_REASON_ATTRIBUTE}], [${FILTER_POST_ID_ATTRIBUTE}]`
        );
        for (const nestedMarkedElement of nestedMarkedElements) {
          __privateMethod(this, _StyleManager_instances, removeMarkerAttributes_fn).call(this, nestedMarkedElement);
        }
      };
      /**
       * Remove runtime marker attributes from one element.
       *
       * @param {HTMLElement} element - Marker target.
       */
      removeMarkerAttributes_fn = function(element) {
        if (!element || typeof element.removeAttribute !== "function") {
          return;
        }
        element.removeAttribute(FILTER_HIDDEN_ATTRIBUTE);
        element.removeAttribute(FILTER_REASON_ATTRIBUTE);
        element.removeAttribute(FILTER_POST_ID_ATTRIBUTE);
      };
      /**
       * Remove top-divider normalization metadata from one element.
       *
       * @param {HTMLElement|Document} element - Marker target.
       */
      removeTimelineDividerAttributes_fn = function(element) {
        if (!element || typeof element.removeAttribute !== "function") {
          return;
        }
        element.removeAttribute(FIRST_VISIBLE_TIMELINE_ITEM_ATTRIBUTE);
      };
      /**
       * Group timeline elements by row-shell sibling container while preserving document order.
       *
       * @param {HTMLElement[]} contentElements - Candidate content-row elements.
       * @returns {Map<HTMLElement|Document, HTMLElement[]>}
       */
      groupElementsBySiblingContainer_fn = function(contentElements) {
        const groupedElements = /* @__PURE__ */ new Map();
        const candidateElements = Array.isArray(contentElements) ? contentElements : [];
        for (const contentElement of candidateElements) {
          if (!__privateMethod(this, _StyleManager_instances, isUsableTimelineElement_fn).call(this, contentElement)) {
            continue;
          }
          const siblingContainer = __privateMethod(this, _StyleManager_instances, resolveTimelineSiblingContainer_fn).call(this, contentElement);
          const siblingElement = __privateMethod(this, _StyleManager_instances, resolveSiblingContainerChild_fn).call(this, contentElement, siblingContainer);
          if (!__privateMethod(this, _StyleManager_instances, isUsableTimelineElement_fn).call(this, siblingElement)) {
            continue;
          }
          if (!groupedElements.has(siblingContainer)) {
            groupedElements.set(siblingContainer, []);
          }
          groupedElements.get(siblingContainer).push(siblingElement);
        }
        return groupedElements;
      };
      /**
       * Resolve the row-shell sibling container that owns one timeline element.
       *
       * @param {HTMLElement} element - Candidate content-row element.
       * @returns {HTMLElement|Document}
       */
      resolveTimelineSiblingContainer_fn = function(element) {
        const timelineRegion = __privateMethod(this, _StyleManager_instances, resolveTimelineRegion_fn).call(this, element);
        let currentElement = element;
        while (__privateMethod(this, _StyleManager_instances, isUsableTimelineElement_fn).call(this, currentElement) && currentElement !== timelineRegion) {
          const parentElement = currentElement.parentElement;
          if (__privateMethod(this, _StyleManager_instances, isTimelineSiblingContainer_fn).call(this, parentElement)) {
            return parentElement;
          }
          currentElement = parentElement;
        }
        if (__privateMethod(this, _StyleManager_instances, isTimelineSiblingContainer_fn).call(this, timelineRegion)) {
          return timelineRegion;
        }
        return typeof document !== "undefined" ? document : timelineRegion;
      };
      /**
       * Resolve the direct row-shell child that participates in one sibling container.
       *
       * @param {HTMLElement} element - Candidate content-row element.
       * @param {HTMLElement|Document} siblingContainer - Candidate sibling container.
       * @returns {HTMLElement|null}
       */
      resolveSiblingContainerChild_fn = function(element, siblingContainer) {
        if (!__privateMethod(this, _StyleManager_instances, isUsableTimelineElement_fn).call(this, element)) {
          return null;
        }
        if (!siblingContainer || siblingContainer === document) {
          return element;
        }
        let currentElement = element;
        while (__privateMethod(this, _StyleManager_instances, isUsableTimelineElement_fn).call(this, currentElement)) {
          if (currentElement.parentElement === siblingContainer) {
            return currentElement;
          }
          currentElement = currentElement.parentElement;
        }
        return element;
      };
      /**
       * Validate whether one container owns sibling row shells in the feed.
       *
       * @param {HTMLElement|Document|null} element - Candidate sibling container.
       * @returns {boolean}
       */
      isTimelineSiblingContainer_fn = function(element) {
        if (!__privateMethod(this, _StyleManager_instances, isUsableTimelineElement_fn).call(this, element)) {
          return false;
        }
        const childElements = Array.from(element.children || []).filter(
          (childElement) => __privateMethod(this, _StyleManager_instances, isUsableTimelineElement_fn).call(this, childElement)
        );
        if (childElements.length < 2) {
          return false;
        }
        let timelineChildCount = 0;
        for (const childElement of childElements) {
          if (__privateMethod(this, _StyleManager_instances, looksLikeTimelineRowShell_fn).call(this, childElement)) {
            timelineChildCount += 1;
          }
        }
        return timelineChildCount >= 2;
      };
      /**
       * Recognize one row shell in the live Threads feed list.
       *
       * @param {HTMLElement} element - Candidate row shell.
       * @returns {boolean}
       */
      looksLikeTimelineRowShell_fn = function(element) {
        if (!__privateMethod(this, _StyleManager_instances, isUsableTimelineElement_fn).call(this, element)) {
          return false;
        }
        if (element.getAttribute(FILTER_HIDDEN_ATTRIBUTE) === "true") {
          return true;
        }
        return typeof element.querySelector === "function" && (Boolean(element.querySelector(POST_PERMALINK_SELECTOR)) || Boolean(element.querySelector('[data-pressable-container="true"]')));
      };
      /**
       * Resolve the element that actually paints the top divider for one row shell.
       *
       * @param {HTMLElement} timelineElement - Candidate row shell.
       * @returns {HTMLElement}
       */
      resolveDividerTarget_fn = function(timelineElement) {
        const preferredCandidates = [timelineElement];
        if (typeof timelineElement.querySelectorAll === "function") {
          preferredCandidates.push(
            ...timelineElement.querySelectorAll('[data-pressable-container="true"]')
          );
        }
        for (const candidateElement of preferredCandidates) {
          if (__privateMethod(this, _StyleManager_instances, hasVisibleTopBorder_fn).call(this, candidateElement)) {
            return candidateElement;
          }
        }
        if (typeof timelineElement.querySelectorAll === "function") {
          const descendantElements = timelineElement.querySelectorAll("*");
          for (const descendantElement of descendantElements) {
            if (__privateMethod(this, _StyleManager_instances, hasVisibleTopBorder_fn).call(this, descendantElement)) {
              return descendantElement;
            }
          }
        }
        return timelineElement;
      };
      /**
       * Detect whether one element paints a visible top divider.
       *
       * @param {HTMLElement} element - Candidate divider owner.
       * @returns {boolean}
       */
      hasVisibleTopBorder_fn = function(element) {
        if (!__privateMethod(this, _StyleManager_instances, isUsableTimelineElement_fn).call(this, element) || typeof getComputedStyle !== "function") {
          return false;
        }
        const computedStyle = getComputedStyle(element);
        return Number.parseFloat(computedStyle.borderTopWidth || "0") > 0 && String(computedStyle.borderTopStyle || "").toLowerCase() !== "none";
      };
      /**
       * Resolve the nearest timeline region that owns one content row.
       *
       * @param {HTMLElement} element - Candidate content-row element.
       * @returns {Document|HTMLElement}
       */
      resolveTimelineRegion_fn = function(element) {
        if (element && typeof element.closest === "function") {
          const timelineRegion = element.closest(TIMELINE_REGION_SELECTOR);
          if (timelineRegion) {
            return timelineRegion;
          }
        }
        return typeof document !== "undefined" ? document : element;
      };
      /**
       * Accept only connected element nodes that can own timeline divider styling.
       *
       * @param {unknown} element - Candidate content-row element.
       * @returns {boolean}
       */
      isUsableTimelineElement_fn = function(element) {
        return Boolean(
          element && typeof element === "object" && element.nodeType === 1 && typeof element.getAttribute === "function" && (element.isConnected === void 0 || element.isConnected === true)
        );
      };
      /**
       * Prevent hiding global feed containers when upstream matching drifts.
       *
       * @param {HTMLElement} element - Candidate hide target.
       * @returns {boolean}
       */
      isUnsafeHideTarget_fn = function(element) {
        const tagName = String(element.tagName || "").toUpperCase();
        if (["HTML", "BODY", "MAIN"].includes(tagName)) {
          return true;
        }
        if (typeof element.querySelector === "function" && element.querySelector(TIMELINE_CHROME_LINK_SELECTOR)) {
          return true;
        }
        if (__privateMethod(this, _StyleManager_instances, isDirectChildOfTimelineChromeShell_fn).call(this, element)) {
          return true;
        }
        if (__privateMethod(this, _StyleManager_instances, isViewportScaleContainer_fn).call(this, element)) {
          return true;
        }
        return false;
      };
      /**
       * Reject child wrappers under timeline tab containers when feed has at most one loaded post.
       *
       * @param {HTMLElement} element - Candidate hide target.
       * @returns {boolean}
       */
      isDirectChildOfTimelineChromeShell_fn = function(element) {
        const parentElement = element.parentElement;
        if (!parentElement || typeof parentElement.querySelector !== "function") {
          return false;
        }
        if (!parentElement.querySelector(TIMELINE_CHROME_LINK_SELECTOR)) {
          return false;
        }
        const parentPermalinkCount = parentElement.querySelectorAll(POST_PERMALINK_SELECTOR).length;
        return parentPermalinkCount <= 1;
      };
      /**
       * Reject hiding containers that span most of the viewport.
       *
       * @param {HTMLElement} element - Candidate hide target.
       * @returns {boolean}
       */
      isViewportScaleContainer_fn = function(element) {
        if (typeof window === "undefined" || typeof element.getBoundingClientRect !== "function" || !Number.isFinite(window.innerHeight) || !Number.isFinite(window.innerWidth) || window.innerHeight <= 0 || window.innerWidth <= 0) {
          return false;
        }
        const rectangle = element.getBoundingClientRect();
        if (!Number.isFinite(rectangle.height) || !Number.isFinite(rectangle.width)) {
          return false;
        }
        if (rectangle.height <= 0 || rectangle.width <= 0) {
          return false;
        }
        return rectangle.height >= window.innerHeight * 0.9 && rectangle.width >= window.innerWidth * 0.25;
      };
      module.exports = {
        FIRST_VISIBLE_TIMELINE_ITEM_ATTRIBUTE,
        FILTER_HIDDEN_ATTRIBUTE,
        FILTER_POST_ID_ATTRIBUTE,
        FILTER_REASON_ATTRIBUTE,
        VERIFIED_BADGE_HIDDEN_ATTRIBUTE,
        StyleManager
      };
    }
  });

  // src/storage/settings-schema.js
  var require_settings_schema = __commonJS({
    "src/storage/settings-schema.js"(exports, module) {
      var SETTINGS_SCHEMA_VERSION = 1;
      var SETTINGS_STORAGE_KEY = "btf:settings";
      var ALLOWED_LOG_LEVELS = /* @__PURE__ */ new Set(["debug", "info", "warn", "error", "silent"]);
      function normalizeHandle(value) {
        return String(value === null || value === void 0 ? "" : value).trim().replace(/^@+/, "").toLowerCase();
      }
      function normalizeTopic(value) {
        return String(value === null || value === void 0 ? "" : value).trim().toLowerCase().replace(/\s+/g, " ");
      }
      function normalizeStringList(value, transformer) {
        if (!Array.isArray(value)) {
          return [];
        }
        const uniqueValues = /* @__PURE__ */ new Set();
        for (const item of value) {
          const normalizedValue = transformer(item);
          if (normalizedValue) {
            uniqueValues.add(normalizedValue);
          }
        }
        return Array.from(uniqueValues);
      }
      function normalizePhraseEntry(value, defaultIsRegex) {
        const candidate = value && typeof value === "object" ? (
          /** @type {Record<string, unknown>} */
          value
        ) : null;
        const rawPattern = candidate !== null ? candidate.pattern !== void 0 ? candidate.pattern : candidate.value : value;
        const pattern = String(rawPattern === null || rawPattern === void 0 ? "" : rawPattern).trim();
        if (!pattern) {
          return null;
        }
        const rawRegexFlag = candidate !== null ? candidate.isRegex !== void 0 ? candidate.isRegex : candidate.regex : defaultIsRegex;
        const isRegex = typeof rawRegexFlag === "boolean" ? rawRegexFlag : defaultIsRegex;
        return {
          pattern,
          isRegex
        };
      }
      function buildPhraseEntryKey(pattern, isRegex) {
        return `${isRegex ? "regex" : "text"}:${pattern}`;
      }
      function normalizePhraseEntryList(value, defaultIsRegex) {
        if (!Array.isArray(value)) {
          return [];
        }
        const normalizedEntries = [];
        const seenKeys = /* @__PURE__ */ new Set();
        for (const item of value) {
          const entry = normalizePhraseEntry(item, defaultIsRegex);
          if (!entry) {
            continue;
          }
          const dedupeKey = buildPhraseEntryKey(entry.pattern, entry.isRegex);
          if (seenKeys.has(dedupeKey)) {
            continue;
          }
          seenKeys.add(dedupeKey);
          normalizedEntries.push(entry);
        }
        return normalizedEntries;
      }
      function normalizeBoolean(value, fallback) {
        return typeof value === "boolean" ? value : fallback;
      }
      function normalizeInteger(value, fallback, bounds = {}) {
        const numericCandidate = Number(value);
        if (!Number.isInteger(numericCandidate)) {
          return fallback;
        }
        if (typeof bounds.min === "number" && numericCandidate < bounds.min) {
          return bounds.min;
        }
        if (typeof bounds.max === "number" && numericCandidate > bounds.max) {
          return bounds.max;
        }
        return numericCandidate;
      }
      var SettingsSchema = class {
        /**
         * Initialize schema version identity.
         *
         * @param {number} [schemaVersion=SETTINGS_SCHEMA_VERSION] - Persisted schema version.
         */
        constructor(schemaVersion = SETTINGS_SCHEMA_VERSION) {
          this.schemaVersion = schemaVersion;
        }
        /**
         * Create canonical defaults so every subsystem shares one settings baseline.
         *
         * @returns {object}
         */
        createDefaults() {
          return {
            schemaVersion: this.schemaVersion,
            observability: {
              level: "warn",
              debugMode: false
            },
            filters: {
              enabled: true,
              username: {
                enabled: true,
                blockedHandles: [],
                notInterested: {
                  enabledHandles: []
                }
              },
              verified: {
                enabled: true,
                hideVerified: true,
                hideBlueCheck: true,
                hideBadges: false,
                whitelistHandles: []
              },
              aiLabel: {
                enabled: false
              },
              suggestedFollow: {
                enabled: false
              },
              trending: {
                enabled: false,
                hideAll: false,
                blockedTopics: [],
                notInterested: {
                  enabledTopics: []
                }
              },
              phrase: {
                enabled: true,
                entries: [],
                caseSensitive: false,
                notInterested: {
                  enabledEntries: [],
                  enabledPatterns: [],
                  rateLimit: {
                    minIntervalSeconds: 8,
                    jitterSeconds: 2,
                    maxPerMinute: 6,
                    maxPerDay: 120,
                    circuitBreakerMinutes: 15
                  }
                }
              }
            }
          };
        }
        /**
         * Normalize unknown persisted values into trusted runtime settings.
         *
         * @param {unknown} rawSettings - Candidate settings object from persistence.
         * @returns {object}
         */
        normalize(rawSettings) {
          const defaults = this.createDefaults();
          const candidate = rawSettings && typeof rawSettings === "object" ? (
            /** @type {Record<string, unknown>} */
            rawSettings
          ) : {};
          const observabilityCandidate = candidate.observability && typeof candidate.observability === "object" ? (
            /** @type {Record<string, unknown>} */
            candidate.observability
          ) : {};
          const filtersCandidate = candidate.filters && typeof candidate.filters === "object" ? (
            /** @type {Record<string, unknown>} */
            candidate.filters
          ) : {};
          const usernameCandidate = filtersCandidate.username && typeof filtersCandidate.username === "object" ? (
            /** @type {Record<string, unknown>} */
            filtersCandidate.username
          ) : {};
          const usernameNotInterestedCandidate = usernameCandidate.notInterested && typeof usernameCandidate.notInterested === "object" ? (
            /** @type {Record<string, unknown>} */
            usernameCandidate.notInterested
          ) : {};
          const verifiedCandidate = filtersCandidate.verified && typeof filtersCandidate.verified === "object" ? (
            /** @type {Record<string, unknown>} */
            filtersCandidate.verified
          ) : {};
          const aiLabelCandidate = filtersCandidate.aiLabel && typeof filtersCandidate.aiLabel === "object" ? (
            /** @type {Record<string, unknown>} */
            filtersCandidate.aiLabel
          ) : {};
          const phraseCandidate = filtersCandidate.phrase && typeof filtersCandidate.phrase === "object" ? (
            /** @type {Record<string, unknown>} */
            filtersCandidate.phrase
          ) : {};
          const suggestedFollowCandidate = filtersCandidate.suggestedFollow && typeof filtersCandidate.suggestedFollow === "object" ? (
            /** @type {Record<string, unknown>} */
            filtersCandidate.suggestedFollow
          ) : {};
          const trendingCandidate = filtersCandidate.trending && typeof filtersCandidate.trending === "object" ? (
            /** @type {Record<string, unknown>} */
            filtersCandidate.trending
          ) : {};
          const trendingNotInterestedCandidate = trendingCandidate.notInterested && typeof trendingCandidate.notInterested === "object" ? (
            /** @type {Record<string, unknown>} */
            trendingCandidate.notInterested
          ) : {};
          const phraseNotInterestedCandidate = phraseCandidate.notInterested && typeof phraseCandidate.notInterested === "object" ? (
            /** @type {Record<string, unknown>} */
            phraseCandidate.notInterested
          ) : {};
          const phraseNotInterestedRateLimitCandidate = phraseNotInterestedCandidate.rateLimit && typeof phraseNotInterestedCandidate.rateLimit === "object" ? (
            /** @type {Record<string, unknown>} */
            phraseNotInterestedCandidate.rateLimit
          ) : {};
          const phraseEntries = Array.isArray(phraseCandidate.entries) ? normalizePhraseEntryList(phraseCandidate.entries, false) : normalizePhraseEntryList(
            Array.isArray(phraseCandidate.patterns) ? phraseCandidate.patterns : [],
            normalizeBoolean(phraseCandidate.useRegex, false)
          );
          const explicitNotInterestedEntries = normalizePhraseEntryList(
            phraseNotInterestedCandidate.enabledEntries,
            false
          ).map((entry) => ({
            pattern: entry.pattern,
            isRegex: entry.isRegex
          }));
          const explicitNotInterestedEntryKeys = new Set(
            explicitNotInterestedEntries.map((entry) => buildPhraseEntryKey(entry.pattern, entry.isRegex))
          );
          const legacyEnabledPatterns = normalizeStringList(
            phraseNotInterestedCandidate.enabledPatterns,
            (value) => String(value === null || value === void 0 ? "" : value).trim()
          );
          const derivedNotInterestedEntries = phraseEntries.filter(
            (entry) => legacyEnabledPatterns.includes(entry.pattern) && !explicitNotInterestedEntryKeys.has(buildPhraseEntryKey(entry.pattern, entry.isRegex))
          ).map((entry) => ({
            pattern: entry.pattern,
            isRegex: entry.isRegex
          }));
          const enabledNotInterestedEntries = [
            ...explicitNotInterestedEntries,
            ...derivedNotInterestedEntries
          ];
          const enabledNotInterestedPatterns = Array.from(
            /* @__PURE__ */ new Set([
              ...legacyEnabledPatterns,
              ...enabledNotInterestedEntries.map((entry) => entry.pattern)
            ])
          );
          const levelCandidate = String(
            observabilityCandidate.level === void 0 ? "" : observabilityCandidate.level
          ).trim().toLowerCase();
          const normalizedLevel = ALLOWED_LOG_LEVELS.has(levelCandidate) ? levelCandidate : defaults.observability.level;
          const blockedTrendingTopics = normalizeStringList(
            trendingCandidate.blockedTopics,
            normalizeTopic
          );
          const enabledTrendingNotInterestedTopics = normalizeStringList(
            trendingNotInterestedCandidate.enabledTopics,
            normalizeTopic
          ).filter((topic) => blockedTrendingTopics.includes(topic));
          return {
            schemaVersion: this.schemaVersion,
            observability: {
              level: normalizedLevel,
              debugMode: normalizeBoolean(
                observabilityCandidate.debugMode,
                defaults.observability.debugMode
              )
            },
            filters: {
              enabled: normalizeBoolean(filtersCandidate.enabled, defaults.filters.enabled),
              username: {
                enabled: normalizeBoolean(usernameCandidate.enabled, defaults.filters.username.enabled),
                blockedHandles: normalizeStringList(usernameCandidate.blockedHandles, normalizeHandle),
                notInterested: {
                  enabledHandles: normalizeStringList(
                    usernameNotInterestedCandidate.enabledHandles,
                    normalizeHandle
                  )
                }
              },
              verified: {
                enabled: normalizeBoolean(verifiedCandidate.enabled, defaults.filters.verified.enabled),
                hideVerified: normalizeBoolean(
                  verifiedCandidate.hideVerified,
                  defaults.filters.verified.hideVerified
                ),
                hideBlueCheck: normalizeBoolean(
                  verifiedCandidate.hideBlueCheck,
                  defaults.filters.verified.hideBlueCheck
                ),
                hideBadges: normalizeBoolean(
                  verifiedCandidate.hideBadges,
                  defaults.filters.verified.hideBadges
                ),
                whitelistHandles: normalizeStringList(
                  verifiedCandidate.whitelistHandles,
                  normalizeHandle
                )
              },
              aiLabel: {
                enabled: normalizeBoolean(aiLabelCandidate.enabled, defaults.filters.aiLabel.enabled)
              },
              suggestedFollow: {
                enabled: normalizeBoolean(
                  suggestedFollowCandidate.enabled,
                  defaults.filters.suggestedFollow.enabled
                )
              },
              trending: {
                enabled: normalizeBoolean(trendingCandidate.enabled, defaults.filters.trending.enabled),
                hideAll: normalizeBoolean(trendingCandidate.hideAll, defaults.filters.trending.hideAll),
                blockedTopics: blockedTrendingTopics,
                notInterested: {
                  enabledTopics: enabledTrendingNotInterestedTopics
                }
              },
              phrase: {
                enabled: normalizeBoolean(phraseCandidate.enabled, defaults.filters.phrase.enabled),
                entries: phraseEntries,
                caseSensitive: normalizeBoolean(
                  phraseCandidate.caseSensitive,
                  defaults.filters.phrase.caseSensitive
                ),
                notInterested: {
                  enabledEntries: enabledNotInterestedEntries,
                  enabledPatterns: enabledNotInterestedPatterns,
                  rateLimit: {
                    minIntervalSeconds: normalizeInteger(
                      phraseNotInterestedRateLimitCandidate.minIntervalSeconds,
                      defaults.filters.phrase.notInterested.rateLimit.minIntervalSeconds,
                      { min: 1, max: 300 }
                    ),
                    jitterSeconds: normalizeInteger(
                      phraseNotInterestedRateLimitCandidate.jitterSeconds,
                      defaults.filters.phrase.notInterested.rateLimit.jitterSeconds,
                      { min: 0, max: 60 }
                    ),
                    maxPerMinute: normalizeInteger(
                      phraseNotInterestedRateLimitCandidate.maxPerMinute,
                      defaults.filters.phrase.notInterested.rateLimit.maxPerMinute,
                      { min: 1, max: 600 }
                    ),
                    maxPerDay: normalizeInteger(
                      phraseNotInterestedRateLimitCandidate.maxPerDay,
                      defaults.filters.phrase.notInterested.rateLimit.maxPerDay,
                      { min: 1, max: 1e4 }
                    ),
                    circuitBreakerMinutes: normalizeInteger(
                      phraseNotInterestedRateLimitCandidate.circuitBreakerMinutes,
                      defaults.filters.phrase.notInterested.rateLimit.circuitBreakerMinutes,
                      { min: 1, max: 1440 }
                    )
                  }
                }
              }
            }
          };
        }
      };
      module.exports = {
        SETTINGS_SCHEMA_VERSION,
        SETTINGS_STORAGE_KEY,
        SettingsSchema,
        normalizeHandle,
        normalizeTopic
      };
    }
  });

  // src/core/content-model.js
  var require_content_model = __commonJS({
    "src/core/content-model.js"(exports, module) {
      var { normalizeHandle, normalizeTopic } = require_settings_schema();
      var _ContentModel_instances, resolveAiDetectionMethods_fn, resolveTrendingTopics_fn, resolvePostCodes_fn, resolvePostHandles_fn, resolveVerifiedPostHandles_fn, buildSearchText_fn;
      var ContentModel = class {
        /**
         * Initialize content model fields with normalized defaults.
         *
         * @param {{
         *   element?: HTMLElement|null,
         *   postCode?: string,
         *   postCodes?: string[],
         *   authorHandle?: string,
         *   postHandles?: string[],
         *   verifiedPostHandles?: string[],
         *   displayName?: string,
         *   text?: string,
         *   isVerified?: boolean,
         *   hasBlueCheck?: boolean,
         *   hasAiLabel?: boolean,
         *   aiDetectionMethods?: string[],
         *   isSuggestedFollow?: boolean
         *   isTrending?: boolean,
         *   trendingTopics?: string[]
         * }} [data] - Candidate content data.
         */
        constructor(data = {}) {
          __privateAdd(this, _ContentModel_instances);
          this.element = data.element || null;
          this.postCodes = __privateMethod(this, _ContentModel_instances, resolvePostCodes_fn).call(this, data.postCodes, data.postCode);
          this.postCode = this.postCodes[0] || "";
          this.authorHandle = normalizeHandle(data.authorHandle);
          this.postHandles = __privateMethod(this, _ContentModel_instances, resolvePostHandles_fn).call(this, data.postHandles);
          this.verifiedPostHandles = __privateMethod(this, _ContentModel_instances, resolveVerifiedPostHandles_fn).call(this, data.verifiedPostHandles);
          this.displayName = String(data.displayName || "").trim();
          this.text = String(data.text || "").trim();
          this.trendingTopics = __privateMethod(this, _ContentModel_instances, resolveTrendingTopics_fn).call(this, data.trendingTopics);
          this.isTrending = Boolean(data.isTrending || this.trendingTopics.length > 0);
          this.isVerified = Boolean(
            data.isVerified || this.authorHandle && this.verifiedPostHandles.includes(this.authorHandle)
          );
          this.hasBlueCheck = Boolean(data.hasBlueCheck || this.isVerified);
          this.aiDetectionMethods = __privateMethod(this, _ContentModel_instances, resolveAiDetectionMethods_fn).call(this, data.aiDetectionMethods);
          this.hasAiLabel = Boolean(data.hasAiLabel || this.aiDetectionMethods.length > 0);
          this.isSuggestedFollow = Boolean(data.isSuggestedFollow);
          this.searchText = __privateMethod(this, _ContentModel_instances, buildSearchText_fn).call(this);
        }
      };
      _ContentModel_instances = new WeakSet();
      /**
       * Normalize AI detection methods for deterministic metadata-backed filtering.
       *
       * @param {unknown} value - Candidate method list.
       * @returns {string[]}
       */
      resolveAiDetectionMethods_fn = function(value) {
        const normalizedMethods = [];
        const seenMethods = /* @__PURE__ */ new Set();
        const candidateMethods = Array.isArray(value) ? value : [];
        for (const candidateMethod of candidateMethods) {
          const normalizedMethod = String(candidateMethod || "").trim().toUpperCase();
          if (!normalizedMethod || normalizedMethod === "NONE" || seenMethods.has(normalizedMethod)) {
            continue;
          }
          seenMethods.add(normalizedMethod);
          normalizedMethods.push(normalizedMethod);
        }
        return normalizedMethods;
      };
      /**
       * Normalize trending-topic labels for deterministic rule matching.
       *
       * @param {unknown} value - Candidate topic list.
       * @returns {string[]}
       */
      resolveTrendingTopics_fn = function(value) {
        const normalizedTopics = [];
        const seenTopics = /* @__PURE__ */ new Set();
        const candidateTopics = Array.isArray(value) ? value : [];
        for (const candidateTopic of candidateTopics) {
          const normalizedTopic = normalizeTopic(candidateTopic);
          if (!normalizedTopic || seenTopics.has(normalizedTopic)) {
            continue;
          }
          normalizedTopics.push(normalizedTopic);
          seenTopics.add(normalizedTopic);
        }
        return normalizedTopics;
      };
      /**
       * Normalize post codes so runtime can cascade-hide reply chains safely.
       *
       * @param {unknown} value - Candidate post-code list.
       * @param {unknown} primaryPostCode - Canonical post code fallback.
       * @returns {string[]}
       */
      resolvePostCodes_fn = function(value, primaryPostCode) {
        const normalizedCodes = [];
        const seenCodes = /* @__PURE__ */ new Set();
        const normalizedPrimaryCode = String(primaryPostCode || "").trim();
        if (normalizedPrimaryCode) {
          normalizedCodes.push(normalizedPrimaryCode);
          seenCodes.add(normalizedPrimaryCode);
        }
        const candidateCodes = Array.isArray(value) ? value : [];
        for (const candidateCode of candidateCodes) {
          const normalizedCode = String(candidateCode || "").trim();
          if (!normalizedCode || seenCodes.has(normalizedCode)) {
            continue;
          }
          normalizedCodes.push(normalizedCode);
          seenCodes.add(normalizedCode);
        }
        return normalizedCodes;
      };
      /**
       * Normalize all post handles so rules can evaluate repost rows holistically.
       *
       * @param {unknown} value - Candidate post-handle list.
       * @returns {string[]}
       */
      resolvePostHandles_fn = function(value) {
        const normalizedHandles = [];
        const seenHandles = /* @__PURE__ */ new Set();
        const candidateHandles = Array.isArray(value) ? value : [];
        for (const candidateHandle of candidateHandles) {
          const normalizedHandle = normalizeHandle(candidateHandle);
          if (!normalizedHandle || seenHandles.has(normalizedHandle)) {
            continue;
          }
          seenHandles.add(normalizedHandle);
          normalizedHandles.push(normalizedHandle);
        }
        if (this.authorHandle && !seenHandles.has(this.authorHandle)) {
          seenHandles.add(this.authorHandle);
          normalizedHandles.unshift(this.authorHandle);
        }
        return normalizedHandles;
      };
      /**
       * Normalize verified post handles and keep them aligned to known post handles.
       *
       * @param {unknown} value - Candidate verified-handle list.
       * @returns {string[]}
       */
      resolveVerifiedPostHandles_fn = function(value) {
        const knownHandles = new Set(this.postHandles);
        const normalizedHandles = [];
        const seenHandles = /* @__PURE__ */ new Set();
        const candidateHandles = Array.isArray(value) ? value : [];
        for (const candidateHandle of candidateHandles) {
          const normalizedHandle = normalizeHandle(candidateHandle);
          if (!normalizedHandle || seenHandles.has(normalizedHandle)) {
            continue;
          }
          if (knownHandles.size > 0 && !knownHandles.has(normalizedHandle)) {
            continue;
          }
          seenHandles.add(normalizedHandle);
          normalizedHandles.push(normalizedHandle);
        }
        return normalizedHandles;
      };
      /**
       * Build normalized aggregate text used by phrase and regex rules.
       *
       * @returns {string}
       */
      buildSearchText_fn = function() {
        return [
          this.displayName,
          this.authorHandle,
          ...this.postHandles,
          ...this.trendingTopics,
          this.text
        ].map((value) => String(value || "").trim()).filter(Boolean).join(" ");
      };
      module.exports = {
        ContentModel
      };
    }
  });

  // src/dom/threads-feed-adapter.js
  var require_threads_feed_adapter = __commonJS({
    "src/dom/threads-feed-adapter.js"(exports, module) {
      var { ContentModel } = require_content_model();
      var { containsVerifiedBadge } = require_verified_badge_dom();
      var PROFILE_LINK_PATTERN = /\/@([^/?#]+)/i;
      var POST_PERMALINK_PATTERN = /\/@([^/?#]+)\/post\/([^/?#]+)/i;
      var POST_ACTION_PREFIXES = ["Like", "Reply", "Repost", "Share"];
      var TIMELINE_CHROME_LINK_SELECTOR = 'a[href*="/for_you"], a[href*="/following"]';
      var SUGGESTED_FOR_YOU_TEXT = "suggested for you";
      var TRENDING_TOPIC_LINK_SELECTOR = 'a[href*="serp_type=timely_topics"], a[href*="trend_fbid="]';
      var TRENDING_PREFIX_PATTERN = /^trending:\s*/i;
      var HIGHLIGHT_PREFIX_PATTERN = /^highlight\s*/i;
      var SUGGESTED_MARKER_SELECTOR = "div, span, p, h1, h2, h3, h4, h5, h6";
      var CONTROL_SELECTOR = 'button, [role="button"]';
      var _ThreadsFeedAdapter_instances, collectPostContainersFromPermalinks_fn, countUniquePermalinksFromLinks_fn, buildModelFromPostContainer_fn, collectSuggestedFollowContainers_fn, collectSuggestedForYouMarkers_fn, resolveSuggestedFollowContainer_fn, buildModelFromSuggestedFollowContainer_fn, resolvePostContainer_fn, isDisallowedContainerTag_fn, isLikelyPostContainer_fn, isLikelySuggestedFollowContainer_fn, containsTimelineChrome_fn, isDirectChildOfTimelineChromeShell_fn, countUniquePostPermalinks_fn, collectCanonicalPostPermalinkLinks_fn, extractPostHandlesFromPermalinkLinks_fn, extractPostCodesFromPermalinkLinks_fn, extractTrendingTopics_fn, resolveTrendingTopicFromLink_fn, extractTopicFromHref_fn, extractVerifiedPostHandlesFromPermalinkLinks_fn, countActionButtons_fn, countSuggestedForYouMarkers_fn, countFollowAndCloseControls_fn, collectProfileLinks_fn, extractHandleFromHref_fn, isExactSuggestedForYouText_fn, normalizeText_fn, isPostPermalink_fn, extractPostCodeFromHref_fn, extractAuthorHandle_fn, extractDisplayName_fn, extractPostText_fn, detectVerifiedBadge_fn, detectVerifiedBadgeNearPermalinkLink_fn, findAuthorProfileLink_fn, containsVerifiedBadge_fn, detectBlueCheck_fn;
      var ThreadsFeedAdapter = class {
        constructor() {
          __privateAdd(this, _ThreadsFeedAdapter_instances);
        }
        /**
         * Collect content models from the current document.
         *
         * @param {Document} [rootDocument=document] - DOM root for extraction.
         * @returns {ContentModel[]}
         */
        collectContentModels(rootDocument = document) {
          if (!rootDocument || typeof rootDocument.querySelectorAll !== "function") {
            return [];
          }
          const postPermalinkLinks = rootDocument.querySelectorAll('a[href*="/@"][href*="/post/"]');
          const uniquePermalinkCount = __privateMethod(this, _ThreadsFeedAdapter_instances, countUniquePermalinksFromLinks_fn).call(this, postPermalinkLinks);
          let postContainerMap = __privateMethod(this, _ThreadsFeedAdapter_instances, collectPostContainersFromPermalinks_fn).call(this, postPermalinkLinks, {
            preferNearestContainer: false
          });
          if (uniquePermalinkCount > 1 && postContainerMap.size <= 1) {
            const nearestContainerMap = __privateMethod(this, _ThreadsFeedAdapter_instances, collectPostContainersFromPermalinks_fn).call(this, postPermalinkLinks, {
              preferNearestContainer: true
            });
            if (nearestContainerMap.size > postContainerMap.size) {
              postContainerMap = nearestContainerMap;
            }
          }
          const models = [];
          const modeledElements = /* @__PURE__ */ new Set();
          for (const [postContainer, primaryPermalinkLink] of postContainerMap) {
            const model = __privateMethod(this, _ThreadsFeedAdapter_instances, buildModelFromPostContainer_fn).call(this, postContainer, primaryPermalinkLink);
            if (model) {
              models.push(model);
              if (model.element) {
                modeledElements.add(model.element);
              }
            }
          }
          const suggestedFollowContainers = __privateMethod(this, _ThreadsFeedAdapter_instances, collectSuggestedFollowContainers_fn).call(this, rootDocument);
          for (const suggestedFollowContainer of suggestedFollowContainers) {
            if (modeledElements.has(suggestedFollowContainer)) {
              continue;
            }
            const model = __privateMethod(this, _ThreadsFeedAdapter_instances, buildModelFromSuggestedFollowContainer_fn).call(this, suggestedFollowContainer);
            if (!model) {
              continue;
            }
            models.push(model);
            if (model.element) {
              modeledElements.add(model.element);
            }
          }
          return models;
        }
      };
      _ThreadsFeedAdapter_instances = new WeakSet();
      /**
       * Collect canonical container candidates keyed by resolved post row element.
       *
       * @param {NodeListOf<HTMLAnchorElement>} postPermalinkLinks - Candidate permalink anchors.
       * @param {{ preferNearestContainer?: boolean }} [options] - Container-resolution options.
       * @returns {Map<HTMLElement, HTMLAnchorElement>}
       */
      collectPostContainersFromPermalinks_fn = function(postPermalinkLinks, options = {}) {
        const preferNearestContainer = options.preferNearestContainer === true;
        const postContainerMap = /* @__PURE__ */ new Map();
        for (const permalinkLink of postPermalinkLinks) {
          const href = String(permalinkLink.getAttribute("href") || "");
          if (!__privateMethod(this, _ThreadsFeedAdapter_instances, isPostPermalink_fn).call(this, href)) {
            continue;
          }
          const postContainer = __privateMethod(this, _ThreadsFeedAdapter_instances, resolvePostContainer_fn).call(this, permalinkLink, { preferNearestContainer });
          if (!postContainer || postContainerMap.has(postContainer)) {
            continue;
          }
          postContainerMap.set(postContainer, permalinkLink);
        }
        return postContainerMap;
      };
      /**
       * Count unique post permalinks from one anchor collection.
       *
       * @param {NodeListOf<HTMLAnchorElement>} permalinkLinks - Candidate permalink anchors.
       * @returns {number}
       */
      countUniquePermalinksFromLinks_fn = function(permalinkLinks) {
        const uniquePermalinks = /* @__PURE__ */ new Set();
        for (const permalinkLink of permalinkLinks) {
          const href = String(permalinkLink.getAttribute("href") || "");
          const match = href.match(POST_PERMALINK_PATTERN);
          if (!match || !match[1] || !match[2]) {
            continue;
          }
          uniquePermalinks.add(`${match[1].toLowerCase()}/${match[2]}`);
        }
        return uniquePermalinks.size;
      };
      /**
       * Build canonical model from one resolved post container.
       *
       * @param {HTMLElement} postContainer - Threads post container.
       * @param {HTMLAnchorElement} primaryPermalinkLink - Canonical permalink source.
       * @returns {ContentModel|null}
       */
      buildModelFromPostContainer_fn = function(postContainer, primaryPermalinkLink) {
        if (!postContainer) {
          return null;
        }
        const canonicalPermalinkLinks = __privateMethod(this, _ThreadsFeedAdapter_instances, collectCanonicalPostPermalinkLinks_fn).call(this, postContainer);
        const resolvedPrimaryPermalinkLink = canonicalPermalinkLinks[0] || primaryPermalinkLink || null;
        const postCode = __privateMethod(this, _ThreadsFeedAdapter_instances, extractPostCodeFromHref_fn).call(this, String(
          resolvedPrimaryPermalinkLink ? resolvedPrimaryPermalinkLink.getAttribute("href") || "" : ""
        ));
        const postCodes = __privateMethod(this, _ThreadsFeedAdapter_instances, extractPostCodesFromPermalinkLinks_fn).call(this, canonicalPermalinkLinks);
        const postHandles = __privateMethod(this, _ThreadsFeedAdapter_instances, extractPostHandlesFromPermalinkLinks_fn).call(this, canonicalPermalinkLinks);
        const authorHandle = __privateMethod(this, _ThreadsFeedAdapter_instances, extractAuthorHandle_fn).call(this, postContainer, resolvedPrimaryPermalinkLink, postHandles);
        const verifiedPostHandles = __privateMethod(this, _ThreadsFeedAdapter_instances, extractVerifiedPostHandlesFromPermalinkLinks_fn).call(this, postContainer, canonicalPermalinkLinks);
        const displayName = __privateMethod(this, _ThreadsFeedAdapter_instances, extractDisplayName_fn).call(this, postContainer, authorHandle);
        const text = __privateMethod(this, _ThreadsFeedAdapter_instances, extractPostText_fn).call(this, postContainer);
        const trendingTopics = __privateMethod(this, _ThreadsFeedAdapter_instances, extractTrendingTopics_fn).call(this, postContainer);
        const isVerified = verifiedPostHandles.includes(authorHandle);
        const hasBlueCheck = __privateMethod(this, _ThreadsFeedAdapter_instances, detectBlueCheck_fn).call(this, postContainer, authorHandle);
        return new ContentModel({
          element: postContainer,
          postCode,
          postCodes,
          authorHandle,
          postHandles,
          verifiedPostHandles,
          displayName,
          text,
          trendingTopics,
          isTrending: trendingTopics.length > 0,
          isVerified,
          hasBlueCheck
        });
      };
      /**
       * Collect suggestion-module containers from explicit "Suggested for you" markers.
       *
       * @param {Document} rootDocument - DOM root for extraction.
       * @returns {HTMLElement[]}
       */
      collectSuggestedFollowContainers_fn = function(rootDocument) {
        const markerElements = __privateMethod(this, _ThreadsFeedAdapter_instances, collectSuggestedForYouMarkers_fn).call(this, rootDocument);
        const uniqueContainers = /* @__PURE__ */ new Set();
        for (const markerElement of markerElements) {
          const suggestedFollowContainer = __privateMethod(this, _ThreadsFeedAdapter_instances, resolveSuggestedFollowContainer_fn).call(this, markerElement);
          if (suggestedFollowContainer) {
            uniqueContainers.add(suggestedFollowContainer);
          }
        }
        return Array.from(uniqueContainers);
      };
      /**
       * Collect text nodes that exactly match the "Suggested for you" heading.
       *
       * @param {Document} rootDocument - DOM root for extraction.
       * @returns {HTMLElement[]}
       */
      collectSuggestedForYouMarkers_fn = function(rootDocument) {
        const markerElements = rootDocument.querySelectorAll(SUGGESTED_MARKER_SELECTOR);
        return Array.from(markerElements).filter(
          (markerElement) => __privateMethod(this, _ThreadsFeedAdapter_instances, isExactSuggestedForYouText_fn).call(this, markerElement.textContent)
        );
      };
      /**
       * Resolve nearest suggestion-module container by climbing from heading marker.
       *
       * @param {HTMLElement} startElement - Heading marker element.
       * @returns {HTMLElement|null}
       */
      resolveSuggestedFollowContainer_fn = function(startElement) {
        let currentElement = startElement;
        let depth = 0;
        let resolvedContainer = null;
        while (currentElement && depth <= 10) {
          if (__privateMethod(this, _ThreadsFeedAdapter_instances, isLikelySuggestedFollowContainer_fn).call(this, currentElement) && !__privateMethod(this, _ThreadsFeedAdapter_instances, isDisallowedContainerTag_fn).call(this, currentElement.tagName)) {
            resolvedContainer = currentElement;
          }
          currentElement = currentElement.parentElement;
          depth += 1;
        }
        return resolvedContainer;
      };
      /**
       * Build canonical model for one "Suggested for you" follow module.
       *
       * @param {HTMLElement} suggestedFollowContainer - Suggested-follow module container.
       * @returns {ContentModel|null}
       */
      buildModelFromSuggestedFollowContainer_fn = function(suggestedFollowContainer) {
        if (!suggestedFollowContainer) {
          return null;
        }
        return new ContentModel({
          element: suggestedFollowContainer,
          displayName: "Suggested for you",
          text: __privateMethod(this, _ThreadsFeedAdapter_instances, extractPostText_fn).call(this, suggestedFollowContainer),
          isSuggestedFollow: true
        });
      };
      /**
       * Resolve nearest post container from permalink anchor by structure checks.
       *
       * @param {HTMLElement} startElement - Candidate permalink anchor.
       * @param {{ preferNearestContainer?: boolean }} [options] - Container-resolution options.
       * @returns {HTMLElement|null}
       */
      resolvePostContainer_fn = function(startElement, options = {}) {
        const preferNearestContainer = options.preferNearestContainer === true;
        let currentElement = startElement;
        let depth = 0;
        let resolvedContainer = null;
        while (currentElement && depth <= 18) {
          if (__privateMethod(this, _ThreadsFeedAdapter_instances, isLikelyPostContainer_fn).call(this, currentElement) && !__privateMethod(this, _ThreadsFeedAdapter_instances, isDisallowedContainerTag_fn).call(this, currentElement.tagName)) {
            if (preferNearestContainer) {
              return currentElement;
            }
            resolvedContainer = currentElement;
          }
          currentElement = currentElement.parentElement;
          depth += 1;
        }
        return resolvedContainer;
      };
      /**
       * Reject document-level tags that are too broad for one feed item.
       *
       * @param {string} tagName - Candidate element tag name.
       * @returns {boolean}
       */
      isDisallowedContainerTag_fn = function(tagName) {
        return ["BODY", "HTML", "MAIN"].includes(String(tagName || "").toUpperCase());
      };
      /**
       * Validate whether an element behaves like one post container.
       *
       * @param {HTMLElement} element - Candidate container.
       * @returns {boolean}
       */
      isLikelyPostContainer_fn = function(element) {
        if (!element || typeof element.querySelectorAll !== "function") {
          return false;
        }
        if (__privateMethod(this, _ThreadsFeedAdapter_instances, containsTimelineChrome_fn).call(this, element)) {
          return false;
        }
        if (__privateMethod(this, _ThreadsFeedAdapter_instances, isDirectChildOfTimelineChromeShell_fn).call(this, element)) {
          return false;
        }
        const uniquePermalinkCount = __privateMethod(this, _ThreadsFeedAdapter_instances, countUniquePostPermalinks_fn).call(this, element);
        if (uniquePermalinkCount === 0 || uniquePermalinkCount > 4) {
          return false;
        }
        if (__privateMethod(this, _ThreadsFeedAdapter_instances, countActionButtons_fn).call(this, element) < 3) {
          return false;
        }
        return __privateMethod(this, _ThreadsFeedAdapter_instances, collectProfileLinks_fn).call(this, element).length > 0;
      };
      /**
       * Validate whether an element behaves like one "Suggested for you" module.
       *
       * @param {HTMLElement} element - Candidate suggestion container.
       * @returns {boolean}
       */
      isLikelySuggestedFollowContainer_fn = function(element) {
        if (!element || typeof element.querySelectorAll !== "function") {
          return false;
        }
        if (__privateMethod(this, _ThreadsFeedAdapter_instances, containsTimelineChrome_fn).call(this, element)) {
          return false;
        }
        const normalizedText = __privateMethod(this, _ThreadsFeedAdapter_instances, normalizeText_fn).call(this, element.textContent || "");
        if (!normalizedText.includes(SUGGESTED_FOR_YOU_TEXT)) {
          return false;
        }
        if (__privateMethod(this, _ThreadsFeedAdapter_instances, countSuggestedForYouMarkers_fn).call(this, element) === 0) {
          return false;
        }
        if (__privateMethod(this, _ThreadsFeedAdapter_instances, countUniquePostPermalinks_fn).call(this, element) !== 0) {
          return false;
        }
        if (__privateMethod(this, _ThreadsFeedAdapter_instances, countActionButtons_fn).call(this, element) > 0) {
          return false;
        }
        const controls = __privateMethod(this, _ThreadsFeedAdapter_instances, countFollowAndCloseControls_fn).call(this, element);
        if (controls.followCount < 2 || controls.closeCount < 2) {
          return false;
        }
        return __privateMethod(this, _ThreadsFeedAdapter_instances, collectProfileLinks_fn).call(this, element).length >= 2;
      };
      /**
       * Reject feed-shell containers that include top-level timeline navigation chrome.
       *
       * @param {HTMLElement} element - Candidate container.
       * @returns {boolean}
       */
      containsTimelineChrome_fn = function(element) {
        return typeof element.querySelector === "function" && Boolean(element.querySelector(TIMELINE_CHROME_LINK_SELECTOR));
      };
      /**
       * Reject feed-body wrappers under timeline tab chrome when only one post is loaded.
       *
       * @param {HTMLElement} element - Candidate container.
       * @returns {boolean}
       */
      isDirectChildOfTimelineChromeShell_fn = function(element) {
        const parentElement = element.parentElement;
        if (!parentElement || typeof parentElement.querySelector !== "function") {
          return false;
        }
        if (!parentElement.querySelector(TIMELINE_CHROME_LINK_SELECTOR)) {
          return false;
        }
        const parentPermalinkCount = parentElement.querySelectorAll(
          'a[href*="/@"][href*="/post/"]'
        ).length;
        return parentPermalinkCount <= 1;
      };
      /**
       * Count distinct post permalinks in one subtree to avoid media-link inflation.
       *
       * @param {HTMLElement} element - Candidate container.
       * @returns {number}
       */
      countUniquePostPermalinks_fn = function(element) {
        const uniquePermalinks = /* @__PURE__ */ new Set();
        const permalinkLinks = element.querySelectorAll('a[href*="/@"][href*="/post/"]');
        for (const permalinkLink of permalinkLinks) {
          const href = String(permalinkLink.getAttribute("href") || "");
          const match = href.match(POST_PERMALINK_PATTERN);
          if (!match || !match[1] || !match[2]) {
            continue;
          }
          uniquePermalinks.add(`${match[1]}/${match[2]}`);
        }
        return uniquePermalinks.size;
      };
      /**
       * Collect canonical permalink anchors for one post row without media-link duplicates.
       *
       * @param {HTMLElement} postContainer - Candidate post container.
       * @returns {HTMLAnchorElement[]}
       */
      collectCanonicalPostPermalinkLinks_fn = function(postContainer) {
        const permalinkLinks = postContainer.querySelectorAll('a[href*="/@"][href*="/post/"]');
        const canonicalLinkMap = /* @__PURE__ */ new Map();
        for (const permalinkLink of permalinkLinks) {
          const href = String(permalinkLink.getAttribute("href") || "");
          const match = href.match(POST_PERMALINK_PATTERN);
          if (!match || !match[1] || !match[2]) {
            continue;
          }
          const canonicalKey = `${match[1].toLowerCase()}/${match[2]}`;
          if (!canonicalLinkMap.has(canonicalKey)) {
            canonicalLinkMap.set(canonicalKey, permalinkLink);
          }
        }
        return Array.from(canonicalLinkMap.values());
      };
      /**
       * Extract unique post handles from canonical post permalink anchors.
       *
       * @param {HTMLAnchorElement[]} permalinkLinks - Canonical post permalink anchors.
       * @returns {string[]}
       */
      extractPostHandlesFromPermalinkLinks_fn = function(permalinkLinks) {
        const uniqueHandles = /* @__PURE__ */ new Set();
        for (const permalinkLink of permalinkLinks) {
          const handle = __privateMethod(this, _ThreadsFeedAdapter_instances, extractHandleFromHref_fn).call(this, String(permalinkLink.getAttribute("href") || ""));
          if (handle) {
            uniqueHandles.add(handle);
          }
        }
        return Array.from(uniqueHandles);
      };
      /**
       * Extract unique post codes from canonical post permalink anchors.
       *
       * @param {HTMLAnchorElement[]} permalinkLinks - Canonical post permalink anchors.
       * @returns {string[]}
       */
      extractPostCodesFromPermalinkLinks_fn = function(permalinkLinks) {
        const uniqueCodes = /* @__PURE__ */ new Set();
        for (const permalinkLink of permalinkLinks) {
          const postCode = __privateMethod(this, _ThreadsFeedAdapter_instances, extractPostCodeFromHref_fn).call(this, String(permalinkLink.getAttribute("href") || ""));
          if (postCode) {
            uniqueCodes.add(postCode);
          }
        }
        return Array.from(uniqueCodes);
      };
      /**
       * Extract normalized trending topics linked to one timeline row.
       *
       * @param {HTMLElement} postContainer - Candidate post container.
       * @returns {string[]}
       */
      extractTrendingTopics_fn = function(postContainer) {
        if (!postContainer || typeof postContainer.querySelectorAll !== "function") {
          return [];
        }
        const topicLinks = postContainer.querySelectorAll(TRENDING_TOPIC_LINK_SELECTOR);
        const normalizedTopics = [];
        const seenTopics = /* @__PURE__ */ new Set();
        for (const topicLink of topicLinks) {
          const topicLabel = __privateMethod(this, _ThreadsFeedAdapter_instances, resolveTrendingTopicFromLink_fn).call(this, topicLink);
          if (!topicLabel || seenTopics.has(topicLabel)) {
            continue;
          }
          normalizedTopics.push(topicLabel);
          seenTopics.add(topicLabel);
        }
        return normalizedTopics;
      };
      /**
       * Resolve one trending-topic label from timely-topic link href and text.
       *
       * @param {HTMLAnchorElement} topicLink - Candidate trending-topic anchor.
       * @returns {string}
       */
      resolveTrendingTopicFromLink_fn = function(topicLink) {
        if (!topicLink) {
          return "";
        }
        const href = String(topicLink.getAttribute("href") || "");
        const hrefTopic = __privateMethod(this, _ThreadsFeedAdapter_instances, extractTopicFromHref_fn).call(this, href);
        if (hrefTopic) {
          return hrefTopic;
        }
        const normalizedText = String(topicLink.textContent || "").trim().replace(/\s+/g, " ").replace(HIGHLIGHT_PREFIX_PATTERN, "").replace(TRENDING_PREFIX_PATTERN, "").trim().toLowerCase();
        return normalizedText;
      };
      /**
       * Extract timely-topic query value from one URL-like href.
       *
       * @param {string} href - Candidate topic href.
       * @returns {string}
       */
      extractTopicFromHref_fn = function(href) {
        if (!href) {
          return "";
        }
        try {
          const normalizedUrl = new URL(href, "https://www.threads.com");
          const topicValue = String(normalizedUrl.searchParams.get("q") || "").trim().replace(/\s+/g, " ").toLowerCase();
          return topicValue;
        } catch (_error) {
          return "";
        }
      };
      /**
       * Extract verified handles represented by canonical permalink anchors in one row.
       *
       * @param {HTMLElement} postContainer - Candidate post container.
       * @param {HTMLAnchorElement[]} permalinkLinks - Canonical post permalink anchors.
       * @returns {string[]}
       */
      extractVerifiedPostHandlesFromPermalinkLinks_fn = function(postContainer, permalinkLinks) {
        const verifiedHandles = /* @__PURE__ */ new Set();
        for (const permalinkLink of permalinkLinks) {
          const handle = __privateMethod(this, _ThreadsFeedAdapter_instances, extractHandleFromHref_fn).call(this, String(permalinkLink.getAttribute("href") || ""));
          if (!handle) {
            continue;
          }
          if (__privateMethod(this, _ThreadsFeedAdapter_instances, detectVerifiedBadgeNearPermalinkLink_fn).call(this, postContainer, permalinkLink)) {
            verifiedHandles.add(handle);
          }
        }
        return Array.from(verifiedHandles);
      };
      /**
       * Count distinct action controls found inside one candidate post container.
       *
       * @param {HTMLElement} postContainer - Candidate post container.
       * @returns {number}
       */
      countActionButtons_fn = function(postContainer) {
        const actionKinds = /* @__PURE__ */ new Set();
        const actionButtons = postContainer.querySelectorAll('button, [role="button"]');
        for (const actionButton of actionButtons) {
          const actionLabel = String(
            actionButton.getAttribute("aria-label") || actionButton.textContent || ""
          ).trim().replace(/\s+/g, " ");
          for (const actionPrefix of POST_ACTION_PREFIXES) {
            if (actionLabel.startsWith(actionPrefix)) {
              actionKinds.add(actionPrefix);
            }
          }
        }
        return actionKinds.size;
      };
      /**
       * Count exact "Suggested for you" heading markers inside one subtree.
       *
       * @param {HTMLElement} element - Candidate container.
       * @returns {number}
       */
      countSuggestedForYouMarkers_fn = function(element) {
        const markerElements = element.querySelectorAll(SUGGESTED_MARKER_SELECTOR);
        let count = 0;
        for (const markerElement of markerElements) {
          if (__privateMethod(this, _ThreadsFeedAdapter_instances, isExactSuggestedForYouText_fn).call(this, markerElement.textContent)) {
            count += 1;
          }
        }
        return count;
      };
      /**
       * Count follow and close controls used by suggestion modules.
       *
       * @param {HTMLElement} element - Candidate container.
       * @returns {{ followCount: number, closeCount: number }}
       */
      countFollowAndCloseControls_fn = function(element) {
        const controls = element.querySelectorAll(CONTROL_SELECTOR);
        let followCount = 0;
        let closeCount = 0;
        for (const control of controls) {
          const textLabel = __privateMethod(this, _ThreadsFeedAdapter_instances, normalizeText_fn).call(this, control.textContent || "");
          const ariaLabel = __privateMethod(this, _ThreadsFeedAdapter_instances, normalizeText_fn).call(this, control.getAttribute("aria-label") || "");
          if (textLabel === "follow" || ariaLabel === "follow") {
            followCount += 1;
          }
          if (textLabel === "close" || ariaLabel === "close") {
            closeCount += 1;
          }
        }
        return {
          followCount,
          closeCount
        };
      };
      /**
       * Identify profile links likely to represent account handles.
       *
       * @param {HTMLElement} postContainer - Candidate post container.
       * @returns {HTMLAnchorElement[]}
       */
      collectProfileLinks_fn = function(postContainer) {
        const profileLinks = [];
        const links = postContainer.querySelectorAll('a[href*="/@"]');
        for (const link of links) {
          const href = String(link.getAttribute("href") || "");
          if (href.includes("/post/")) {
            continue;
          }
          if (__privateMethod(this, _ThreadsFeedAdapter_instances, extractHandleFromHref_fn).call(this, href)) {
            profileLinks.push(link);
          }
        }
        return profileLinks;
      };
      /**
       * Extract canonical handle from one URL-like href value.
       *
       * @param {string} href - Candidate profile or permalink href.
       * @returns {string}
       */
      extractHandleFromHref_fn = function(href) {
        const match = href.match(PROFILE_LINK_PATTERN);
        return match && match[1] ? match[1] : "";
      };
      /**
       * Compare candidate text against exact suggested-follow heading content.
       *
       * @param {unknown} value - Candidate text value.
       * @returns {boolean}
       */
      isExactSuggestedForYouText_fn = function(value) {
        return __privateMethod(this, _ThreadsFeedAdapter_instances, normalizeText_fn).call(this, value) === SUGGESTED_FOR_YOU_TEXT;
      };
      /**
       * Normalize free-form text for consistent case-insensitive matching.
       *
       * @param {unknown} value - Candidate text value.
       * @returns {string}
       */
      normalizeText_fn = function(value) {
        return String(value === null || value === void 0 ? "" : value).trim().toLowerCase().replace(/\s+/g, " ");
      };
      /**
       * Validate whether href matches post permalink pattern.
       *
       * @param {string} href - Candidate href.
       * @returns {boolean}
       */
      isPostPermalink_fn = function(href) {
        return POST_PERMALINK_PATTERN.test(href);
      };
      /**
       * Extract post code segment from canonical post permalink.
       *
       * @param {string} href - Candidate post permalink.
       * @returns {string}
       */
      extractPostCodeFromHref_fn = function(href) {
        const match = href.match(POST_PERMALINK_PATTERN);
        return match && match[2] ? match[2] : "";
      };
      /**
       * Extract canonical author handle from permalink or profile links.
       *
       * @param {HTMLElement} postContainer - Threads post container.
       * @param {HTMLAnchorElement} primaryPermalinkLink - Canonical permalink source.
       * @param {string[]} [postHandles=[]] - Candidate handles extracted from post permalinks.
       * @returns {string}
       */
      extractAuthorHandle_fn = function(postContainer, primaryPermalinkLink, postHandles = []) {
        const permalinkHandle = __privateMethod(this, _ThreadsFeedAdapter_instances, extractHandleFromHref_fn).call(this, String(primaryPermalinkLink ? primaryPermalinkLink.getAttribute("href") || "" : ""));
        if (permalinkHandle) {
          return permalinkHandle;
        }
        const profileLinks = __privateMethod(this, _ThreadsFeedAdapter_instances, collectProfileLinks_fn).call(this, postContainer);
        for (const profileLink of profileLinks) {
          const handle = __privateMethod(this, _ThreadsFeedAdapter_instances, extractHandleFromHref_fn).call(this, String(profileLink.getAttribute("href") || ""));
          if (handle) {
            return handle;
          }
        }
        if (Array.isArray(postHandles) && postHandles.length > 0) {
          return String(postHandles[0] || "");
        }
        return "";
      };
      /**
       * Extract display name from profile link text nearest to author handle.
       *
       * @param {HTMLElement} postContainer - Threads post container.
       * @param {string} authorHandle - Canonical author handle.
       * @returns {string}
       */
      extractDisplayName_fn = function(postContainer, authorHandle) {
        const profileLinks = __privateMethod(this, _ThreadsFeedAdapter_instances, collectProfileLinks_fn).call(this, postContainer);
        for (const profileLink of profileLinks) {
          const linkHandle = __privateMethod(this, _ThreadsFeedAdapter_instances, extractHandleFromHref_fn).call(this, String(profileLink.getAttribute("href") || ""));
          if (authorHandle && linkHandle && linkHandle !== authorHandle) {
            continue;
          }
          const textValue = String(profileLink.textContent || "").trim();
          if (textValue) {
            return textValue;
          }
        }
        return "";
      };
      /**
       * Extract post body text used by phrase and regex filters.
       *
       * @param {HTMLElement} postContainer - Threads post container.
       * @returns {string}
       */
      extractPostText_fn = function(postContainer) {
        return String(postContainer.innerText || postContainer.textContent || "").trim();
      };
      /**
       * Detect verified badge in author neighborhood using robust badge signatures.
       *
       * @param {HTMLElement} postContainer - Threads post container.
       * @param {string} authorHandle - Canonical author handle.
       * @returns {boolean}
       */
      detectVerifiedBadge_fn = function(postContainer, authorHandle) {
        const authorProfileLink = __privateMethod(this, _ThreadsFeedAdapter_instances, findAuthorProfileLink_fn).call(this, postContainer, authorHandle);
        if (authorProfileLink) {
          return __privateMethod(this, _ThreadsFeedAdapter_instances, detectVerifiedBadgeNearPermalinkLink_fn).call(this, postContainer, authorProfileLink);
        }
        return __privateMethod(this, _ThreadsFeedAdapter_instances, containsVerifiedBadge_fn).call(this, postContainer);
      };
      /**
       * Detect verified badge in one permalink/header neighborhood without crossing feed-level shells.
       *
       * @param {HTMLElement} postContainer - Threads post container.
       * @param {HTMLElement} permalinkOrProfileLink - Anchor near candidate author identity.
       * @returns {boolean}
       */
      detectVerifiedBadgeNearPermalinkLink_fn = function(postContainer, permalinkOrProfileLink) {
        let currentElement = permalinkOrProfileLink;
        let depth = 0;
        while (currentElement && depth <= 5) {
          const isFeedLevelContainer = __privateMethod(this, _ThreadsFeedAdapter_instances, countActionButtons_fn).call(this, currentElement) >= 3;
          if (!isFeedLevelContainer && __privateMethod(this, _ThreadsFeedAdapter_instances, containsVerifiedBadge_fn).call(this, currentElement)) {
            return true;
          }
          if (currentElement === postContainer) {
            break;
          }
          currentElement = currentElement.parentElement;
          depth += 1;
        }
        return false;
      };
      /**
       * Locate profile link corresponding to canonical author handle.
       *
       * @param {HTMLElement} postContainer - Threads post container.
       * @param {string} authorHandle - Canonical author handle.
       * @returns {HTMLAnchorElement|null}
       */
      findAuthorProfileLink_fn = function(postContainer, authorHandle) {
        const profileLinks = __privateMethod(this, _ThreadsFeedAdapter_instances, collectProfileLinks_fn).call(this, postContainer);
        if (profileLinks.length === 0) {
          return null;
        }
        const preferredTextLink = (candidateLinks) => {
          for (const candidateLink of candidateLinks) {
            if (String(candidateLink.textContent || "").trim()) {
              return candidateLink;
            }
          }
          return candidateLinks[0];
        };
        if (!authorHandle) {
          return preferredTextLink(profileLinks);
        }
        const matchingLinks = profileLinks.filter((profileLink) => {
          const href = String(profileLink.getAttribute("href") || "");
          return __privateMethod(this, _ThreadsFeedAdapter_instances, extractHandleFromHref_fn).call(this, href) === authorHandle;
        });
        if (matchingLinks.length > 0) {
          return preferredTextLink(matchingLinks);
        }
        return preferredTextLink(profileLinks);
      };
      /**
       * Apply layered verified badge detection inside one DOM subtree.
       *
       * @param {HTMLElement} rootElement - Search root.
       * @returns {boolean}
       */
      containsVerifiedBadge_fn = function(rootElement) {
        return containsVerifiedBadge(rootElement);
      };
      /**
       * Detect blue-check signal using same accessibility hints until richer selectors exist.
       *
       * @param {HTMLElement} postContainer - Threads post container.
       * @param {string} authorHandle - Canonical author handle.
       * @returns {boolean}
       */
      detectBlueCheck_fn = function(postContainer, authorHandle) {
        return __privateMethod(this, _ThreadsFeedAdapter_instances, detectVerifiedBadge_fn).call(this, postContainer, authorHandle);
      };
      module.exports = {
        ThreadsFeedAdapter
      };
    }
  });

  // src/observability/logger.js
  var require_logger = __commonJS({
    "src/observability/logger.js"(exports, module) {
      var LOG_LEVELS = Object.freeze({
        debug: 10,
        info: 20,
        warn: 30,
        error: 40,
        silent: 50
      });
      var _Logger_instances, normalizeLevel_fn, shouldLog_fn, write_fn;
      var Logger = class {
        /**
         * Initialize logger dependencies and normalize configuration.
         *
         * @param {{ namespace?: string, level?: string, writer?: Console }} [options] - Logger options.
         */
        constructor(options = {}) {
          __privateAdd(this, _Logger_instances);
          const { namespace = "btf", level = "warn", writer = console } = options;
          this.namespace = namespace;
          this.writer = writer;
          this.minimumLevelName = __privateMethod(this, _Logger_instances, normalizeLevel_fn).call(this, level);
        }
        /**
         * Update minimum level so diagnostics can be tuned at runtime.
         *
         * @param {string} level - Desired minimum level.
         */
        setLevel(level) {
          this.minimumLevelName = __privateMethod(this, _Logger_instances, normalizeLevel_fn).call(this, level);
        }
        /**
         * Emit debug-level diagnostics for detailed development traces.
         *
         * @param {string} message - Log message text.
         * @param {Record<string, unknown>} [context] - Optional structured context.
         */
        debug(message, context) {
          __privateMethod(this, _Logger_instances, write_fn).call(this, "debug", message, context);
        }
        /**
         * Emit info-level diagnostics for lifecycle milestones.
         *
         * @param {string} message - Log message text.
         * @param {Record<string, unknown>} [context] - Optional structured context.
         */
        info(message, context) {
          __privateMethod(this, _Logger_instances, write_fn).call(this, "info", message, context);
        }
        /**
         * Emit warn-level diagnostics for recoverable anomalies.
         *
         * @param {string} message - Log message text.
         * @param {Record<string, unknown>} [context] - Optional structured context.
         */
        warn(message, context) {
          __privateMethod(this, _Logger_instances, write_fn).call(this, "warn", message, context);
        }
        /**
         * Emit error-level diagnostics for failed operations.
         *
         * @param {string} message - Log message text.
         * @param {Record<string, unknown>} [context] - Optional structured context.
         */
        error(message, context) {
          __privateMethod(this, _Logger_instances, write_fn).call(this, "error", message, context);
        }
      };
      _Logger_instances = new WeakSet();
      /**
       * Normalize level input to a known level token.
       *
       * @param {string} level - Candidate level.
       * @returns {string}
       */
      normalizeLevel_fn = function(level) {
        const candidate = String(level || "").toLowerCase().trim();
        return Object.prototype.hasOwnProperty.call(LOG_LEVELS, candidate) ? candidate : "warn";
      };
      /**
       * Decide whether current configuration permits a level to be written.
       *
       * @param {string} level - Candidate level.
       * @returns {boolean}
       */
      shouldLog_fn = function(level) {
        return LOG_LEVELS[level] >= LOG_LEVELS[this.minimumLevelName];
      };
      /**
       * Route logs to the selected writer while preserving structured context.
       *
       * @param {'debug'|'info'|'warn'|'error'} level - Severity level.
       * @param {string} message - Log message text.
       * @param {Record<string, unknown>} [context] - Optional structured context.
       */
      write_fn = function(level, message, context) {
        if (!__privateMethod(this, _Logger_instances, shouldLog_fn).call(this, level)) {
          return;
        }
        const prefix = `[${this.namespace}] ${level.toUpperCase()}:`;
        const method = level === "debug" ? "log" : level;
        const writerMethod = this.writer && typeof this.writer[method] === "function" ? this.writer[method] : console.log;
        if (context && Object.keys(context).length > 0) {
          writerMethod.call(this.writer, prefix, message, context);
          return;
        }
        writerMethod.call(this.writer, prefix, message);
      };
      module.exports = {
        LOG_LEVELS,
        Logger
      };
    }
  });

  // src/filters/rules/ai-label-rule.js
  var require_ai_label_rule = __commonJS({
    "src/filters/rules/ai-label-rule.js"(exports, module) {
      var AiLabelRule = class {
        /**
         * Evaluate AI-label filters against one content model.
         *
         * @param {import('../../core/content-model').ContentModel} contentModel - Canonical content model.
         * @param {object} settings - Normalized settings.
         * @returns {{
         *   blocked: boolean,
         *   reasons: string[],
         *   matches: Array<{ kind: string, mode: string, pattern: string }>
         * }}
         */
        evaluate(contentModel, settings) {
          const aiLabelSettings = settings && settings.filters && settings.filters.aiLabel && typeof settings.filters.aiLabel === "object" ? settings.filters.aiLabel : null;
          if (!aiLabelSettings || aiLabelSettings.enabled !== true) {
            return { blocked: false, reasons: [], matches: [] };
          }
          if (!contentModel || contentModel.hasAiLabel !== true) {
            return { blocked: false, reasons: [], matches: [] };
          }
          const detectionMethods = Array.isArray(contentModel.aiDetectionMethods) ? Array.from(
            new Set(
              contentModel.aiDetectionMethods.map(
                (method) => String(method || "").trim().toUpperCase()
              ).filter(Boolean)
            )
          ) : [];
          if (detectionMethods.length === 0) {
            return {
              blocked: true,
              reasons: ["ai-label:present"],
              matches: [{ kind: "ai-label", mode: "metadata", pattern: "present" }]
            };
          }
          return {
            blocked: true,
            reasons: detectionMethods.map((method) => `ai-label:${method.toLowerCase()}`),
            matches: detectionMethods.map((method) => ({
              kind: "ai-label",
              mode: "detection-method",
              pattern: method
            }))
          };
        }
      };
      module.exports = {
        AiLabelRule
      };
    }
  });

  // src/filters/rules/phrase-rule.js
  var require_phrase_rule = __commonJS({
    "src/filters/rules/phrase-rule.js"(exports, module) {
      var _PhraseRule_instances, resolvePhraseEntries_fn;
      var PhraseRule = class {
        /**
         * Initialize optional logger dependency for diagnostics.
         *
         * @param {{ logger?: { warn: Function } }} [options] - Rule options.
         */
        constructor(options = {}) {
          __privateAdd(this, _PhraseRule_instances);
          const { logger = { warn: () => {
          } } } = options;
          this.logger = logger;
        }
        /**
         * Evaluate phrase and regex filters against one content model.
         *
         * @param {import('../../core/content-model').ContentModel} contentModel - Canonical content model.
         * @param {object} settings - Normalized settings.
         * @returns {{ blocked: boolean, reasons: string[] }}
         */
        evaluate(contentModel, settings) {
          if (!settings.filters.phrase.enabled) {
            return { blocked: false, reasons: [], matches: [] };
          }
          const entries = __privateMethod(this, _PhraseRule_instances, resolvePhraseEntries_fn).call(this, settings);
          if (entries.length === 0) {
            return { blocked: false, reasons: [], matches: [] };
          }
          const text = String(contentModel.searchText || "");
          const caseSensitive = settings.filters.phrase.caseSensitive;
          const regexFlags = caseSensitive ? "" : "i";
          const sourceText = caseSensitive ? text : text.toLowerCase();
          for (const entry of entries) {
            const pattern = String(entry.pattern || "").trim();
            if (!pattern) {
              continue;
            }
            if (entry.isRegex) {
              try {
                const regex = new RegExp(pattern, regexFlags);
                if (regex.test(text)) {
                  return {
                    blocked: true,
                    reasons: [`regex:${pattern}`],
                    matches: [{ kind: "phrase", mode: "regex", pattern }]
                  };
                }
              } catch (error) {
                this.logger.warn("Skipped invalid regex pattern.", {
                  pattern,
                  error: error instanceof Error ? error.message : String(error)
                });
              }
              continue;
            }
            const candidatePattern = caseSensitive ? pattern : String(pattern).toLowerCase();
            if (candidatePattern && sourceText.includes(candidatePattern)) {
              return {
                blocked: true,
                reasons: [`phrase:${candidatePattern}`],
                matches: [{ kind: "phrase", mode: "text", pattern }]
              };
            }
          }
          return { blocked: false, reasons: [], matches: [] };
        }
      };
      _PhraseRule_instances = new WeakSet();
      /**
       * Resolve phrase entries from normalized settings and legacy shape.
       *
       * @param {object} settings - Normalized settings.
       * @returns {Array<{ pattern: string, isRegex: boolean }>}
       */
      resolvePhraseEntries_fn = function(settings) {
        const phraseSettings = settings && settings.filters && settings.filters.phrase ? settings.filters.phrase : {};
        if (Array.isArray(phraseSettings.entries)) {
          return phraseSettings.entries.map((entry) => {
            const candidate = entry && typeof entry === "object" ? (
              /** @type {Record<string, unknown>} */
              entry
            ) : null;
            const pattern = candidate === null ? "" : String(
              candidate.pattern === void 0 || candidate.pattern === null ? "" : candidate.pattern
            ).trim();
            if (!pattern) {
              return null;
            }
            return {
              pattern,
              isRegex: Boolean(candidate.isRegex)
            };
          }).filter(Boolean);
        }
        const patterns = Array.isArray(phraseSettings.patterns) ? phraseSettings.patterns : [];
        const useRegex = phraseSettings.useRegex === true;
        return patterns.map((pattern) => String(pattern === null || pattern === void 0 ? "" : pattern).trim()).filter(Boolean).map((pattern) => ({ pattern, isRegex: useRegex }));
      };
      module.exports = {
        PhraseRule
      };
    }
  });

  // src/filters/rules/suggested-follow-rule.js
  var require_suggested_follow_rule = __commonJS({
    "src/filters/rules/suggested-follow-rule.js"(exports, module) {
      var SuggestedFollowRule = class {
        /**
         * Evaluate suggested-follow filter against one content model.
         *
         * @param {import('../../core/content-model').ContentModel} contentModel - Canonical content model.
         * @param {object} settings - Normalized settings.
         * @returns {{ blocked: boolean, reasons: string[] }}
         */
        evaluate(contentModel, settings) {
          const suggestedFollowSettings = settings && settings.filters && settings.filters.suggestedFollow && typeof settings.filters.suggestedFollow === "object" ? settings.filters.suggestedFollow : null;
          if (!suggestedFollowSettings || suggestedFollowSettings.enabled !== true) {
            return { blocked: false, reasons: [] };
          }
          if (!contentModel || contentModel.isSuggestedFollow !== true) {
            return { blocked: false, reasons: [] };
          }
          return {
            blocked: true,
            reasons: ["suggested-follow:module"]
          };
        }
      };
      module.exports = {
        SuggestedFollowRule
      };
    }
  });

  // src/filters/rules/trending-rule.js
  var require_trending_rule = __commonJS({
    "src/filters/rules/trending-rule.js"(exports, module) {
      var { normalizeTopic } = require_settings_schema();
      var TrendingRule = class {
        /**
         * Evaluate trending filters against one content model.
         *
         * @param {import('../../core/content-model').ContentModel} contentModel - Canonical content model.
         * @param {object} settings - Normalized settings.
         * @returns {{
         *   blocked: boolean,
         *   reasons: string[],
         *   matches?: Array<{ kind: string, mode: string, pattern: string }>
         * }}
         */
        evaluate(contentModel, settings) {
          const trendingSettings = settings && settings.filters && settings.filters.trending && typeof settings.filters.trending === "object" ? settings.filters.trending : null;
          if (!trendingSettings) {
            return { blocked: false, reasons: [] };
          }
          if (!contentModel || contentModel.isTrending !== true) {
            return { blocked: false, reasons: [] };
          }
          const rowTopics = Array.isArray(contentModel.trendingTopics) ? contentModel.trendingTopics.map((topic) => normalizeTopic(topic)).filter(Boolean) : [];
          if (rowTopics.length === 0) {
            return { blocked: false, reasons: [] };
          }
          if (trendingSettings.hideAll === true) {
            return {
              blocked: true,
              reasons: ["trending:any"],
              matches: rowTopics.map((topic) => ({
                kind: "trending",
                mode: "topic",
                pattern: topic
              }))
            };
          }
          const blockedTopics = new Set(
            Array.isArray(trendingSettings.blockedTopics) ? trendingSettings.blockedTopics.map((topic) => normalizeTopic(topic)).filter(Boolean) : []
          );
          if (blockedTopics.size === 0) {
            return { blocked: false, reasons: [] };
          }
          const matchedTopics = rowTopics.filter((topic) => blockedTopics.has(topic));
          if (matchedTopics.length === 0) {
            return { blocked: false, reasons: [] };
          }
          return {
            blocked: true,
            reasons: matchedTopics.map((topic) => `trending:${topic}`),
            matches: matchedTopics.map((topic) => ({
              kind: "trending",
              mode: "topic",
              pattern: topic
            }))
          };
        }
      };
      module.exports = {
        TrendingRule
      };
    }
  });

  // src/filters/rules/username-rule.js
  var require_username_rule = __commonJS({
    "src/filters/rules/username-rule.js"(exports, module) {
      var { normalizeHandle } = require_settings_schema();
      var UsernameRule = class {
        /**
         * Evaluate username filter policy and return deterministic decision data.
         *
         * @param {import('../../core/content-model').ContentModel} contentModel - Canonical content model.
         * @param {object} settings - Normalized settings.
         * @returns {{
         *   blocked: boolean,
         *   reasons: string[],
         *   matches: Array<{ kind: string, mode: string, pattern: string }>
         * }}
         */
        evaluate(contentModel, settings) {
          if (!settings.filters.username.enabled) {
            return { blocked: false, reasons: [], matches: [] };
          }
          const blockedHandles = new Set(
            settings.filters.username.blockedHandles.map((handle) => normalizeHandle(handle))
          );
          const candidateHandles = Array.isArray(contentModel.postHandles) ? contentModel.postHandles.map((handle) => normalizeHandle(handle)).filter(Boolean) : [];
          const evaluatedHandles = candidateHandles.length > 0 ? candidateHandles : [normalizeHandle(contentModel.authorHandle)].filter(Boolean);
          const matchedHandles = evaluatedHandles.filter((handle) => blockedHandles.has(handle));
          if (matchedHandles.length === 0) {
            return { blocked: false, reasons: [], matches: [] };
          }
          return {
            blocked: true,
            reasons: matchedHandles.map((matchedHandle) => `username:${matchedHandle}`),
            matches: matchedHandles.map((matchedHandle) => ({
              kind: "username",
              mode: "handle",
              pattern: matchedHandle
            }))
          };
        }
      };
      module.exports = {
        UsernameRule
      };
    }
  });

  // src/filters/rules/verified-rule.js
  var require_verified_rule = __commonJS({
    "src/filters/rules/verified-rule.js"(exports, module) {
      var { normalizeHandle } = require_settings_schema();
      var VerifiedRule = class {
        /**
         * Evaluate verified and blue-check filters against one content model.
         *
         * @param {import('../../core/content-model').ContentModel} contentModel - Canonical content model.
         * @param {object} settings - Normalized settings.
         * @returns {{ blocked: boolean, reasons: string[] }}
         */
        evaluate(contentModel, settings) {
          if (!settings.filters.verified.enabled) {
            return { blocked: false, reasons: [] };
          }
          const whitelist = new Set(
            settings.filters.verified.whitelistHandles.map((handle) => normalizeHandle(handle))
          );
          const verifiedPostHandles = Array.isArray(contentModel.verifiedPostHandles) ? contentModel.verifiedPostHandles.map((handle) => normalizeHandle(handle)).filter(Boolean) : [];
          const nonWhitelistedVerifiedHandles = verifiedPostHandles.filter(
            (verifiedHandle) => !whitelist.has(verifiedHandle)
          );
          const reasons = [];
          if (nonWhitelistedVerifiedHandles.length > 0) {
            if (settings.filters.verified.hideVerified) {
              reasons.push("verified:badge");
            }
            if (settings.filters.verified.hideBlueCheck) {
              reasons.push("verified:blue-check");
            }
            return {
              blocked: reasons.length > 0,
              reasons
            };
          }
          const normalizedHandle = normalizeHandle(contentModel.authorHandle);
          if (normalizedHandle && whitelist.has(normalizedHandle)) {
            return { blocked: false, reasons: [] };
          }
          if (settings.filters.verified.hideVerified && contentModel.isVerified) {
            reasons.push("verified:badge");
          }
          if (settings.filters.verified.hideBlueCheck && contentModel.hasBlueCheck) {
            reasons.push("verified:blue-check");
          }
          return {
            blocked: reasons.length > 0,
            reasons
          };
        }
      };
      module.exports = {
        VerifiedRule
      };
    }
  });

  // src/filters/rule-engine.js
  var require_rule_engine = __commonJS({
    "src/filters/rule-engine.js"(exports, module) {
      var { Logger } = require_logger();
      var { AiLabelRule } = require_ai_label_rule();
      var { PhraseRule } = require_phrase_rule();
      var { SuggestedFollowRule } = require_suggested_follow_rule();
      var { TrendingRule } = require_trending_rule();
      var { UsernameRule } = require_username_rule();
      var { VerifiedRule } = require_verified_rule();
      var FilterRuleEngine = class {
        /**
         * Initialize rule list and logger dependency.
         *
         * @param {{
         *   rules?: Array<{ evaluate: Function }>,
         *   logger?: Logger
         * }} [options] - Engine options.
         */
        constructor(options = {}) {
          const { rules = null, logger = new Logger({ namespace: "rule-engine", level: "warn" }) } = options;
          this.logger = logger;
          this.rules = Array.isArray(rules) && rules.length > 0 ? rules : [
            new UsernameRule(),
            new VerifiedRule(),
            new AiLabelRule(),
            new SuggestedFollowRule(),
            new TrendingRule(),
            new PhraseRule({ logger })
          ];
        }
        /**
         * Evaluate one content model against all active rules with error isolation.
         *
         * @param {import('../core/content-model').ContentModel} contentModel - Canonical content model.
         * @param {object} settings - Normalized settings.
         * @returns {{
         *   blocked: boolean,
         *   reasons: string[],
         *   matches: Array<{ kind: string, mode: string, pattern: string }>
         * }}
         */
        evaluate(contentModel, settings) {
          if (!settings || !settings.filters || settings.filters.enabled === false) {
            return { blocked: false, reasons: [], matches: [] };
          }
          const reasons = [];
          const matches = [];
          for (const rule of this.rules) {
            try {
              const result = rule.evaluate(contentModel, settings);
              if (result && result.blocked && Array.isArray(result.reasons)) {
                reasons.push(...result.reasons);
              }
              if (result && Array.isArray(result.matches)) {
                matches.push(...result.matches);
              }
            } catch (error) {
              this.logger.error("Rule evaluation failed.", {
                rule: rule && rule.constructor ? rule.constructor.name : "UnknownRule",
                error: error instanceof Error ? error.message : String(error)
              });
            }
          }
          return {
            blocked: reasons.length > 0,
            reasons,
            matches
          };
        }
      };
      module.exports = {
        FilterRuleEngine
      };
    }
  });

  // src/signals/not-interested-client.js
  var require_not_interested_client = __commonJS({
    "src/signals/not-interested-client.js"(exports, module) {
      var HIDE_POST_MUTATION_DOC_ID = "24885800151042190";
      var HIDE_POST_FRIENDLY_NAME = "useBarcelonaHidePostMutationHidePostMutation";
      var HIDE_POST_ROOT_FIELD_NAME = "xdt_text_app_send_negative_media_ranking_signal";
      var REQUIRED_CONTEXT_FIELDS = ["av", "fb_dtsg", "jazoest", "lsd"];
      var _NotInterestedClient_instances, resolveEndpointUrl_fn, buildMutationFormFields_fn, buildMutationHeaders_fn, readCookieValue_fn, nextRequestSequence_fn;
      var NotInterestedClient = class {
        /**
         * Initialize mutation dependencies and request sequence state.
         *
         * @param {{
         *   networkObserver: { getRequestContext: Function },
         *   logger?: { debug: Function, warn: Function }
         * }} options - Client dependencies.
         */
        constructor(options = {}) {
          __privateAdd(this, _NotInterestedClient_instances);
          const { networkObserver, logger = { debug: () => {
          }, warn: () => {
          } } } = options;
          this.networkObserver = networkObserver;
          this.logger = logger;
          this.requestSequence = 0;
        }
        /**
         * Send one mutation request for a target post.
         *
         * @param {{
         *   viewerPk: string,
         *   mediaPk: string,
         *   rankingInfoToken: string,
         *   containerModule?: string
         * }} options - Mutation input.
         * @returns {Promise<{ ok: boolean, statusCode: number, reason: string }>}
         */
        async sendNotInterested(options) {
          const {
            viewerPk,
            mediaPk,
            rankingInfoToken,
            containerModule = "ig_text_feed_timeline"
          } = options;
          if (!viewerPk || !mediaPk || !rankingInfoToken) {
            return { ok: false, statusCode: 0, reason: "missing-required-input" };
          }
          const context = this.networkObserver.getRequestContext();
          const formFields = __privateMethod(this, _NotInterestedClient_instances, buildMutationFormFields_fn).call(this, context.formFields, {
            viewerPk,
            mediaPk,
            rankingInfoToken,
            containerModule
          });
          const missingContextField = REQUIRED_CONTEXT_FIELDS.find((fieldName) => !formFields[fieldName]);
          if (missingContextField) {
            return { ok: false, statusCode: 0, reason: `missing-context:${missingContextField}` };
          }
          const endpoint = __privateMethod(this, _NotInterestedClient_instances, resolveEndpointUrl_fn).call(this);
          const mutationHeaders = __privateMethod(this, _NotInterestedClient_instances, buildMutationHeaders_fn).call(this, context.headers, formFields);
          const body = new URLSearchParams(formFields).toString();
          let response;
          try {
            response = await fetch(endpoint, {
              method: "POST",
              headers: mutationHeaders,
              body,
              credentials: "include"
            });
          } catch (_error) {
            return { ok: false, statusCode: 0, reason: "network-error" };
          }
          let responsePayload = null;
          try {
            responsePayload = await response.json();
          } catch (_error) {
          }
          const isOkStatus = response.ok;
          const hasGraphqlErrors = responsePayload && typeof responsePayload === "object" && (Boolean(responsePayload.error) || Array.isArray(responsePayload.errors) && responsePayload.errors.length > 0);
          const isOkPayload = responsePayload && typeof responsePayload === "object" && (responsePayload.status === "ok" || !hasGraphqlErrors);
          if (isOkStatus && isOkPayload) {
            this.logger.debug("Sent not-interested mutation successfully.", { mediaPk });
            return { ok: true, statusCode: response.status, reason: "ok" };
          }
          return {
            ok: false,
            statusCode: response.status || 0,
            reason: isOkStatus ? "invalid-response" : "request-failed"
          };
        }
      };
      _NotInterestedClient_instances = new WeakSet();
      /**
       * Resolve mutation endpoint URL for the current host context.
       *
       * @returns {string}
       */
      resolveEndpointUrl_fn = function() {
        if (typeof location !== "undefined" && location.origin) {
          return `${location.origin}/graphql/query`;
        }
        return "https://www.threads.com/graphql/query";
      };
      /**
       * Build mutation form fields from observed GraphQL request context.
       *
       * @param {Record<string, string>} contextFormFields - Observed form field baseline.
       * @param {{
       *   viewerPk: string,
       *   mediaPk: string,
       *   rankingInfoToken: string,
       *   containerModule: string
       * }} input - Mutation input.
       * @returns {Record<string, string>}
       */
      buildMutationFormFields_fn = function(contextFormFields, input) {
        const mutationFormFields = {
          ...contextFormFields,
          fb_api_caller_class: "RelayModern",
          fb_api_req_friendly_name: HIDE_POST_FRIENDLY_NAME,
          doc_id: HIDE_POST_MUTATION_DOC_ID,
          server_timestamps: "true",
          __req: __privateMethod(this, _NotInterestedClient_instances, nextRequestSequence_fn).call(this),
          variables: JSON.stringify({
            a_pk: input.viewerPk,
            m_pk: input.mediaPk,
            container_module: input.containerModule,
            ranking_info_token: input.rankingInfoToken,
            barcelona_source_quote_post_id: null,
            barcelona_source_reply_post_id: null
          })
        };
        if (!mutationFormFields.__user) {
          mutationFormFields.__user = "0";
        }
        if (!mutationFormFields.__a) {
          mutationFormFields.__a = "1";
        }
        if (!mutationFormFields.dpr) {
          mutationFormFields.dpr = typeof devicePixelRatio === "number" && devicePixelRatio > 0 ? String(devicePixelRatio) : "1";
        }
        return mutationFormFields;
      };
      /**
       * Build request headers for hide-post mutation dispatch.
       *
       * @param {Record<string, string>} contextHeaders - Observed request headers.
       * @param {Record<string, string>} mutationFormFields - Mutation form fields.
       * @returns {Record<string, string>}
       */
      buildMutationHeaders_fn = function(contextHeaders, mutationFormFields) {
        const csrfToken = __privateMethod(this, _NotInterestedClient_instances, readCookieValue_fn).call(this, "csrftoken");
        const mutationHeaders = {
          "content-type": "application/x-www-form-urlencoded",
          "x-fb-friendly-name": HIDE_POST_FRIENDLY_NAME,
          "x-root-field-name": HIDE_POST_ROOT_FIELD_NAME,
          "x-fb-lsd": mutationFormFields.lsd || contextHeaders["x-fb-lsd"] || "",
          "x-csrftoken": contextHeaders["x-csrftoken"] || csrfToken || "",
          "x-ig-app-id": contextHeaders["x-ig-app-id"] || "238260118697367",
          referer: contextHeaders.referer || (typeof location !== "undefined" ? location.href : "")
        };
        const optionalHeaderKeys = ["x-web-session-id", "x-asbd-id", "x-bloks-version-id"];
        for (const optionalHeaderKey of optionalHeaderKeys) {
          const optionalHeaderValue = contextHeaders[optionalHeaderKey];
          if (optionalHeaderValue) {
            mutationHeaders[optionalHeaderKey] = optionalHeaderValue;
          }
        }
        return mutationHeaders;
      };
      /**
       * Read cookie value by key.
       *
       * @param {string} cookieName - Cookie name.
       * @returns {string}
       */
      readCookieValue_fn = function(cookieName) {
        if (typeof document === "undefined" || typeof document.cookie !== "string") {
          return "";
        }
        const segments = document.cookie.split(";");
        for (const segment of segments) {
          const [rawName, ...rawValueParts] = segment.split("=");
          const normalizedName = String(rawName || "").trim();
          if (normalizedName !== cookieName) {
            continue;
          }
          return decodeURIComponent(rawValueParts.join("=").trim());
        }
        return "";
      };
      /**
       * Generate Relay request sequence token compatible with observed traffic.
       *
       * @returns {string}
       */
      nextRequestSequence_fn = function() {
        this.requestSequence += 1;
        return this.requestSequence.toString(36);
      };
      module.exports = {
        NotInterestedClient
      };
    }
  });

  // src/storage/userscript-storage.js
  var require_userscript_storage = __commonJS({
    "src/storage/userscript-storage.js"(exports, module) {
      function getUserscriptApi() {
        const globalObject = typeof globalThis !== "undefined" ? globalThis : null;
        const gm = globalObject && globalObject.GM && typeof globalObject.GM === "object" ? globalObject.GM : null;
        return gm;
      }
      var UserscriptStorageAdapter = class {
        /**
         * Resolve persisted value without throwing when storage backend is unavailable.
         *
         * @param {string} key - Storage key.
         * @param {unknown} defaultValue - Fallback value.
         * @returns {Promise<unknown>}
         */
        async getValue(key, defaultValue = null) {
          const gm = getUserscriptApi();
          if (gm && typeof gm.getValue === "function") {
            return gm.getValue(key, defaultValue);
          }
          if (typeof localStorage === "undefined") {
            return defaultValue;
          }
          try {
            const rawValue = localStorage.getItem(key);
            if (rawValue === null) {
              return defaultValue;
            }
            return JSON.parse(rawValue);
          } catch (_error) {
            return defaultValue;
          }
        }
        /**
         * Persist value without propagating host-storage runtime failures.
         *
         * @param {string} key - Storage key.
         * @param {unknown} value - Serializable value.
         * @returns {Promise<void>}
         */
        async setValue(key, value) {
          const gm = getUserscriptApi();
          if (gm && typeof gm.setValue === "function") {
            await gm.setValue(key, value);
            return;
          }
          if (typeof localStorage === "undefined") {
            return;
          }
          try {
            localStorage.setItem(key, JSON.stringify(value));
          } catch (_error) {
          }
        }
      };
      module.exports = {
        UserscriptStorageAdapter
      };
    }
  });

  // src/signals/not-interested-state-store.js
  var require_not_interested_state_store = __commonJS({
    "src/signals/not-interested-state-store.js"(exports, module) {
      var { UserscriptStorageAdapter } = require_userscript_storage();
      var NOT_INTERESTED_STATE_STORAGE_KEY = "btf:not-interested-state";
      var _NotInterestedStateStore_instances, normalize_fn, normalizeStringList_fn, normalizeNumberList_fn, normalizeInteger_fn;
      var NotInterestedStateStore = class {
        /**
         * Initialize storage boundary for dispatcher state.
         *
         * @param {{
         *   storageAdapter?: UserscriptStorageAdapter,
         *   storageKey?: string
         * }} [options] - Store options.
         */
        constructor(options = {}) {
          __privateAdd(this, _NotInterestedStateStore_instances);
          const {
            storageAdapter = new UserscriptStorageAdapter(),
            storageKey = NOT_INTERESTED_STATE_STORAGE_KEY
          } = options;
          this.storageAdapter = storageAdapter;
          this.storageKey = storageKey;
        }
        /**
         * Load and normalize persisted dispatcher state.
         *
         * @returns {Promise<{
         *   sentMediaPks: string[],
         *   minuteWindowMs: number[],
         *   dayWindow: { dayKey: string, count: number },
         *   lastSentAtMs: number,
         *   circuitBreakerUntilMs: number
         * }>}
         */
        async load() {
          const rawState = await this.storageAdapter.getValue(this.storageKey, null);
          return __privateMethod(this, _NotInterestedStateStore_instances, normalize_fn).call(this, rawState);
        }
        /**
         * Persist normalized dispatcher state.
         *
         * @param {unknown} nextState - Candidate state object.
         * @returns {Promise<void>}
         */
        async save(nextState) {
          const normalizedState = __privateMethod(this, _NotInterestedStateStore_instances, normalize_fn).call(this, nextState);
          await this.storageAdapter.setValue(this.storageKey, normalizedState);
        }
      };
      _NotInterestedStateStore_instances = new WeakSet();
      /**
       * Normalize unknown input into deterministic dispatcher state.
       *
       * @param {unknown} rawState - Candidate state object.
       * @returns {{
       *   sentMediaPks: string[],
       *   minuteWindowMs: number[],
       *   dayWindow: { dayKey: string, count: number },
       *   lastSentAtMs: number,
       *   circuitBreakerUntilMs: number
       * }}
       */
      normalize_fn = function(rawState) {
        const candidate = rawState && typeof rawState === "object" ? (
          /** @type {Record<string, unknown>} */
          rawState
        ) : {};
        const dayWindowCandidate = candidate.dayWindow && typeof candidate.dayWindow === "object" ? (
          /** @type {Record<string, unknown>} */
          candidate.dayWindow
        ) : {};
        return {
          sentMediaPks: __privateMethod(this, _NotInterestedStateStore_instances, normalizeStringList_fn).call(this, candidate.sentMediaPks),
          minuteWindowMs: __privateMethod(this, _NotInterestedStateStore_instances, normalizeNumberList_fn).call(this, candidate.minuteWindowMs),
          dayWindow: {
            dayKey: String(dayWindowCandidate.dayKey || "").trim(),
            count: __privateMethod(this, _NotInterestedStateStore_instances, normalizeInteger_fn).call(this, dayWindowCandidate.count)
          },
          lastSentAtMs: __privateMethod(this, _NotInterestedStateStore_instances, normalizeInteger_fn).call(this, candidate.lastSentAtMs),
          circuitBreakerUntilMs: __privateMethod(this, _NotInterestedStateStore_instances, normalizeInteger_fn).call(this, candidate.circuitBreakerUntilMs)
        };
      };
      /**
       * Normalize candidate list into unique non-empty strings.
       *
       * @param {unknown} value - Candidate list.
       * @returns {string[]}
       */
      normalizeStringList_fn = function(value) {
        if (!Array.isArray(value)) {
          return [];
        }
        const normalizedValues = /* @__PURE__ */ new Set();
        for (const entry of value) {
          const normalizedEntry = String(entry || "").trim();
          if (normalizedEntry) {
            normalizedValues.add(normalizedEntry);
          }
        }
        return Array.from(normalizedValues);
      };
      /**
       * Normalize candidate list into positive integer timestamps.
       *
       * @param {unknown} value - Candidate list.
       * @returns {number[]}
       */
      normalizeNumberList_fn = function(value) {
        if (!Array.isArray(value)) {
          return [];
        }
        const normalizedValues = [];
        for (const entry of value) {
          const normalizedEntry = __privateMethod(this, _NotInterestedStateStore_instances, normalizeInteger_fn).call(this, entry);
          if (normalizedEntry > 0) {
            normalizedValues.push(normalizedEntry);
          }
        }
        return normalizedValues.sort((a, b) => a - b);
      };
      /**
       * Normalize unknown value into non-negative integer.
       *
       * @param {unknown} value - Candidate integer.
       * @returns {number}
       */
      normalizeInteger_fn = function(value) {
        const candidate = Number(value);
        if (!Number.isInteger(candidate) || candidate < 0) {
          return 0;
        }
        return candidate;
      };
      module.exports = {
        NOT_INTERESTED_STATE_STORAGE_KEY,
        NotInterestedStateStore
      };
    }
  });

  // src/signals/not-interested-dispatcher.js
  var require_not_interested_dispatcher = __commonJS({
    "src/signals/not-interested-dispatcher.js"(exports, module) {
      var { normalizeHandle, normalizeTopic } = require_settings_schema();
      var { NotInterestedClient } = require_not_interested_client();
      var { NotInterestedStateStore } = require_not_interested_state_store();
      var MINUTE_WINDOW_MS = 6e4;
      var MAX_SENT_MEDIA_HISTORY = 5e3;
      var DEFAULT_MAX_QUEUE_LENGTH = 300;
      function buildPhraseMatchKey(mode, pattern) {
        return `${mode === "regex" ? "regex" : "text"}:${pattern}`;
      }
      var _NotInterestedDispatcher_instances, resolveEligibleMatchPatterns_fn, resolveEnabledUsernameHandles_fn, resolveEnabledTrendingTopics_fn, resolveEnabledEntryKeys_fn, resolveEnabledPatterns_fn, resolveRateLimit_fn, processQueue_fn, resolveRateLimitedDelay_fn, recordSuccessfulSend_fn, refreshObserverDiagnostics_fn, trimQueueToCapacity_fn, recordSignalHttpStatus_fn, isQueueCandidateConnected_fn, pruneMinuteWindow_fn, alignDayWindow_fn, wasAlreadySent_fn, dequeueHead_fn, scheduleQueueProcessing_fn, clearProcessingTimer_fn, buildUtcDayKey_fn, millisecondsUntilNextUtcDay_fn, readCookieValue_fn;
      var NotInterestedDispatcher = class {
        /**
         * Initialize queue orchestration dependencies and runtime state.
         *
         * @param {{
         *   postMetadataCatalog: { getByPostCode: Function },
         *   networkObserver: { getRequestContext: Function, getDiagnostics?: Function },
         *   client?: NotInterestedClient,
         *   stateStore?: NotInterestedStateStore,
         *   maxQueueLength?: number,
         *   logger?: { debug: Function, warn: Function },
         *   nowProvider?: () => number,
         *   randomProvider?: () => number,
         *   scheduleFn?: Function,
         *   clearScheduleFn?: Function
         * }} options - Dispatcher dependencies.
         */
        constructor(options = {}) {
          __privateAdd(this, _NotInterestedDispatcher_instances);
          const {
            postMetadataCatalog,
            networkObserver,
            client = new NotInterestedClient({
              networkObserver
            }),
            stateStore = new NotInterestedStateStore(),
            maxQueueLength = DEFAULT_MAX_QUEUE_LENGTH,
            logger = { debug: () => {
            }, warn: () => {
            } },
            nowProvider = () => Date.now(),
            randomProvider = () => Math.random(),
            scheduleFn = (callback, delayMs) => setTimeout(callback, delayMs),
            clearScheduleFn = (timerId) => clearTimeout(timerId)
          } = options;
          this.postMetadataCatalog = postMetadataCatalog;
          this.networkObserver = networkObserver;
          this.client = client;
          this.stateStore = stateStore;
          this.maxQueueLength = Math.max(1, Number(maxQueueLength) || 1);
          this.logger = logger;
          this.nowProvider = nowProvider;
          this.randomProvider = randomProvider;
          this.scheduleFn = scheduleFn;
          this.clearScheduleFn = clearScheduleFn;
          this.isStarted = false;
          this.isProcessingQueue = false;
          this.processingTimerId = null;
          this.queue = [];
          this.queuedPostCodes = /* @__PURE__ */ new Set();
          this.latestSettings = null;
          this.didWarnBridgeUnavailable = false;
          this.nextAllowedAtMs = 0;
          this.diagnostics = {
            bridge_ready: false,
            metadata_ingested: 0,
            eligible_for_signal: 0,
            signals_sent: 0,
            signals_skipped_missing_metadata: 0,
            signal_http_status: {}
          };
          this.state = {
            sentMediaPks: [],
            minuteWindowMs: [],
            dayWindow: { dayKey: "", count: 0 },
            lastSentAtMs: 0,
            circuitBreakerUntilMs: 0
          };
        }
        /**
         * Load persisted state and enable queue processing.
         *
         * @returns {Promise<void>}
         */
        async start() {
          if (this.isStarted) {
            return;
          }
          this.state = await this.stateStore.load();
          this.nextAllowedAtMs = this.state.lastSentAtMs;
          __privateMethod(this, _NotInterestedDispatcher_instances, refreshObserverDiagnostics_fn).call(this);
          this.isStarted = true;
        }
        /**
         * Stop processing and persist the latest dispatcher state.
         *
         * @returns {Promise<void>}
         */
        async stop() {
          if (!this.isStarted) {
            return;
          }
          __privateMethod(this, _NotInterestedDispatcher_instances, clearProcessingTimer_fn).call(this);
          this.queue = [];
          this.queuedPostCodes.clear();
          this.isStarted = false;
          await this.stateStore.save(this.state);
        }
        /**
         * Expose dispatcher diagnostics for debugging not-interested behavior.
         *
         * @returns {{
         *   bridge_ready: boolean,
         *   metadata_ingested: number,
         *   eligible_for_signal: number,
         *   signals_sent: number,
         *   signals_skipped_missing_metadata: number,
         *   signal_http_status: Record<string, number>
         * }}
         */
        getDiagnostics() {
          return {
            bridge_ready: this.diagnostics.bridge_ready,
            metadata_ingested: this.diagnostics.metadata_ingested,
            eligible_for_signal: this.diagnostics.eligible_for_signal,
            signals_sent: this.diagnostics.signals_sent,
            signals_skipped_missing_metadata: this.diagnostics.signals_skipped_missing_metadata,
            signal_http_status: { ...this.diagnostics.signal_http_status }
          };
        }
        /**
         * Queue one candidate post for not-interested signaling when eligible.
         *
         * @param {{
         *   postCode?: string,
         *   element?: HTMLElement|null
         * }} contentModel - Canonical content model.
         * @param {{
         *   blocked: boolean,
         *   matches?: Array<{ kind: string, mode: string, pattern: string }>
         * }} decision - Rule-engine decision.
         * @param {object} settings - Normalized settings.
         */
        enqueue(contentModel, decision, settings) {
          if (!this.isStarted || !decision || !decision.blocked) {
            return;
          }
          const eligibleMatchPatterns = __privateMethod(this, _NotInterestedDispatcher_instances, resolveEligibleMatchPatterns_fn).call(this, decision, settings);
          if (eligibleMatchPatterns.length === 0) {
            return;
          }
          const postCode = String(contentModel && contentModel.postCode || "").trim();
          if (!postCode || this.queuedPostCodes.has(postCode)) {
            return;
          }
          __privateMethod(this, _NotInterestedDispatcher_instances, refreshObserverDiagnostics_fn).call(this);
          this.diagnostics.eligible_for_signal += 1;
          this.latestSettings = settings;
          if (this.isProcessingQueue && this.queue.length >= this.maxQueueLength && this.queue.length <= 1) {
            this.logger.debug(
              "Dropped signaling candidate because queue is full while send is in flight.",
              {
                postCode,
                maxQueueLength: this.maxQueueLength
              }
            );
            return;
          }
          __privateMethod(this, _NotInterestedDispatcher_instances, trimQueueToCapacity_fn).call(this);
          const enqueuedAtMs = this.nowProvider();
          this.queue.push({
            postCode,
            matchedPatterns: eligibleMatchPatterns,
            readyAtMs: enqueuedAtMs,
            enqueuedAtMs,
            element: contentModel && contentModel.element && typeof contentModel.element === "object" ? contentModel.element : null
          });
          this.queuedPostCodes.add(postCode);
          __privateMethod(this, _NotInterestedDispatcher_instances, scheduleQueueProcessing_fn).call(this, 0);
        }
      };
      _NotInterestedDispatcher_instances = new WeakSet();
      /**
       * Resolve matches that are explicitly enabled for signaling.
       *
       * @param {{
       *   matches?: Array<{ kind: string, mode: string, pattern: string }>
       * }} decision - Rule decision.
       * @param {object} settings - Normalized settings.
       * @returns {string[]}
       */
      resolveEligibleMatchPatterns_fn = function(decision, settings) {
        const enabledEntryKeys = __privateMethod(this, _NotInterestedDispatcher_instances, resolveEnabledEntryKeys_fn).call(this, settings);
        const enabledPatterns = __privateMethod(this, _NotInterestedDispatcher_instances, resolveEnabledPatterns_fn).call(this, settings);
        const enabledUsernameHandles = __privateMethod(this, _NotInterestedDispatcher_instances, resolveEnabledUsernameHandles_fn).call(this, settings);
        const enabledTrendingTopics = __privateMethod(this, _NotInterestedDispatcher_instances, resolveEnabledTrendingTopics_fn).call(this, settings);
        if (enabledEntryKeys.size === 0 && enabledPatterns.size === 0 && enabledUsernameHandles.size === 0 && enabledTrendingTopics.size === 0) {
          return [];
        }
        const decisionMatches = Array.isArray(decision.matches) ? decision.matches : [];
        const matchedPatterns = /* @__PURE__ */ new Set();
        for (const match of decisionMatches) {
          if (!match) {
            continue;
          }
          if (match.kind === "username") {
            const matchedHandle = normalizeHandle(match.pattern);
            if (matchedHandle && enabledUsernameHandles.has(matchedHandle)) {
              matchedPatterns.add(`@${matchedHandle}`);
            }
            continue;
          }
          if (match.kind === "trending" && String(match.mode || "").trim().toLowerCase() === "topic") {
            const matchedTopic = normalizeTopic(match.pattern);
            if (matchedTopic && enabledTrendingTopics.has(matchedTopic)) {
              matchedPatterns.add(`trending:${matchedTopic}`);
            }
            continue;
          }
          if (match.kind === "phrase") {
            const pattern = String(match.pattern || "").trim();
            const mode = String(match.mode || "text").trim().toLowerCase();
            const isEntryEnabled = pattern && enabledEntryKeys.has(buildPhraseMatchKey(mode, pattern));
            if (pattern && (isEntryEnabled || enabledPatterns.has(pattern))) {
              matchedPatterns.add(pattern);
            }
          }
        }
        return Array.from(matchedPatterns);
      };
      /**
       * Resolve username handles explicitly enabled for signaling.
       *
       * @param {object} settings - Normalized settings.
       * @returns {Set<string>}
       */
      resolveEnabledUsernameHandles_fn = function(settings) {
        const enabledHandleList = settings && settings.filters && settings.filters.username && settings.filters.username.notInterested && Array.isArray(settings.filters.username.notInterested.enabledHandles) ? settings.filters.username.notInterested.enabledHandles : [];
        return new Set(enabledHandleList.map((handle) => normalizeHandle(handle)).filter(Boolean));
      };
      /**
       * Resolve trending topics explicitly enabled for signaling.
       *
       * @param {object} settings - Normalized settings.
       * @returns {Set<string>}
       */
      resolveEnabledTrendingTopics_fn = function(settings) {
        const enabledTopicList = settings && settings.filters && settings.filters.trending && settings.filters.trending.notInterested && Array.isArray(settings.filters.trending.notInterested.enabledTopics) ? settings.filters.trending.notInterested.enabledTopics : [];
        return new Set(enabledTopicList.map((topic) => normalizeTopic(topic)).filter(Boolean));
      };
      /**
       * Resolve mode-aware phrase entries enabled for signaling.
       *
       * @param {object} settings - Normalized settings.
       * @returns {Set<string>}
       */
      resolveEnabledEntryKeys_fn = function(settings) {
        const enabledEntryList = settings && settings.filters && settings.filters.phrase && settings.filters.phrase.notInterested && Array.isArray(settings.filters.phrase.notInterested.enabledEntries) ? settings.filters.phrase.notInterested.enabledEntries : [];
        const enabledEntryKeys = /* @__PURE__ */ new Set();
        for (const entry of enabledEntryList) {
          const candidate = entry && typeof entry === "object" ? (
            /** @type {Record<string, unknown>} */
            entry
          ) : null;
          const pattern = candidate === null ? "" : String(
            candidate.pattern === void 0 || candidate.pattern === null ? "" : candidate.pattern
          ).trim();
          if (!pattern) {
            continue;
          }
          const mode = candidate.isRegex === true ? "regex" : "text";
          enabledEntryKeys.add(buildPhraseMatchKey(mode, pattern));
        }
        return enabledEntryKeys;
      };
      /**
       * Resolve enabled phrase/regex patterns for signaling.
       *
       * @param {object} settings - Normalized settings.
       * @returns {Set<string>}
       */
      resolveEnabledPatterns_fn = function(settings) {
        const enabledPatternList = settings && settings.filters && settings.filters.phrase && settings.filters.phrase.notInterested && Array.isArray(settings.filters.phrase.notInterested.enabledPatterns) ? settings.filters.phrase.notInterested.enabledPatterns : [];
        return new Set(
          enabledPatternList.map((pattern) => String(pattern || "").trim()).filter((pattern) => pattern.length > 0)
        );
      };
      /**
       * Resolve effective rate-limit configuration from normalized settings.
       *
       * @returns {{
       *   minIntervalSeconds: number,
       *   jitterSeconds: number,
       *   maxPerMinute: number,
       *   maxPerDay: number,
       *   circuitBreakerMinutes: number
       * }}
       */
      resolveRateLimit_fn = function() {
        const rateLimit = this.latestSettings && this.latestSettings.filters && this.latestSettings.filters.phrase && this.latestSettings.filters.phrase.notInterested && this.latestSettings.filters.phrase.notInterested.rateLimit ? this.latestSettings.filters.phrase.notInterested.rateLimit : null;
        if (!rateLimit) {
          return {
            minIntervalSeconds: 8,
            jitterSeconds: 2,
            maxPerMinute: 6,
            maxPerDay: 120,
            circuitBreakerMinutes: 15
          };
        }
        return {
          minIntervalSeconds: Number(rateLimit.minIntervalSeconds) || 8,
          jitterSeconds: Number(rateLimit.jitterSeconds) || 0,
          maxPerMinute: Number(rateLimit.maxPerMinute) || 6,
          maxPerDay: Number(rateLimit.maxPerDay) || 120,
          circuitBreakerMinutes: Number(rateLimit.circuitBreakerMinutes) || 15
        };
      };
      processQueue_fn = async function() {
        if (!this.isStarted || this.isProcessingQueue) {
          return;
        }
        this.isProcessingQueue = true;
        try {
          while (this.queue.length > 0) {
            __privateMethod(this, _NotInterestedDispatcher_instances, refreshObserverDiagnostics_fn).call(this);
            const rateLimit = __privateMethod(this, _NotInterestedDispatcher_instances, resolveRateLimit_fn).call(this);
            const nowMs = this.nowProvider();
            __privateMethod(this, _NotInterestedDispatcher_instances, pruneMinuteWindow_fn).call(this, nowMs);
            __privateMethod(this, _NotInterestedDispatcher_instances, alignDayWindow_fn).call(this, nowMs);
            if (this.state.circuitBreakerUntilMs > nowMs) {
              __privateMethod(this, _NotInterestedDispatcher_instances, scheduleQueueProcessing_fn).call(this, this.state.circuitBreakerUntilMs - nowMs);
              return;
            }
            const nextQueueItem = this.queue[0];
            if (!nextQueueItem) {
              return;
            }
            if (nextQueueItem.readyAtMs > nowMs) {
              __privateMethod(this, _NotInterestedDispatcher_instances, scheduleQueueProcessing_fn).call(this, nextQueueItem.readyAtMs - nowMs);
              return;
            }
            if (!__privateMethod(this, _NotInterestedDispatcher_instances, isQueueCandidateConnected_fn).call(this, nextQueueItem)) {
              this.logger.debug("Dropped signaling candidate because post node left the DOM.", {
                postCode: nextQueueItem.postCode,
                matchedPatterns: nextQueueItem.matchedPatterns
              });
              __privateMethod(this, _NotInterestedDispatcher_instances, dequeueHead_fn).call(this);
              continue;
            }
            const rateLimitedDelayMs = __privateMethod(this, _NotInterestedDispatcher_instances, resolveRateLimitedDelay_fn).call(this, nowMs, rateLimit);
            if (rateLimitedDelayMs > 0) {
              __privateMethod(this, _NotInterestedDispatcher_instances, scheduleQueueProcessing_fn).call(this, rateLimitedDelayMs);
              return;
            }
            const postMetadata = this.postMetadataCatalog.getByPostCode(nextQueueItem.postCode);
            if (!postMetadata) {
              this.diagnostics.signals_skipped_missing_metadata += 1;
              this.logger.debug("Skipped signaling because post metadata is unavailable.", {
                postCode: nextQueueItem.postCode,
                matchedPatterns: nextQueueItem.matchedPatterns
              });
              __privateMethod(this, _NotInterestedDispatcher_instances, dequeueHead_fn).call(this);
              continue;
            }
            if (!String(postMetadata.rankingInfoToken || "").trim()) {
              this.diagnostics.signals_skipped_missing_metadata += 1;
              this.logger.debug("Skipped signaling because ranking metadata is unavailable.", {
                postCode: nextQueueItem.postCode,
                mediaPk: postMetadata.mediaPk,
                matchedPatterns: nextQueueItem.matchedPatterns
              });
              __privateMethod(this, _NotInterestedDispatcher_instances, dequeueHead_fn).call(this);
              continue;
            }
            if (__privateMethod(this, _NotInterestedDispatcher_instances, wasAlreadySent_fn).call(this, postMetadata.mediaPk)) {
              __privateMethod(this, _NotInterestedDispatcher_instances, dequeueHead_fn).call(this);
              continue;
            }
            const viewerPk = __privateMethod(this, _NotInterestedDispatcher_instances, readCookieValue_fn).call(this, "ds_user_id");
            if (!viewerPk) {
              this.logger.warn("Skipped signaling because viewer id is unavailable.");
              __privateMethod(this, _NotInterestedDispatcher_instances, dequeueHead_fn).call(this);
              continue;
            }
            const mutationResult = await this.client.sendNotInterested({
              viewerPk,
              mediaPk: postMetadata.mediaPk,
              rankingInfoToken: postMetadata.rankingInfoToken
            });
            __privateMethod(this, _NotInterestedDispatcher_instances, recordSignalHttpStatus_fn).call(this, mutationResult.statusCode);
            this.logger.debug("Executed not-interested send attempt.", {
              mediaPk: postMetadata.mediaPk,
              statusCode: mutationResult.statusCode,
              reason: mutationResult.reason,
              ok: mutationResult.ok
            });
            if (mutationResult.ok) {
              __privateMethod(this, _NotInterestedDispatcher_instances, recordSuccessfulSend_fn).call(this, postMetadata.mediaPk, nowMs, rateLimit);
              this.diagnostics.signals_sent += 1;
              __privateMethod(this, _NotInterestedDispatcher_instances, dequeueHead_fn).call(this);
              await this.stateStore.save(this.state);
              continue;
            }
            if (mutationResult.statusCode === 429) {
              this.state.circuitBreakerUntilMs = nowMs + rateLimit.circuitBreakerMinutes * 60 * 1e3;
              await this.stateStore.save(this.state);
              __privateMethod(this, _NotInterestedDispatcher_instances, dequeueHead_fn).call(this);
              __privateMethod(this, _NotInterestedDispatcher_instances, scheduleQueueProcessing_fn).call(this, this.state.circuitBreakerUntilMs - nowMs);
              return;
            }
            this.logger.warn("Dropped signaling candidate after mutation failure.", {
              postCode: nextQueueItem.postCode,
              statusCode: mutationResult.statusCode,
              reason: mutationResult.reason
            });
            __privateMethod(this, _NotInterestedDispatcher_instances, dequeueHead_fn).call(this);
          }
        } finally {
          this.isProcessingQueue = false;
        }
      };
      /**
       * Resolve wait time required before the next mutation send is allowed.
       *
       * @param {number} nowMs - Current timestamp.
       * @param {{
       *   maxPerMinute: number,
       *   maxPerDay: number
       * }} rateLimit - Effective rate-limit settings.
       * @returns {number}
       */
      resolveRateLimitedDelay_fn = function(nowMs, rateLimit) {
        if (this.nextAllowedAtMs > nowMs) {
          return this.nextAllowedAtMs - nowMs;
        }
        if (this.state.minuteWindowMs.length >= rateLimit.maxPerMinute) {
          const oldestSendTimestamp = this.state.minuteWindowMs[0];
          return oldestSendTimestamp + MINUTE_WINDOW_MS - nowMs;
        }
        if (this.state.dayWindow.count >= rateLimit.maxPerDay) {
          return __privateMethod(this, _NotInterestedDispatcher_instances, millisecondsUntilNextUtcDay_fn).call(this, nowMs);
        }
        return 0;
      };
      /**
       * Record one successful mutation send for dedupe and rate tracking.
       *
       * @param {string} mediaPk - Target post id.
       * @param {number} nowMs - Current timestamp.
       * @param {{
       *   minIntervalSeconds: number,
       *   jitterSeconds: number
       * }} rateLimit - Effective rate-limit settings.
       */
      recordSuccessfulSend_fn = function(mediaPk, nowMs, rateLimit) {
        this.state.sentMediaPks.push(mediaPk);
        if (this.state.sentMediaPks.length > MAX_SENT_MEDIA_HISTORY) {
          this.state.sentMediaPks = this.state.sentMediaPks.slice(-MAX_SENT_MEDIA_HISTORY);
        }
        this.state.minuteWindowMs.push(nowMs);
        this.state.lastSentAtMs = nowMs;
        this.state.dayWindow.count += 1;
        const jitterWindowMs = rateLimit.jitterSeconds * 1e3;
        const jitterOffsetMs = jitterWindowMs > 0 ? Math.floor(this.randomProvider() * jitterWindowMs) : 0;
        this.nextAllowedAtMs = nowMs + rateLimit.minIntervalSeconds * 1e3 + jitterOffsetMs;
      };
      /**
       * Refresh observer-backed bridge diagnostics and warn once when degraded.
       */
      refreshObserverDiagnostics_fn = function() {
        if (!this.networkObserver || typeof this.networkObserver.getDiagnostics !== "function") {
          return;
        }
        const observerDiagnostics = this.networkObserver.getDiagnostics();
        this.diagnostics.bridge_ready = Boolean(
          observerDiagnostics && observerDiagnostics.bridge_ready === true
        );
        this.diagnostics.metadata_ingested = Number(
          observerDiagnostics && observerDiagnostics.metadata_ingested
        );
        if (!Number.isFinite(this.diagnostics.metadata_ingested)) {
          this.diagnostics.metadata_ingested = 0;
        }
        if (!this.diagnostics.bridge_ready && this.diagnostics.metadata_ingested === 0 && !this.didWarnBridgeUnavailable) {
          this.didWarnBridgeUnavailable = true;
          this.logger.warn("Auto-signaling is degraded because metadata capture is unavailable.");
        }
      };
      /**
       * Drop oldest queued candidates when queue length reaches configured bounds.
       */
      trimQueueToCapacity_fn = function() {
        while (this.queue.length >= this.maxQueueLength) {
          const dropIndex = this.isProcessingQueue && this.queue.length > 1 ? 1 : 0;
          const droppedEntries = this.queue.splice(dropIndex, 1);
          const droppedCandidate = droppedEntries.length > 0 ? droppedEntries[0] : null;
          if (!droppedCandidate) {
            return;
          }
          this.queuedPostCodes.delete(droppedCandidate.postCode);
          this.logger.debug("Dropped signaling candidate because queue reached max capacity.", {
            postCode: droppedCandidate.postCode,
            maxQueueLength: this.maxQueueLength
          });
        }
      };
      /**
       * Track one observed response status code for mutation send attempts.
       *
       * @param {number} statusCode - HTTP status code.
       */
      recordSignalHttpStatus_fn = function(statusCode) {
        const normalizedStatusCode = Number.isFinite(Number(statusCode)) ? Number(statusCode) : 0;
        const statusKey = String(normalizedStatusCode);
        this.diagnostics.signal_http_status[statusKey] = (this.diagnostics.signal_http_status[statusKey] || 0) + 1;
      };
      /**
       * Determine whether queue head still points to an element attached to DOM.
       *
       * @param {{ element?: HTMLElement|null }} queueCandidate - Candidate queue entry.
       * @returns {boolean}
       */
      isQueueCandidateConnected_fn = function(queueCandidate) {
        if (!queueCandidate || !queueCandidate.element || typeof queueCandidate.element !== "object") {
          return true;
        }
        if (typeof queueCandidate.element.isConnected === "boolean") {
          return queueCandidate.element.isConnected;
        }
        if (typeof document === "undefined" || typeof document.contains !== "function") {
          return true;
        }
        return document.contains(queueCandidate.element);
      };
      /**
       * Prune minute-window timestamps that are outside the rolling window.
       *
       * @param {number} nowMs - Current timestamp.
       */
      pruneMinuteWindow_fn = function(nowMs) {
        const threshold = nowMs - MINUTE_WINDOW_MS;
        this.state.minuteWindowMs = this.state.minuteWindowMs.filter(
          (timestamp) => timestamp > threshold
        );
      };
      /**
       * Align day-window counter with the current UTC day.
       *
       * @param {number} nowMs - Current timestamp.
       */
      alignDayWindow_fn = function(nowMs) {
        const dayKey = __privateMethod(this, _NotInterestedDispatcher_instances, buildUtcDayKey_fn).call(this, nowMs);
        if (this.state.dayWindow.dayKey === dayKey) {
          return;
        }
        this.state.dayWindow = {
          dayKey,
          count: 0
        };
      };
      /**
       * Determine whether one media pk has already been signaled.
       *
       * @param {string} mediaPk - Target media id.
       * @returns {boolean}
       */
      wasAlreadySent_fn = function(mediaPk) {
        return this.state.sentMediaPks.includes(mediaPk);
      };
      /**
       * Remove the current queue head and its dedupe marker.
       */
      dequeueHead_fn = function() {
        const dequeuedItem = this.queue.shift();
        if (!dequeuedItem) {
          return;
        }
        this.queuedPostCodes.delete(dequeuedItem.postCode);
      };
      /**
       * Schedule queue processing after a delay.
       *
       * @param {number} delayMs - Milliseconds until next processing attempt.
       */
      scheduleQueueProcessing_fn = function(delayMs) {
        if (!this.isStarted) {
          return;
        }
        const safeDelayMs = Math.max(0, Math.floor(delayMs));
        __privateMethod(this, _NotInterestedDispatcher_instances, clearProcessingTimer_fn).call(this);
        this.processingTimerId = this.scheduleFn(() => {
          this.processingTimerId = null;
          void __privateMethod(this, _NotInterestedDispatcher_instances, processQueue_fn).call(this);
        }, safeDelayMs);
      };
      /**
       * Clear pending queue-processing timer if present.
       */
      clearProcessingTimer_fn = function() {
        if (this.processingTimerId === null || this.processingTimerId === void 0) {
          return;
        }
        this.clearScheduleFn(this.processingTimerId);
        this.processingTimerId = null;
      };
      /**
       * Build normalized UTC day key from one timestamp.
       *
       * @param {number} timestampMs - Timestamp in milliseconds.
       * @returns {string}
       */
      buildUtcDayKey_fn = function(timestampMs) {
        return new Date(timestampMs).toISOString().slice(0, 10);
      };
      /**
       * Resolve milliseconds until the next UTC day boundary.
       *
       * @param {number} nowMs - Current timestamp.
       * @returns {number}
       */
      millisecondsUntilNextUtcDay_fn = function(nowMs) {
        const nowDate = new Date(nowMs);
        const nextDayDate = new Date(
          Date.UTC(nowDate.getUTCFullYear(), nowDate.getUTCMonth(), nowDate.getUTCDate() + 1)
        );
        return Math.max(0, nextDayDate.getTime() - nowMs);
      };
      /**
       * Read cookie value by key.
       *
       * @param {string} cookieName - Cookie name.
       * @returns {string}
       */
      readCookieValue_fn = function(cookieName) {
        if (typeof document === "undefined" || typeof document.cookie !== "string") {
          return "";
        }
        const segments = document.cookie.split(";");
        for (const segment of segments) {
          const [rawName, ...rawValueParts] = segment.split("=");
          const normalizedName = String(rawName || "").trim();
          if (normalizedName !== cookieName) {
            continue;
          }
          return decodeURIComponent(rawValueParts.join("=").trim());
        }
        return "";
      };
      module.exports = {
        NotInterestedDispatcher
      };
    }
  });

  // src/signals/threads-account-search-client.js
  var require_threads_account_search_client = __commonJS({
    "src/signals/threads-account-search-client.js"(exports, module) {
      var { normalizeHandle } = require_settings_schema();
      var MENTION_NULLSTATE_QUERY = {
        docId: "33929666426648878",
        friendlyName: "useBarcelonaMentionsNullStateDataSourceQuery",
        rootFieldName: "xdt_mention_nullstate_sugesstions"
      };
      var ACCOUNT_SEARCH_QUERY = {
        docId: "34971288492470563",
        friendlyName: "useBarcelonaAccountSearchGraphQLDataSourceQuery",
        rootFieldName: "xdt_api__v1__users__search_connection"
      };
      var _ThreadsAccountSearchClient_instances, resolveEndpointUrl_fn, buildQueryFormFields_fn, applyFormFieldFallbacks_fn, resolveCurrentUserContext_fn, readModuleToken_fn, readHostModule_fn, resolveHostGlobalObject_fn, readEqmcToken_fn, deriveJazoestToken_fn, buildQueryHeaders_fn, extractAccountSearchSuggestions_fn, extractNullStateSuggestions_fn, normalizeSuggestionNode_fn, dedupeSuggestions_fn, readCookieValue_fn, nextRequestSequence_fn;
      var ThreadsAccountSearchClient = class {
        /**
         * Initialize account-search dependencies and request sequence state.
         *
         * @param {{
         *   networkObserver: { getRequestContext: Function },
         *   logger?: { debug: Function, warn: Function }
         * }} options - Client dependencies.
         */
        constructor(options = {}) {
          __privateAdd(this, _ThreadsAccountSearchClient_instances);
          const { networkObserver, logger = { debug: () => {
          }, warn: () => {
          } } } = options;
          this.networkObserver = networkObserver;
          this.logger = logger;
          this.requestSequence = 0;
        }
        /**
         * Resolve mention candidates from either null-state or typed search queries.
         *
         * @param {unknown} queryText - Raw search token without committing to filter state.
         * @returns {Promise<Array<{ handle: string, displayName: string, isVerified: boolean, profilePictureUrl: string }>>}
         */
        async searchMentionCandidates(queryText) {
          const normalizedQuery = normalizeHandle(queryText);
          const queryConfig = normalizedQuery ? ACCOUNT_SEARCH_QUERY : MENTION_NULLSTATE_QUERY;
          const context = this.networkObserver && typeof this.networkObserver.getRequestContext === "function" ? this.networkObserver.getRequestContext() : { headers: {}, formFields: {} };
          const formFields = __privateMethod(this, _ThreadsAccountSearchClient_instances, buildQueryFormFields_fn).call(this, context.formFields, context.headers, queryConfig, normalizedQuery);
          let response;
          try {
            response = await fetch(__privateMethod(this, _ThreadsAccountSearchClient_instances, resolveEndpointUrl_fn).call(this), {
              method: "POST",
              headers: __privateMethod(this, _ThreadsAccountSearchClient_instances, buildQueryHeaders_fn).call(this, context.headers, formFields, queryConfig),
              body: new URLSearchParams(formFields).toString(),
              credentials: "include"
            });
          } catch (_error) {
            return [];
          }
          if (!response || !response.ok) {
            return [];
          }
          let payload;
          try {
            payload = await response.json();
          } catch (_error) {
            return [];
          }
          const rawSuggestions = normalizedQuery ? __privateMethod(this, _ThreadsAccountSearchClient_instances, extractAccountSearchSuggestions_fn).call(this, payload) : __privateMethod(this, _ThreadsAccountSearchClient_instances, extractNullStateSuggestions_fn).call(this, payload);
          return __privateMethod(this, _ThreadsAccountSearchClient_instances, dedupeSuggestions_fn).call(this, rawSuggestions);
        }
      };
      _ThreadsAccountSearchClient_instances = new WeakSet();
      /**
       * Resolve query endpoint URL for the current host context.
       *
       * @returns {string}
       */
      resolveEndpointUrl_fn = function() {
        if (typeof location !== "undefined" && location.origin) {
          return `${location.origin}/graphql/query`;
        }
        return "https://www.threads.com/graphql/query";
      };
      /**
       * Build GraphQL form fields from observed request context and query intent.
       *
       * @param {Record<string, string>} contextFormFields - Observed request form fields.
       * @param {Record<string, string>} contextHeaders - Observed request headers.
       * @param {{ docId: string, friendlyName: string }} queryConfig - Query metadata.
       * @param {string} normalizedQuery - Normalized username token without @.
       * @returns {Record<string, string>}
       */
      buildQueryFormFields_fn = function(contextFormFields, contextHeaders, queryConfig, normalizedQuery) {
        const variables = normalizedQuery ? {
          query: normalizedQuery,
          first: 10,
          should_fetch_ig_inactive_on_text_app: true,
          should_fetch_friendship_status: false,
          should_fetch_fediverse_profiles: true,
          hide_unconnected_private: false,
          __relay_internal__pv__BarcelonaIsLoggedInrelayprovider: true,
          __relay_internal__pv__BarcelonaIsCrawlerrelayprovider: false,
          __relay_internal__pv__BarcelonaHasDisplayNamesrelayprovider: false
        } : {
          count: 15,
          __relay_internal__pv__BarcelonaIsLoggedInrelayprovider: true,
          __relay_internal__pv__BarcelonaIsCrawlerrelayprovider: false,
          __relay_internal__pv__BarcelonaHasDisplayNamesrelayprovider: false
        };
        const queryFormFields = {
          ...contextFormFields,
          fb_api_caller_class: "RelayModern",
          fb_api_req_friendly_name: queryConfig.friendlyName,
          doc_id: queryConfig.docId,
          server_timestamps: "true",
          __req: __privateMethod(this, _ThreadsAccountSearchClient_instances, nextRequestSequence_fn).call(this),
          variables: JSON.stringify(variables)
        };
        __privateMethod(this, _ThreadsAccountSearchClient_instances, applyFormFieldFallbacks_fn).call(this, queryFormFields, contextHeaders);
        if (!queryFormFields.__user) {
          queryFormFields.__user = "0";
        }
        if (!queryFormFields.__a) {
          queryFormFields.__a = "1";
        }
        if (!queryFormFields.dpr) {
          queryFormFields.dpr = typeof devicePixelRatio === "number" && devicePixelRatio > 0 ? String(devicePixelRatio) : "1";
        }
        return queryFormFields;
      };
      /**
       * Fill missing form fields from host runtime state when observer context is sparse.
       *
       * @param {Record<string, string>} queryFormFields - Mutable form field bag.
       * @param {Record<string, string>} contextHeaders - Observed request headers.
       */
      applyFormFieldFallbacks_fn = function(queryFormFields, contextHeaders) {
        const userContext = __privateMethod(this, _ThreadsAccountSearchClient_instances, resolveCurrentUserContext_fn).call(this);
        if (!queryFormFields.av && userContext.actorId) {
          queryFormFields.av = userContext.actorId;
        }
        if (!queryFormFields.fb_dtsg) {
          queryFormFields.fb_dtsg = __privateMethod(this, _ThreadsAccountSearchClient_instances, readModuleToken_fn).call(this, "DTSGInitialData", "token");
        }
        if (!queryFormFields.fb_dtsg) {
          queryFormFields.fb_dtsg = __privateMethod(this, _ThreadsAccountSearchClient_instances, readEqmcToken_fn).call(this, "f");
        }
        if (!queryFormFields.lsd) {
          queryFormFields.lsd = __privateMethod(this, _ThreadsAccountSearchClient_instances, readModuleToken_fn).call(this, "LSD", "token");
        }
        if (!queryFormFields.lsd) {
          queryFormFields.lsd = String(contextHeaders["x-fb-lsd"] || "").trim();
        }
        if (!queryFormFields.lsd) {
          queryFormFields.lsd = __privateMethod(this, _ThreadsAccountSearchClient_instances, readEqmcToken_fn).call(this, "l");
        }
        if (!queryFormFields.jazoest && queryFormFields.fb_dtsg) {
          queryFormFields.jazoest = __privateMethod(this, _ThreadsAccountSearchClient_instances, deriveJazoestToken_fn).call(this, queryFormFields.fb_dtsg);
        }
      };
      /**
       * Resolve actor identifiers from host CurrentUser module and cookie fallbacks.
       *
       * @returns {{ actorId: string }}
       */
      resolveCurrentUserContext_fn = function() {
        const currentUser = __privateMethod(this, _ThreadsAccountSearchClient_instances, readHostModule_fn).call(this, "CurrentUser");
        if (currentUser && typeof currentUser === "object") {
          if (typeof currentUser.getPossiblyNonFacebookUserID === "function") {
            const nonFacebookUserId = String(currentUser.getPossiblyNonFacebookUserID() || "").trim();
            if (nonFacebookUserId) {
              return { actorId: nonFacebookUserId };
            }
          }
        }
        const fallbackActorId = __privateMethod(this, _ThreadsAccountSearchClient_instances, readCookieValue_fn).call(this, "ds_user_id");
        return { actorId: fallbackActorId };
      };
      /**
       * Read one token field from one host module.
       *
       * @param {string} moduleName - Host module name.
       * @param {string} propertyName - Token property key.
       * @returns {string}
       */
      readModuleToken_fn = function(moduleName, propertyName) {
        const moduleData = __privateMethod(this, _ThreadsAccountSearchClient_instances, readHostModule_fn).call(this, moduleName);
        if (!moduleData || typeof moduleData !== "object") {
          return "";
        }
        return String(moduleData[propertyName] || "").trim();
      };
      /**
       * Read one host module through page-level module loader.
       *
       * @param {string} moduleName - Host module name.
       * @returns {unknown}
       */
      readHostModule_fn = function(moduleName) {
        const hostGlobal = __privateMethod(this, _ThreadsAccountSearchClient_instances, resolveHostGlobalObject_fn).call(this);
        if (!hostGlobal || typeof hostGlobal.require !== "function") {
          return null;
        }
        try {
          return hostGlobal.require(moduleName);
        } catch (_error) {
          return null;
        }
      };
      /**
       * Resolve host page global object across userscript sandboxes.
       *
       * @returns {Record<string, unknown> | null}
       */
      resolveHostGlobalObject_fn = function() {
        const globalObject = typeof globalThis !== "undefined" ? globalThis : null;
        if (globalObject && globalObject.unsafeWindow) {
          return globalObject.unsafeWindow;
        }
        if (typeof window !== "undefined" && window) {
          if (window.wrappedJSObject) {
            return window.wrappedJSObject;
          }
          return window;
        }
        return null;
      };
      /**
       * Read token candidate from __eqmc JSON payload.
       *
       * @param {string} fieldName - Eqmc payload field key.
       * @returns {string}
       */
      readEqmcToken_fn = function(fieldName) {
        if (typeof document === "undefined") {
          return "";
        }
        const eqmcElement = document.getElementById("__eqmc");
        if (!eqmcElement || !eqmcElement.textContent) {
          return "";
        }
        try {
          const payload = JSON.parse(eqmcElement.textContent);
          return String(payload && payload[fieldName] ? payload[fieldName] : "").trim();
        } catch (_error) {
          return "";
        }
      };
      /**
       * Derive jazoest token from fb_dtsg token.
       *
       * @param {string} fbDtsgToken - FB DTSG token.
       * @returns {string}
       */
      deriveJazoestToken_fn = function(fbDtsgToken) {
        const token = String(fbDtsgToken || "");
        if (!token) {
          return "";
        }
        let checksum = 0;
        for (let index = 0; index < token.length; index += 1) {
          checksum += token.charCodeAt(index);
        }
        return `2${checksum}`;
      };
      /**
       * Build request headers for account-search GraphQL calls.
       *
       * @param {Record<string, string>} contextHeaders - Observed request headers.
       * @param {Record<string, string>} queryFormFields - Request form fields.
       * @param {{ friendlyName: string, rootFieldName: string }} queryConfig - Query metadata.
       * @returns {Record<string, string>}
       */
      buildQueryHeaders_fn = function(contextHeaders, queryFormFields, queryConfig) {
        const csrfToken = __privateMethod(this, _ThreadsAccountSearchClient_instances, readCookieValue_fn).call(this, "csrftoken");
        const queryHeaders = {
          "content-type": "application/x-www-form-urlencoded",
          "x-fb-friendly-name": queryConfig.friendlyName,
          "x-root-field-name": queryConfig.rootFieldName,
          "x-fb-lsd": queryFormFields.lsd || contextHeaders["x-fb-lsd"] || "",
          "x-csrftoken": contextHeaders["x-csrftoken"] || csrfToken || "",
          "x-ig-app-id": contextHeaders["x-ig-app-id"] || "238260118697367",
          referer: contextHeaders.referer || (typeof location !== "undefined" ? location.href : "")
        };
        const optionalHeaderKeys = ["x-web-session-id", "x-asbd-id", "x-bloks-version-id"];
        for (const optionalHeaderKey of optionalHeaderKeys) {
          const optionalHeaderValue = contextHeaders[optionalHeaderKey];
          if (optionalHeaderValue) {
            queryHeaders[optionalHeaderKey] = optionalHeaderValue;
          }
        }
        return queryHeaders;
      };
      /**
       * Extract typed-account results from GraphQL response payload.
       *
       * @param {unknown} payload - GraphQL response payload.
       * @returns {Array<{ handle: string, displayName: string, isVerified: boolean, profilePictureUrl: string }>}
       */
      extractAccountSearchSuggestions_fn = function(payload) {
        const edges = payload && typeof payload === "object" && payload.data && payload.data.xdt_api__v1__users__search_connection && Array.isArray(payload.data.xdt_api__v1__users__search_connection.edges) ? payload.data.xdt_api__v1__users__search_connection.edges : [];
        return edges.map((edge) => __privateMethod(this, _ThreadsAccountSearchClient_instances, normalizeSuggestionNode_fn).call(this, edge && edge.node ? edge.node : null)).filter(Boolean);
      };
      /**
       * Extract null-state mention suggestions from GraphQL response payload.
       *
       * @param {unknown} payload - GraphQL response payload.
       * @returns {Array<{ handle: string, displayName: string, isVerified: boolean, profilePictureUrl: string }>}
       */
      extractNullStateSuggestions_fn = function(payload) {
        const suggestedUsers = payload && typeof payload === "object" && payload.data && payload.data.xdt_mention_nullstate_sugesstions && Array.isArray(payload.data.xdt_mention_nullstate_sugesstions.suggested_users) ? payload.data.xdt_mention_nullstate_sugesstions.suggested_users : [];
        return suggestedUsers.map((node) => __privateMethod(this, _ThreadsAccountSearchClient_instances, normalizeSuggestionNode_fn).call(this, node)).filter(Boolean);
      };
      /**
       * Normalize one GraphQL user node into one deterministic suggestion object.
       *
       * @param {unknown} value - Candidate user node.
       * @returns {{ handle: string, displayName: string, isVerified: boolean, profilePictureUrl: string } | null}
       */
      normalizeSuggestionNode_fn = function(value) {
        const candidate = value && typeof value === "object" ? value : null;
        if (!candidate) {
          return null;
        }
        const handle = normalizeHandle(candidate.username);
        if (!handle) {
          return null;
        }
        const displayName = String(candidate.full_name || candidate.username || "").trim();
        const profilePictureUrl = String(candidate.profile_pic_url || "").trim();
        return {
          handle,
          displayName,
          isVerified: candidate.is_verified === true,
          profilePictureUrl
        };
      };
      /**
       * Deduplicate suggestions by handle while preserving source order.
       *
       * @param {Array<{ handle: string, displayName: string, isVerified: boolean, profilePictureUrl: string }>} suggestions - Candidate suggestions.
       * @returns {Array<{ handle: string, displayName: string, isVerified: boolean, profilePictureUrl: string }>}
       */
      dedupeSuggestions_fn = function(suggestions) {
        const uniqueSuggestions = [];
        const seenHandles = /* @__PURE__ */ new Set();
        for (const suggestion of suggestions) {
          if (!suggestion || !suggestion.handle || seenHandles.has(suggestion.handle)) {
            continue;
          }
          seenHandles.add(suggestion.handle);
          uniqueSuggestions.push(suggestion);
        }
        return uniqueSuggestions;
      };
      /**
       * Read one cookie value by key.
       *
       * @param {string} cookieName - Cookie name.
       * @returns {string}
       */
      readCookieValue_fn = function(cookieName) {
        if (typeof document === "undefined" || typeof document.cookie !== "string") {
          return "";
        }
        const segments = document.cookie.split(";");
        for (const segment of segments) {
          const [rawName, ...rawValueParts] = segment.split("=");
          const normalizedName = String(rawName || "").trim();
          if (normalizedName !== cookieName) {
            continue;
          }
          return decodeURIComponent(rawValueParts.join("=").trim());
        }
        return "";
      };
      /**
       * Generate Relay request sequence token compatible with host requests.
       *
       * @returns {string}
       */
      nextRequestSequence_fn = function() {
        this.requestSequence += 1;
        return this.requestSequence.toString(36);
      };
      module.exports = {
        ThreadsAccountSearchClient
      };
    }
  });

  // src/signals/threads-network-observer.js
  var require_threads_network_observer = __commonJS({
    "src/signals/threads-network-observer.js"(exports, module) {
      var REQUEST_CONTEXT_FORM_FIELDS = [
        "av",
        "__user",
        "__a",
        "__hs",
        "dpr",
        "__ccg",
        "__rev",
        "__s",
        "__hsi",
        "__dyn",
        "__csr",
        "__hsdp",
        "__hblp",
        "__sjsp",
        "__comet_req",
        "fb_dtsg",
        "jazoest",
        "lsd",
        "__spin_r",
        "__spin_b",
        "__spin_t",
        "__jssesw",
        "__crn"
      ];
      var BRIDGE_CONTEXT_EVENT_NAME = "btf:threads-network-observer:context";
      var BRIDGE_PAYLOAD_EVENT_NAME = "btf:threads-network-observer:payload";
      var BRIDGE_READY_EVENT_NAME = "btf:threads-network-observer:ready";
      var BRIDGE_STOP_EVENT_NAME = "btf:threads-network-observer:stop";
      var GRAPHQL_QUERY_PATH_PATTERN = /\/graphql\/query(?:\?|$)/i;
      var LOCAL_XHR_STATE_PROPERTY = "__btfXhrRequestState";
      var BRIDGE_HANDSHAKE_TIMEOUT_MS = 1500;
      var BOOTSTRAP_SCRIPT_SELECTOR = 'script[type="application/json"]';
      var BOOTSTRAP_METADATA_MARKERS = ["logging_info_token", "gen_ai_detection_method"];
      function parseSerializedBridgePayload(serializedValue) {
        if (typeof serializedValue !== "string" || serializedValue.length === 0) {
          return null;
        }
        try {
          const parsedValue = JSON.parse(serializedValue);
          return parsedValue && typeof parsedValue === "object" ? (
            /** @type {Record<string, unknown>} */
            parsedValue
          ) : null;
        } catch (_error) {
          return null;
        }
      }
      function buildPageBridgeScriptSource() {
        function bootstrapPageBridge(config) {
          const globalObject = typeof window !== "undefined" ? window : null;
          const documentObject = typeof document !== "undefined" ? document : null;
          if (!globalObject || !documentObject) {
            return;
          }
          const existingBridge = globalObject[config.bridgeMarker];
          if (existingBridge && existingBridge.isActive) {
            return;
          }
          const originalFetch = typeof globalObject.fetch === "function" ? globalObject.fetch.bind(globalObject) : null;
          const xhrConstructor = typeof globalObject.XMLHttpRequest === "function" ? globalObject.XMLHttpRequest : null;
          const xhrPrototype = xhrConstructor && xhrConstructor.prototype ? xhrConstructor.prototype : null;
          const originalXhrOpen = xhrPrototype && typeof xhrPrototype.open === "function" ? xhrPrototype.open : null;
          const originalXhrSetRequestHeader = xhrPrototype && typeof xhrPrototype.setRequestHeader === "function" ? xhrPrototype.setRequestHeader : null;
          const originalXhrSend = xhrPrototype && typeof xhrPrototype.send === "function" ? xhrPrototype.send : null;
          const xhrStateProperty = "__btfThreadsNetworkObserverRequestState";
          if (!originalFetch && (!originalXhrOpen || !originalXhrSetRequestHeader || !originalXhrSend)) {
            return;
          }
          function resolveRequestUrl(input) {
            if (typeof input === "string") {
              return input;
            }
            if (typeof URL !== "undefined" && input instanceof URL) {
              return input.toString();
            }
            if (input && typeof input === "object" && typeof input.url === "string") {
              return input.url;
            }
            return "";
          }
          function resolveRequestMethod(input, init) {
            const methodFromInit = init && typeof init.method === "string" ? init.method : "";
            if (methodFromInit) {
              return methodFromInit.toUpperCase();
            }
            if (input && typeof input === "object" && typeof input.method === "string") {
              return input.method.toUpperCase();
            }
            return "GET";
          }
          function isGraphqlRequest(method, requestUrl) {
            return method === "POST" && /\/graphql\/query(?:\?|$)/i.test(requestUrl);
          }
          function appendNormalizedHeaders(targetHeaders, sourceHeaders) {
            if (!sourceHeaders) {
              return;
            }
            if (typeof Headers !== "undefined" && sourceHeaders instanceof Headers) {
              sourceHeaders.forEach((value, key) => {
                targetHeaders[String(key || "").toLowerCase()] = String(value || "");
              });
              return;
            }
            if (Array.isArray(sourceHeaders)) {
              for (const entry of sourceHeaders) {
                if (!Array.isArray(entry) || entry.length < 2) {
                  continue;
                }
                targetHeaders[String(entry[0] || "").toLowerCase()] = String(entry[1] || "");
              }
              return;
            }
            if (typeof sourceHeaders === "object") {
              for (const [key, value] of Object.entries(sourceHeaders)) {
                targetHeaders[String(key || "").toLowerCase()] = String(value || "");
              }
            }
          }
          function resolveRequestHeaders(input, init) {
            const normalizedHeaders = {};
            appendNormalizedHeaders(normalizedHeaders, input && input.headers);
            appendNormalizedHeaders(normalizedHeaders, init && init.headers);
            return normalizedHeaders;
          }
          function resolveFormFieldsFromBody(body) {
            if (body === void 0 || body === null) {
              return {};
            }
            if (typeof body === "string") {
              return Object.fromEntries(new URLSearchParams(body).entries());
            }
            if (typeof URLSearchParams !== "undefined" && body instanceof URLSearchParams) {
              return Object.fromEntries(body.entries());
            }
            if (typeof FormData !== "undefined" && body instanceof FormData) {
              const formFields = {};
              for (const [fieldName, fieldValue] of body.entries()) {
                if (typeof fieldValue === "string") {
                  formFields[fieldName] = fieldValue;
                }
              }
              return formFields;
            }
            return {};
          }
          function resolveFormFields(init) {
            return resolveFormFieldsFromBody(init ? init.body : void 0);
          }
          function emitSerializedEvent(eventName, value) {
            let serializedValue = "";
            try {
              serializedValue = JSON.stringify(value);
            } catch (_error) {
              return;
            }
            try {
              documentObject.dispatchEvent(new CustomEvent(eventName, { detail: serializedValue }));
            } catch (_error) {
            }
          }
          function captureRequestSnapshot(input, init) {
            const requestUrl = resolveRequestUrl(input);
            const method = resolveRequestMethod(input, init);
            const isGraphqlQuery = isGraphqlRequest(method, requestUrl);
            if (isGraphqlQuery) {
              emitSerializedEvent(config.contextEventName, {
                headers: resolveRequestHeaders(input, init),
                formFields: resolveFormFields(init)
              });
            }
            return { isGraphqlQuery };
          }
          function captureResponsePayload(requestSnapshot, response) {
            if (!requestSnapshot.isGraphqlQuery || !response || typeof response.clone !== "function") {
              return;
            }
            const responseClone = response.clone();
            void responseClone.json().then((payload) => {
              emitSerializedEvent(config.payloadEventName, {
                payload
              });
            }).catch(() => {
            });
          }
          function captureXhrResponsePayload(requestSnapshot, xhrInstance) {
            if (!requestSnapshot.isGraphqlQuery || !xhrInstance) {
              return;
            }
            const responseType = String(xhrInstance.responseType || "").toLowerCase();
            let payload = null;
            if (responseType === "" || responseType === "text") {
              const responseText = typeof xhrInstance.responseText === "string" ? xhrInstance.responseText : "";
              if (!responseText) {
                return;
              }
              try {
                payload = JSON.parse(responseText);
              } catch (_error) {
                return;
              }
            } else if (responseType === "json") {
              payload = xhrInstance.response && typeof xhrInstance.response === "object" ? xhrInstance.response : null;
            }
            if (!payload || typeof payload !== "object") {
              return;
            }
            emitSerializedEvent(config.payloadEventName, {
              payload
            });
          }
          const patchedFetch = originalFetch ? async function patchedFetch2(input, init) {
            const requestSnapshot = captureRequestSnapshot(input, init);
            const response = await originalFetch(input, init);
            captureResponsePayload(requestSnapshot, response);
            return response;
          } : null;
          if (xhrPrototype && originalXhrOpen && originalXhrSetRequestHeader && originalXhrSend) {
            xhrPrototype.open = function patchedXhrOpen(method, url) {
              this[xhrStateProperty] = {
                method: String(method || "GET").toUpperCase(),
                requestUrl: resolveRequestUrl(url),
                headers: {}
              };
              return originalXhrOpen.apply(this, arguments);
            };
            xhrPrototype.setRequestHeader = function patchedXhrSetRequestHeader(headerName, headerValue) {
              const requestState = this[xhrStateProperty] && typeof this[xhrStateProperty] === "object" ? this[xhrStateProperty] : null;
              if (requestState) {
                requestState.headers[String(headerName || "").toLowerCase()] = String(headerValue || "");
              }
              return originalXhrSetRequestHeader.apply(this, arguments);
            };
            xhrPrototype.send = function patchedXhrSend(body) {
              const requestState = this[xhrStateProperty] && typeof this[xhrStateProperty] === "object" ? this[xhrStateProperty] : {
                method: "GET",
                requestUrl: "",
                headers: {}
              };
              const requestSnapshot = {
                isGraphqlQuery: isGraphqlRequest(
                  String(requestState.method || "GET").toUpperCase(),
                  String(requestState.requestUrl || "")
                )
              };
              if (requestSnapshot.isGraphqlQuery) {
                emitSerializedEvent(config.contextEventName, {
                  headers: requestState.headers && typeof requestState.headers === "object" ? requestState.headers : {},
                  formFields: resolveFormFieldsFromBody(body)
                });
                if (typeof this.addEventListener === "function") {
                  const handleReadyStateChange = () => {
                    if (this.readyState !== 4) {
                      return;
                    }
                    this.removeEventListener("readystatechange", handleReadyStateChange);
                    captureXhrResponsePayload(requestSnapshot, this);
                  };
                  this.addEventListener("readystatechange", handleReadyStateChange);
                }
              }
              return originalXhrSend.apply(this, arguments);
            };
          }
          function stopBridge() {
            if (patchedFetch && globalObject.fetch === patchedFetch) {
              globalObject.fetch = originalFetch;
            }
            if (xhrPrototype && originalXhrOpen && xhrPrototype.open !== originalXhrOpen) {
              xhrPrototype.open = originalXhrOpen;
            }
            if (xhrPrototype && originalXhrSetRequestHeader && xhrPrototype.setRequestHeader !== originalXhrSetRequestHeader) {
              xhrPrototype.setRequestHeader = originalXhrSetRequestHeader;
            }
            if (xhrPrototype && originalXhrSend && xhrPrototype.send !== originalXhrSend) {
              xhrPrototype.send = originalXhrSend;
            }
            documentObject.removeEventListener(config.stopEventName, stopBridge);
            delete globalObject[config.bridgeMarker];
          }
          if (patchedFetch) {
            globalObject.fetch = patchedFetch;
          }
          documentObject.addEventListener(config.stopEventName, stopBridge);
          globalObject[config.bridgeMarker] = { isActive: true };
          emitSerializedEvent(config.readyEventName, {
            ready: true
          });
        }
        return `;(${bootstrapPageBridge.toString()})(${JSON.stringify({
          bridgeMarker: "__btfThreadsNetworkObserverBridge",
          contextEventName: BRIDGE_CONTEXT_EVENT_NAME,
          payloadEventName: BRIDGE_PAYLOAD_EVENT_NAME,
          readyEventName: BRIDGE_READY_EVENT_NAME,
          stopEventName: BRIDGE_STOP_EVENT_NAME
        })});`;
      }
      var _ThreadsNetworkObserver_instances, startBootstrapScriptObserver_fn, stopBootstrapScriptObserver_fn, startPageBridge_fn, resolveBridgeTrustedTypesPolicy_fn, applyPageNonce_fn, resolvePageNonce_fn, waitForBridgeHandshake_fn, warnBridgeDegradedOnce_fn, stopPageBridge_fn, captureBridgeContext_fn, captureBridgePayload_fn, captureBridgeReady_fn, startLocalFetchPatch_fn, startLocalXhrPatch_fn, stopLocalFetchPatch_fn, stopLocalXhrPatch_fn, isGraphqlRequest_fn, captureRequestSnapshot_fn, capturePostMetadataFromResponse_fn, parseXhrResponsePayload_fn, ingestGraphqlPayload_fn, ingestBootstrapScriptPayloads_fn, isBootstrapMetadataCandidate_fn, captureBootstrapMutationRecords_fn, ingestBootstrapScriptPayloadsFromRootNode_fn, collectBootstrapScriptElements_fn, ingestBootstrapScriptElement_fn, isBootstrapScriptElement_fn, updateRequestContext_fn, resolveRequestUrl_fn, resolveRequestMethod_fn, resolveRequestHeaders_fn, appendNormalizedHeaders_fn, resolveFormFields_fn, resolveFormFieldsFromBody_fn, parseSearchParams_fn;
      var ThreadsNetworkObserver = class {
        /**
         * Initialize observer state and dependencies.
         *
         * @param {{
         *   postMetadataCatalog: { ingestGraphqlPayload: Function },
         *   bridgeHandshakeTimeoutMs?: number,
         *   logger?: { debug: Function, warn: Function }
         * }} options - Observer dependencies.
         */
        constructor(options = {}) {
          __privateAdd(this, _ThreadsNetworkObserver_instances);
          const {
            postMetadataCatalog,
            bridgeHandshakeTimeoutMs = BRIDGE_HANDSHAKE_TIMEOUT_MS,
            logger = { debug: () => {
            }, warn: () => {
            } }
          } = options;
          this.postMetadataCatalog = postMetadataCatalog;
          this.bridgeHandshakeTimeoutMs = bridgeHandshakeTimeoutMs;
          this.logger = logger;
          this.originalFetch = null;
          this.patchedFetch = null;
          this.originalXhrOpen = null;
          this.originalXhrSetRequestHeader = null;
          this.originalXhrSend = null;
          this.isStarted = false;
          this.usesPageBridge = false;
          this.usesLocalFetchPatch = false;
          this.usesBootstrapScriptObserver = false;
          this.bridgeReady = false;
          this.didWarnBridgeDegraded = false;
          this.metadataIngestedCount = 0;
          this.bridgeTrustedTypesPolicy = null;
          this.bootstrapScriptObserver = null;
          this.bootstrapScriptPayloadByElement = /* @__PURE__ */ new WeakMap();
          this.requestContext = {
            headers: {},
            formFields: {}
          };
          this.handleBridgeContextEvent = (event) => __privateMethod(this, _ThreadsNetworkObserver_instances, captureBridgeContext_fn).call(this, event);
          this.handleBridgePayloadEvent = (event) => __privateMethod(this, _ThreadsNetworkObserver_instances, captureBridgePayload_fn).call(this, event);
          this.handleBridgeReadyEvent = (event) => __privateMethod(this, _ThreadsNetworkObserver_instances, captureBridgeReady_fn).call(this, event);
          this.handleBootstrapMutationRecords = (mutationRecords) => __privateMethod(this, _ThreadsNetworkObserver_instances, captureBootstrapMutationRecords_fn).call(this, mutationRecords);
        }
        /**
         * Start intercepting fetch calls from the host page.
         *
         * @returns {Promise<void>}
         */
        async start() {
          if (this.isStarted) {
            return;
          }
          this.bridgeReady = false;
          const didStartBootstrapScriptObserver = __privateMethod(this, _ThreadsNetworkObserver_instances, startBootstrapScriptObserver_fn).call(this);
          const didStartBridge = await __privateMethod(this, _ThreadsNetworkObserver_instances, startPageBridge_fn).call(this);
          let didStartLocalFetchPatch = false;
          if (!didStartBridge) {
            didStartLocalFetchPatch = __privateMethod(this, _ThreadsNetworkObserver_instances, startLocalFetchPatch_fn).call(this);
            if (didStartLocalFetchPatch) {
              __privateMethod(this, _ThreadsNetworkObserver_instances, warnBridgeDegradedOnce_fn).call(this, "Fell back to local fetch patch because page bridge handshake failed.");
            } else {
              __privateMethod(this, _ThreadsNetworkObserver_instances, warnBridgeDegradedOnce_fn).call(this, "Skipped page-bridge startup because bridge handshake failed and fallback patch was unavailable.");
            }
          }
          this.usesPageBridge = didStartBridge;
          this.usesLocalFetchPatch = didStartLocalFetchPatch;
          this.usesBootstrapScriptObserver = didStartBootstrapScriptObserver;
          __privateMethod(this, _ThreadsNetworkObserver_instances, ingestBootstrapScriptPayloads_fn).call(this);
          const globalObject = typeof globalThis !== "undefined" ? globalThis : null;
          const hasLocalNetworkApi = globalObject && (typeof globalObject.fetch === "function" || typeof globalObject.XMLHttpRequest === "function");
          if (!didStartBridge && !didStartLocalFetchPatch && !didStartBootstrapScriptObserver && !hasLocalNetworkApi) {
            this.logger.warn("Skipped network observer startup because network APIs are unavailable.");
            return;
          }
          this.isStarted = true;
        }
        /**
         * Stop interception and restore original fetch implementation.
         */
        stop() {
          if (!this.isStarted) {
            return;
          }
          if (this.usesPageBridge) {
            __privateMethod(this, _ThreadsNetworkObserver_instances, stopPageBridge_fn).call(this);
          }
          if (this.usesLocalFetchPatch) {
            __privateMethod(this, _ThreadsNetworkObserver_instances, stopLocalFetchPatch_fn).call(this);
          }
          if (this.usesBootstrapScriptObserver) {
            __privateMethod(this, _ThreadsNetworkObserver_instances, stopBootstrapScriptObserver_fn).call(this);
          }
          this.usesPageBridge = false;
          this.usesLocalFetchPatch = false;
          this.usesBootstrapScriptObserver = false;
          this.bridgeReady = false;
          this.isStarted = false;
        }
        /**
         * Resolve best-known request context required by silent mutation requests.
         *
         * @returns {{ headers: Record<string, string>, formFields: Record<string, string> }}
         */
        getRequestContext() {
          return {
            headers: { ...this.requestContext.headers },
            formFields: { ...this.requestContext.formFields }
          };
        }
        /**
         * Report whether page-context bridge handshake has completed.
         *
         * @returns {boolean}
         */
        isBridgeReady() {
          return this.bridgeReady;
        }
        /**
         * Expose observer diagnostics for not-interested observability.
         *
         * @returns {{ bridge_ready: boolean, metadata_ingested: number }}
         */
        getDiagnostics() {
          return {
            bridge_ready: this.bridgeReady,
            metadata_ingested: this.metadataIngestedCount
          };
        }
      };
      _ThreadsNetworkObserver_instances = new WeakSet();
      /**
       * Observe late bootstrap scripts so initial profile payloads are not missed.
       *
       * @returns {boolean}
       */
      startBootstrapScriptObserver_fn = function() {
        const documentObject = typeof document !== "undefined" ? document : null;
        const mutationObserverConstructor = typeof MutationObserver === "function" ? MutationObserver : null;
        const observationRoot = documentObject && documentObject.documentElement ? documentObject.documentElement : null;
        if (!documentObject || !observationRoot || !mutationObserverConstructor || this.bootstrapScriptObserver) {
          return false;
        }
        this.bootstrapScriptObserver = new mutationObserverConstructor((mutationRecords) => {
          this.handleBootstrapMutationRecords(mutationRecords);
        });
        this.bootstrapScriptObserver.observe(observationRoot, {
          childList: true,
          subtree: true,
          characterData: true
        });
        return true;
      };
      /**
       * Stop observing bootstrap script mutations and clear tracked payload snapshots.
       */
      stopBootstrapScriptObserver_fn = function() {
        if (this.bootstrapScriptObserver) {
          this.bootstrapScriptObserver.disconnect();
          this.bootstrapScriptObserver = null;
        }
        this.bootstrapScriptPayloadByElement = /* @__PURE__ */ new WeakMap();
      };
      startPageBridge_fn = async function() {
        const documentObject = typeof document !== "undefined" ? document : null;
        if (!documentObject || typeof documentObject.addEventListener !== "function" || typeof documentObject.createElement !== "function") {
          return false;
        }
        documentObject.addEventListener(BRIDGE_CONTEXT_EVENT_NAME, this.handleBridgeContextEvent);
        documentObject.addEventListener(BRIDGE_PAYLOAD_EVENT_NAME, this.handleBridgePayloadEvent);
        documentObject.addEventListener(BRIDGE_READY_EVENT_NAME, this.handleBridgeReadyEvent);
        let bridgeScriptElement = null;
        try {
          bridgeScriptElement = documentObject.createElement("script");
        } catch (_error) {
          documentObject.removeEventListener(BRIDGE_CONTEXT_EVENT_NAME, this.handleBridgeContextEvent);
          documentObject.removeEventListener(BRIDGE_PAYLOAD_EVENT_NAME, this.handleBridgePayloadEvent);
          documentObject.removeEventListener(BRIDGE_READY_EVENT_NAME, this.handleBridgeReadyEvent);
          return false;
        }
        bridgeScriptElement.type = "text/javascript";
        __privateMethod(this, _ThreadsNetworkObserver_instances, applyPageNonce_fn).call(this, bridgeScriptElement, documentObject);
        const bridgeSource = buildPageBridgeScriptSource();
        const trustedTypesPolicy = __privateMethod(this, _ThreadsNetworkObserver_instances, resolveBridgeTrustedTypesPolicy_fn).call(this);
        const globalObject = typeof globalThis !== "undefined" ? globalThis : null;
        const supportsBlobScriptUrl = globalObject && globalObject.URL && typeof globalObject.URL.createObjectURL === "function" && typeof globalObject.URL.revokeObjectURL === "function" && typeof globalObject.Blob === "function";
        let bridgeScriptUrl = "";
        let usedBlobScriptUrl = false;
        const revokeBridgeScriptUrl = () => {
          if (!bridgeScriptUrl || !supportsBlobScriptUrl) {
            return;
          }
          globalObject.URL.revokeObjectURL(bridgeScriptUrl);
          bridgeScriptUrl = "";
        };
        if (supportsBlobScriptUrl) {
          try {
            const scriptBlob = new globalObject.Blob([bridgeSource], {
              type: "text/javascript"
            });
            bridgeScriptUrl = globalObject.URL.createObjectURL(scriptBlob);
            if (trustedTypesPolicy && typeof trustedTypesPolicy.createScriptURL === "function") {
              bridgeScriptElement.src = trustedTypesPolicy.createScriptURL(bridgeScriptUrl);
            } else {
              bridgeScriptElement.src = bridgeScriptUrl;
            }
            usedBlobScriptUrl = true;
          } catch (_error) {
            revokeBridgeScriptUrl();
          }
        }
        if (!usedBlobScriptUrl) {
          try {
            if (trustedTypesPolicy && typeof trustedTypesPolicy.createScript === "function") {
              bridgeScriptElement.text = trustedTypesPolicy.createScript(bridgeSource);
            } else {
              bridgeScriptElement.textContent = bridgeSource;
            }
          } catch (_error) {
            documentObject.removeEventListener(
              BRIDGE_CONTEXT_EVENT_NAME,
              this.handleBridgeContextEvent
            );
            documentObject.removeEventListener(
              BRIDGE_PAYLOAD_EVENT_NAME,
              this.handleBridgePayloadEvent
            );
            documentObject.removeEventListener(BRIDGE_READY_EVENT_NAME, this.handleBridgeReadyEvent);
            return false;
          }
        }
        const injectionRoot = documentObject.documentElement || documentObject.head || documentObject.body || documentObject;
        if (!injectionRoot || typeof injectionRoot.appendChild !== "function") {
          documentObject.removeEventListener(BRIDGE_CONTEXT_EVENT_NAME, this.handleBridgeContextEvent);
          documentObject.removeEventListener(BRIDGE_PAYLOAD_EVENT_NAME, this.handleBridgePayloadEvent);
          documentObject.removeEventListener(BRIDGE_READY_EVENT_NAME, this.handleBridgeReadyEvent);
          return false;
        }
        const handshakePromise = __privateMethod(this, _ThreadsNetworkObserver_instances, waitForBridgeHandshake_fn).call(this, documentObject);
        try {
          injectionRoot.appendChild(bridgeScriptElement);
          if (usedBlobScriptUrl) {
            const cleanupBlobInjection = () => {
              bridgeScriptElement.remove();
              revokeBridgeScriptUrl();
            };
            bridgeScriptElement.addEventListener("load", cleanupBlobInjection, {
              once: true
            });
            bridgeScriptElement.addEventListener("error", cleanupBlobInjection, {
              once: true
            });
          } else {
            bridgeScriptElement.remove();
          }
          const didHandshake = await handshakePromise;
          if (didHandshake) {
            this.bridgeReady = true;
            return true;
          }
          __privateMethod(this, _ThreadsNetworkObserver_instances, stopPageBridge_fn).call(this);
          return false;
        } catch (_error) {
          bridgeScriptElement.remove();
          revokeBridgeScriptUrl();
          documentObject.removeEventListener(BRIDGE_CONTEXT_EVENT_NAME, this.handleBridgeContextEvent);
          documentObject.removeEventListener(BRIDGE_PAYLOAD_EVENT_NAME, this.handleBridgePayloadEvent);
          documentObject.removeEventListener(BRIDGE_READY_EVENT_NAME, this.handleBridgeReadyEvent);
          return false;
        }
      };
      /**
       * Resolve trusted-types policy used for page-bridge script injection.
       *
       * @returns {{
       *   createScript?: (value: string) => unknown
       *   createScriptURL?: (value: string) => unknown
       * }|null}
       */
      resolveBridgeTrustedTypesPolicy_fn = function() {
        if (this.bridgeTrustedTypesPolicy) {
          return this.bridgeTrustedTypesPolicy;
        }
        const globalObject = typeof globalThis !== "undefined" ? globalThis : null;
        const trustedTypesApi = globalObject && globalObject.trustedTypes && typeof globalObject.trustedTypes === "object" ? globalObject.trustedTypes : null;
        if (!trustedTypesApi || typeof trustedTypesApi.createPolicy !== "function") {
          return null;
        }
        const policyName = "btfThreadsNetworkObserverPolicy";
        if (typeof trustedTypesApi.getPolicy === "function") {
          const existingPolicy = trustedTypesApi.getPolicy(policyName);
          if (existingPolicy) {
            this.bridgeTrustedTypesPolicy = existingPolicy;
            return existingPolicy;
          }
        }
        try {
          this.bridgeTrustedTypesPolicy = trustedTypesApi.createPolicy(policyName, {
            createScript: (value) => value,
            createScriptURL: (value) => value
          });
          return this.bridgeTrustedTypesPolicy;
        } catch (_error) {
          return null;
        }
      };
      /**
       * Copy active page nonce onto one injected script element when available.
       *
       * @param {HTMLScriptElement} scriptElement - Injected script tag.
       * @param {Document} documentObject - Active document.
       */
      applyPageNonce_fn = function(scriptElement, documentObject) {
        const nonceValue = __privateMethod(this, _ThreadsNetworkObserver_instances, resolvePageNonce_fn).call(this, documentObject);
        if (!nonceValue) {
          return;
        }
        scriptElement.setAttribute("nonce", nonceValue);
      };
      /**
       * Resolve nonce value from page-authored script tags.
       *
       * @param {Document} documentObject - Active document.
       * @returns {string}
       */
      resolvePageNonce_fn = function(documentObject) {
        if (!documentObject || typeof documentObject.querySelector !== "function") {
          return "";
        }
        const nonceScriptElement = documentObject.querySelector("script[nonce]");
        if (!nonceScriptElement) {
          return "";
        }
        const nonceAttribute = String(nonceScriptElement.getAttribute("nonce") || "").trim();
        if (nonceAttribute) {
          return nonceAttribute;
        }
        const nonceProperty = String(nonceScriptElement.nonce || "").trim();
        return nonceProperty;
      };
      /**
       * Await page bridge ready event and fail startup when handshake times out.
       *
       * @param {Document} documentObject - Active document.
       * @returns {Promise<boolean>}
       */
      waitForBridgeHandshake_fn = function(documentObject) {
        return new Promise((resolve) => {
          let isSettled = false;
          let timeoutId = null;
          const completeHandshake = (didSucceed) => {
            if (isSettled) {
              return;
            }
            isSettled = true;
            clearTimeout(timeoutId);
            documentObject.removeEventListener(BRIDGE_READY_EVENT_NAME, handleReadyEvent);
            resolve(didSucceed);
          };
          const handleReadyEvent = (event) => {
            const bridgePayload = parseSerializedBridgePayload(event && event.detail);
            const readyFlag = !bridgePayload || !Object.prototype.hasOwnProperty.call(bridgePayload, "ready") ? true : Boolean(bridgePayload.ready);
            completeHandshake(readyFlag);
          };
          const timeoutMs = Math.max(1, Number(this.bridgeHandshakeTimeoutMs) || 1);
          timeoutId = setTimeout(() => completeHandshake(false), timeoutMs);
          documentObject.addEventListener(BRIDGE_READY_EVENT_NAME, handleReadyEvent);
        });
      };
      /**
       * Warn once when bridge startup is degraded and local fallback is used.
       *
       * @param {string} message - Warning message.
       */
      warnBridgeDegradedOnce_fn = function(message) {
        if (this.didWarnBridgeDegraded) {
          return;
        }
        this.didWarnBridgeDegraded = true;
        this.logger.warn(message);
      };
      /**
       * Stop page-context bridge listeners and signal fetch restoration.
       */
      stopPageBridge_fn = function() {
        const documentObject = typeof document !== "undefined" ? document : null;
        if (!documentObject || typeof documentObject.removeEventListener !== "function") {
          return;
        }
        documentObject.removeEventListener(BRIDGE_CONTEXT_EVENT_NAME, this.handleBridgeContextEvent);
        documentObject.removeEventListener(BRIDGE_PAYLOAD_EVENT_NAME, this.handleBridgePayloadEvent);
        documentObject.removeEventListener(BRIDGE_READY_EVENT_NAME, this.handleBridgeReadyEvent);
        try {
          documentObject.dispatchEvent(new CustomEvent(BRIDGE_STOP_EVENT_NAME));
        } catch (_error) {
        }
      };
      /**
       * Capture request context updates from page bridge events.
       *
       * @param {Event} event - Bridge event.
       */
      captureBridgeContext_fn = function(event) {
        const bridgePayload = parseSerializedBridgePayload(event && event.detail);
        if (!bridgePayload) {
          return;
        }
        const headers = bridgePayload.headers && typeof bridgePayload.headers === "object" ? (
          /** @type {Record<string, string>} */
          bridgePayload.headers
        ) : {};
        const formFields = bridgePayload.formFields && typeof bridgePayload.formFields === "object" ? (
          /** @type {Record<string, string>} */
          bridgePayload.formFields
        ) : {};
        __privateMethod(this, _ThreadsNetworkObserver_instances, updateRequestContext_fn).call(this, headers, formFields);
      };
      /**
       * Capture GraphQL payload updates from page bridge events.
       *
       * @param {Event} event - Bridge event.
       */
      captureBridgePayload_fn = function(event) {
        const bridgePayload = parseSerializedBridgePayload(event && event.detail);
        if (!bridgePayload || !Object.prototype.hasOwnProperty.call(bridgePayload, "payload")) {
          return;
        }
        __privateMethod(this, _ThreadsNetworkObserver_instances, ingestGraphqlPayload_fn).call(this, bridgePayload.payload);
      };
      /**
       * Capture bridge-ready lifecycle events emitted by page script bootstrap.
       *
       * @param {Event} event - Bridge event.
       */
      captureBridgeReady_fn = function(event) {
        const bridgePayload = parseSerializedBridgePayload(event && event.detail);
        if (bridgePayload && Object.prototype.hasOwnProperty.call(bridgePayload, "ready")) {
          this.bridgeReady = Boolean(bridgePayload.ready);
          return;
        }
        this.bridgeReady = true;
      };
      /**
       * Start local-context network interception as fallback when bridge injection fails.
       *
       * @returns {boolean}
       */
      startLocalFetchPatch_fn = function() {
        const globalObject = typeof globalThis !== "undefined" ? globalThis : null;
        if (!globalObject) {
          return false;
        }
        let didPatchFetch = false;
        if (typeof globalObject.fetch === "function") {
          this.originalFetch = globalObject.fetch.bind(globalObject);
          this.patchedFetch = async (input, init) => {
            const requestSnapshot = __privateMethod(this, _ThreadsNetworkObserver_instances, captureRequestSnapshot_fn).call(this, input, init);
            const response = await this.originalFetch(input, init);
            __privateMethod(this, _ThreadsNetworkObserver_instances, capturePostMetadataFromResponse_fn).call(this, requestSnapshot, response);
            return response;
          };
          globalObject.fetch = this.patchedFetch;
          didPatchFetch = true;
        }
        const didPatchXhr = __privateMethod(this, _ThreadsNetworkObserver_instances, startLocalXhrPatch_fn).call(this, globalObject);
        return didPatchFetch || didPatchXhr;
      };
      /**
       * Start local-context XHR interception for GraphQL context and payload capture.
       *
       * @param {typeof globalThis} globalObject - Active global object.
       * @returns {boolean}
       */
      startLocalXhrPatch_fn = function(globalObject) {
        if (!globalObject || this.originalXhrOpen || this.originalXhrSetRequestHeader || this.originalXhrSend) {
          return false;
        }
        const xhrConstructor = typeof globalObject.XMLHttpRequest === "function" ? globalObject.XMLHttpRequest : null;
        const xhrPrototype = xhrConstructor && xhrConstructor.prototype ? xhrConstructor.prototype : null;
        if (!xhrPrototype || typeof xhrPrototype.open !== "function" || typeof xhrPrototype.setRequestHeader !== "function" || typeof xhrPrototype.send !== "function") {
          return false;
        }
        this.originalXhrOpen = xhrPrototype.open;
        this.originalXhrSetRequestHeader = xhrPrototype.setRequestHeader;
        this.originalXhrSend = xhrPrototype.send;
        const originalXhrOpen = this.originalXhrOpen;
        const originalXhrSetRequestHeader = this.originalXhrSetRequestHeader;
        const originalXhrSend = this.originalXhrSend;
        const isGraphqlRequest = (method, requestUrl) => __privateMethod(this, _ThreadsNetworkObserver_instances, isGraphqlRequest_fn).call(this, method, requestUrl);
        const resolveRequestUrl = (input) => __privateMethod(this, _ThreadsNetworkObserver_instances, resolveRequestUrl_fn).call(this, input);
        const resolveFormFieldsFromBody = (body) => __privateMethod(this, _ThreadsNetworkObserver_instances, resolveFormFieldsFromBody_fn).call(this, body);
        const updateRequestContext = (headers, formFields) => __privateMethod(this, _ThreadsNetworkObserver_instances, updateRequestContext_fn).call(this, headers, formFields);
        const ingestGraphqlPayload = (payload) => __privateMethod(this, _ThreadsNetworkObserver_instances, ingestGraphqlPayload_fn).call(this, payload);
        const parseXhrResponsePayload = (xhrInstance) => __privateMethod(this, _ThreadsNetworkObserver_instances, parseXhrResponsePayload_fn).call(this, xhrInstance);
        xhrPrototype.open = function patchedXhrOpen(method, url) {
          this[LOCAL_XHR_STATE_PROPERTY] = {
            method: String(method || "GET").toUpperCase(),
            requestUrl: resolveRequestUrl(url),
            headers: {}
          };
          return originalXhrOpen.apply(this, arguments);
        };
        xhrPrototype.setRequestHeader = function patchedXhrSetRequestHeader(headerName, headerValue) {
          const requestState = this[LOCAL_XHR_STATE_PROPERTY] && typeof this[LOCAL_XHR_STATE_PROPERTY] === "object" ? this[LOCAL_XHR_STATE_PROPERTY] : null;
          if (requestState) {
            requestState.headers[String(headerName || "").toLowerCase()] = String(headerValue || "");
          }
          return originalXhrSetRequestHeader.apply(this, arguments);
        };
        xhrPrototype.send = function patchedXhrSend(body) {
          const requestState = this[LOCAL_XHR_STATE_PROPERTY] && typeof this[LOCAL_XHR_STATE_PROPERTY] === "object" ? this[LOCAL_XHR_STATE_PROPERTY] : {
            method: "GET",
            requestUrl: "",
            headers: {}
          };
          const requestMethod = String(requestState.method || "GET").toUpperCase();
          const requestUrl = String(requestState.requestUrl || "");
          const isGraphqlQuery = isGraphqlRequest(requestMethod, requestUrl);
          if (isGraphqlQuery) {
            const normalizedHeaders = requestState.headers && typeof requestState.headers === "object" ? requestState.headers : {};
            const formFields = resolveFormFieldsFromBody(body);
            updateRequestContext(normalizedHeaders, formFields);
            if (typeof this.addEventListener === "function") {
              const handleReadyStateChange = () => {
                if (this.readyState !== 4) {
                  return;
                }
                if (typeof this.removeEventListener === "function") {
                  this.removeEventListener("readystatechange", handleReadyStateChange);
                }
                const payload = parseXhrResponsePayload(this);
                if (payload) {
                  ingestGraphqlPayload(payload);
                }
              };
              this.addEventListener("readystatechange", handleReadyStateChange);
            }
          }
          return originalXhrSend.apply(this, arguments);
        };
        return true;
      };
      /**
       * Restore local-context network APIs after fallback interception.
       */
      stopLocalFetchPatch_fn = function() {
        const globalObject = typeof globalThis !== "undefined" ? globalThis : null;
        if (globalObject && this.originalFetch) {
          globalObject.fetch = this.originalFetch;
        }
        __privateMethod(this, _ThreadsNetworkObserver_instances, stopLocalXhrPatch_fn).call(this, globalObject);
        this.originalFetch = null;
        this.patchedFetch = null;
      };
      /**
       * Restore local-context XMLHttpRequest prototype methods.
       *
       * @param {typeof globalThis|null} globalObject - Active global object.
       */
      stopLocalXhrPatch_fn = function(globalObject) {
        const xhrConstructor = globalObject && typeof globalObject.XMLHttpRequest === "function" ? globalObject.XMLHttpRequest : null;
        const xhrPrototype = xhrConstructor && xhrConstructor.prototype ? xhrConstructor.prototype : null;
        if (xhrPrototype && this.originalXhrOpen) {
          xhrPrototype.open = this.originalXhrOpen;
        }
        if (xhrPrototype && this.originalXhrSetRequestHeader) {
          xhrPrototype.setRequestHeader = this.originalXhrSetRequestHeader;
        }
        if (xhrPrototype && this.originalXhrSend) {
          xhrPrototype.send = this.originalXhrSend;
        }
        this.originalXhrOpen = null;
        this.originalXhrSetRequestHeader = null;
        this.originalXhrSend = null;
      };
      /**
       * Determine whether one request targets Threads GraphQL query endpoint.
       *
       * @param {string} method - Normalized request method.
       * @param {string} requestUrl - Absolute or relative URL.
       * @returns {boolean}
       */
      isGraphqlRequest_fn = function(method, requestUrl) {
        return method === "POST" && GRAPHQL_QUERY_PATH_PATTERN.test(requestUrl);
      };
      /**
       * Capture request metadata and update mutation context from GraphQL requests.
       *
       * @param {unknown} input - Fetch input.
       * @param {RequestInit|undefined} init - Fetch init.
       * @returns {{ isGraphqlQuery: boolean }}
       */
      captureRequestSnapshot_fn = function(input, init) {
        const requestUrl = __privateMethod(this, _ThreadsNetworkObserver_instances, resolveRequestUrl_fn).call(this, input);
        const method = __privateMethod(this, _ThreadsNetworkObserver_instances, resolveRequestMethod_fn).call(this, input, init);
        const isGraphqlQuery = __privateMethod(this, _ThreadsNetworkObserver_instances, isGraphqlRequest_fn).call(this, method, requestUrl);
        if (isGraphqlQuery) {
          const headers = __privateMethod(this, _ThreadsNetworkObserver_instances, resolveRequestHeaders_fn).call(this, input, init);
          const formFields = __privateMethod(this, _ThreadsNetworkObserver_instances, resolveFormFields_fn).call(this, init);
          __privateMethod(this, _ThreadsNetworkObserver_instances, updateRequestContext_fn).call(this, headers, formFields);
        }
        return { isGraphqlQuery };
      };
      /**
       * Parse and ingest post metadata from GraphQL responses.
       *
       * @param {{ isGraphqlQuery: boolean }} requestSnapshot - Captured request metadata.
       * @param {Response} response - Fetch response.
       */
      capturePostMetadataFromResponse_fn = function(requestSnapshot, response) {
        if (!requestSnapshot.isGraphqlQuery || !response || typeof response.clone !== "function") {
          return;
        }
        const responseClone = response.clone();
        void responseClone.json().then((payload) => {
          __privateMethod(this, _ThreadsNetworkObserver_instances, ingestGraphqlPayload_fn).call(this, payload);
        }).catch(() => {
        });
      };
      /**
       * Parse one completed XMLHttpRequest payload into JSON object form.
       *
       * @param {XMLHttpRequest} xhrInstance - Completed request instance.
       * @returns {Record<string, unknown>|null}
       */
      parseXhrResponsePayload_fn = function(xhrInstance) {
        if (!xhrInstance) {
          return null;
        }
        const responseType = String(xhrInstance.responseType || "").toLowerCase();
        if (responseType === "" || responseType === "text") {
          const responseText = typeof xhrInstance.responseText === "string" ? xhrInstance.responseText : "";
          if (!responseText) {
            return null;
          }
          try {
            const payload = JSON.parse(responseText);
            return payload && typeof payload === "object" ? (
              /** @type {Record<string, unknown>} */
              payload
            ) : null;
          } catch (_error) {
            return null;
          }
        }
        if (responseType === "json") {
          return xhrInstance.response && typeof xhrInstance.response === "object" ? (
            /** @type {Record<string, unknown>} */
            xhrInstance.response
          ) : null;
        }
        return null;
      };
      /**
       * Ingest candidate GraphQL payload and emit structured debug telemetry.
       *
       * @param {unknown} payload - Candidate response payload.
       */
      ingestGraphqlPayload_fn = function(payload) {
        const ingestedRecordCount = this.postMetadataCatalog.ingestGraphqlPayload(payload);
        if (ingestedRecordCount > 0) {
          this.metadataIngestedCount += ingestedRecordCount;
          this.logger.debug("Captured post metadata records from GraphQL response.", {
            ingestedRecordCount
          });
        }
      };
      /**
       * Ingest post metadata serialized into initial page bootstrap scripts.
       */
      ingestBootstrapScriptPayloads_fn = function() {
        const ingestedRecordCount = __privateMethod(this, _ThreadsNetworkObserver_instances, ingestBootstrapScriptPayloadsFromRootNode_fn).call(this);
        if (ingestedRecordCount > 0) {
          this.metadataIngestedCount += ingestedRecordCount;
          this.logger.debug("Captured post metadata records from bootstrap scripts.", {
            ingestedRecordCount
          });
        }
      };
      /**
       * Skip bootstrap scripts that cannot contain post metadata.
       *
       * @param {string} serializedPayload - Raw script text.
       * @returns {boolean}
       */
      isBootstrapMetadataCandidate_fn = function(serializedPayload) {
        if (!serializedPayload) {
          return false;
        }
        return BOOTSTRAP_METADATA_MARKERS.some((marker) => serializedPayload.includes(marker));
      };
      /**
       * Capture bootstrap metadata when Threads mutates application-json script content.
       *
       * @param {MutationRecord[]} mutationRecords - Observed DOM mutation records.
       */
      captureBootstrapMutationRecords_fn = function(mutationRecords) {
        if (!Array.isArray(mutationRecords) || mutationRecords.length === 0) {
          return;
        }
        let ingestedRecordCount = 0;
        for (const mutationRecord of mutationRecords) {
          if (!mutationRecord) {
            continue;
          }
          if (mutationRecord.type === "childList") {
            if (__privateMethod(this, _ThreadsNetworkObserver_instances, isBootstrapScriptElement_fn).call(this, mutationRecord.target)) {
              ingestedRecordCount += __privateMethod(this, _ThreadsNetworkObserver_instances, ingestBootstrapScriptPayloadsFromRootNode_fn).call(this, mutationRecord.target);
            }
            for (const addedNode of mutationRecord.addedNodes) {
              ingestedRecordCount += __privateMethod(this, _ThreadsNetworkObserver_instances, ingestBootstrapScriptPayloadsFromRootNode_fn).call(this, addedNode);
            }
            continue;
          }
          if (mutationRecord.type === "characterData") {
            const parentNode = mutationRecord.target ? mutationRecord.target.parentNode : null;
            if (__privateMethod(this, _ThreadsNetworkObserver_instances, isBootstrapScriptElement_fn).call(this, parentNode)) {
              ingestedRecordCount += __privateMethod(this, _ThreadsNetworkObserver_instances, ingestBootstrapScriptPayloadsFromRootNode_fn).call(this, parentNode);
            }
          }
        }
        if (ingestedRecordCount > 0) {
          this.metadataIngestedCount += ingestedRecordCount;
          this.logger.debug("Captured post metadata records from bootstrap scripts.", {
            ingestedRecordCount
          });
        }
      };
      /**
       * Scan one DOM root for bootstrap scripts and ingest unseen payload snapshots.
       *
       * @param {Node|Document|null} [rootNode] - Candidate scan root.
       * @returns {number}
       */
      ingestBootstrapScriptPayloadsFromRootNode_fn = function(rootNode) {
        let ingestedRecordCount = 0;
        for (const scriptElement of __privateMethod(this, _ThreadsNetworkObserver_instances, collectBootstrapScriptElements_fn).call(this, rootNode)) {
          ingestedRecordCount += __privateMethod(this, _ThreadsNetworkObserver_instances, ingestBootstrapScriptElement_fn).call(this, scriptElement);
        }
        return ingestedRecordCount;
      };
      /**
       * Resolve bootstrap script elements reachable from one DOM root.
       *
       * @param {Node|Document|null} [rootNode] - Candidate scan root.
       * @returns {HTMLScriptElement[]}
       */
      collectBootstrapScriptElements_fn = function(rootNode) {
        const documentObject = typeof document !== "undefined" ? document : null;
        const effectiveRoot = rootNode || documentObject;
        if (!effectiveRoot) {
          return [];
        }
        const scriptElements = [];
        if (__privateMethod(this, _ThreadsNetworkObserver_instances, isBootstrapScriptElement_fn).call(this, effectiveRoot)) {
          scriptElements.push(
            /** @type {HTMLScriptElement} */
            effectiveRoot
          );
        }
        if (typeof effectiveRoot.querySelectorAll === "function") {
          scriptElements.push(...Array.from(effectiveRoot.querySelectorAll(BOOTSTRAP_SCRIPT_SELECTOR)));
        }
        return scriptElements;
      };
      /**
       * Ingest one bootstrap script only when its serialized payload changed.
       *
       * @param {HTMLScriptElement} scriptElement - Candidate bootstrap script.
       * @returns {number}
       */
      ingestBootstrapScriptElement_fn = function(scriptElement) {
        if (!__privateMethod(this, _ThreadsNetworkObserver_instances, isBootstrapScriptElement_fn).call(this, scriptElement)) {
          return 0;
        }
        const serializedPayload = scriptElement && typeof scriptElement.textContent === "string" ? scriptElement.textContent : "";
        const previousPayload = this.bootstrapScriptPayloadByElement.get(scriptElement);
        if (previousPayload === serializedPayload) {
          return 0;
        }
        this.bootstrapScriptPayloadByElement.set(scriptElement, serializedPayload);
        if (!__privateMethod(this, _ThreadsNetworkObserver_instances, isBootstrapMetadataCandidate_fn).call(this, serializedPayload)) {
          return 0;
        }
        try {
          const parsedPayload = JSON.parse(serializedPayload);
          if (parsedPayload && typeof parsedPayload === "object") {
            return this.postMetadataCatalog.ingestGraphqlPayload(parsedPayload);
          }
        } catch (_error) {
        }
        return 0;
      };
      /**
       * Recognize application-json script elements that can host bootstrap payloads.
       *
       * @param {unknown} candidate - Candidate DOM node.
       * @returns {boolean}
       */
      isBootstrapScriptElement_fn = function(candidate) {
        return Boolean(
          candidate && typeof candidate === "object" && candidate.nodeType === 1 && typeof candidate.matches === "function" && candidate.matches(BOOTSTRAP_SCRIPT_SELECTOR)
        );
      };
      /**
       * Update mutation request context using observed request headers and params.
       *
       * @param {Record<string, string>} headers - Normalized request headers.
       * @param {Record<string, string>} formFields - Parsed request form fields.
       */
      updateRequestContext_fn = function(headers, formFields) {
        const currentHeaders = this.requestContext.headers;
        const currentFormFields = this.requestContext.formFields;
        for (const [headerKey, headerValue] of Object.entries(headers)) {
          if (!headerValue) {
            continue;
          }
          currentHeaders[headerKey] = headerValue;
        }
        for (const fieldName of REQUEST_CONTEXT_FORM_FIELDS) {
          if (!Object.prototype.hasOwnProperty.call(formFields, fieldName)) {
            continue;
          }
          const fieldValue = String(formFields[fieldName] || "").trim();
          if (!fieldValue) {
            continue;
          }
          currentFormFields[fieldName] = fieldValue;
        }
      };
      /**
       * Resolve absolute request URL from fetch input.
       *
       * @param {unknown} input - Fetch input.
       * @returns {string}
       */
      resolveRequestUrl_fn = function(input) {
        if (typeof input === "string") {
          return input;
        }
        if (typeof URL !== "undefined" && input instanceof URL) {
          return input.toString();
        }
        if (input && typeof input === "object" && typeof input.url === "string") {
          return input.url;
        }
        return "";
      };
      /**
       * Resolve request method from fetch input and init.
       *
       * @param {unknown} input - Fetch input.
       * @param {RequestInit|undefined} init - Fetch init.
       * @returns {string}
       */
      resolveRequestMethod_fn = function(input, init) {
        const methodFromInit = init && typeof init.method === "string" ? init.method : "";
        if (methodFromInit) {
          return methodFromInit.toUpperCase();
        }
        if (input && typeof input === "object" && typeof input.method === "string") {
          return input.method.toUpperCase();
        }
        return "GET";
      };
      /**
       * Normalize request headers into lowercase key/value pairs.
       *
       * @param {unknown} input - Fetch input.
       * @param {RequestInit|undefined} init - Fetch init.
       * @returns {Record<string, string>}
       */
      resolveRequestHeaders_fn = function(input, init) {
        const normalizedHeaders = {};
        __privateMethod(this, _ThreadsNetworkObserver_instances, appendNormalizedHeaders_fn).call(this, normalizedHeaders, input && input.headers);
        __privateMethod(this, _ThreadsNetworkObserver_instances, appendNormalizedHeaders_fn).call(this, normalizedHeaders, init && init.headers);
        return normalizedHeaders;
      };
      /**
       * Append normalized header key/value pairs from arbitrary header containers.
       *
       * @param {Record<string, string>} targetHeaders - Header accumulator.
       * @param {unknown} sourceHeaders - Candidate source headers.
       */
      appendNormalizedHeaders_fn = function(targetHeaders, sourceHeaders) {
        if (!sourceHeaders) {
          return;
        }
        if (typeof Headers !== "undefined" && sourceHeaders instanceof Headers) {
          sourceHeaders.forEach((value, key) => {
            targetHeaders[String(key || "").toLowerCase()] = String(value || "");
          });
          return;
        }
        if (Array.isArray(sourceHeaders)) {
          for (const entry of sourceHeaders) {
            if (!Array.isArray(entry) || entry.length < 2) {
              continue;
            }
            targetHeaders[String(entry[0] || "").toLowerCase()] = String(entry[1] || "");
          }
          return;
        }
        if (typeof sourceHeaders === "object") {
          for (const [key, value] of Object.entries(sourceHeaders)) {
            targetHeaders[String(key || "").toLowerCase()] = String(value || "");
          }
        }
      };
      /**
       * Parse URL-encoded form body from fetch init payload.
       *
       * @param {RequestInit|undefined} init - Fetch init.
       * @returns {Record<string, string>}
       */
      resolveFormFields_fn = function(init) {
        return __privateMethod(this, _ThreadsNetworkObserver_instances, resolveFormFieldsFromBody_fn).call(this, init ? init.body : void 0);
      };
      /**
       * Parse URL-encoded form body from generic request payload input.
       *
       * @param {unknown} body - Candidate request body.
       * @returns {Record<string, string>}
       */
      resolveFormFieldsFromBody_fn = function(body) {
        if (body === void 0 || body === null) {
          return {};
        }
        if (typeof body === "string") {
          return __privateMethod(this, _ThreadsNetworkObserver_instances, parseSearchParams_fn).call(this, new URLSearchParams(body));
        }
        if (typeof URLSearchParams !== "undefined" && body instanceof URLSearchParams) {
          return __privateMethod(this, _ThreadsNetworkObserver_instances, parseSearchParams_fn).call(this, body);
        }
        if (typeof FormData !== "undefined" && body instanceof FormData) {
          const formFields = {};
          for (const [fieldName, fieldValue] of body.entries()) {
            if (typeof fieldValue === "string") {
              formFields[fieldName] = fieldValue;
            }
          }
          return formFields;
        }
        return {};
      };
      /**
       * Convert URLSearchParams into plain object form.
       *
       * @param {URLSearchParams} searchParams - Search param container.
       * @returns {Record<string, string>}
       */
      parseSearchParams_fn = function(searchParams) {
        const formFields = {};
        for (const [fieldName, fieldValue] of searchParams.entries()) {
          formFields[fieldName] = fieldValue;
        }
        return formFields;
      };
      module.exports = {
        ThreadsNetworkObserver
      };
    }
  });

  // src/signals/threads-post-metadata-catalog.js
  var require_threads_post_metadata_catalog = __commonJS({
    "src/signals/threads-post-metadata-catalog.js"(exports, module) {
      var DEFAULT_MAX_ENTRIES = 3e3;
      var DEFAULT_ENTRY_TTL_MS = 30 * 60 * 1e3;
      function toNormalizedString(value) {
        return String(value === void 0 || value === null ? "" : value).trim();
      }
      function toNormalizedAiDetectionMethod(value) {
        const normalizedMethod = toNormalizedString(value).toUpperCase();
        return normalizedMethod === "NONE" ? "" : normalizedMethod;
      }
      var _ThreadsPostMetadataCatalog_instances, looksLikePostRecord_fn, upsertPostRecord_fn, trimToCapacity_fn, resolveAuthorPk_fn, resolveGenAIDetectionMethod_fn, evictExpiredEntries_fn, isExpired_fn;
      var ThreadsPostMetadataCatalog = class {
        /**
         * Initialize storage limits and in-memory index.
         *
         * @param {{ maxEntries?: number, entryTtlMs?: number, nowProvider?: () => number }} [options] - Catalog options.
         */
        constructor(options = {}) {
          __privateAdd(this, _ThreadsPostMetadataCatalog_instances);
          const {
            maxEntries = DEFAULT_MAX_ENTRIES,
            entryTtlMs = DEFAULT_ENTRY_TTL_MS,
            nowProvider = () => Date.now()
          } = options;
          this.maxEntries = maxEntries;
          this.entryTtlMs = entryTtlMs;
          this.nowProvider = nowProvider;
          this.postMetadataByCode = /* @__PURE__ */ new Map();
        }
        /**
         * Capture post metadata records from one GraphQL payload.
         *
         * @param {unknown} payload - Candidate GraphQL payload.
         * @returns {number}
         */
        ingestGraphqlPayload(payload) {
          if (!payload || typeof payload !== "object") {
            return 0;
          }
          __privateMethod(this, _ThreadsPostMetadataCatalog_instances, evictExpiredEntries_fn).call(this);
          let ingestedRecordCount = 0;
          const traversalStack = [payload];
          while (traversalStack.length > 0) {
            const nextNode = traversalStack.pop();
            if (!nextNode || typeof nextNode !== "object") {
              continue;
            }
            if (Array.isArray(nextNode)) {
              for (const entry of nextNode) {
                traversalStack.push(entry);
              }
              continue;
            }
            const maybePostRecord = (
              /** @type {Record<string, unknown>} */
              nextNode
            );
            if (__privateMethod(this, _ThreadsPostMetadataCatalog_instances, looksLikePostRecord_fn).call(this, maybePostRecord) && __privateMethod(this, _ThreadsPostMetadataCatalog_instances, upsertPostRecord_fn).call(this, maybePostRecord)) {
              ingestedRecordCount += 1;
            }
            for (const value of Object.values(maybePostRecord)) {
              if (value && typeof value === "object") {
                traversalStack.push(value);
              }
            }
          }
          return ingestedRecordCount;
        }
        /**
         * Resolve metadata by post code.
         *
         * @param {string} postCode - Threads post code from permalink.
         * @returns {{
         *   postCode: string,
         *   mediaPk: string,
         *   rankingInfoToken: string,
         *   authorPk: string,
         *   hasAiLabel: boolean,
         *   genAIDetectionMethod: string
         * }|null}
         */
        getByPostCode(postCode) {
          __privateMethod(this, _ThreadsPostMetadataCatalog_instances, evictExpiredEntries_fn).call(this);
          const normalizedPostCode = String(postCode || "").trim();
          if (!normalizedPostCode || !this.postMetadataByCode.has(normalizedPostCode)) {
            return null;
          }
          const metadataRecord = this.postMetadataByCode.get(normalizedPostCode) || null;
          if (!metadataRecord) {
            return null;
          }
          if (__privateMethod(this, _ThreadsPostMetadataCatalog_instances, isExpired_fn).call(this, metadataRecord, this.nowProvider())) {
            this.postMetadataByCode.delete(normalizedPostCode);
            return null;
          }
          return {
            postCode: metadataRecord.postCode,
            mediaPk: metadataRecord.mediaPk,
            rankingInfoToken: metadataRecord.rankingInfoToken,
            authorPk: metadataRecord.authorPk,
            hasAiLabel: metadataRecord.hasAiLabel === true,
            genAIDetectionMethod: metadataRecord.genAIDetectionMethod || ""
          };
        }
      };
      _ThreadsPostMetadataCatalog_instances = new WeakSet();
      /**
       * Recognize the minimal post-object shape we can safely ingest.
       *
       * @param {Record<string, unknown>} candidate - Candidate object.
       * @returns {boolean}
       */
      looksLikePostRecord_fn = function(candidate) {
        const hasPostCode = typeof candidate.code === "string" || typeof candidate.code === "number";
        const hasMediaPk = typeof candidate.pk === "string" || typeof candidate.pk === "number";
        if (!hasPostCode || !hasMediaPk) {
          return false;
        }
        const hasRankingInfoToken = typeof candidate.logging_info_token === "string" || typeof candidate.logging_info_token === "number";
        if (hasRankingInfoToken) {
          return true;
        }
        return Boolean(__privateMethod(this, _ThreadsPostMetadataCatalog_instances, resolveGenAIDetectionMethod_fn).call(this, candidate));
      };
      /**
       * Insert or refresh one post metadata record.
       *
       * @param {Record<string, unknown>} postRecord - Candidate post object.
       * @returns {boolean}
       */
      upsertPostRecord_fn = function(postRecord) {
        const postCode = toNormalizedString(postRecord.code);
        const mediaPk = toNormalizedString(postRecord.pk);
        const rankingInfoToken = toNormalizedString(postRecord.logging_info_token);
        const authorPk = __privateMethod(this, _ThreadsPostMetadataCatalog_instances, resolveAuthorPk_fn).call(this, postRecord);
        const genAIDetectionMethod = __privateMethod(this, _ThreadsPostMetadataCatalog_instances, resolveGenAIDetectionMethod_fn).call(this, postRecord);
        const observedAtMs = this.nowProvider();
        const expiresAtMs = observedAtMs + this.entryTtlMs;
        if (!postCode || !mediaPk) {
          return false;
        }
        this.postMetadataByCode.delete(postCode);
        this.postMetadataByCode.set(postCode, {
          postCode,
          mediaPk,
          rankingInfoToken,
          authorPk,
          hasAiLabel: Boolean(genAIDetectionMethod),
          genAIDetectionMethod,
          observedAtMs,
          expiresAtMs
        });
        __privateMethod(this, _ThreadsPostMetadataCatalog_instances, evictExpiredEntries_fn).call(this);
        __privateMethod(this, _ThreadsPostMetadataCatalog_instances, trimToCapacity_fn).call(this);
        return true;
      };
      /**
       * Evict oldest records when catalog exceeds configured capacity.
       */
      trimToCapacity_fn = function() {
        while (this.postMetadataByCode.size > this.maxEntries) {
          const oldestKey = this.postMetadataByCode.keys().next().value;
          if (!oldestKey) {
            break;
          }
          this.postMetadataByCode.delete(oldestKey);
        }
      };
      /**
       * Resolve author pk from known nested payload locations.
       *
       * @param {Record<string, unknown>} postRecord - Candidate post object.
       * @returns {string}
       */
      resolveAuthorPk_fn = function(postRecord) {
        const directUserPk = toNormalizedString(postRecord.user_id);
        if (directUserPk) {
          return directUserPk;
        }
        const userRecord = postRecord.user && typeof postRecord.user === "object" ? (
          /** @type {Record<string, unknown>} */
          postRecord.user
        ) : null;
        if (userRecord) {
          const userPk = toNormalizedString(userRecord.pk || userRecord.id);
          if (userPk) {
            return userPk;
          }
        }
        const ownerRecord = postRecord.owner && typeof postRecord.owner === "object" ? (
          /** @type {Record<string, unknown>} */
          postRecord.owner
        ) : null;
        if (ownerRecord) {
          return toNormalizedString(ownerRecord.pk || ownerRecord.id);
        }
        return "";
      };
      /**
       * Resolve AI transparency metadata from one post record when Threads exposes it.
       *
       * @param {Record<string, unknown>} postRecord - Candidate post object.
       * @returns {string}
       */
      resolveGenAIDetectionMethod_fn = function(postRecord) {
        const rawDetectionRecord = postRecord.gen_ai_detection_method && typeof postRecord.gen_ai_detection_method === "object" ? (
          /** @type {Record<string, unknown>} */
          postRecord.gen_ai_detection_method
        ) : null;
        if (!rawDetectionRecord) {
          return "";
        }
        return toNormalizedAiDetectionMethod(rawDetectionRecord.detection_method);
      };
      /**
       * Remove metadata records whose TTL has elapsed.
       */
      evictExpiredEntries_fn = function() {
        const nowMs = this.nowProvider();
        for (const [postCode, metadataRecord] of this.postMetadataByCode.entries()) {
          if (__privateMethod(this, _ThreadsPostMetadataCatalog_instances, isExpired_fn).call(this, metadataRecord, nowMs)) {
            this.postMetadataByCode.delete(postCode);
          }
        }
      };
      /**
       * Determine whether one metadata record has expired.
       *
       * @param {{ expiresAtMs?: number }} metadataRecord - Candidate metadata record.
       * @param {number} nowMs - Current timestamp.
       * @returns {boolean}
       */
      isExpired_fn = function(metadataRecord, nowMs) {
        const expiresAtMs = Number(metadataRecord.expiresAtMs);
        return Number.isFinite(expiresAtMs) && expiresAtMs <= nowMs;
      };
      module.exports = {
        ThreadsPostMetadataCatalog
      };
    }
  });

  // src/storage/settings-store.js
  var require_settings_store = __commonJS({
    "src/storage/settings-store.js"(exports, module) {
      var { SETTINGS_STORAGE_KEY, SettingsSchema } = require_settings_schema();
      var { UserscriptStorageAdapter } = require_userscript_storage();
      var SettingsStore = class {
        /**
         * Initialize store dependencies and defaults.
         *
         * @param {{
         *   schema?: SettingsSchema,
         *   storageAdapter?: UserscriptStorageAdapter,
         *   storageKey?: string
         * }} [options] - Store options.
         */
        constructor(options = {}) {
          const {
            schema = new SettingsSchema(),
            storageAdapter = new UserscriptStorageAdapter(),
            storageKey = SETTINGS_STORAGE_KEY
          } = options;
          this.schema = schema;
          this.storageAdapter = storageAdapter;
          this.storageKey = storageKey;
        }
        /**
         * Load settings and normalize them before any runtime subsystem consumes them.
         *
         * @returns {Promise<object>}
         */
        async load() {
          const rawSettings = await this.storageAdapter.getValue(this.storageKey, null);
          return this.schema.normalize(rawSettings);
        }
        /**
         * Save settings only after schema normalization.
         *
         * @param {unknown} nextSettings - Candidate settings.
         * @returns {Promise<object>}
         */
        async save(nextSettings) {
          const normalizedSettings = this.schema.normalize(nextSettings);
          await this.storageAdapter.setValue(this.storageKey, normalizedSettings);
          return normalizedSettings;
        }
      };
      module.exports = {
        SettingsStore
      };
    }
  });

  // src/ui/menu-command.js
  var require_menu_command = __commonJS({
    "src/ui/menu-command.js"(exports, module) {
      var MenuCommandRegistrar = class {
        /**
         * Register a menu command when userscript APIs are available.
         *
         * @param {string} label - Menu label text.
         * @param {Function} handler - Command callback.
         */
        register(label, handler) {
          const globalObject = typeof globalThis !== "undefined" ? globalThis : null;
          if (!globalObject) {
            return;
          }
          const gm = globalObject.GM;
          if (gm && typeof gm.registerMenuCommand === "function") {
            gm.registerMenuCommand(label, handler);
            return;
          }
          if (typeof globalObject.GM_registerMenuCommand === "function") {
            globalObject.GM_registerMenuCommand(label, handler);
          }
        }
      };
      module.exports = {
        MenuCommandRegistrar
      };
    }
  });

  // src/res/bobbin-icon-data-uri.js
  var require_bobbin_icon_data_uri = __commonJS({
    "src/res/bobbin-icon-data-uri.js"(exports, module) {
      var FALLBACK_BOBBIN_ICON_DATA_URI = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGNgYGD4DwABBAEAffwJ9QAAAABJRU5ErkJggg==";
      var BOBBIN_ICON_DATA_URI = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEqklEQVR4nLWXW6hVVRSGPefU2Wv837/O8SmilyKK8qV6kegePURGD1mQRZEVaUZUltBNummkJqWGUmlZVppKmt3UrMxMjcruWA/2JBXdkzCR0oyx9jqHnWjsI5wJc8Lac635j3/84zL3kCGDN7pykXQH9l5JV7b+Ptigd0p6U9LbtmfWe4cMNugISV9IOhFYLemker9zMEA7atDDsTfLHmP7e+z5gwnafzDwIvA+sFLS88Am22cOFnifi6+yvTcn8FhliJleluWUwdC4YmF7mEv/WPaUCTq33/X2nbYfbjXwQKOjnl0t85D9zK4W1x1qe03Z07NX9uKWb4ZgP0VZjv8/xp0HoUHFwPY9Fai0JrH6NjPQbH/S22gc3ULqgKPo7W0cnQERESMljZZ0e07g1oJiQgET7Li+u7v72KIoTivLMkHXJlafB2qDZvZpvT9SfRodL7Rc8BNmD+afqurA75JmBdwn6d6ImCzpYeBTSRcAW7A/k3S+rBlDi6FHVi6GsynZAhx2ILZ97pol2CaUL2/H7HZZAf8qaZGsz7G/F3yNWRURJ4Ofxv4uWQPLhP4MqPS0/QUwqhVjv8CyZwv+kDQniOkBU4EH81nSMsFLIS0GtgErgrghjSqK4lRJY4EFQtsjYhwl420v+T/Qfld3l+VxqZPg73rukPRb7YWv0rXRLIPr0sUSW4uiuEyw0akx7Ejw1B34oKencUw7AdX/QkTcJLRb0gZVzHgNeD0LPvBJdprKQOnuaNbhdOk0Go1zqu9dBeTSdkH7XVJIM6FqZdtCeieaIBskPmoy1SMRcUtEXARMBx4K+LihxtX5fURcJ+nRAbfBiBhf6/pyEK9lvZW0RJC/jY5kB5cK1kv6Mt8Dlku6rTLcxRmyFg2EcUcFTNwsaXPqFRH31+kzOyKmVu6NuDAZAeOBcyS9kHLYPr3feJhf2GfVj53tMSYyX2dLekJoXcDKdH8Q91f5K60A3sgolzSjKIpTJE1MQ/rOaPQ2jmrpSB1tMa6Ch0rPdyKYlqxlLU0dJb2LeFzSNeEYl4ZIzhhIt49oYdiWi/8zMkKDmBfEA0Ibq4IBC4qiGJVtL1kCE4BnBRsDJstamOV0H+C2wTtykXSt0GbBhxloDem8LJl1vZ5Y3aNgQ7Ktyqj9lqSFYY9sPWfAIyJulHSupDFZKgPmAasEm5JZXuIi4oE6r1fImihr7T6MBzQ6a8Z3SdoqaVOmEcQ8SfcEMSmZ1XouTvYBT1bXnIi5RVFccrDAHbkAl6drqzptPVexEu9mFZMzjWKS7dQ09Z0L3NA0kCsGCtyZS9gXZ5pU5Q92gdbbng1MzhRDzKFkBa5KaDaQGy3PwrxCM7XG2lrT0xPD2zWgKxfbjwp+Sb0Ev2F2yv4Be0/25borpWGrZW/LxtCy9ysZcOgXybe3e7Hrql08B/g22yMwqYQpmPl5h7Kc7XC50HuYTZg3siwCT5DvwSTZM2T9KKtt4M4a+ATZXzYZeHcyFGwEXrWdIM+oCfSkmhq/WgWW/R3239VtxXo7Io6ozx1QWnVGxPCyLG/JfwCCdZitwM/YOzF/Ye8ipYBvgPVpSAZYtz2sXZR/ARaqMyqhRFBtAAAAAElFTkSuQmCC".startsWith("data:image/png;base64,") ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAB4AAAAeCAYAAAA7MK6iAAAACXBIWXMAAAsTAAALEwEAmpwYAAAEqklEQVR4nLWXW6hVVRSGPefU2Wv837/O8SmilyKK8qV6kegePURGD1mQRZEVaUZUltBNummkJqWGUmlZVppKmt3UrMxMjcruWA/2JBXdkzCR0oyx9jqHnWjsI5wJc8Lac635j3/84zL3kCGDN7pykXQH9l5JV7b+Ptigd0p6U9LbtmfWe4cMNugISV9IOhFYLemker9zMEA7atDDsTfLHmP7e+z5gwnafzDwIvA+sFLS88Am22cOFnifi6+yvTcn8FhliJleluWUwdC4YmF7mEv/WPaUCTq33/X2nbYfbjXwQKOjnl0t85D9zK4W1x1qe03Z07NX9uKWb4ZgP0VZjv8/xp0HoUHFwPY9Fai0JrH6NjPQbH/S22gc3ULqgKPo7W0cnQERESMljZZ0e07g1oJiQgET7Li+u7v72KIoTivLMkHXJlafB2qDZvZpvT9SfRodL7Rc8BNmD+afqurA75JmBdwn6d6ImCzpYeBTSRcAW7A/k3S+rBlDi6FHVi6GsynZAhx2ILZ97pol2CaUL2/H7HZZAf8qaZGsz7G/F3yNWRURJ4Ofxv4uWQPLhP4MqPS0/QUwqhVjv8CyZwv+kDQniOkBU4EH81nSMsFLIS0GtgErgrghjSqK4lRJY4EFQtsjYhwl420v+T/Qfld3l+VxqZPg73rukPRb7YWv0rXRLIPr0sUSW4uiuEyw0akx7Ejw1B34oKencUw7AdX/QkTcJLRb0gZVzHgNeD0LPvBJdprKQOnuaNbhdOk0Go1zqu9dBeTSdkH7XVJIM6FqZdtCeieaIBskPmoy1SMRcUtEXARMBx4K+LihxtX5fURcJ+nRAbfBiBhf6/pyEK9lvZW0RJC/jY5kB5cK1kv6Mt8Dlku6rTLcxRmyFg2EcUcFTNwsaXPqFRH31+kzOyKmVu6NuDAZAeOBcyS9kHLYPr3feJhf2GfVj53tMSYyX2dLekJoXcDKdH8Q91f5K60A3sgolzSjKIpTJE1MQ/rOaPQ2jmrpSB1tMa6Ch0rPdyKYlqxlLU0dJb2LeFzSNeEYl4ZIzhhIt49oYdiWi/8zMkKDmBfEA0Ibq4IBC4qiGJVtL1kCE4BnBRsDJstamOV0H+C2wTtykXSt0GbBhxloDem8LJl1vZ5Y3aNgQ7Ktyqj9lqSFYY9sPWfAIyJulHSupDFZKgPmAasEm5JZXuIi4oE6r1fImihr7T6MBzQ6a8Z3SdoqaVOmEcQ8SfcEMSmZ1XouTvYBT1bXnIi5RVFccrDAHbkAl6drqzptPVexEu9mFZMzjWKS7dQ09Z0L3NA0kCsGCtyZS9gXZ5pU5Q92gdbbng1MzhRDzKFkBa5KaDaQGy3PwrxCM7XG2lrT0xPD2zWgKxfbjwp+Sb0Ev2F2yv4Be0/25borpWGrZW/LxtCy9ysZcOgXybe3e7Hrql08B/g22yMwqYQpmPl5h7Kc7XC50HuYTZg3siwCT5DvwSTZM2T9KKtt4M4a+ATZXzYZeHcyFGwEXrWdIM+oCfSkmhq/WgWW/R3239VtxXo7Io6ozx1QWnVGxPCyLG/JfwCCdZitwM/YOzF/Ye8ipYBvgPVpSAZYtz2sXZR/ARaqMyqhRFBtAAAAAElFTkSuQmCC" : FALLBACK_BOBBIN_ICON_DATA_URI;
      module.exports = {
        BOBBIN_ICON_DATA_URI
      };
    }
  });

  // src/ui/sidebar-trigger-config.js
  var require_sidebar_trigger_config = __commonJS({
    "src/ui/sidebar-trigger-config.js"(exports, module) {
      var SIDEBAR_TRIGGER_ICON_SIZE_PX = 30;
      var SIDEBAR_TRIGGER_ICON_OFFSET_X_PX = 5;
      var SIDEBAR_TRIGGER_ICON_OFFSET_Y_PX = -3;
      module.exports = {
        SIDEBAR_TRIGGER_ICON_SIZE_PX,
        SIDEBAR_TRIGGER_ICON_OFFSET_X_PX,
        SIDEBAR_TRIGGER_ICON_OFFSET_Y_PX
      };
    }
  });

  // src/ui/sidebar-menu-trigger.js
  var require_sidebar_menu_trigger = __commonJS({
    "src/ui/sidebar-menu-trigger.js"(exports, module) {
      var { whenBodyReady } = require_body_ready();
      var { BOBBIN_ICON_DATA_URI } = require_bobbin_icon_data_uri();
      var {
        SIDEBAR_TRIGGER_ICON_OFFSET_X_PX,
        SIDEBAR_TRIGGER_ICON_OFFSET_Y_PX,
        SIDEBAR_TRIGGER_ICON_SIZE_PX
      } = require_sidebar_trigger_config();
      var STYLE_ID = "btf-sidebar-trigger-style";
      var TRIGGER_ROOT_ATTRIBUTE = "data-btf-sidebar-trigger-root";
      var TRIGGER_CONTROL_ATTRIBUTE = "data-btf-sidebar-trigger-control";
      var TRIGGER_LAYER_ATTRIBUTE = "data-btf-sidebar-trigger-layer";
      var TRIGGER_OPEN_ATTRIBUTE = "data-btf-open";
      var TRIGGER_LABEL = "Bobbin Filters";
      var LEFT_RAIL_MAX_X_PX = 220;
      var LEFT_RAIL_MIN_Y_RATIO = 0.55;
      var REFRESH_DEBOUNCE_MS = 60;
      function normalizeLabel(value) {
        return String(value === null || value === void 0 ? "" : value).trim().toLowerCase();
      }
      var _ThreadsSidebarMenuTrigger_instances, ensureBodyReady_fn, ensureStyleTag_fn, startBodyObserver_fn, stopBodyObserver_fn, scheduleRefresh_fn, clearPendingRefresh_fn, syncTriggerMount_fn, resolveReferenceWrapper_fn, isLeftRailMoreControl_fn, containsMoreGlyph_fn, buildTriggerWrapper_fn, configureTriggerControl_fn, replaceControlIcons_fn, activateMenuToggle_fn, applyControlState_fn, resolveMenuOpenState_fn, removeTrigger_fn, removeStyleTag_fn;
      var ThreadsSidebarMenuTrigger = class {
        /**
         * Initialize trigger dependencies and stable event delegates.
         *
         * @param {{
         *   onActivate?: () => Promise<void> | void,
         *   isMenuOpenProvider?: () => boolean,
         *   scheduleFn?: (callback: Function, delayMs: number) => unknown,
         *   clearScheduleFn?: (timerId: unknown) => void,
         *   logger?: { debug?: Function, error?: Function }
         * }} [options] - Trigger dependencies.
         */
        constructor(options = {}) {
          __privateAdd(this, _ThreadsSidebarMenuTrigger_instances);
          this.onActivate = typeof options.onActivate === "function" ? options.onActivate : () => {
          };
          this.isMenuOpenProvider = typeof options.isMenuOpenProvider === "function" ? options.isMenuOpenProvider : null;
          this.scheduleFn = typeof options.scheduleFn === "function" ? options.scheduleFn : (callback, delayMs) => setTimeout(callback, delayMs);
          this.clearScheduleFn = typeof options.clearScheduleFn === "function" ? options.clearScheduleFn : (timerId) => clearTimeout(timerId);
          this.logger = options.logger || {};
          this.isRunning = false;
          this.isActivationPending = false;
          this.menuOpen = false;
          this.triggerWrapperElement = null;
          this.triggerControlElement = null;
          this.bodyObserver = null;
          this.pendingRefreshTimerId = null;
          this.handleTriggerClick = (event) => {
            event.preventDefault();
            event.stopPropagation();
            void __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, activateMenuToggle_fn).call(this);
          };
          this.handleTriggerKeydown = (event) => {
            if (event.key !== "Enter" && event.key !== " ") {
              return;
            }
            event.preventDefault();
            event.stopPropagation();
            void __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, activateMenuToggle_fn).call(this);
          };
        }
        /**
         * Start trigger lifecycle and attempt immediate mount.
         *
         * @returns {Promise<void>}
         */
        async start() {
          if (this.isRunning || typeof document === "undefined") {
            return;
          }
          this.isRunning = true;
          await __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, ensureBodyReady_fn).call(this);
          if (!this.isRunning) {
            return;
          }
          __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, ensureStyleTag_fn).call(this);
          this.refresh();
          __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, startBodyObserver_fn).call(this);
        }
        /**
         * Stop trigger lifecycle and remove injected UI.
         */
        stop() {
          this.isRunning = false;
          this.isActivationPending = false;
          this.menuOpen = false;
          __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, clearPendingRefresh_fn).call(this);
          __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, stopBodyObserver_fn).call(this);
          __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, removeTrigger_fn).call(this);
          __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, removeStyleTag_fn).call(this);
        }
        /**
         * Refresh trigger mount state against the current Threads sidebar DOM.
         */
        refresh() {
          if (!this.isRunning) {
            return;
          }
          __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, syncTriggerMount_fn).call(this);
        }
        /**
         * Keep visual open-state in sync with settings menu visibility.
         *
         * @param {boolean} isOpen - Current settings menu open state.
         */
        setMenuOpen(isOpen) {
          this.menuOpen = Boolean(isOpen);
          __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, applyControlState_fn).call(this);
        }
      };
      _ThreadsSidebarMenuTrigger_instances = new WeakSet();
      ensureBodyReady_fn = async function() {
        if (document.body) {
          return;
        }
        await new Promise((resolve) => {
          whenBodyReady(resolve);
        });
      };
      /**
       * Insert trigger stylesheet exactly once.
       */
      ensureStyleTag_fn = function() {
        const styleMarkup = `
[${TRIGGER_CONTROL_ATTRIBUTE}="true"] .btf-sidebar-trigger-icon{
  display:block;
  width:var(--x-width,${SIDEBAR_TRIGGER_ICON_SIZE_PX}px);
  height:var(--x-height,${SIDEBAR_TRIGGER_ICON_SIZE_PX}px);
  background-color:currentColor;
  -webkit-mask-image:url("${BOBBIN_ICON_DATA_URI}");
  mask-image:url("${BOBBIN_ICON_DATA_URI}");
  -webkit-mask-repeat:no-repeat;
  mask-repeat:no-repeat;
  -webkit-mask-position:center;
  mask-position:center;
  -webkit-mask-size:contain;
  mask-size:contain;
  transform:translate(var(--btf-icon-offset-x,${SIDEBAR_TRIGGER_ICON_OFFSET_X_PX}px),var(--btf-icon-offset-y,${SIDEBAR_TRIGGER_ICON_OFFSET_Y_PX}px))
}
[${TRIGGER_CONTROL_ATTRIBUTE}="true"][${TRIGGER_OPEN_ATTRIBUTE}="true"] [${TRIGGER_LAYER_ATTRIBUTE}="base"]{opacity:0!important}
[${TRIGGER_CONTROL_ATTRIBUTE}="true"][${TRIGGER_OPEN_ATTRIBUTE}="true"] [${TRIGGER_LAYER_ATTRIBUTE}="active"]{opacity:1!important}
`;
        const existingStyleElement = document.getElementById(STYLE_ID);
        if (existingStyleElement) {
          if (existingStyleElement.textContent !== styleMarkup) {
            existingStyleElement.textContent = styleMarkup;
          }
          return;
        }
        const styleElement = document.createElement("style");
        styleElement.id = STYLE_ID;
        styleElement.textContent = styleMarkup;
        const head = document.head || document.documentElement;
        head == null ? void 0 : head.appendChild(styleElement);
      };
      /**
       * Observe host DOM updates and coalesce trigger remount checks.
       */
      startBodyObserver_fn = function() {
        __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, stopBodyObserver_fn).call(this);
        if (typeof MutationObserver !== "function" || !document.body) {
          return;
        }
        this.bodyObserver = new MutationObserver(() => {
          __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, scheduleRefresh_fn).call(this);
        });
        this.bodyObserver.observe(document.body, {
          childList: true,
          subtree: true
        });
      };
      /**
       * Stop observing host DOM updates.
       */
      stopBodyObserver_fn = function() {
        if (!this.bodyObserver) {
          return;
        }
        this.bodyObserver.disconnect();
        this.bodyObserver = null;
      };
      /**
       * Schedule one debounced refresh run during intense host mutations.
       */
      scheduleRefresh_fn = function() {
        if (!this.isRunning || this.pendingRefreshTimerId !== null) {
          return;
        }
        this.pendingRefreshTimerId = this.scheduleFn(() => {
          this.pendingRefreshTimerId = null;
          this.refresh();
        }, REFRESH_DEBOUNCE_MS);
      };
      /**
       * Cancel a pending debounced refresh run.
       */
      clearPendingRefresh_fn = function() {
        if (this.pendingRefreshTimerId === null) {
          return;
        }
        this.clearScheduleFn(this.pendingRefreshTimerId);
        this.pendingRefreshTimerId = null;
      };
      /**
       * Mount trigger above native More control and keep ordering stable.
       */
      syncTriggerMount_fn = function() {
        const referenceWrapper = __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, resolveReferenceWrapper_fn).call(this);
        if (!referenceWrapper || !referenceWrapper.parentElement) {
          __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, removeTrigger_fn).call(this);
          return;
        }
        const parentElement = referenceWrapper.parentElement;
        if (this.triggerWrapperElement && this.triggerWrapperElement.parentElement === parentElement && this.triggerControlElement) {
          if (this.triggerWrapperElement.nextElementSibling !== referenceWrapper) {
            parentElement.insertBefore(this.triggerWrapperElement, referenceWrapper);
          }
          __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, applyControlState_fn).call(this);
          return;
        }
        __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, removeTrigger_fn).call(this);
        const nextTriggerWrapper = __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, buildTriggerWrapper_fn).call(this, referenceWrapper);
        if (!nextTriggerWrapper) {
          return;
        }
        parentElement.insertBefore(nextTriggerWrapper, referenceWrapper);
        this.triggerWrapperElement = nextTriggerWrapper;
        this.triggerControlElement = nextTriggerWrapper.querySelector(
          `[${TRIGGER_CONTROL_ATTRIBUTE}="true"]`
        );
        __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, applyControlState_fn).call(this);
      };
      /**
       * Resolve native More wrapper in the left rail for trigger insertion.
       *
       * @returns {HTMLElement | null}
       */
      resolveReferenceWrapper_fn = function() {
        const candidateControls = Array.from(
          document.querySelectorAll('[aria-haspopup="menu"][role="button"]')
        );
        if (candidateControls.length === 0) {
          return null;
        }
        let selectedControl = null;
        for (const control of candidateControls) {
          if (!(control instanceof HTMLElement)) {
            continue;
          }
          if (!__privateMethod(this, _ThreadsSidebarMenuTrigger_instances, isLeftRailMoreControl_fn).call(this, control)) {
            continue;
          }
          if (!selectedControl) {
            selectedControl = control;
            continue;
          }
          const selectedTop = selectedControl.getBoundingClientRect().top;
          const candidateTop = control.getBoundingClientRect().top;
          if (candidateTop > selectedTop) {
            selectedControl = control;
          }
        }
        if (!selectedControl || !selectedControl.parentElement) {
          return null;
        }
        return selectedControl.parentElement;
      };
      /**
       * Accept only the desktop left-rail More control as insertion anchor.
       *
       * @param {HTMLElement} controlElement - Candidate menu control.
       * @returns {boolean}
       */
      isLeftRailMoreControl_fn = function(controlElement) {
        const rectangle = controlElement.getBoundingClientRect();
        if (!Number.isFinite(rectangle.left) || !Number.isFinite(rectangle.top)) {
          return false;
        }
        const viewportWidth = Number.isFinite(window.innerWidth) ? window.innerWidth : 0;
        const viewportHeight = Number.isFinite(window.innerHeight) ? window.innerHeight : 0;
        const maxLeft = Math.max(LEFT_RAIL_MAX_X_PX, Math.round(viewportWidth * 0.13));
        if (rectangle.left > maxLeft) {
          return false;
        }
        if (viewportHeight > 0 && rectangle.top < viewportHeight * LEFT_RAIL_MIN_Y_RATIO) {
          return false;
        }
        return __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, containsMoreGlyph_fn).call(this, controlElement);
      };
      /**
       * Confirm candidate control still represents Threads' More action.
       *
       * @param {HTMLElement} controlElement - Candidate menu control.
       * @returns {boolean}
       */
      containsMoreGlyph_fn = function(controlElement) {
        const directLabel = normalizeLabel(controlElement.getAttribute("aria-label"));
        if (directLabel.includes("more")) {
          return true;
        }
        const titleLabels = Array.from(controlElement.querySelectorAll("title")).map(
          (titleElement) => normalizeLabel(titleElement.textContent)
        );
        if (titleLabels.some((label) => label.includes("more"))) {
          return true;
        }
        const iconLabels = Array.from(controlElement.querySelectorAll("svg")).map(
          (svgElement) => normalizeLabel(svgElement.getAttribute("aria-label"))
        );
        return iconLabels.some((label) => label.includes("more"));
      };
      /**
       * Build one trigger wrapper by cloning native More layout scaffolding.
       *
       * @param {HTMLElement} referenceWrapper - Native More wrapper.
       * @returns {HTMLElement | null}
       */
      buildTriggerWrapper_fn = function(referenceWrapper) {
        const triggerWrapper = referenceWrapper.cloneNode(true);
        if (!(triggerWrapper instanceof HTMLElement)) {
          return null;
        }
        triggerWrapper.setAttribute(TRIGGER_ROOT_ATTRIBUTE, "true");
        const triggerControl = triggerWrapper.querySelector('[role="button"], button, a');
        if (!(triggerControl instanceof HTMLElement)) {
          return null;
        }
        __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, configureTriggerControl_fn).call(this, triggerControl);
        __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, replaceControlIcons_fn).call(this, triggerControl);
        return triggerWrapper;
      };
      /**
       * Normalize cloned control semantics for Bobbin menu toggling.
       *
       * @param {HTMLElement} controlElement - Trigger control.
       */
      configureTriggerControl_fn = function(controlElement) {
        controlElement.removeAttribute("aria-haspopup");
        controlElement.removeAttribute("aria-expanded");
        controlElement.removeAttribute("aria-controls");
        controlElement.setAttribute(TRIGGER_CONTROL_ATTRIBUTE, "true");
        controlElement.setAttribute("role", "button");
        controlElement.setAttribute("tabindex", "0");
        controlElement.setAttribute("title", TRIGGER_LABEL);
        controlElement.setAttribute("aria-label", TRIGGER_LABEL);
        controlElement.removeEventListener("click", this.handleTriggerClick);
        controlElement.removeEventListener("keydown", this.handleTriggerKeydown);
        controlElement.addEventListener("click", this.handleTriggerClick);
        controlElement.addEventListener("keydown", this.handleTriggerKeydown);
      };
      /**
       * Swap native More glyphs with Bobbin mask icons while preserving host layer behavior.
       *
       * @param {HTMLElement} controlElement - Trigger control.
       */
      replaceControlIcons_fn = function(controlElement) {
        const iconStackElement = controlElement.firstElementChild;
        if (!(iconStackElement instanceof HTMLElement)) {
          return;
        }
        const iconLayers = Array.from(iconStackElement.children).filter(
          (element) => element instanceof HTMLElement
        );
        if (iconLayers.length === 0) {
          return;
        }
        for (let index = 0; index < iconLayers.length; index += 1) {
          const iconLayer = iconLayers[index];
          const existingSvg = iconLayer.querySelector("svg");
          const iconClassName = existingSvg && (typeof existingSvg.className === "string" ? existingSvg.className : existingSvg.className.baseVal) ? typeof existingSvg.className === "string" ? existingSvg.className : existingSvg.className.baseVal : "";
          if (existingSvg) {
            existingSvg.remove();
          }
          iconLayer.setAttribute(TRIGGER_LAYER_ATTRIBUTE, index === 0 ? "base" : "active");
          const iconElement = document.createElement("span");
          iconElement.className = `${iconClassName} btf-sidebar-trigger-icon`.trim();
          iconElement.setAttribute("aria-hidden", "true");
          iconElement.style.setProperty("--x-width", `${SIDEBAR_TRIGGER_ICON_SIZE_PX}px`);
          iconElement.style.setProperty("--x-height", `${SIDEBAR_TRIGGER_ICON_SIZE_PX}px`);
          iconElement.style.setProperty("--x-fill", "currentColor");
          iconElement.style.setProperty("--btf-icon-offset-x", `${SIDEBAR_TRIGGER_ICON_OFFSET_X_PX}px`);
          iconElement.style.setProperty("--btf-icon-offset-y", `${SIDEBAR_TRIGGER_ICON_OFFSET_Y_PX}px`);
          iconLayer.appendChild(iconElement);
        }
      };
      activateMenuToggle_fn = async function() {
        var _a, _b;
        if (this.isActivationPending) {
          return;
        }
        this.isActivationPending = true;
        try {
          await this.onActivate();
        } catch (error) {
          (_b = (_a = this.logger).error) == null ? void 0 : _b.call(_a, "Sidebar trigger failed to toggle settings menu.", {
            error: error instanceof Error ? error.message : String(error)
          });
        } finally {
          this.isActivationPending = false;
          __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, applyControlState_fn).call(this);
        }
      };
      /**
       * Apply current open/closed state to trigger accessibility and visual attributes.
       */
      applyControlState_fn = function() {
        if (!this.triggerControlElement) {
          return;
        }
        const isMenuOpen = __privateMethod(this, _ThreadsSidebarMenuTrigger_instances, resolveMenuOpenState_fn).call(this);
        this.triggerControlElement.setAttribute(TRIGGER_OPEN_ATTRIBUTE, String(isMenuOpen));
        this.triggerControlElement.setAttribute("aria-pressed", String(isMenuOpen));
      };
      /**
       * Resolve effective menu-open state from provider callback and last known fallback.
       *
       * @returns {boolean}
       */
      resolveMenuOpenState_fn = function() {
        if (!this.isMenuOpenProvider) {
          return this.menuOpen;
        }
        try {
          return Boolean(this.isMenuOpenProvider());
        } catch (_error) {
          return this.menuOpen;
        }
      };
      /**
       * Remove injected trigger node and detach control listeners.
       */
      removeTrigger_fn = function() {
        if (this.triggerControlElement) {
          this.triggerControlElement.removeEventListener("click", this.handleTriggerClick);
          this.triggerControlElement.removeEventListener("keydown", this.handleTriggerKeydown);
        }
        if (this.triggerWrapperElement && this.triggerWrapperElement.parentElement) {
          this.triggerWrapperElement.parentElement.removeChild(this.triggerWrapperElement);
        }
        this.triggerWrapperElement = null;
        this.triggerControlElement = null;
      };
      /**
       * Remove trigger stylesheet during runtime shutdown.
       */
      removeStyleTag_fn = function() {
        const styleElement = document.getElementById(STYLE_ID);
        if (styleElement && styleElement.parentElement) {
          styleElement.parentElement.removeChild(styleElement);
        }
      };
      module.exports = {
        ThreadsSidebarMenuTrigger
      };
    }
  });

  // src/res/about-icon-data-uri.js
  var require_about_icon_data_uri = __commonJS({
    "src/res/about-icon-data-uri.js"(exports, module) {
      var FALLBACK_ABOUT_ICON_DATA_URI = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR4nGNgYGD4DwABBAEAffwJ9QAAAABJRU5ErkJggg==";
      var ABOUT_ICON_DATA_URI = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAAAsTAAALEwEAmpwYAAAC5klEQVR4nOVVS2jUQBjO7hb0IHhSEKV4EDx4EFQUPClCoYKCYOtV7+JFERGkIvigFy/ag3poRUFCSw9Ka7GwiHgobEVwe1jZpVu6j2bzmEySmcwrOzLbRNNi7ZYe/WGSzD/Ml+//5/sSTdsgpJQ5NfL5fI+UMqNtN6SUGQW4WW4rgFkp5W92rusOUkonAYDXpqamdqicvlpFdstMNU3TCoXC7iDAz+VqtNWFMbZg2+6ApmmKeWd0DWia5gmE0DBjbFGBhWE4xxgzYvBI5QghM6VSaX9637+AO71zHOdGzFIxLC8tLR3BGE+EhFhRFHlCCKjWKKUzXQGno16v99q23V8ul/eq+fx88VDLsoY9z3snhAjVOxW467pX0qQ2Y55NPytGuq7nfN9/GUVRp9dRFPGY9Zzqd9eMZVxewgRC2J90h3PejKKIKtyY9eCmrBPAYrG4CwBw1bKsk2pOGHsjhEC+708D4L5GCH1MziEIgvFUddmUXP/IMZkYhnFUbeKchYZh3oEQjhum+TAMwy9CCNpqtR4RQqZd133qed6Y53mX1rdxTQwNDXUWmgAcZJy7QRDkbdsera2sXHQc5xX0/QnOuQ0AeMwYmxdCKBlKx3Gu12q1AUrpV0rpe4TQWwDA2TTjHnWvVCq9nHPEGCs0Go17AIBbzWbzAUJoVgixYDnOE8bYD6USCOAzjPG4EMJOzNRut6UFwOU1/a1Wq/sMwzhtmvZNQumsHwQjuq7vCTDWCSHfS6Xyedu2b2OMp7kQi4lpErVgHE7WarXDacxMGIajlNI2hHBElYcwLrqeNyaEqLgQvoAQTmCMPynzpazeZoxVMSEjjUbjeAK4pt9eENwljH1TZXEhMITwsxAiUAgqRyhtxY78iTH+gBC6b5rmOaWiddr/6yFmlOPq9dYxCOEFy7L6TNM8Y1lun2XBU8vLywfy+fzOjb7bG+k4163343J7trJHU7KLS8qtG9l4bft/Eu2/i1+dCxhOydHdSQAAAABJRU5ErkJggg==".startsWith("data:image/png;base64,") ? "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAYAAADEtGw7AAAACXBIWXMAAAsTAAALEwEAmpwYAAAC5klEQVR4nOVVS2jUQBjO7hb0IHhSEKV4EDx4EFQUPClCoYKCYOtV7+JFERGkIvigFy/ag3poRUFCSw9Ka7GwiHgobEVwe1jZpVu6j2bzmEySmcwrOzLbRNNi7ZYe/WGSzD/Ml+//5/sSTdsgpJQ5NfL5fI+UMqNtN6SUGQW4WW4rgFkp5W92rusOUkonAYDXpqamdqicvlpFdstMNU3TCoXC7iDAz+VqtNWFMbZg2+6ApmmKeWd0DWia5gmE0DBjbFGBhWE4xxgzYvBI5QghM6VSaX9637+AO71zHOdGzFIxLC8tLR3BGE+EhFhRFHlCCKjWKKUzXQGno16v99q23V8ul/eq+fx88VDLsoY9z3snhAjVOxW467pX0qQ2Y55NPytGuq7nfN9/GUVRp9dRFPGY9Zzqd9eMZVxewgRC2J90h3PejKKIKtyY9eCmrBPAYrG4CwBw1bKsk2pOGHsjhEC+708D4L5GCH1MziEIgvFUddmUXP/IMZkYhnFUbeKchYZh3oEQjhum+TAMwy9CCNpqtR4RQqZd133qed6Y53mX1rdxTQwNDXUWmgAcZJy7QRDkbdsera2sXHQc5xX0/QnOuQ0AeMwYmxdCKBlKx3Gu12q1AUrpV0rpe4TQWwDA2TTjHnWvVCq9nHPEGCs0Go17AIBbzWbzAUJoVgixYDnOE8bYD6USCOAzjPG4EMJOzNRut6UFwOU1/a1Wq/sMwzhtmvZNQumsHwQjuq7vCTDWCSHfS6Xyedu2b2OMp7kQi4lpErVgHE7WarXDacxMGIajlNI2hHBElYcwLrqeNyaEqLgQvoAQTmCMPynzpazeZoxVMSEjjUbjeAK4pt9eENwljH1TZXEhMITwsxAiUAgqRyhtxY78iTH+gBC6b5rmOaWiddr/6yFmlOPq9dYxCOEFy7L6TNM8Y1lun2XBU8vLywfy+fzOjb7bG+k4163343J7trJHU7KLS8qtG9l4bft/Eu2/i1+dCxhOydHdSQAAAABJRU5ErkJggg==" : FALLBACK_ABOUT_ICON_DATA_URI;
      module.exports = {
        ABOUT_ICON_DATA_URI
      };
    }
  });

  // package.json
  var require_package = __commonJS({
    "package.json"(exports, module) {
      module.exports = {
        name: "bobbin-threads-filter",
        version: "1.0.0",
        private: true,
        type: "commonjs",
        license: "GPL-3.0-only",
        author: "Artificial Sweetener",
        repository: {
          type: "git",
          url: "git+https://github.com/Artificial-Sweetener/bobbin-threads-filter.git"
        },
        bugs: {
          url: "https://github.com/Artificial-Sweetener/bobbin-threads-filter/issues"
        },
        homepage: "https://github.com/Artificial-Sweetener/bobbin-threads-filter#readme",
        scripts: {
          lint: 'eslint -c tools/config/eslint.config.cjs "src/**/*.js" "tests/**/*.js" "tools/**/*.js" "tools/config/**/*.cjs"',
          "format:check": 'prettier --config tools/config/prettier.config.cjs --check "src/**/*.js" "tests/**/*.js" "tools/**/*.js" "tools/config/**/*.cjs" "*.md" "*.json"',
          test: "jest -c tools/config/jest.config.cjs",
          build: "node tools/build.js",
          release: "semantic-release"
        },
        engines: {
          node: ">=22.14 <23"
        },
        devDependencies: {
          "@semantic-release/commit-analyzer": "^13.0.1",
          "@semantic-release/exec": "^7.1.0",
          "@semantic-release/github": "^12.0.6",
          "@semantic-release/npm": "^13.1.5",
          "@semantic-release/release-notes-generator": "^14.1.0",
          esbuild: "^0.27.2",
          eslint: "^8.57.1",
          "eslint-config-prettier": "^9.1.0",
          "eslint-plugin-import": "^2.32.0",
          jest: "^30.2.0",
          "jest-environment-jsdom": "^30.2.0",
          prettier: "^3.2.5",
          "semantic-release": "^25.0.3",
          sharp: "^0.34.1"
        }
      };
    }
  });

  // src/ui/settings-menu.js
  var require_settings_menu = __commonJS({
    "src/ui/settings-menu.js"(exports, module) {
      var { whenBodyReady } = require_body_ready();
      var { ABOUT_ICON_DATA_URI } = require_about_icon_data_uri();
      var { normalizeHandle, normalizeTopic } = require_settings_schema();
      var { version: packageVersion } = require_package();
      var IDS = {
        root: "btf-settings-modal-root",
        style: "btf-settings-modal-style",
        form: "btf-settings-form",
        status: "btf-settings-status",
        footerActions: "btf-settings-footer-actions",
        cleanActions: "btf-settings-clean-actions",
        dirtyActions: "btf-settings-dirty-actions",
        aboutTrigger: "btf-settings-about-trigger",
        verifiedToggle: "btf-settings-verified-enabled",
        verifiedBadgeToggle: "btf-settings-verified-badge-enabled",
        verifiedWhitelistList: "btf-settings-verified-whitelist-list",
        aiLabelToggle: "btf-settings-ai-label-enabled",
        suggestedFollowToggle: "btf-settings-suggested-follow-enabled",
        trendingHideAllToggle: "btf-settings-trending-hide-all-enabled",
        trendingTopicList: "btf-settings-trending-topic-list",
        phraseList: "btf-settings-phrase-list",
        userList: "btf-settings-user-list",
        editorModal: "btf-settings-editor-modal",
        editorForm: "btf-settings-editor-form",
        editorSuggestionOverlay: "btf-settings-editor-suggestion-overlay",
        editorTitle: "btf-settings-editor-title",
        editorSubtitle: "btf-settings-editor-subtitle",
        editorInput: "btf-settings-editor-input",
        editorSuggestionList: "btf-settings-editor-suggestion-list",
        editorRegexRow: "btf-settings-editor-regex-row",
        editorRegexToggle: "btf-settings-editor-regex-toggle",
        editorNotInterestedRow: "btf-settings-editor-not-interested-row",
        editorNotInterestedLabel: "btf-settings-editor-not-interested-label",
        editorNotInterestedToggle: "btf-settings-editor-not-interested-toggle",
        editorStatus: "btf-settings-editor-status",
        editorSubmit: "btf-settings-editor-submit",
        editorCleanActions: "btf-settings-editor-clean-actions",
        editorDirtyActions: "btf-settings-editor-dirty-actions",
        editorDelete: "btf-settings-editor-delete",
        confirmModal: "btf-settings-confirm-modal",
        confirmMessage: "btf-settings-confirm-message",
        aboutModal: "btf-settings-about-modal"
      };
      var OPEN_CLASS = "btf-settings-open";
      var ACTIONS = {
        close: "close",
        discardClose: "discard-close",
        saveClose: "save-close",
        openAbout: "open-about",
        closeAbout: "close-about",
        openPhraseEditor: "open-phrase-editor",
        openUserEditor: "open-user-editor",
        openVerifiedWhitelistEditor: "open-verified-whitelist-editor",
        openTrendingTopicEditor: "open-trending-topic-editor",
        phraseChip: "phrase-chip",
        userChip: "user-chip",
        verifiedWhitelistChip: "verified-whitelist-chip",
        trendingTopicChip: "trending-topic-chip",
        editorSuggestionPick: "editor-suggestion-pick",
        editorCancel: "editor-cancel",
        editorDelete: "editor-delete",
        confirmCancel: "confirm-cancel",
        confirmAccept: "confirm-accept"
      };
      var USERNAME_SUGGESTION_DEBOUNCE_MS = 180;
      var EDITOR_INPUT_NAME_PREFIX = "btf-entry-token";
      var SETTINGS_MENU_TITLE = `Bobbin v${String(packageVersion || "0.0.0").trim() || "0.0.0"}`;
      var BOBBIN_GITHUB_URL = "https://github.com/Artificial-Sweetener/bobbin-threads-filter";
      var MAINTAINER_THREADS_URL = "https://www.threads.net/@artificialsweetener.ai";
      var MAINTAINER_WEBSITE_URL = "https://artificialsweetener.ai";
      var FACEBOOK_CLEAN_MY_FEEDS_REPO_URL = "https://github.com/Artificial-Sweetener/facebook-clean-my-feeds";
      function splitCommaSeparatedList(value) {
        const tokens = String(value === null || value === void 0 ? "" : value).split(/[\n,]/g).map((token) => token.trim()).filter(Boolean);
        return Array.from(new Set(tokens));
      }
      function joinCommaSeparatedList(value) {
        if (!Array.isArray(value)) {
          return "";
        }
        return value.map((entry) => String(entry === null || entry === void 0 ? "" : entry).trim()).filter(Boolean).join(", ");
      }
      function normalizePhraseEntry(pattern, isRegex) {
        const normalizedPattern = String(pattern === null || pattern === void 0 ? "" : pattern).trim();
        if (!normalizedPattern) {
          return null;
        }
        return {
          pattern: normalizedPattern,
          isRegex: Boolean(isRegex)
        };
      }
      function buildPhraseEntryKey(pattern, isRegex) {
        return `${isRegex ? "regex" : "text"}:${String(pattern || "").trim()}`;
      }
      function dedupePhraseEntries(entries) {
        if (!Array.isArray(entries)) {
          return [];
        }
        const nextEntries = [];
        const seenKeys = /* @__PURE__ */ new Set();
        for (const entry of entries) {
          const normalized = normalizePhraseEntry(
            entry && typeof entry === "object" ? entry.pattern : "",
            entry && typeof entry === "object" && entry.isRegex === true
          );
          if (!normalized) {
            continue;
          }
          const key = `${normalized.isRegex ? "regex" : "text"}:${normalized.pattern}`;
          if (seenKeys.has(key)) {
            continue;
          }
          seenKeys.add(key);
          nextEntries.push(normalized);
        }
        return nextEntries;
      }
      function resolvePhraseNotInterestedKeys(settings, phraseEntries) {
        const phraseNotInterestedSettings = settings && typeof settings === "object" && settings.filters && settings.filters.phrase && settings.filters.phrase.notInterested && typeof settings.filters.phrase.notInterested === "object" ? settings.filters.phrase.notInterested : {};
        const enabledKeys = /* @__PURE__ */ new Set();
        const enabledEntries = Array.isArray(phraseNotInterestedSettings.enabledEntries) ? phraseNotInterestedSettings.enabledEntries : [];
        for (const entry of enabledEntries) {
          const normalizedEntry = normalizePhraseEntry(
            entry && typeof entry === "object" ? entry.pattern : "",
            entry && typeof entry === "object" && entry.isRegex === true
          );
          if (!normalizedEntry) {
            continue;
          }
          enabledKeys.add(buildPhraseEntryKey(normalizedEntry.pattern, normalizedEntry.isRegex));
        }
        const legacyEnabledPatterns = new Set(
          Array.isArray(phraseNotInterestedSettings.enabledPatterns) ? phraseNotInterestedSettings.enabledPatterns.map((pattern) => String(pattern === null || pattern === void 0 ? "" : pattern).trim()).filter(Boolean) : []
        );
        for (const entry of phraseEntries) {
          if (!legacyEnabledPatterns.has(entry.pattern)) {
            continue;
          }
          enabledKeys.add(buildPhraseEntryKey(entry.pattern, entry.isRegex));
        }
        return enabledKeys;
      }
      function dedupeHandles(value) {
        if (!Array.isArray(value)) {
          return [];
        }
        const nextHandles = [];
        const seenHandles = /* @__PURE__ */ new Set();
        for (const item of value) {
          const normalizedHandle = normalizeHandle(item);
          if (!normalizedHandle || seenHandles.has(normalizedHandle)) {
            continue;
          }
          seenHandles.add(normalizedHandle);
          nextHandles.push(normalizedHandle);
        }
        return nextHandles;
      }
      function dedupeTrendingTopics(value) {
        if (!Array.isArray(value)) {
          return [];
        }
        const nextTopics = [];
        const seenTopics = /* @__PURE__ */ new Set();
        for (const item of value) {
          const normalizedTopic = normalizeTopic(item);
          if (!normalizedTopic || seenTopics.has(normalizedTopic)) {
            continue;
          }
          seenTopics.add(normalizedTopic);
          nextTopics.push(normalizedTopic);
        }
        return nextTopics;
      }
      function resolveUserNotInterestedHandles(settings, blockedHandles) {
        const usernameNotInterestedSettings = settings && typeof settings === "object" && settings.filters && settings.filters.username && settings.filters.username.notInterested && typeof settings.filters.username.notInterested === "object" ? settings.filters.username.notInterested : {};
        const blockedHandleSet = new Set(dedupeHandles(blockedHandles));
        return new Set(
          dedupeHandles(usernameNotInterestedSettings.enabledHandles).filter(
            (handle) => blockedHandleSet.has(handle)
          )
        );
      }
      function resolveTrendingNotInterestedTopics(settings, blockedTopics) {
        const trendingNotInterestedSettings = settings && typeof settings === "object" && settings.filters && settings.filters.trending && settings.filters.trending.notInterested && typeof settings.filters.trending.notInterested === "object" ? settings.filters.trending.notInterested : {};
        const blockedTopicSet = new Set(dedupeTrendingTopics(blockedTopics));
        return new Set(
          dedupeTrendingTopics(trendingNotInterestedSettings.enabledTopics).filter(
            (topic) => blockedTopicSet.has(topic)
          )
        );
      }
      function resolvePhraseEntries(settings) {
        const phraseSettings = settings && typeof settings === "object" && settings.filters && settings.filters.phrase && typeof settings.filters.phrase === "object" ? settings.filters.phrase : {};
        if (Array.isArray(phraseSettings.entries)) {
          return dedupePhraseEntries(phraseSettings.entries);
        }
        const legacyPatterns = Array.isArray(phraseSettings.patterns) ? phraseSettings.patterns : [];
        const legacyRegexMode = phraseSettings.useRegex === true;
        return dedupePhraseEntries(
          legacyPatterns.map((pattern) => normalizePhraseEntry(pattern, legacyRegexMode)).filter(Boolean)
        );
      }
      function createExternalLink(label, href) {
        const linkElement = document.createElement("a");
        linkElement.href = href;
        linkElement.target = "_blank";
        linkElement.rel = "noopener noreferrer";
        linkElement.textContent = label;
        return linkElement;
      }
      function appendLinkedParagraph(containerElement, options) {
        const paragraphElement = document.createElement("p");
        paragraphElement.className = "btf-about-copy-line";
        paragraphElement.appendChild(document.createTextNode(options.before));
        paragraphElement.appendChild(createExternalLink(options.linkLabel, options.href));
        if (options.after) {
          paragraphElement.appendChild(document.createTextNode(options.after));
        }
        containerElement.appendChild(paragraphElement);
      }
      function isThreadsDarkThemeActive() {
        var _a;
        if (typeof document === "undefined") {
          return true;
        }
        if ((_a = document.documentElement) == null ? void 0 : _a.classList.contains("__fb-dark-mode")) {
          return true;
        }
        const backgroundColor = getComputedStyle(
          document.body || document.documentElement
        ).backgroundColor;
        const components = backgroundColor.match(/\d+/g);
        if (!components || components.length < 3) {
          return true;
        }
        const luminance = 0.2126 * Number(components[0]) + 0.7152 * Number(components[1]) + 0.0722 * Number(components[2]);
        return luminance < 160;
      }
      var _ThreadsSettingsMenu_instances, emitVisibilityChanged_fn, applyTheme_fn, scheduleThemeRefresh_fn, startHostThemeSync_fn, stopHostThemeSync_fn, ensureStyleTag_fn, ensureRootElement_fn, ensureBodyReady_fn, createSwitchControl_fn, createDialogElement_fn, createAboutModalElement_fn, createEditorModalElement_fn, createSuggestionOverlayElement_fn, createConfirmModalElement_fn, onRootClick_fn, onDocumentKeydown_fn, onEditorSubmit_fn, onEditorInput_fn, isHandleEditorMode_fn, onEditorKeydown_fn, scheduleUsernameSuggestions_fn, loadUsernameSuggestions_fn, resolveUsernameSuggestionQuery_fn, renderEditorSuggestions_fn, clearEditorSuggestions_fn, syncSuggestionOverlayPosition_fn, applyUsernameSuggestionFromIndex_fn, saveAndCloseFromForm_fn, saveSettingsFromForm_fn, discardAndClose_fn, populateForm_fn, renderPhraseEntryChips_fn, prunePhraseNotInterestedKeys_fn, pruneUserNotInterestedHandles_fn, pruneTrendingNotInterestedTopics_fn, renderUserHandleChips_fn, renderVerifiedWhitelistHandleChips_fn, renderTrendingTopicChips_fn, openPhraseEditor_fn, openUserEditor_fn, openVerifiedWhitelistEditor_fn, openTrendingTopicEditor_fn, applyEditorChanges_fn, removeCurrentPhraseEntry_fn, openHandleRemovalConfirm_fn, confirmHandleRemoval_fn, openAboutModal_fn, closeEditorModal_fn, refreshEditorInputAutofillSuppression_fn, closeConfirmModal_fn, closeAboutModal_fn, isEditorOpen_fn, isConfirmOpen_fn, isAboutOpen_fn, syncEditorDirtyState_fn, serializeCurrentEditorSnapshot_fn, setEditorActionSetState_fn, syncDirtyState_fn, serializeCurrentDraftSnapshot_fn, setEditorStatus_fn, syncSwitchAriaState_fn, setStatusMessage_fn;
      var ThreadsSettingsMenu = class {
        /**
         * Initialize menu dependencies and stable event delegates.
         *
         * @param {{
         *   settingsStore: { load: () => Promise<object>, save: (settings: unknown) => Promise<object> },
         *   accountSearchClient?: { searchMentionCandidates?: Function },
         *   onSettingsUpdated?: (settings: object) => void,
         *   onVisibilityChanged?: (isOpen: boolean) => void,
         *   logger?: { info?: Function, warn?: Function, error?: Function }
         * }} options - Menu dependencies.
         */
        constructor(options) {
          __privateAdd(this, _ThreadsSettingsMenu_instances);
          this.settingsStore = options.settingsStore;
          this.accountSearchClient = options.accountSearchClient && typeof options.accountSearchClient.searchMentionCandidates === "function" ? options.accountSearchClient : null;
          this.onSettingsUpdated = typeof options.onSettingsUpdated === "function" ? options.onSettingsUpdated : null;
          this.onVisibilityChanged = typeof options.onVisibilityChanged === "function" ? options.onVisibilityChanged : null;
          this.logger = options.logger || {};
          this.rootElement = null;
          this.formElement = null;
          this.statusElement = null;
          this.footerActionsElement = null;
          this.cleanActionsElement = null;
          this.dirtyActionsElement = null;
          this.verifiedToggleElement = null;
          this.verifiedBadgeToggleElement = null;
          this.verifiedWhitelistListElement = null;
          this.aiLabelToggleElement = null;
          this.suggestedFollowToggleElement = null;
          this.trendingHideAllToggleElement = null;
          this.trendingTopicListElement = null;
          this.phraseListElement = null;
          this.userListElement = null;
          this.aboutModalElement = null;
          this.editorModalElement = null;
          this.editorFormElement = null;
          this.editorSuggestionOverlayElement = null;
          this.editorTitleElement = null;
          this.editorSubtitleElement = null;
          this.editorInputElement = null;
          this.editorSuggestionListElement = null;
          this.editorRegexRowElement = null;
          this.editorRegexToggleElement = null;
          this.editorNotInterestedRowElement = null;
          this.editorNotInterestedLabelElement = null;
          this.editorNotInterestedToggleElement = null;
          this.editorStatusElement = null;
          this.editorSubmitButtonElement = null;
          this.editorCleanActionsElement = null;
          this.editorDirtyActionsElement = null;
          this.editorDeleteButtonElement = null;
          this.confirmModalElement = null;
          this.confirmMessageElement = null;
          this.hostThemeObserver = null;
          this.hostThemeMediaQueryList = null;
          this.pendingThemeRefreshTimeoutId = null;
          this.isOpen = false;
          this.latestSettings = null;
          this.draftPhraseEntries = [];
          this.draftPhraseNotInterestedKeys = /* @__PURE__ */ new Set();
          this.draftUserHandles = [];
          this.draftUserNotInterestedHandles = /* @__PURE__ */ new Set();
          this.draftVerifiedWhitelistHandles = [];
          this.draftTrendingTopics = [];
          this.draftTrendingNotInterestedTopics = /* @__PURE__ */ new Set();
          this.editorState = null;
          this.editorSuggestions = [];
          this.editorSuggestionFocusIndex = -1;
          this.suggestionRequestSequence = 0;
          this.editorInputNameSequence = 0;
          this.editorBaselineSnapshot = "";
          this.editorIsDirty = false;
          this.pendingSuggestionTimeoutId = null;
          this.pendingHandleRemoval = {
            list: "",
            handle: ""
          };
          this.baselineSnapshot = "";
          this.isDirty = false;
          this.handleRootClick = (event) => __privateMethod(this, _ThreadsSettingsMenu_instances, onRootClick_fn).call(this, event);
          this.handleDocumentKeydown = (event) => __privateMethod(this, _ThreadsSettingsMenu_instances, onDocumentKeydown_fn).call(this, event);
          this.handleToggleChange = () => __privateMethod(this, _ThreadsSettingsMenu_instances, syncDirtyState_fn).call(this);
          this.handleFormSubmit = (event) => {
            void __privateMethod(this, _ThreadsSettingsMenu_instances, saveAndCloseFromForm_fn).call(this, event);
          };
          this.handleEditorSubmit = (event) => __privateMethod(this, _ThreadsSettingsMenu_instances, onEditorSubmit_fn).call(this, event);
          this.handleEditorInput = () => {
            __privateMethod(this, _ThreadsSettingsMenu_instances, onEditorInput_fn).call(this);
          };
          this.handleEditorToggleChange = () => {
            __privateMethod(this, _ThreadsSettingsMenu_instances, syncEditorDirtyState_fn).call(this);
          };
          this.handleEditorKeydown = (event) => {
            __privateMethod(this, _ThreadsSettingsMenu_instances, onEditorKeydown_fn).call(this, event);
          };
          this.handleViewportShift = () => {
            __privateMethod(this, _ThreadsSettingsMenu_instances, syncSuggestionOverlayPosition_fn).call(this);
          };
          this.handleThemeMediaQueryChange = () => {
            __privateMethod(this, _ThreadsSettingsMenu_instances, scheduleThemeRefresh_fn).call(this);
          };
        }
        /**
         * Toggle menu visibility from userscript command invocations.
         *
         * @returns {Promise<void>}
         */
        async toggle() {
          if (this.isOpen) {
            this.close();
            return;
          }
          await this.open();
        }
        /**
         * Show menu and hydrate controls from persisted settings.
         *
         * @returns {Promise<void>}
         */
        async open() {
          var _a;
          if (typeof document === "undefined" || this.isOpen) {
            return;
          }
          await __privateMethod(this, _ThreadsSettingsMenu_instances, ensureBodyReady_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, ensureStyleTag_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, ensureRootElement_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, applyTheme_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, startHostThemeSync_fn).call(this);
          const settings = await this.settingsStore.load();
          this.latestSettings = settings;
          __privateMethod(this, _ThreadsSettingsMenu_instances, populateForm_fn).call(this, settings);
          __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "");
          if (!this.rootElement) {
            return;
          }
          this.rootElement.hidden = false;
          this.isOpen = true;
          (_a = document.body) == null ? void 0 : _a.classList.add(OPEN_CLASS);
          __privateMethod(this, _ThreadsSettingsMenu_instances, emitVisibilityChanged_fn).call(this, true);
        }
        /**
         * Hide menu without mutating persisted settings.
         */
        close() {
          var _a;
          if (!this.isOpen || !this.rootElement) {
            return;
          }
          __privateMethod(this, _ThreadsSettingsMenu_instances, stopHostThemeSync_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeEditorModal_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeAboutModal_fn).call(this);
          this.rootElement.hidden = true;
          this.isOpen = false;
          __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "");
          (_a = document.body) == null ? void 0 : _a.classList.remove(OPEN_CLASS);
          __privateMethod(this, _ThreadsSettingsMenu_instances, emitVisibilityChanged_fn).call(this, false);
        }
        /**
         * Tear down menu DOM nodes during runtime shutdown.
         */
        destroy() {
          var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
          this.close();
          __privateMethod(this, _ThreadsSettingsMenu_instances, stopHostThemeSync_fn).call(this);
          if (this.rootElement && this.rootElement.parentElement) {
            this.rootElement.removeEventListener("click", this.handleRootClick);
            (_a = this.formElement) == null ? void 0 : _a.removeEventListener("submit", this.handleFormSubmit);
            (_b = this.editorFormElement) == null ? void 0 : _b.removeEventListener("submit", this.handleEditorSubmit);
            (_c = this.editorInputElement) == null ? void 0 : _c.removeEventListener("input", this.handleEditorInput);
            (_d = this.editorInputElement) == null ? void 0 : _d.removeEventListener("keydown", this.handleEditorKeydown);
            (_e = this.editorRegexToggleElement) == null ? void 0 : _e.removeEventListener("change", this.handleEditorToggleChange);
            (_f = this.editorNotInterestedToggleElement) == null ? void 0 : _f.removeEventListener(
              "change",
              this.handleEditorToggleChange
            );
            (_g = this.verifiedToggleElement) == null ? void 0 : _g.removeEventListener("change", this.handleToggleChange);
            (_h = this.verifiedBadgeToggleElement) == null ? void 0 : _h.removeEventListener("change", this.handleToggleChange);
            (_i = this.suggestedFollowToggleElement) == null ? void 0 : _i.removeEventListener("change", this.handleToggleChange);
            (_j = this.trendingHideAllToggleElement) == null ? void 0 : _j.removeEventListener("change", this.handleToggleChange);
            this.rootElement.parentElement.removeChild(this.rootElement);
          }
          document.removeEventListener("keydown", this.handleDocumentKeydown);
          window.removeEventListener("resize", this.handleViewportShift);
          window.removeEventListener("scroll", this.handleViewportShift, true);
          const styleElement = document.getElementById(IDS.style);
          if (styleElement == null ? void 0 : styleElement.parentElement) {
            styleElement.parentElement.removeChild(styleElement);
          }
          this.rootElement = null;
          this.formElement = null;
          this.statusElement = null;
          this.footerActionsElement = null;
          this.cleanActionsElement = null;
          this.dirtyActionsElement = null;
          this.verifiedToggleElement = null;
          this.verifiedBadgeToggleElement = null;
          this.verifiedWhitelistListElement = null;
          this.aiLabelToggleElement = null;
          this.suggestedFollowToggleElement = null;
          this.trendingHideAllToggleElement = null;
          this.trendingTopicListElement = null;
          this.phraseListElement = null;
          this.userListElement = null;
          this.aboutModalElement = null;
          this.editorModalElement = null;
          this.editorFormElement = null;
          this.editorSuggestionOverlayElement = null;
          this.editorTitleElement = null;
          this.editorSubtitleElement = null;
          this.editorInputElement = null;
          this.editorSuggestionListElement = null;
          this.editorRegexRowElement = null;
          this.editorRegexToggleElement = null;
          this.editorNotInterestedRowElement = null;
          this.editorNotInterestedLabelElement = null;
          this.editorNotInterestedToggleElement = null;
          this.editorStatusElement = null;
          this.editorSubmitButtonElement = null;
          this.editorCleanActionsElement = null;
          this.editorDirtyActionsElement = null;
          this.editorDeleteButtonElement = null;
          this.confirmModalElement = null;
          this.confirmMessageElement = null;
          this.hostThemeObserver = null;
          this.hostThemeMediaQueryList = null;
          if (this.pendingThemeRefreshTimeoutId !== null) {
            clearTimeout(this.pendingThemeRefreshTimeoutId);
            this.pendingThemeRefreshTimeoutId = null;
          }
          this.latestSettings = null;
          this.draftPhraseEntries = [];
          this.draftPhraseNotInterestedKeys = /* @__PURE__ */ new Set();
          this.draftUserHandles = [];
          this.draftUserNotInterestedHandles = /* @__PURE__ */ new Set();
          this.draftVerifiedWhitelistHandles = [];
          this.draftTrendingTopics = [];
          this.draftTrendingNotInterestedTopics = /* @__PURE__ */ new Set();
          this.editorState = null;
          this.editorSuggestions = [];
          this.editorSuggestionFocusIndex = -1;
          this.suggestionRequestSequence = 0;
          this.editorInputNameSequence = 0;
          this.editorBaselineSnapshot = "";
          this.editorIsDirty = false;
          if (this.pendingSuggestionTimeoutId !== null) {
            clearTimeout(this.pendingSuggestionTimeoutId);
            this.pendingSuggestionTimeoutId = null;
          }
          this.pendingHandleRemoval = {
            list: "",
            handle: ""
          };
          this.baselineSnapshot = "";
          this.isDirty = false;
        }
      };
      _ThreadsSettingsMenu_instances = new WeakSet();
      /**
       * Emit menu open-state changes to external UI adapters.
       *
       * @param {boolean} isOpen - Current menu visibility.
       */
      emitVisibilityChanged_fn = function(isOpen) {
        var _a, _b;
        if (!this.onVisibilityChanged) {
          return;
        }
        try {
          this.onVisibilityChanged(isOpen);
        } catch (error) {
          (_b = (_a = this.logger).warn) == null ? void 0 : _b.call(_a, "Settings menu visibility callback failed.", {
            error: error instanceof Error ? error.message : String(error)
          });
        }
      };
      /**
       * Apply dark/light theme tokens from Threads host styles.
       */
      applyTheme_fn = function() {
        if (!this.rootElement) {
          return;
        }
        this.rootElement.setAttribute("data-theme", isThreadsDarkThemeActive() ? "dark" : "light");
      };
      /**
       * Defer host-theme refreshes so rapid DOM mutations coalesce.
       */
      scheduleThemeRefresh_fn = function() {
        if (this.pendingThemeRefreshTimeoutId !== null) {
          return;
        }
        this.pendingThemeRefreshTimeoutId = setTimeout(() => {
          this.pendingThemeRefreshTimeoutId = null;
          __privateMethod(this, _ThreadsSettingsMenu_instances, applyTheme_fn).call(this);
        }, 0);
      };
      /**
       * Keep menu theme tokens aligned with host appearance changes.
       */
      startHostThemeSync_fn = function() {
        __privateMethod(this, _ThreadsSettingsMenu_instances, stopHostThemeSync_fn).call(this);
        if (typeof MutationObserver === "function") {
          this.hostThemeObserver = new MutationObserver(() => {
            __privateMethod(this, _ThreadsSettingsMenu_instances, scheduleThemeRefresh_fn).call(this);
          });
          const observerOptions = {
            attributes: true,
            attributeFilter: ["class", "style"]
          };
          this.hostThemeObserver.observe(document.documentElement, observerOptions);
          if (document.body) {
            this.hostThemeObserver.observe(document.body, observerOptions);
          }
        }
        if (typeof window.matchMedia === "function") {
          this.hostThemeMediaQueryList = window.matchMedia("(prefers-color-scheme: dark)");
          if (typeof this.hostThemeMediaQueryList.addEventListener === "function") {
            this.hostThemeMediaQueryList.addEventListener("change", this.handleThemeMediaQueryChange);
          } else if (typeof this.hostThemeMediaQueryList.addListener === "function") {
            this.hostThemeMediaQueryList.addListener(this.handleThemeMediaQueryChange);
          }
        }
      };
      /**
       * Stop observing host theme changes while menu is hidden.
       */
      stopHostThemeSync_fn = function() {
        if (this.pendingThemeRefreshTimeoutId !== null) {
          clearTimeout(this.pendingThemeRefreshTimeoutId);
          this.pendingThemeRefreshTimeoutId = null;
        }
        if (this.hostThemeObserver) {
          this.hostThemeObserver.disconnect();
          this.hostThemeObserver = null;
        }
        if (this.hostThemeMediaQueryList) {
          if (typeof this.hostThemeMediaQueryList.removeEventListener === "function") {
            this.hostThemeMediaQueryList.removeEventListener(
              "change",
              this.handleThemeMediaQueryChange
            );
          } else if (typeof this.hostThemeMediaQueryList.removeListener === "function") {
            this.hostThemeMediaQueryList.removeListener(this.handleThemeMediaQueryChange);
          }
          this.hostThemeMediaQueryList = null;
        }
      };
      /**
       * Insert menu styles once.
       */
      ensureStyleTag_fn = function() {
        if (typeof document === "undefined") {
          return;
        }
        const styleElement = document.createElement("style");
        styleElement.id = IDS.style;
        styleElement.textContent = `
body.${OPEN_CLASS}{overflow:hidden}
#${IDS.root}{--o:rgba(0,0,0,.7);--s:rgb(24,24,24);--b:rgba(243,245,247,.15);--h:rgba(255,255,255,.08);--t:rgb(243,245,247);--m:rgba(243,245,247,.72);--f:rgba(243,245,247,.22);--c:rgba(255,255,255,.08);--fb:rgba(243,245,247,.24);--fo:rgba(243,245,247,.64);--btf-about-icon-url:url("${ABOUT_ICON_DATA_URI}");position:fixed;inset:0;z-index:2147483647;display:grid;place-items:center;padding:24px;background:var(--o);box-sizing:border-box;animation:btf-overlay-fade-in .2s ease-in-out}
#${IDS.root} [hidden]{display:none!important}
#${IDS.root}[hidden]{display:none!important}
#${IDS.root}[data-theme="light"]{--o:rgba(0,0,0,.7);--s:rgb(255,255,255);--b:rgba(17,24,39,.15);--h:rgba(17,24,39,.06);--t:rgb(17,24,39);--m:rgba(17,24,39,.72);--f:rgba(17,24,39,.2);--c:rgba(17,24,39,.05);--fb:rgba(17,24,39,.22);--fo:rgba(17,24,39,.48)}
#${IDS.root} .btf-settings-dialog{width:min(680px,calc(100vw - 24px));max-height:calc(100vh - 40px);display:grid;grid-template-rows:auto minmax(0,1fr);overflow:hidden;border-radius:16px;border:1px solid var(--b);background:var(--s);box-shadow:rgba(0,0,0,.08) 0 12px 24px 0;color:var(--t);font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Helvetica,Arial,sans-serif;animation:btf-overlay-fade-in .2s ease-in-out,btf-modal-scale-in .2s ease-in-out}
#${IDS.root} .btf-settings-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:22px 22px 16px;border-bottom:1px solid var(--b)}
#${IDS.root} .btf-settings-title{margin:0;font-size:20px;line-height:1.2;font-weight:700;color:var(--t)}
#${IDS.root} .btf-about-trigger{border:0;padding:0;background:transparent;color:var(--m);cursor:pointer;display:inline-flex;align-items:center;gap:8px;min-height:28px}
#${IDS.root} .btf-about-trigger:hover,#${IDS.root} .btf-about-trigger:focus-visible{color:var(--t);outline:none}
#${IDS.root} .btf-about-trigger-label{font-size:12px;font-weight:600;line-height:1;letter-spacing:.01em;opacity:0;max-width:0;overflow:hidden;white-space:nowrap;transform:translateX(-8px);transition:opacity 160ms ease,max-width 160ms ease,transform 160ms ease}
#${IDS.root} .btf-about-trigger:hover .btf-about-trigger-label,#${IDS.root} .btf-about-trigger:focus-visible .btf-about-trigger-label{opacity:1;max-width:54px;transform:translateX(0)}
#${IDS.root} .btf-about-trigger-icon{display:inline-block;width:22px;height:22px;background-color:currentColor;mask-image:var(--btf-about-icon-url);mask-repeat:no-repeat;mask-position:center;mask-size:contain;-webkit-mask-image:var(--btf-about-icon-url);-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;-webkit-mask-size:contain;transform-origin:center}
#${IDS.root} .btf-about-trigger:hover .btf-about-trigger-icon,#${IDS.root} .btf-about-trigger:focus-visible .btf-about-trigger-icon{animation:btf-about-hat-rock 180ms ease-out}
#${IDS.root} #${IDS.form}{display:grid;grid-template-rows:minmax(0,1fr) auto;min-height:0;overflow:hidden}
#${IDS.root} .btf-settings-body{padding:0 22px;overflow:auto;min-height:0}
#${IDS.root} .btf-section{border-top:1px solid var(--b);padding:18px 0;display:grid;gap:12px}
#${IDS.root} .btf-section:first-child{border-top:0}
#${IDS.root} .btf-section-header{display:flex;justify-content:space-between;align-items:center;gap:12px}
#${IDS.root} .btf-section-title{margin:0}
#${IDS.root} .btf-section-title-main{font-size:15px;line-height:1.3;font-weight:600;color:var(--t)}
#${IDS.root} .btf-section-title-sub{font-size:13px;line-height:1.35;font-weight:600;color:var(--m);letter-spacing:.01em}
#${IDS.root} .btf-helper-text{margin:0;font-size:12px;line-height:1.45;color:var(--m)}
#${IDS.root} .btf-verified-whitelist{display:grid;gap:8px;padding-top:4px}
#${IDS.root} .btf-trending-topics{display:grid;gap:8px;padding-top:4px}
#${IDS.root} .btf-chip-list{display:flex;flex-wrap:wrap;align-items:center;gap:8px}
#${IDS.root} .btf-chip{border:1px solid var(--f);border-radius:999px;background:var(--c);color:var(--t);padding:6px 12px;font-size:13px;line-height:1.2;display:inline-flex;align-items:center;gap:8px;cursor:pointer}
#${IDS.root} .btf-chip:hover,#${IDS.root} .btf-chip:focus-visible{background:var(--h);outline:none}
#${IDS.root} .btf-chip-meta{border:1px solid var(--f);border-radius:999px;padding:1px 6px;font-size:11px;color:var(--m)}
#${IDS.root} .btf-empty-list{font-size:12px;color:var(--m)}
#${IDS.root} .btf-button{border:1px solid var(--f);border-radius:999px;font-size:13px;font-weight:500;padding:8px 14px;cursor:pointer;line-height:1.2;color:var(--t);background:transparent}
#${IDS.root} .btf-button:disabled{opacity:.55;cursor:default}
#${IDS.root} .btf-button-primary{border-color:var(--fb);font-weight:600}
#${IDS.root} .btf-button-primary:hover,#${IDS.root} .btf-button-primary:focus-visible{background:var(--h);outline:none}
#${IDS.root} .btf-button-quiet{border-color:var(--f)}
#${IDS.root} .btf-button-quiet:hover,#${IDS.root} .btf-button-quiet:focus-visible{background:var(--h);outline:none}
#${IDS.root} .btf-button-danger{border-color:var(--f);font-weight:500}
#${IDS.root} .btf-button-danger:hover,#${IDS.root} .btf-button-danger:focus-visible{background:var(--h);outline:none}
#${IDS.root} .btf-setting-toggle-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:12px;min-height:52px;padding:0;border-radius:12px;box-sizing:border-box;transition:background-color 120ms ease}
#${IDS.root} .btf-setting-toggle-title{margin:0;font-size:15px;line-height:1.3;font-weight:600;color:var(--t);padding-right:6px}
#${IDS.root} .btf-inline-toggle{display:flex;justify-content:space-between;align-items:center;gap:12px}
#${IDS.root} .btf-inline-toggle-label{margin:0;font-size:13px;line-height:1.35;font-weight:500;color:var(--m)}
#${IDS.root} .btf-switch{position:relative;display:inline-flex;align-items:center;justify-content:center;justify-self:end;width:40px;height:24px;flex:0 0 auto}
#${IDS.root} .btf-switch input{position:absolute;inset:0;margin:0;opacity:.001;cursor:pointer;z-index:2}
#${IDS.root} .btf-switch-shell{position:absolute;inset:0;border-radius:16px;background:#323539;transition:opacity 150ms cubic-bezier(.17,.17,0,1);overflow:hidden}
#${IDS.root}[data-theme="light"] .btf-switch-shell{background:#d0d4d9}
#${IDS.root} .btf-switch-track{position:absolute;inset:0;border-radius:16px;background:#fff;opacity:0;transition:opacity 150ms cubic-bezier(.17,.17,0,1)}
#${IDS.root}[data-theme="light"] .btf-switch-track{background:#1c1e21}
#${IDS.root} .btf-switch-thumb{position:absolute;top:1px;left:1px;width:22px;height:22px;box-sizing:border-box;border-radius:14px;border:1px solid var(--f);background:#0a0a0a;transition:transform 150ms cubic-bezier(.17,.17,0,1)}
#${IDS.root}[data-theme="light"] .btf-switch-thumb{border-color:rgba(17,24,39,.2);background:#fff}
#${IDS.root} .btf-switch input:checked + .btf-switch-shell .btf-switch-track{opacity:1}
#${IDS.root} .btf-switch input:checked + .btf-switch-shell .btf-switch-thumb{transform:translateX(16px)}
#${IDS.root} .btf-switch input:focus-visible + .btf-switch-shell{outline:2px solid var(--fo);outline-offset:2px}
#${IDS.root} .btf-settings-footer{padding:14px 22px 18px;display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--b)}
#${IDS.root} .btf-status{margin:0;min-height:19px;font-size:13px;color:var(--m)}
#${IDS.root} .btf-footer-actions{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:auto;justify-items:end;align-items:center;min-height:34px;flex:0 1 auto;max-width:100%}
#${IDS.root} .btf-footer-action-set{grid-area:1/1;display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:nowrap;opacity:0;transform:translateY(4px);pointer-events:none;transition:opacity 140ms ease,transform 140ms ease}
#${IDS.root} .btf-footer-action-set .btf-button{flex:0 0 auto}
#${IDS.root} .btf-footer-action-set[aria-hidden="false"]{opacity:1;transform:translateY(0);pointer-events:auto}
#${IDS.root} .btf-submodal{position:fixed;inset:0;display:grid;place-items:center;padding:20px;background:rgba(0,0,0,.5);z-index:2147483647;box-sizing:border-box}
#${IDS.root} .btf-submodal[hidden]{display:none!important}
#${IDS.root} .btf-submodal-panel{width:min(460px,calc(100vw - 24px));border-radius:16px;border:1px solid var(--b);background:var(--s);color:var(--t);padding:18px;display:grid;gap:12px;box-shadow:rgba(0,0,0,.08) 0 12px 24px 0}
#${IDS.root} .btf-submodal-title{margin:0;font-size:17px;font-weight:700;color:var(--t)}
#${IDS.root} .btf-submodal-subtitle{margin:0;font-size:13px;color:var(--m)}
#${IDS.root} .btf-about-copy{display:grid;gap:10px}
#${IDS.root} .btf-about-copy-line{margin:0;font-size:14px;line-height:1.5;color:var(--m)}
#${IDS.root} .btf-about-copy-line a{color:var(--t);text-decoration:underline;text-underline-offset:2px}
#${IDS.root} .btf-about-copy-line a:hover,#${IDS.root} .btf-about-copy-line a:focus-visible{color:var(--t);text-decoration-thickness:2px;outline:none}
#${IDS.root} .btf-submodal-form{display:grid;row-gap:8px}
#${IDS.root} .btf-submodal-input{width:100%;border-radius:12px;border:1px solid var(--f);background:transparent;color:var(--t);padding:11px 12px;box-sizing:border-box;font-size:14px;line-height:1.45;font-family:inherit}
#${IDS.root} .btf-submodal-input:focus-visible{outline:2px solid var(--fo);outline-offset:1px}
#${IDS.root} .btf-editor-regex-row{padding-top:2px}
#${IDS.root} .btf-editor-not-interested-row{padding-top:2px}
#${IDS.root} .btf-suggestion-overlay{position:fixed;left:0;top:0;z-index:2147483647;pointer-events:none}
#${IDS.root} .btf-suggestion-overlay-panel{width:280px;max-width:calc(100vw - 24px);border-radius:16px;border:1px solid var(--b);background:var(--s);box-shadow:0 10.5px 21px rgba(0,0,0,.08);overflow:hidden;pointer-events:auto}
#${IDS.root} .btf-suggestion-list{display:flex;flex-direction:column;max-height:285px;overflow:auto}
#${IDS.root} .btf-suggestion-list[hidden]{display:none!important}
#${IDS.root} .btf-suggestion-item{border:0;background:transparent;color:var(--t);padding:0 16px 12px;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:63px;cursor:pointer;text-align:left}
#${IDS.root} .btf-suggestion-item:not(:last-child){border-bottom:1px solid rgba(243,245,247,.15)}
#${IDS.root}[data-theme="light"] .btf-suggestion-item:not(:last-child){border-bottom:1px solid rgba(17,24,39,.15)}
#${IDS.root} .btf-suggestion-item:hover,#${IDS.root} .btf-suggestion-item:focus-visible,#${IDS.root} .btf-suggestion-item[aria-selected="true"]{background:var(--h);outline:none}
#${IDS.root} .btf-suggestion-main{display:flex;align-items:center;gap:12px;min-width:0}
#${IDS.root} .btf-suggestion-avatar{width:36px;height:36px;border-radius:50%;object-fit:cover;border:1px solid var(--f);background:var(--c);flex:0 0 auto}
#${IDS.root} .btf-suggestion-avatar-placeholder{display:inline-flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--m)}
#${IDS.root} .btf-suggestion-meta{display:grid;gap:2px;min-width:0}
#${IDS.root} .btf-suggestion-handle{font-size:15px;font-weight:500;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#${IDS.root} .btf-suggestion-name{font-size:13px;color:var(--m);line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#${IDS.root} .btf-suggestion-badge{border:1px solid var(--f);border-radius:999px;padding:1px 7px;font-size:11px;color:var(--m);flex:0 0 auto}
#${IDS.root} .btf-submodal-status{margin:0;font-size:12px;line-height:1.35;color:var(--m)}
#${IDS.root} .btf-submodal-status:empty{display:none}
#${IDS.root} .btf-submodal-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}
#${IDS.root} .btf-submodal-actions-main{display:inline-flex;align-items:center;gap:8px}
#${IDS.root} .btf-submodal-actions-main-reactive{display:grid;grid-template-columns:max-content;grid-template-rows:auto;justify-items:end;align-items:center;min-height:34px}
#${IDS.root} .btf-submodal-action-set{grid-area:1/1;display:none;align-items:center;gap:8px}
#${IDS.root} .btf-submodal-action-set[aria-hidden="false"]{display:inline-flex;animation:btf-submodal-action-set-in 140ms ease}
@keyframes btf-overlay-fade-in{0%{opacity:0}100%{opacity:1}}
@keyframes btf-modal-scale-in{0%{transform:scale(.95)}100%{transform:none}}
@keyframes btf-about-hat-rock{0%{transform:rotate(0deg)}35%{transform:rotate(-8deg)}70%{transform:rotate(6deg)}100%{transform:rotate(0deg)}}
@keyframes btf-submodal-action-set-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}
@media (prefers-reduced-motion: reduce){#${IDS.root}{animation:none}#${IDS.root} .btf-settings-dialog{animation:none}#${IDS.root} .btf-about-trigger-label{transition:none;transform:none}#${IDS.root} .btf-about-trigger:hover .btf-about-trigger-icon,#${IDS.root} .btf-about-trigger:focus-visible .btf-about-trigger-icon{animation:none}#${IDS.root} .btf-footer-action-set,#${IDS.root} .btf-submodal-action-set{transition:none;animation:none}}
@media (max-width:640px){#${IDS.root}{padding:12px}#${IDS.root} .btf-settings-dialog{width:calc(100vw - 16px);max-height:calc(100vh - 16px);border-radius:16px}#${IDS.root} .btf-settings-header,#${IDS.root} .btf-settings-body,#${IDS.root} .btf-settings-footer{padding-left:14px;padding-right:14px}#${IDS.root} .btf-settings-footer{flex-direction:column;align-items:stretch}#${IDS.root} .btf-footer-actions{width:100%;min-width:0;min-height:72px}#${IDS.root} .btf-footer-action-set{justify-content:flex-end;flex-wrap:wrap}}
`;
        const existingStyleElement = document.getElementById(IDS.style);
        if (existingStyleElement) {
          if (existingStyleElement.textContent !== styleElement.textContent) {
            existingStyleElement.textContent = styleElement.textContent;
          }
          return;
        }
        const head = document.head || document.documentElement;
        head == null ? void 0 : head.appendChild(styleElement);
      };
      /**
       * Build modal DOM once so subsequent toggles remain fast.
       */
      ensureRootElement_fn = function() {
        var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x;
        if (typeof document === "undefined") {
          return;
        }
        if (this.rootElement && ((_a = document.body) == null ? void 0 : _a.contains(this.rootElement))) {
          return;
        }
        const existingRootElement = document.getElementById(IDS.root);
        if (existingRootElement) {
          this.rootElement = existingRootElement;
        } else {
          const rootElement = document.createElement("div");
          rootElement.id = IDS.root;
          rootElement.hidden = true;
          rootElement.appendChild(__privateMethod(this, _ThreadsSettingsMenu_instances, createDialogElement_fn).call(this));
          rootElement.appendChild(__privateMethod(this, _ThreadsSettingsMenu_instances, createAboutModalElement_fn).call(this));
          rootElement.appendChild(__privateMethod(this, _ThreadsSettingsMenu_instances, createEditorModalElement_fn).call(this));
          rootElement.appendChild(__privateMethod(this, _ThreadsSettingsMenu_instances, createSuggestionOverlayElement_fn).call(this));
          rootElement.appendChild(__privateMethod(this, _ThreadsSettingsMenu_instances, createConfirmModalElement_fn).call(this));
          (_b = document.body) == null ? void 0 : _b.appendChild(rootElement);
          this.rootElement = rootElement;
        }
        this.formElement = this.rootElement.querySelector(`#${IDS.form}`);
        this.statusElement = this.rootElement.querySelector(`#${IDS.status}`);
        this.footerActionsElement = this.rootElement.querySelector(`#${IDS.footerActions}`);
        this.cleanActionsElement = this.rootElement.querySelector(`#${IDS.cleanActions}`);
        this.dirtyActionsElement = this.rootElement.querySelector(`#${IDS.dirtyActions}`);
        this.verifiedToggleElement = this.rootElement.querySelector(`#${IDS.verifiedToggle}`);
        this.verifiedBadgeToggleElement = this.rootElement.querySelector(`#${IDS.verifiedBadgeToggle}`);
        this.verifiedWhitelistListElement = this.rootElement.querySelector(
          `#${IDS.verifiedWhitelistList}`
        );
        this.aiLabelToggleElement = this.rootElement.querySelector(`#${IDS.aiLabelToggle}`);
        this.suggestedFollowToggleElement = this.rootElement.querySelector(
          `#${IDS.suggestedFollowToggle}`
        );
        this.trendingHideAllToggleElement = this.rootElement.querySelector(
          `#${IDS.trendingHideAllToggle}`
        );
        this.trendingTopicListElement = this.rootElement.querySelector(`#${IDS.trendingTopicList}`);
        this.phraseListElement = this.rootElement.querySelector(`#${IDS.phraseList}`);
        this.userListElement = this.rootElement.querySelector(`#${IDS.userList}`);
        this.aboutModalElement = this.rootElement.querySelector(`#${IDS.aboutModal}`);
        this.editorModalElement = this.rootElement.querySelector(`#${IDS.editorModal}`);
        this.editorFormElement = this.rootElement.querySelector(`#${IDS.editorForm}`);
        this.editorSuggestionOverlayElement = this.rootElement.querySelector(
          `#${IDS.editorSuggestionOverlay}`
        );
        this.editorTitleElement = this.rootElement.querySelector(`#${IDS.editorTitle}`);
        this.editorSubtitleElement = this.rootElement.querySelector(`#${IDS.editorSubtitle}`);
        this.editorInputElement = this.rootElement.querySelector(`#${IDS.editorInput}`);
        this.editorSuggestionListElement = this.rootElement.querySelector(
          `#${IDS.editorSuggestionList}`
        );
        this.editorRegexRowElement = this.rootElement.querySelector(`#${IDS.editorRegexRow}`);
        this.editorRegexToggleElement = this.rootElement.querySelector(`#${IDS.editorRegexToggle}`);
        this.editorNotInterestedRowElement = this.rootElement.querySelector(
          `#${IDS.editorNotInterestedRow}`
        );
        this.editorNotInterestedLabelElement = this.rootElement.querySelector(
          `#${IDS.editorNotInterestedLabel}`
        );
        this.editorNotInterestedToggleElement = this.rootElement.querySelector(
          `#${IDS.editorNotInterestedToggle}`
        );
        this.editorStatusElement = this.rootElement.querySelector(`#${IDS.editorStatus}`);
        this.editorSubmitButtonElement = this.rootElement.querySelector(`#${IDS.editorSubmit}`);
        this.editorCleanActionsElement = this.rootElement.querySelector(`#${IDS.editorCleanActions}`);
        this.editorDirtyActionsElement = this.rootElement.querySelector(`#${IDS.editorDirtyActions}`);
        this.editorDeleteButtonElement = this.rootElement.querySelector(`#${IDS.editorDelete}`);
        this.confirmModalElement = this.rootElement.querySelector(`#${IDS.confirmModal}`);
        this.confirmMessageElement = this.rootElement.querySelector(`#${IDS.confirmMessage}`);
        this.rootElement.removeEventListener("click", this.handleRootClick);
        (_c = this.formElement) == null ? void 0 : _c.removeEventListener("submit", this.handleFormSubmit);
        (_d = this.editorFormElement) == null ? void 0 : _d.removeEventListener("submit", this.handleEditorSubmit);
        (_e = this.editorInputElement) == null ? void 0 : _e.removeEventListener("input", this.handleEditorInput);
        (_f = this.editorInputElement) == null ? void 0 : _f.removeEventListener("keydown", this.handleEditorKeydown);
        (_g = this.editorRegexToggleElement) == null ? void 0 : _g.removeEventListener("change", this.handleEditorToggleChange);
        (_h = this.editorNotInterestedToggleElement) == null ? void 0 : _h.removeEventListener(
          "change",
          this.handleEditorToggleChange
        );
        (_i = this.verifiedToggleElement) == null ? void 0 : _i.removeEventListener("change", this.handleToggleChange);
        (_j = this.verifiedBadgeToggleElement) == null ? void 0 : _j.removeEventListener("change", this.handleToggleChange);
        (_k = this.aiLabelToggleElement) == null ? void 0 : _k.removeEventListener("change", this.handleToggleChange);
        (_l = this.suggestedFollowToggleElement) == null ? void 0 : _l.removeEventListener("change", this.handleToggleChange);
        (_m = this.trendingHideAllToggleElement) == null ? void 0 : _m.removeEventListener("change", this.handleToggleChange);
        document.removeEventListener("keydown", this.handleDocumentKeydown);
        window.removeEventListener("resize", this.handleViewportShift);
        window.removeEventListener("scroll", this.handleViewportShift, true);
        this.rootElement.addEventListener("click", this.handleRootClick);
        (_n = this.formElement) == null ? void 0 : _n.addEventListener("submit", this.handleFormSubmit);
        (_o = this.editorFormElement) == null ? void 0 : _o.addEventListener("submit", this.handleEditorSubmit);
        (_p = this.editorInputElement) == null ? void 0 : _p.addEventListener("input", this.handleEditorInput);
        (_q = this.editorInputElement) == null ? void 0 : _q.addEventListener("keydown", this.handleEditorKeydown);
        (_r = this.editorRegexToggleElement) == null ? void 0 : _r.addEventListener("change", this.handleEditorToggleChange);
        (_s = this.editorNotInterestedToggleElement) == null ? void 0 : _s.addEventListener(
          "change",
          this.handleEditorToggleChange
        );
        (_t = this.verifiedToggleElement) == null ? void 0 : _t.addEventListener("change", this.handleToggleChange);
        (_u = this.verifiedBadgeToggleElement) == null ? void 0 : _u.addEventListener("change", this.handleToggleChange);
        (_v = this.aiLabelToggleElement) == null ? void 0 : _v.addEventListener("change", this.handleToggleChange);
        (_w = this.suggestedFollowToggleElement) == null ? void 0 : _w.addEventListener("change", this.handleToggleChange);
        (_x = this.trendingHideAllToggleElement) == null ? void 0 : _x.addEventListener("change", this.handleToggleChange);
        document.addEventListener("keydown", this.handleDocumentKeydown);
        window.addEventListener("resize", this.handleViewportShift);
        window.addEventListener("scroll", this.handleViewportShift, true);
      };
      ensureBodyReady_fn = async function() {
        if (document.body) {
          return;
        }
        await new Promise((resolve) => {
          whenBodyReady(resolve);
        });
      };
      /**
       * Build one switch control that matches Threads toggles.
       *
       * @param {{ inputId: string, ariaLabel: string }} options - Control identity options.
       * @returns {HTMLLabelElement}
       */
      createSwitchControl_fn = function(options) {
        const switchElement = document.createElement("label");
        switchElement.className = "btf-switch";
        switchElement.setAttribute("aria-label", options.ariaLabel);
        const inputElement = document.createElement("input");
        inputElement.id = options.inputId;
        inputElement.type = "checkbox";
        inputElement.setAttribute("role", "switch");
        inputElement.addEventListener("change", () => {
          __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, inputElement);
        });
        const shellElement = document.createElement("span");
        shellElement.className = "btf-switch-shell";
        const trackElement = document.createElement("span");
        trackElement.className = "btf-switch-track";
        const thumbElement = document.createElement("span");
        thumbElement.className = "btf-switch-thumb";
        shellElement.appendChild(trackElement);
        shellElement.appendChild(thumbElement);
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, inputElement);
        switchElement.appendChild(inputElement);
        switchElement.appendChild(shellElement);
        return switchElement;
      };
      /**
       * Build settings dialog markup with safe DOM APIs.
       *
       * @returns {HTMLElement}
       */
      createDialogElement_fn = function() {
        const dialogElement = document.createElement("section");
        dialogElement.className = "btf-settings-dialog";
        dialogElement.setAttribute("role", "dialog");
        dialogElement.setAttribute("aria-modal", "true");
        dialogElement.setAttribute("aria-labelledby", "btf-settings-title");
        const headerElement = document.createElement("header");
        headerElement.className = "btf-settings-header";
        const titleElement = document.createElement("h2");
        titleElement.id = "btf-settings-title";
        titleElement.className = "btf-settings-title";
        titleElement.textContent = SETTINGS_MENU_TITLE;
        const aboutTriggerElement = document.createElement("button");
        aboutTriggerElement.id = IDS.aboutTrigger;
        aboutTriggerElement.type = "button";
        aboutTriggerElement.className = "btf-about-trigger";
        aboutTriggerElement.setAttribute("data-btf-action", ACTIONS.openAbout);
        aboutTriggerElement.setAttribute("aria-label", "Open About");
        const aboutTriggerLabelElement = document.createElement("span");
        aboutTriggerLabelElement.className = "btf-about-trigger-label";
        aboutTriggerLabelElement.textContent = "About";
        const aboutTriggerIconElement = document.createElement("span");
        aboutTriggerIconElement.className = "btf-about-trigger-icon";
        aboutTriggerIconElement.setAttribute("aria-hidden", "true");
        aboutTriggerElement.appendChild(aboutTriggerLabelElement);
        aboutTriggerElement.appendChild(aboutTriggerIconElement);
        headerElement.appendChild(titleElement);
        headerElement.appendChild(aboutTriggerElement);
        const formElement = document.createElement("form");
        formElement.id = IDS.form;
        const bodyElement = document.createElement("div");
        bodyElement.className = "btf-settings-body";
        const verifiedSection = document.createElement("section");
        verifiedSection.className = "btf-section";
        const verifiedSectionHeader = document.createElement("div");
        verifiedSectionHeader.className = "btf-setting-toggle-row";
        const verifiedTitle = document.createElement("p");
        verifiedTitle.className = "btf-setting-toggle-title btf-section-title-main";
        verifiedTitle.textContent = "Filter Verified Users";
        const verifiedSwitch = __privateMethod(this, _ThreadsSettingsMenu_instances, createSwitchControl_fn).call(this, {
          inputId: IDS.verifiedToggle,
          ariaLabel: "Toggle verified user filtering"
        });
        verifiedSectionHeader.appendChild(verifiedTitle);
        verifiedSectionHeader.appendChild(verifiedSwitch);
        const verifiedHelpText = document.createElement("p");
        verifiedHelpText.className = "btf-helper-text";
        verifiedHelpText.textContent = "Hide posts from accounts with the blue verified badge.";
        const verifiedBadgeRow = document.createElement("div");
        verifiedBadgeRow.className = "btf-inline-toggle";
        const verifiedBadgeLabel = document.createElement("p");
        verifiedBadgeLabel.className = "btf-inline-toggle-label";
        verifiedBadgeLabel.textContent = "Hide verified badges";
        const verifiedBadgeSwitch = __privateMethod(this, _ThreadsSettingsMenu_instances, createSwitchControl_fn).call(this, {
          inputId: IDS.verifiedBadgeToggle,
          ariaLabel: "Toggle hiding visible verified badges"
        });
        verifiedBadgeRow.appendChild(verifiedBadgeLabel);
        verifiedBadgeRow.appendChild(verifiedBadgeSwitch);
        const verifiedWhitelistSection = document.createElement("div");
        verifiedWhitelistSection.className = "btf-verified-whitelist";
        const verifiedWhitelistHeader = document.createElement("div");
        verifiedWhitelistHeader.className = "btf-section-header";
        const verifiedWhitelistTitle = document.createElement("h3");
        verifiedWhitelistTitle.className = "btf-section-title btf-section-title-sub";
        verifiedWhitelistTitle.textContent = "Verified Whitelist";
        const addVerifiedWhitelistButton = document.createElement("button");
        addVerifiedWhitelistButton.type = "button";
        addVerifiedWhitelistButton.className = "btf-button btf-button-quiet";
        addVerifiedWhitelistButton.setAttribute("data-btf-action", ACTIONS.openVerifiedWhitelistEditor);
        addVerifiedWhitelistButton.textContent = "Add Handle";
        verifiedWhitelistHeader.appendChild(verifiedWhitelistTitle);
        verifiedWhitelistHeader.appendChild(addVerifiedWhitelistButton);
        const verifiedWhitelistHelpText = document.createElement("p");
        verifiedWhitelistHelpText.className = "btf-helper-text";
        verifiedWhitelistHelpText.textContent = "Always allow posts from these verified handles, even when verified filtering is enabled.";
        const verifiedWhitelistListElement = document.createElement("div");
        verifiedWhitelistListElement.id = IDS.verifiedWhitelistList;
        verifiedWhitelistListElement.className = "btf-chip-list";
        verifiedWhitelistSection.appendChild(verifiedWhitelistHeader);
        verifiedWhitelistSection.appendChild(verifiedWhitelistHelpText);
        verifiedWhitelistSection.appendChild(verifiedWhitelistListElement);
        verifiedSection.appendChild(verifiedSectionHeader);
        verifiedSection.appendChild(verifiedHelpText);
        verifiedSection.appendChild(verifiedBadgeRow);
        verifiedSection.appendChild(verifiedWhitelistSection);
        const aiLabelSection = document.createElement("section");
        aiLabelSection.className = "btf-section";
        const aiLabelSectionHeader = document.createElement("div");
        aiLabelSectionHeader.className = "btf-setting-toggle-row";
        const aiLabelTitle = document.createElement("p");
        aiLabelTitle.className = "btf-setting-toggle-title btf-section-title-main";
        aiLabelTitle.textContent = "Filter AI Posts";
        const aiLabelSwitch = __privateMethod(this, _ThreadsSettingsMenu_instances, createSwitchControl_fn).call(this, {
          inputId: IDS.aiLabelToggle,
          ariaLabel: "Toggle filtering for Threads self-disclosed AI posts"
        });
        aiLabelSectionHeader.appendChild(aiLabelTitle);
        aiLabelSectionHeader.appendChild(aiLabelSwitch);
        const aiLabelHelpText = document.createElement("p");
        aiLabelHelpText.className = "btf-helper-text";
        aiLabelHelpText.textContent = "Hide posts marked with Threads' AI self-disclosure label. This only filters disclosed posts, not all AI content.";
        aiLabelSection.appendChild(aiLabelSectionHeader);
        aiLabelSection.appendChild(aiLabelHelpText);
        const suggestedFollowSection = document.createElement("section");
        suggestedFollowSection.className = "btf-section";
        const suggestedFollowSectionHeader = document.createElement("div");
        suggestedFollowSectionHeader.className = "btf-setting-toggle-row";
        const suggestedFollowTitle = document.createElement("p");
        suggestedFollowTitle.className = "btf-setting-toggle-title btf-section-title-main";
        suggestedFollowTitle.textContent = "Filter Suggested For You";
        const suggestedFollowSwitch = __privateMethod(this, _ThreadsSettingsMenu_instances, createSwitchControl_fn).call(this, {
          inputId: IDS.suggestedFollowToggle,
          ariaLabel: "Toggle suggested-for-you follow module filtering"
        });
        suggestedFollowSectionHeader.appendChild(suggestedFollowTitle);
        suggestedFollowSectionHeader.appendChild(suggestedFollowSwitch);
        const suggestedFollowHelpText = document.createElement("p");
        suggestedFollowHelpText.className = "btf-helper-text";
        suggestedFollowHelpText.textContent = 'Hide timeline who-to-follow modules labeled "Suggested for you".';
        suggestedFollowSection.appendChild(suggestedFollowSectionHeader);
        suggestedFollowSection.appendChild(suggestedFollowHelpText);
        const trendingSection = document.createElement("section");
        trendingSection.className = "btf-section";
        const trendingSectionHeader = document.createElement("div");
        trendingSectionHeader.className = "btf-section-header";
        const trendingTitle = document.createElement("h3");
        trendingTitle.className = "btf-section-title btf-section-title-main";
        trendingTitle.textContent = "Trending Filters";
        trendingSectionHeader.appendChild(trendingTitle);
        const trendingHelpText = document.createElement("p");
        trendingHelpText.className = "btf-helper-text";
        trendingHelpText.textContent = 'Hide posts that Threads tags with a timeline "Trending" topic highlight by topic or all-at-once.';
        const trendingHideAllRow = document.createElement("div");
        trendingHideAllRow.className = "btf-inline-toggle";
        const trendingHideAllLabel = document.createElement("p");
        trendingHideAllLabel.className = "btf-inline-toggle-label";
        trendingHideAllLabel.textContent = "Filter all trending posts";
        const trendingHideAllSwitch = __privateMethod(this, _ThreadsSettingsMenu_instances, createSwitchControl_fn).call(this, {
          inputId: IDS.trendingHideAllToggle,
          ariaLabel: "Toggle filtering for all trending posts"
        });
        trendingHideAllRow.appendChild(trendingHideAllLabel);
        trendingHideAllRow.appendChild(trendingHideAllSwitch);
        const trendingTopicsSection = document.createElement("div");
        trendingTopicsSection.className = "btf-trending-topics";
        const trendingTopicsHeader = document.createElement("div");
        trendingTopicsHeader.className = "btf-section-header";
        const trendingTopicsTitle = document.createElement("h3");
        trendingTopicsTitle.className = "btf-section-title btf-section-title-sub";
        trendingTopicsTitle.textContent = "Trending Topics";
        const addTrendingTopicButton = document.createElement("button");
        addTrendingTopicButton.type = "button";
        addTrendingTopicButton.className = "btf-button btf-button-quiet";
        addTrendingTopicButton.setAttribute("data-btf-action", ACTIONS.openTrendingTopicEditor);
        addTrendingTopicButton.textContent = "Add Topic";
        trendingTopicsHeader.appendChild(trendingTopicsTitle);
        trendingTopicsHeader.appendChild(addTrendingTopicButton);
        const trendingTopicsHelpText = document.createElement("p");
        trendingTopicsHelpText.className = "btf-helper-text";
        trendingTopicsHelpText.textContent = 'When "Filter all trending posts" is off, only posts tagged with these topics are hidden.';
        const trendingTopicsListElement = document.createElement("div");
        trendingTopicsListElement.id = IDS.trendingTopicList;
        trendingTopicsListElement.className = "btf-chip-list";
        trendingTopicsSection.appendChild(trendingTopicsHeader);
        trendingTopicsSection.appendChild(trendingTopicsHelpText);
        trendingTopicsSection.appendChild(trendingTopicsListElement);
        trendingSection.appendChild(trendingSectionHeader);
        trendingSection.appendChild(trendingHelpText);
        trendingSection.appendChild(trendingHideAllRow);
        trendingSection.appendChild(trendingTopicsSection);
        const phraseSection = document.createElement("section");
        phraseSection.className = "btf-section";
        const phraseSectionHeader = document.createElement("div");
        phraseSectionHeader.className = "btf-section-header";
        const phraseTitle = document.createElement("h3");
        phraseTitle.className = "btf-section-title btf-section-title-main";
        phraseTitle.textContent = "Filtered Phrases";
        const addPhraseButton = document.createElement("button");
        addPhraseButton.type = "button";
        addPhraseButton.className = "btf-button btf-button-quiet";
        addPhraseButton.setAttribute("data-btf-action", ACTIONS.openPhraseEditor);
        addPhraseButton.textContent = "Add Phrase";
        phraseSectionHeader.appendChild(phraseTitle);
        phraseSectionHeader.appendChild(addPhraseButton);
        const phraseHelpText = document.createElement("p");
        phraseHelpText.className = "btf-helper-text";
        phraseHelpText.textContent = "Click a phrase bubble to edit it or change regex mode.";
        const phraseListElement = document.createElement("div");
        phraseListElement.id = IDS.phraseList;
        phraseListElement.className = "btf-chip-list";
        phraseSection.appendChild(phraseSectionHeader);
        phraseSection.appendChild(phraseHelpText);
        phraseSection.appendChild(phraseListElement);
        const usernameSection = document.createElement("section");
        usernameSection.className = "btf-section";
        const usernameSectionHeader = document.createElement("div");
        usernameSectionHeader.className = "btf-section-header";
        const usernameTitle = document.createElement("h3");
        usernameTitle.className = "btf-section-title btf-section-title-main";
        usernameTitle.textContent = "Filtered Usernames";
        const addUserButton = document.createElement("button");
        addUserButton.type = "button";
        addUserButton.className = "btf-button btf-button-quiet";
        addUserButton.setAttribute("data-btf-action", ACTIONS.openUserEditor);
        addUserButton.textContent = "Add User";
        usernameSectionHeader.appendChild(usernameTitle);
        usernameSectionHeader.appendChild(addUserButton);
        const usernameHelpText = document.createElement("p");
        usernameHelpText.className = "btf-helper-text";
        usernameHelpText.textContent = "Click a username bubble to remove it. Add multiple handles with commas and optionally enable Not Interested.";
        const usernameListElement = document.createElement("div");
        usernameListElement.id = IDS.userList;
        usernameListElement.className = "btf-chip-list";
        usernameSection.appendChild(usernameSectionHeader);
        usernameSection.appendChild(usernameHelpText);
        usernameSection.appendChild(usernameListElement);
        bodyElement.appendChild(verifiedSection);
        bodyElement.appendChild(aiLabelSection);
        bodyElement.appendChild(suggestedFollowSection);
        bodyElement.appendChild(trendingSection);
        bodyElement.appendChild(phraseSection);
        bodyElement.appendChild(usernameSection);
        const footerElement = document.createElement("footer");
        footerElement.className = "btf-settings-footer";
        const statusElement = document.createElement("p");
        statusElement.id = IDS.status;
        statusElement.className = "btf-status";
        statusElement.setAttribute("aria-live", "polite");
        const footerActionsElement = document.createElement("div");
        footerActionsElement.id = IDS.footerActions;
        footerActionsElement.className = "btf-footer-actions";
        const cleanActionsElement = document.createElement("div");
        cleanActionsElement.id = IDS.cleanActions;
        cleanActionsElement.className = "btf-footer-action-set";
        cleanActionsElement.setAttribute("aria-hidden", "false");
        const closeButtonElement = document.createElement("button");
        closeButtonElement.type = "button";
        closeButtonElement.className = "btf-button btf-button-quiet";
        closeButtonElement.setAttribute("data-btf-action", ACTIONS.close);
        closeButtonElement.textContent = "Close";
        cleanActionsElement.appendChild(closeButtonElement);
        const dirtyActionsElement = document.createElement("div");
        dirtyActionsElement.id = IDS.dirtyActions;
        dirtyActionsElement.className = "btf-footer-action-set";
        dirtyActionsElement.setAttribute("aria-hidden", "true");
        const discardButtonElement = document.createElement("button");
        discardButtonElement.type = "button";
        discardButtonElement.className = "btf-button btf-button-quiet";
        discardButtonElement.setAttribute("data-btf-action", ACTIONS.discardClose);
        discardButtonElement.textContent = "Discard & Close";
        const saveCloseButtonElement = document.createElement("button");
        saveCloseButtonElement.type = "button";
        saveCloseButtonElement.className = "btf-button btf-button-primary";
        saveCloseButtonElement.setAttribute("data-btf-action", ACTIONS.saveClose);
        saveCloseButtonElement.textContent = "Save & Close";
        dirtyActionsElement.appendChild(discardButtonElement);
        dirtyActionsElement.appendChild(saveCloseButtonElement);
        footerActionsElement.appendChild(cleanActionsElement);
        footerActionsElement.appendChild(dirtyActionsElement);
        footerElement.appendChild(statusElement);
        footerElement.appendChild(footerActionsElement);
        formElement.appendChild(bodyElement);
        formElement.appendChild(footerElement);
        dialogElement.appendChild(headerElement);
        dialogElement.appendChild(formElement);
        return dialogElement;
      };
      /**
       * Build About modal markup opened from the header hat control.
       *
       * @returns {HTMLElement}
       */
      createAboutModalElement_fn = function() {
        const modalElement = document.createElement("div");
        modalElement.id = IDS.aboutModal;
        modalElement.className = "btf-submodal";
        modalElement.hidden = true;
        const panelElement = document.createElement("section");
        panelElement.className = "btf-submodal-panel";
        panelElement.setAttribute("role", "dialog");
        panelElement.setAttribute("aria-modal", "true");
        panelElement.setAttribute("aria-labelledby", "btf-settings-about-title");
        const titleElement = document.createElement("h3");
        titleElement.id = "btf-settings-about-title";
        titleElement.className = "btf-submodal-title";
        titleElement.textContent = "About";
        const copyElement = document.createElement("div");
        copyElement.className = "btf-about-copy";
        const missionParagraph = document.createElement("p");
        missionParagraph.className = "btf-about-copy-line";
        missionParagraph.textContent = "I hope this script helps you get more of what you want out of Threads. I promise to be your ally in the fight against stuff you don't want to see online.";
        copyElement.appendChild(missionParagraph);
        appendLinkedParagraph(copyElement, {
          before: "If it helps, a star on ",
          linkLabel: "GitHub",
          href: BOBBIN_GITHUB_URL,
          after: " would mean a lot."
        });
        appendLinkedParagraph(copyElement, {
          before: "Come say hi to me on ",
          linkLabel: "Threads",
          href: MAINTAINER_THREADS_URL,
          after: " - I share my art, poetry, and dev updates over there."
        });
        appendLinkedParagraph(copyElement, {
          before: "If you want to see what I'm up to around the web, ",
          linkLabel: "my website",
          href: MAINTAINER_WEBSITE_URL,
          after: " is the best place to start."
        });
        appendLinkedParagraph(copyElement, {
          before: "Want more control over your other feeds? I maintain Facebook Clean My Feeds, too. Check it out ",
          linkLabel: "over here on GitHub!",
          href: FACEBOOK_CLEAN_MY_FEEDS_REPO_URL
        });
        const actionsElement = document.createElement("div");
        actionsElement.className = "btf-submodal-actions";
        const spacerElement = document.createElement("span");
        const mainActionsElement = document.createElement("div");
        mainActionsElement.className = "btf-submodal-actions-main";
        const closeButton = document.createElement("button");
        closeButton.type = "button";
        closeButton.className = "btf-button btf-button-quiet";
        closeButton.setAttribute("data-btf-action", ACTIONS.closeAbout);
        closeButton.textContent = "Close";
        mainActionsElement.appendChild(closeButton);
        actionsElement.appendChild(spacerElement);
        actionsElement.appendChild(mainActionsElement);
        panelElement.appendChild(titleElement);
        panelElement.appendChild(copyElement);
        panelElement.appendChild(actionsElement);
        modalElement.appendChild(panelElement);
        return modalElement;
      };
      /**
       * Build phrase/username editor modal markup.
       *
       * @returns {HTMLElement}
       */
      createEditorModalElement_fn = function() {
        const modalElement = document.createElement("div");
        modalElement.id = IDS.editorModal;
        modalElement.className = "btf-submodal";
        modalElement.hidden = true;
        const panelElement = document.createElement("section");
        panelElement.className = "btf-submodal-panel";
        panelElement.setAttribute("role", "dialog");
        panelElement.setAttribute("aria-modal", "true");
        panelElement.setAttribute("aria-labelledby", IDS.editorTitle);
        const titleElement = document.createElement("h3");
        titleElement.id = IDS.editorTitle;
        titleElement.className = "btf-submodal-title";
        const subtitleElement = document.createElement("p");
        subtitleElement.id = IDS.editorSubtitle;
        subtitleElement.className = "btf-submodal-subtitle";
        const formElement = document.createElement("form");
        formElement.id = IDS.editorForm;
        formElement.className = "btf-submodal-form";
        formElement.setAttribute("autocomplete", "off");
        const inputElement = document.createElement("input");
        inputElement.id = IDS.editorInput;
        inputElement.className = "btf-submodal-input";
        inputElement.type = "text";
        inputElement.setAttribute("name", `${EDITOR_INPUT_NAME_PREFIX}-0`);
        inputElement.setAttribute("autocomplete", "off");
        inputElement.setAttribute("autocorrect", "off");
        inputElement.setAttribute("autocapitalize", "off");
        inputElement.setAttribute("spellcheck", "false");
        inputElement.setAttribute("inputmode", "text");
        const regexRowElement = document.createElement("div");
        regexRowElement.id = IDS.editorRegexRow;
        regexRowElement.className = "btf-inline-toggle btf-editor-regex-row";
        const regexLabelElement = document.createElement("p");
        regexLabelElement.className = "btf-inline-toggle-label";
        regexLabelElement.textContent = "Interpret this entry as a regular expression";
        const regexSwitch = __privateMethod(this, _ThreadsSettingsMenu_instances, createSwitchControl_fn).call(this, {
          inputId: IDS.editorRegexToggle,
          ariaLabel: "Toggle phrase regex mode"
        });
        regexRowElement.appendChild(regexLabelElement);
        regexRowElement.appendChild(regexSwitch);
        const notInterestedRowElement = document.createElement("div");
        notInterestedRowElement.id = IDS.editorNotInterestedRow;
        notInterestedRowElement.className = "btf-inline-toggle btf-editor-not-interested-row";
        const notInterestedLabelElement = document.createElement("p");
        notInterestedLabelElement.id = IDS.editorNotInterestedLabel;
        notInterestedLabelElement.className = "btf-inline-toggle-label";
        notInterestedLabelElement.textContent = "Auto-send Not Interested on matching posts";
        const notInterestedSwitch = __privateMethod(this, _ThreadsSettingsMenu_instances, createSwitchControl_fn).call(this, {
          inputId: IDS.editorNotInterestedToggle,
          ariaLabel: "Toggle auto not interested for this entry"
        });
        notInterestedRowElement.appendChild(notInterestedLabelElement);
        notInterestedRowElement.appendChild(notInterestedSwitch);
        const statusElement = document.createElement("p");
        statusElement.id = IDS.editorStatus;
        statusElement.className = "btf-submodal-status";
        statusElement.setAttribute("aria-live", "polite");
        const actionsElement = document.createElement("div");
        actionsElement.className = "btf-submodal-actions";
        const deleteButton = document.createElement("button");
        deleteButton.id = IDS.editorDelete;
        deleteButton.type = "button";
        deleteButton.className = "btf-button btf-button-danger";
        deleteButton.setAttribute("data-btf-action", ACTIONS.editorDelete);
        deleteButton.textContent = "Remove";
        const mainActionsElement = document.createElement("div");
        mainActionsElement.className = "btf-submodal-actions-main btf-submodal-actions-main-reactive";
        const cleanActionsElement = document.createElement("div");
        cleanActionsElement.id = IDS.editorCleanActions;
        cleanActionsElement.className = "btf-submodal-action-set";
        cleanActionsElement.setAttribute("aria-hidden", "false");
        const closeButton = document.createElement("button");
        closeButton.type = "button";
        closeButton.className = "btf-button btf-button-quiet";
        closeButton.setAttribute("data-btf-action", ACTIONS.editorCancel);
        closeButton.textContent = "Close";
        cleanActionsElement.appendChild(closeButton);
        const dirtyActionsElement = document.createElement("div");
        dirtyActionsElement.id = IDS.editorDirtyActions;
        dirtyActionsElement.className = "btf-submodal-action-set";
        dirtyActionsElement.setAttribute("aria-hidden", "true");
        const discardButton = document.createElement("button");
        discardButton.type = "button";
        discardButton.className = "btf-button btf-button-quiet";
        discardButton.setAttribute("data-btf-action", ACTIONS.editorCancel);
        discardButton.textContent = "Discard & Close";
        const submitButton = document.createElement("button");
        submitButton.id = IDS.editorSubmit;
        submitButton.type = "submit";
        submitButton.className = "btf-button btf-button-primary";
        submitButton.textContent = "Add";
        dirtyActionsElement.appendChild(discardButton);
        dirtyActionsElement.appendChild(submitButton);
        mainActionsElement.appendChild(cleanActionsElement);
        mainActionsElement.appendChild(dirtyActionsElement);
        actionsElement.appendChild(deleteButton);
        actionsElement.appendChild(mainActionsElement);
        formElement.appendChild(inputElement);
        formElement.appendChild(regexRowElement);
        formElement.appendChild(notInterestedRowElement);
        formElement.appendChild(statusElement);
        formElement.appendChild(actionsElement);
        panelElement.appendChild(titleElement);
        panelElement.appendChild(subtitleElement);
        panelElement.appendChild(formElement);
        modalElement.appendChild(panelElement);
        return modalElement;
      };
      /**
       * Build suggestion overlay markup anchored beside the username input.
       *
       * @returns {HTMLElement}
       */
      createSuggestionOverlayElement_fn = function() {
        const overlayElement = document.createElement("div");
        overlayElement.id = IDS.editorSuggestionOverlay;
        overlayElement.className = "btf-suggestion-overlay";
        overlayElement.setAttribute("role", "menu");
        overlayElement.hidden = true;
        const panelElement = document.createElement("div");
        panelElement.className = "btf-suggestion-overlay-panel";
        const listElement = document.createElement("div");
        listElement.id = IDS.editorSuggestionList;
        listElement.className = "btf-suggestion-list";
        listElement.setAttribute("role", "listbox");
        listElement.hidden = true;
        panelElement.appendChild(listElement);
        overlayElement.appendChild(panelElement);
        return overlayElement;
      };
      /**
       * Build username-removal confirmation modal markup.
       *
       * @returns {HTMLElement}
       */
      createConfirmModalElement_fn = function() {
        const modalElement = document.createElement("div");
        modalElement.id = IDS.confirmModal;
        modalElement.className = "btf-submodal";
        modalElement.hidden = true;
        const panelElement = document.createElement("section");
        panelElement.className = "btf-submodal-panel";
        panelElement.setAttribute("role", "dialog");
        panelElement.setAttribute("aria-modal", "true");
        panelElement.setAttribute("aria-labelledby", "btf-settings-confirm-title");
        const titleElement = document.createElement("h3");
        titleElement.id = "btf-settings-confirm-title";
        titleElement.className = "btf-submodal-title";
        titleElement.textContent = "Remove filtered username?";
        const messageElement = document.createElement("p");
        messageElement.id = IDS.confirmMessage;
        messageElement.className = "btf-submodal-subtitle";
        const actionsElement = document.createElement("div");
        actionsElement.className = "btf-submodal-actions";
        const spacerElement = document.createElement("span");
        const mainActionsElement = document.createElement("div");
        mainActionsElement.className = "btf-submodal-actions-main";
        const cancelButton = document.createElement("button");
        cancelButton.type = "button";
        cancelButton.className = "btf-button btf-button-quiet";
        cancelButton.setAttribute("data-btf-action", ACTIONS.confirmCancel);
        cancelButton.textContent = "Cancel";
        const confirmButton = document.createElement("button");
        confirmButton.type = "button";
        confirmButton.className = "btf-button btf-button-danger";
        confirmButton.setAttribute("data-btf-action", ACTIONS.confirmAccept);
        confirmButton.textContent = "Remove";
        mainActionsElement.appendChild(cancelButton);
        mainActionsElement.appendChild(confirmButton);
        actionsElement.appendChild(spacerElement);
        actionsElement.appendChild(mainActionsElement);
        panelElement.appendChild(titleElement);
        panelElement.appendChild(messageElement);
        panelElement.appendChild(actionsElement);
        modalElement.appendChild(panelElement);
        return modalElement;
      };
      /**
       * Dismiss menu on backdrop or explicit close intent.
       *
       * @param {MouseEvent} event - Click event.
       */
      onRootClick_fn = function(event) {
        if (!this.rootElement) {
          return;
        }
        if (event.target === this.rootElement) {
          if (!__privateMethod(this, _ThreadsSettingsMenu_instances, isEditorOpen_fn).call(this) && !__privateMethod(this, _ThreadsSettingsMenu_instances, isConfirmOpen_fn).call(this) && !__privateMethod(this, _ThreadsSettingsMenu_instances, isAboutOpen_fn).call(this)) {
            this.close();
          }
          return;
        }
        if (event.target === this.aboutModalElement) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeAboutModal_fn).call(this);
          return;
        }
        if (event.target === this.editorModalElement) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeEditorModal_fn).call(this);
          return;
        }
        if (event.target === this.confirmModalElement) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
          return;
        }
        const target = event.target;
        if (!(target instanceof Element)) {
          return;
        }
        const actionElement = target.closest("[data-btf-action]");
        if (!actionElement) {
          return;
        }
        const action = actionElement.getAttribute("data-btf-action");
        if (action === ACTIONS.close) {
          this.close();
          return;
        }
        if (action === ACTIONS.discardClose) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, discardAndClose_fn).call(this);
          return;
        }
        if (action === ACTIONS.saveClose) {
          if (this.formElement && typeof this.formElement.requestSubmit === "function") {
            this.formElement.requestSubmit();
          } else {
            void __privateMethod(this, _ThreadsSettingsMenu_instances, saveAndCloseFromForm_fn).call(this);
          }
          return;
        }
        if (action === ACTIONS.openAbout) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, openAboutModal_fn).call(this);
          return;
        }
        if (action === ACTIONS.closeAbout) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeAboutModal_fn).call(this);
          return;
        }
        if (action === ACTIONS.openPhraseEditor) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, openPhraseEditor_fn).call(this);
          return;
        }
        if (action === ACTIONS.openUserEditor) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, openUserEditor_fn).call(this);
          return;
        }
        if (action === ACTIONS.openVerifiedWhitelistEditor) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, openVerifiedWhitelistEditor_fn).call(this);
          return;
        }
        if (action === ACTIONS.openTrendingTopicEditor) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, openTrendingTopicEditor_fn).call(this);
          return;
        }
        if (action === ACTIONS.phraseChip) {
          const entryIndex = Number.parseInt(actionElement.getAttribute("data-entry-index") || "", 10);
          if (!Number.isNaN(entryIndex)) {
            __privateMethod(this, _ThreadsSettingsMenu_instances, openPhraseEditor_fn).call(this, entryIndex);
          }
          return;
        }
        if (action === ACTIONS.userChip) {
          const entryIndex = Number.parseInt(actionElement.getAttribute("data-entry-index") || "", 10);
          if (!Number.isNaN(entryIndex)) {
            __privateMethod(this, _ThreadsSettingsMenu_instances, openHandleRemovalConfirm_fn).call(this, entryIndex, "username");
          }
          return;
        }
        if (action === ACTIONS.verifiedWhitelistChip) {
          const entryIndex = Number.parseInt(actionElement.getAttribute("data-entry-index") || "", 10);
          if (!Number.isNaN(entryIndex)) {
            __privateMethod(this, _ThreadsSettingsMenu_instances, openHandleRemovalConfirm_fn).call(this, entryIndex, "verified-whitelist");
          }
          return;
        }
        if (action === ACTIONS.trendingTopicChip) {
          const entryIndex = Number.parseInt(actionElement.getAttribute("data-entry-index") || "", 10);
          if (!Number.isNaN(entryIndex)) {
            __privateMethod(this, _ThreadsSettingsMenu_instances, openHandleRemovalConfirm_fn).call(this, entryIndex, "trending-topic");
          }
          return;
        }
        if (action === ACTIONS.editorSuggestionPick) {
          const suggestionIndex = Number.parseInt(
            actionElement.getAttribute("data-suggestion-index") || "",
            10
          );
          if (!Number.isNaN(suggestionIndex)) {
            __privateMethod(this, _ThreadsSettingsMenu_instances, applyUsernameSuggestionFromIndex_fn).call(this, suggestionIndex);
          }
          return;
        }
        if (action === ACTIONS.editorCancel) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeEditorModal_fn).call(this);
          return;
        }
        if (action === ACTIONS.editorDelete) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, removeCurrentPhraseEntry_fn).call(this);
          return;
        }
        if (action === ACTIONS.confirmCancel) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
          return;
        }
        if (action === ACTIONS.confirmAccept) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, confirmHandleRemoval_fn).call(this);
        }
      };
      /**
       * Close menu on Escape.
       *
       * @param {KeyboardEvent} event - Keyboard event.
       */
      onDocumentKeydown_fn = function(event) {
        if (!this.isOpen || event.key !== "Escape") {
          return;
        }
        event.preventDefault();
        if (__privateMethod(this, _ThreadsSettingsMenu_instances, isEditorOpen_fn).call(this)) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeEditorModal_fn).call(this);
          return;
        }
        if (__privateMethod(this, _ThreadsSettingsMenu_instances, isConfirmOpen_fn).call(this)) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
          return;
        }
        if (__privateMethod(this, _ThreadsSettingsMenu_instances, isAboutOpen_fn).call(this)) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeAboutModal_fn).call(this);
          return;
        }
        this.close();
      };
      /**
       * Apply editor modal changes to draft state.
       *
       * @param {Event} event - Submit event.
       */
      onEditorSubmit_fn = function(event) {
        event.preventDefault();
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncEditorDirtyState_fn).call(this);
        if (!this.editorIsDirty) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeEditorModal_fn).call(this);
          return;
        }
        __privateMethod(this, _ThreadsSettingsMenu_instances, applyEditorChanges_fn).call(this);
      };
      /**
       * Refresh username suggestions while the editor input changes.
       */
      onEditorInput_fn = function() {
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncEditorDirtyState_fn).call(this);
        if (!__privateMethod(this, _ThreadsSettingsMenu_instances, isHandleEditorMode_fn).call(this)) {
          return;
        }
        __privateMethod(this, _ThreadsSettingsMenu_instances, scheduleUsernameSuggestions_fn).call(this);
      };
      /**
       * Check whether the current editor mode accepts account-handle suggestions.
       *
       * @returns {boolean}
       */
      isHandleEditorMode_fn = function() {
        if (!this.editorState) {
          return false;
        }
        return ["username", "verified-whitelist"].includes(this.editorState.mode);
      };
      /**
       * Handle suggestion keyboard navigation inside username editor mode.
       *
       * @param {KeyboardEvent} event - Keyboard event.
       */
      onEditorKeydown_fn = function(event) {
        if (!__privateMethod(this, _ThreadsSettingsMenu_instances, isHandleEditorMode_fn).call(this) || !this.editorSuggestions || this.editorSuggestions.length === 0) {
          return;
        }
        if (event.key === "ArrowDown") {
          event.preventDefault();
          this.editorSuggestionFocusIndex = (this.editorSuggestionFocusIndex + 1) % this.editorSuggestions.length;
          __privateMethod(this, _ThreadsSettingsMenu_instances, renderEditorSuggestions_fn).call(this);
          return;
        }
        if (event.key === "ArrowUp") {
          event.preventDefault();
          this.editorSuggestionFocusIndex = (this.editorSuggestionFocusIndex - 1 + this.editorSuggestions.length) % this.editorSuggestions.length;
          __privateMethod(this, _ThreadsSettingsMenu_instances, renderEditorSuggestions_fn).call(this);
          return;
        }
        if (event.key === "Enter" && this.editorSuggestionFocusIndex >= 0) {
          event.preventDefault();
          __privateMethod(this, _ThreadsSettingsMenu_instances, applyUsernameSuggestionFromIndex_fn).call(this, this.editorSuggestionFocusIndex);
          return;
        }
        if (event.key === "Escape") {
          __privateMethod(this, _ThreadsSettingsMenu_instances, clearEditorSuggestions_fn).call(this);
        }
      };
      /**
       * Debounce suggestion fetching so typing remains responsive.
       */
      scheduleUsernameSuggestions_fn = function() {
        if (this.pendingSuggestionTimeoutId !== null) {
          clearTimeout(this.pendingSuggestionTimeoutId);
          this.pendingSuggestionTimeoutId = null;
        }
        const searchQuery = __privateMethod(this, _ThreadsSettingsMenu_instances, resolveUsernameSuggestionQuery_fn).call(this);
        if (searchQuery === null) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, clearEditorSuggestions_fn).call(this);
          return;
        }
        const requestId = ++this.suggestionRequestSequence;
        this.pendingSuggestionTimeoutId = setTimeout(() => {
          this.pendingSuggestionTimeoutId = null;
          void __privateMethod(this, _ThreadsSettingsMenu_instances, loadUsernameSuggestions_fn).call(this, searchQuery, requestId);
        }, USERNAME_SUGGESTION_DEBOUNCE_MS);
      };
      loadUsernameSuggestions_fn = async function(searchQuery, requestId) {
        if (!__privateMethod(this, _ThreadsSettingsMenu_instances, isHandleEditorMode_fn).call(this)) {
          return;
        }
        if (!this.accountSearchClient) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, clearEditorSuggestions_fn).call(this);
          return;
        }
        try {
          const suggestions = await this.accountSearchClient.searchMentionCandidates(searchQuery);
          if (requestId !== this.suggestionRequestSequence) {
            return;
          }
          this.editorSuggestions = Array.isArray(suggestions) ? suggestions.slice(0, 8) : [];
          this.editorSuggestionFocusIndex = this.editorSuggestions.length > 0 ? 0 : -1;
          __privateMethod(this, _ThreadsSettingsMenu_instances, renderEditorSuggestions_fn).call(this);
        } catch (_error) {
          if (requestId !== this.suggestionRequestSequence) {
            return;
          }
          __privateMethod(this, _ThreadsSettingsMenu_instances, clearEditorSuggestions_fn).call(this);
        }
      };
      /**
       * Resolve current username token from the editor input.
       *
       * @returns {string | null}
       */
      resolveUsernameSuggestionQuery_fn = function() {
        if (!this.editorInputElement) {
          return null;
        }
        const inputValue = String(this.editorInputElement.value || "");
        const segments = inputValue.split(",");
        const activeSegment = segments.length > 0 ? String(segments[segments.length - 1]).trim() : "";
        if (!activeSegment.startsWith("@")) {
          return null;
        }
        return normalizeHandle(activeSegment);
      };
      /**
       * Render suggestion list buttons for the active username query.
       */
      renderEditorSuggestions_fn = function() {
        if (!this.editorSuggestionListElement || !this.editorSuggestionOverlayElement) {
          return;
        }
        this.editorSuggestionListElement.textContent = "";
        if (!__privateMethod(this, _ThreadsSettingsMenu_instances, isHandleEditorMode_fn).call(this) || !Array.isArray(this.editorSuggestions) || this.editorSuggestions.length === 0) {
          this.editorSuggestionListElement.hidden = true;
          this.editorSuggestionOverlayElement.hidden = true;
          return;
        }
        for (let index = 0; index < this.editorSuggestions.length; index += 1) {
          const suggestion = this.editorSuggestions[index];
          const suggestionButton = document.createElement("button");
          suggestionButton.type = "button";
          suggestionButton.className = "btf-suggestion-item";
          suggestionButton.setAttribute("data-btf-action", ACTIONS.editorSuggestionPick);
          suggestionButton.setAttribute("data-suggestion-index", String(index));
          suggestionButton.setAttribute(
            "aria-selected",
            String(index === this.editorSuggestionFocusIndex)
          );
          const suggestionMain = document.createElement("span");
          suggestionMain.className = "btf-suggestion-main";
          if (suggestion.profilePictureUrl) {
            const avatarImage = document.createElement("img");
            avatarImage.className = "btf-suggestion-avatar";
            avatarImage.src = suggestion.profilePictureUrl;
            avatarImage.alt = "";
            suggestionMain.appendChild(avatarImage);
          } else {
            const avatarPlaceholder = document.createElement("span");
            avatarPlaceholder.className = "btf-suggestion-avatar btf-suggestion-avatar-placeholder";
            avatarPlaceholder.textContent = "@";
            suggestionMain.appendChild(avatarPlaceholder);
          }
          const suggestionMeta = document.createElement("span");
          suggestionMeta.className = "btf-suggestion-meta";
          const handleElement = document.createElement("span");
          handleElement.className = "btf-suggestion-handle";
          handleElement.textContent = `@${suggestion.handle}`;
          const nameElement = document.createElement("span");
          nameElement.className = "btf-suggestion-name";
          nameElement.textContent = suggestion.displayName || `@${suggestion.handle}`;
          suggestionMeta.appendChild(handleElement);
          suggestionMeta.appendChild(nameElement);
          suggestionMain.appendChild(suggestionMeta);
          suggestionButton.appendChild(suggestionMain);
          if (suggestion.isVerified === true) {
            const badgeElement = document.createElement("span");
            badgeElement.className = "btf-suggestion-badge";
            badgeElement.textContent = "Verified";
            suggestionButton.appendChild(badgeElement);
          }
          this.editorSuggestionListElement.appendChild(suggestionButton);
        }
        this.editorSuggestionListElement.hidden = false;
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSuggestionOverlayPosition_fn).call(this);
      };
      /**
       * Hide and reset suggestion state after selection or mode switch.
       */
      clearEditorSuggestions_fn = function() {
        this.editorSuggestions = [];
        this.editorSuggestionFocusIndex = -1;
        if (this.editorSuggestionListElement) {
          this.editorSuggestionListElement.textContent = "";
          this.editorSuggestionListElement.hidden = true;
        }
        if (this.editorSuggestionOverlayElement) {
          this.editorSuggestionOverlayElement.hidden = true;
        }
      };
      /**
       * Position suggestion overlay near the username input without reflowing modal layout.
       */
      syncSuggestionOverlayPosition_fn = function() {
        if (!this.editorSuggestionOverlayElement || !this.editorSuggestionListElement || !this.editorInputElement || this.editorSuggestionListElement.hidden) {
          return;
        }
        const panelElement = this.editorSuggestionOverlayElement.firstElementChild;
        if (!(panelElement instanceof HTMLElement)) {
          return;
        }
        const viewportPadding = 12;
        const inputRect = this.editorInputElement.getBoundingClientRect();
        const desiredWidth = 280;
        const panelWidth = Math.min(
          window.innerWidth - viewportPadding * 2,
          Math.max(220, Math.min(desiredWidth, inputRect.width || desiredWidth))
        );
        panelElement.style.width = `${Math.round(panelWidth)}px`;
        let left = inputRect.left;
        if (left + panelWidth > window.innerWidth - viewportPadding) {
          left = window.innerWidth - panelWidth - viewportPadding;
        }
        if (left < viewportPadding) {
          left = viewportPadding;
        }
        const estimatedHeight = Math.min(285, this.editorSuggestions.length * 63 || 63);
        let top = Math.max(viewportPadding, inputRect.bottom - 1);
        if (top + estimatedHeight > window.innerHeight - viewportPadding) {
          const aboveTop = inputRect.top - estimatedHeight - 1;
          if (aboveTop >= viewportPadding) {
            top = aboveTop;
          }
        }
        this.editorSuggestionOverlayElement.style.left = `${Math.round(left)}px`;
        this.editorSuggestionOverlayElement.style.top = `${Math.round(top)}px`;
        this.editorSuggestionOverlayElement.hidden = false;
      };
      /**
       * Insert one selected suggestion into the editor input list.
       *
       * @param {number} suggestionIndex - Suggestion index.
       */
      applyUsernameSuggestionFromIndex_fn = function(suggestionIndex) {
        if (!this.editorInputElement || !Array.isArray(this.editorSuggestions) || suggestionIndex < 0 || suggestionIndex >= this.editorSuggestions.length) {
          return;
        }
        const selectedSuggestion = this.editorSuggestions[suggestionIndex];
        if (!selectedSuggestion || !selectedSuggestion.handle) {
          return;
        }
        const inputValue = String(this.editorInputElement.value || "");
        const segments = inputValue.split(",");
        const committedValue = segments.slice(0, -1).join(",");
        const existingHandles = splitCommaSeparatedList(committedValue).map((value) => normalizeHandle(value)).filter(Boolean);
        const nextHandles = dedupeHandles([...existingHandles, selectedSuggestion.handle]);
        const nextDisplayValue = joinCommaSeparatedList(nextHandles.map((handle) => `@${handle}`));
        this.editorInputElement.value = nextDisplayValue ? `${nextDisplayValue}, ` : "";
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncEditorDirtyState_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, clearEditorSuggestions_fn).call(this);
        this.editorInputElement.focus();
      };
      saveAndCloseFromForm_fn = async function(event) {
        if (event && typeof event.preventDefault === "function") {
          event.preventDefault();
        }
        const wasSaved = await __privateMethod(this, _ThreadsSettingsMenu_instances, saveSettingsFromForm_fn).call(this);
        if (wasSaved) {
          this.close();
        }
      };
      saveSettingsFromForm_fn = async function() {
        var _a, _b, _c, _d;
        if (!this.isDirty) {
          return true;
        }
        if (!this.verifiedToggleElement || !this.verifiedBadgeToggleElement || !this.aiLabelToggleElement || !this.suggestedFollowToggleElement || !this.trendingHideAllToggleElement) {
          return false;
        }
        __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "Saving...");
        try {
          const baselineSettings = this.latestSettings || await this.settingsStore.load();
          const enabledNotInterestedEntries = this.draftPhraseEntries.filter(
            (entry) => this.draftPhraseNotInterestedKeys.has(buildPhraseEntryKey(entry.pattern, entry.isRegex))
          ).map((entry) => ({
            pattern: entry.pattern,
            isRegex: entry.isRegex
          }));
          const enabledNotInterestedPatterns = Array.from(
            new Set(enabledNotInterestedEntries.map((entry) => entry.pattern))
          );
          const enabledUsernameNotInterestedHandles = this.draftUserHandles.filter(
            (handle) => this.draftUserNotInterestedHandles.has(normalizeHandle(handle))
          );
          const enabledTrendingNotInterestedTopics = this.draftTrendingTopics.filter(
            (topic) => this.draftTrendingNotInterestedTopics.has(normalizeTopic(topic))
          );
          const nextSettings = {
            ...baselineSettings,
            filters: {
              ...baselineSettings.filters,
              verified: {
                ...baselineSettings.filters.verified,
                enabled: this.verifiedToggleElement.checked,
                hideBadges: this.verifiedBadgeToggleElement.checked,
                whitelistHandles: [...this.draftVerifiedWhitelistHandles]
              },
              aiLabel: {
                ...baselineSettings.filters.aiLabel,
                enabled: this.aiLabelToggleElement.checked
              },
              suggestedFollow: {
                ...baselineSettings.filters.suggestedFollow,
                enabled: this.suggestedFollowToggleElement.checked
              },
              trending: {
                ...baselineSettings.filters.trending,
                hideAll: this.trendingHideAllToggleElement.checked,
                blockedTopics: [...this.draftTrendingTopics],
                notInterested: {
                  ...baselineSettings.filters.trending.notInterested || {},
                  enabledTopics: enabledTrendingNotInterestedTopics
                }
              },
              phrase: {
                ...baselineSettings.filters.phrase,
                enabled: true,
                entries: this.draftPhraseEntries.map((entry) => ({
                  pattern: entry.pattern,
                  isRegex: entry.isRegex
                })),
                notInterested: {
                  ...baselineSettings.filters.phrase.notInterested || {},
                  enabledEntries: enabledNotInterestedEntries,
                  enabledPatterns: enabledNotInterestedPatterns
                }
              },
              username: {
                ...baselineSettings.filters.username,
                enabled: true,
                blockedHandles: [...this.draftUserHandles],
                notInterested: {
                  ...baselineSettings.filters.username.notInterested || {},
                  enabledHandles: enabledUsernameNotInterestedHandles
                }
              }
            }
          };
          const normalizedSettings = await this.settingsStore.save(nextSettings);
          this.latestSettings = normalizedSettings;
          __privateMethod(this, _ThreadsSettingsMenu_instances, populateForm_fn).call(this, normalizedSettings);
          __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "Saved.");
          if (this.onSettingsUpdated) {
            this.onSettingsUpdated(normalizedSettings);
          }
          (_b = (_a = this.logger).info) == null ? void 0 : _b.call(_a, "Saved settings through menu.");
          return true;
        } catch (error) {
          (_d = (_c = this.logger).error) == null ? void 0 : _d.call(_c, "Failed to save settings through menu.", {
            error: error instanceof Error ? error.message : String(error)
          });
          __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "Failed to save. Try again.");
          return false;
        }
      };
      /**
       * Discard unsaved draft changes and close the settings dialog.
       */
      discardAndClose_fn = function() {
        if (this.latestSettings) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, populateForm_fn).call(this, this.latestSettings);
        }
        __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "");
        this.close();
      };
      /**
       * Hydrate controls from normalized settings snapshot.
       *
       * @param {object} settings - Normalized settings object.
       */
      populateForm_fn = function(settings) {
        if (!this.verifiedToggleElement || !this.verifiedBadgeToggleElement || !this.aiLabelToggleElement || !this.suggestedFollowToggleElement || !this.trendingHideAllToggleElement) {
          return;
        }
        this.verifiedToggleElement.checked = Boolean(
          settings && settings.filters && settings.filters.verified && settings.filters.verified.enabled === true
        );
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.verifiedToggleElement);
        this.verifiedBadgeToggleElement.checked = Boolean(
          settings && settings.filters && settings.filters.verified && settings.filters.verified.hideBadges === true
        );
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.verifiedBadgeToggleElement);
        this.aiLabelToggleElement.checked = Boolean(
          settings && settings.filters && settings.filters.aiLabel && settings.filters.aiLabel.enabled === true
        );
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.aiLabelToggleElement);
        this.suggestedFollowToggleElement.checked = Boolean(
          settings && settings.filters && settings.filters.suggestedFollow && settings.filters.suggestedFollow.enabled === true
        );
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.suggestedFollowToggleElement);
        this.trendingHideAllToggleElement.checked = Boolean(
          settings && settings.filters && settings.filters.trending && settings.filters.trending.hideAll === true
        );
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.trendingHideAllToggleElement);
        this.draftPhraseEntries = resolvePhraseEntries(settings);
        this.draftPhraseNotInterestedKeys = resolvePhraseNotInterestedKeys(
          settings,
          this.draftPhraseEntries
        );
        __privateMethod(this, _ThreadsSettingsMenu_instances, prunePhraseNotInterestedKeys_fn).call(this);
        this.draftUserHandles = dedupeHandles(
          settings && settings.filters && settings.filters.username && Array.isArray(settings.filters.username.blockedHandles) ? settings.filters.username.blockedHandles : []
        );
        this.draftUserNotInterestedHandles = resolveUserNotInterestedHandles(
          settings,
          this.draftUserHandles
        );
        __privateMethod(this, _ThreadsSettingsMenu_instances, pruneUserNotInterestedHandles_fn).call(this);
        this.draftVerifiedWhitelistHandles = dedupeHandles(
          settings && settings.filters && settings.filters.verified && Array.isArray(settings.filters.verified.whitelistHandles) ? settings.filters.verified.whitelistHandles : []
        );
        this.draftTrendingTopics = dedupeTrendingTopics(
          settings && settings.filters && settings.filters.trending && Array.isArray(settings.filters.trending.blockedTopics) ? settings.filters.trending.blockedTopics : []
        );
        this.draftTrendingNotInterestedTopics = resolveTrendingNotInterestedTopics(
          settings,
          this.draftTrendingTopics
        );
        __privateMethod(this, _ThreadsSettingsMenu_instances, pruneTrendingNotInterestedTopics_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, renderPhraseEntryChips_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, renderUserHandleChips_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, renderVerifiedWhitelistHandleChips_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, renderTrendingTopicChips_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, closeEditorModal_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, closeAboutModal_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncDirtyState_fn).call(this, { resetBaseline: true });
      };
      /**
       * Render phrase entries as clickable edit chips.
       */
      renderPhraseEntryChips_fn = function() {
        if (!this.phraseListElement) {
          return;
        }
        this.phraseListElement.textContent = "";
        if (this.draftPhraseEntries.length === 0) {
          const emptyElement = document.createElement("span");
          emptyElement.className = "btf-empty-list";
          emptyElement.textContent = "No phrases configured.";
          this.phraseListElement.appendChild(emptyElement);
          return;
        }
        for (let index = 0; index < this.draftPhraseEntries.length; index += 1) {
          const entry = this.draftPhraseEntries[index];
          const chipButton = document.createElement("button");
          chipButton.type = "button";
          chipButton.className = "btf-chip";
          chipButton.setAttribute("data-btf-action", ACTIONS.phraseChip);
          chipButton.setAttribute("data-entry-index", String(index));
          chipButton.textContent = entry.pattern;
          chipButton.title = `Edit phrase: ${entry.pattern}`;
          if (entry.isRegex) {
            const metaElement = document.createElement("span");
            metaElement.className = "btf-chip-meta";
            metaElement.textContent = "Regex";
            chipButton.appendChild(metaElement);
          }
          if (this.draftPhraseNotInterestedKeys.has(buildPhraseEntryKey(entry.pattern, entry.isRegex))) {
            const metaElement = document.createElement("span");
            metaElement.className = "btf-chip-meta";
            metaElement.textContent = "NI";
            chipButton.appendChild(metaElement);
          }
          this.phraseListElement.appendChild(chipButton);
        }
      };
      /**
       * Keep phrase not-interested keys aligned to the current phrase draft list.
       */
      prunePhraseNotInterestedKeys_fn = function() {
        const validKeys = new Set(
          this.draftPhraseEntries.map((entry) => buildPhraseEntryKey(entry.pattern, entry.isRegex))
        );
        this.draftPhraseNotInterestedKeys = new Set(
          Array.from(this.draftPhraseNotInterestedKeys).filter((entryKey) => validKeys.has(entryKey))
        );
      };
      /**
       * Keep username not-interested handles aligned to blocked username drafts.
       */
      pruneUserNotInterestedHandles_fn = function() {
        const blockedHandleSet = new Set(
          this.draftUserHandles.map((handle) => normalizeHandle(handle))
        );
        this.draftUserNotInterestedHandles = new Set(
          Array.from(this.draftUserNotInterestedHandles).filter(
            (handle) => blockedHandleSet.has(normalizeHandle(handle))
          )
        );
      };
      /**
       * Keep trending-topic not-interested values aligned to blocked topic drafts.
       */
      pruneTrendingNotInterestedTopics_fn = function() {
        const blockedTopicSet = new Set(this.draftTrendingTopics.map((topic) => normalizeTopic(topic)));
        this.draftTrendingNotInterestedTopics = new Set(
          Array.from(this.draftTrendingNotInterestedTopics).filter(
            (topic) => blockedTopicSet.has(normalizeTopic(topic))
          )
        );
      };
      /**
       * Render blocked usernames as clickable removal chips.
       */
      renderUserHandleChips_fn = function() {
        if (!this.userListElement) {
          return;
        }
        this.userListElement.textContent = "";
        if (this.draftUserHandles.length === 0) {
          const emptyElement = document.createElement("span");
          emptyElement.className = "btf-empty-list";
          emptyElement.textContent = "No usernames configured.";
          this.userListElement.appendChild(emptyElement);
          return;
        }
        for (let index = 0; index < this.draftUserHandles.length; index += 1) {
          const handle = this.draftUserHandles[index];
          const chipButton = document.createElement("button");
          chipButton.type = "button";
          chipButton.className = "btf-chip";
          chipButton.setAttribute("data-btf-action", ACTIONS.userChip);
          chipButton.setAttribute("data-entry-index", String(index));
          chipButton.textContent = `@${handle}`;
          chipButton.title = `Remove ${handle}`;
          if (this.draftUserNotInterestedHandles.has(handle)) {
            const metaElement = document.createElement("span");
            metaElement.className = "btf-chip-meta";
            metaElement.textContent = "NI";
            chipButton.appendChild(metaElement);
          }
          this.userListElement.appendChild(chipButton);
        }
      };
      /**
       * Render verified-whitelist handles as removable chips.
       */
      renderVerifiedWhitelistHandleChips_fn = function() {
        if (!this.verifiedWhitelistListElement) {
          return;
        }
        this.verifiedWhitelistListElement.textContent = "";
        if (this.draftVerifiedWhitelistHandles.length === 0) {
          const emptyElement = document.createElement("span");
          emptyElement.className = "btf-empty-list";
          emptyElement.textContent = "No verified handles whitelisted.";
          this.verifiedWhitelistListElement.appendChild(emptyElement);
          return;
        }
        for (let index = 0; index < this.draftVerifiedWhitelistHandles.length; index += 1) {
          const handle = this.draftVerifiedWhitelistHandles[index];
          const chipButton = document.createElement("button");
          chipButton.type = "button";
          chipButton.className = "btf-chip";
          chipButton.setAttribute("data-btf-action", ACTIONS.verifiedWhitelistChip);
          chipButton.setAttribute("data-entry-index", String(index));
          chipButton.textContent = `@${handle}`;
          chipButton.title = `Remove @${handle} from verified whitelist`;
          this.verifiedWhitelistListElement.appendChild(chipButton);
        }
      };
      /**
       * Render blocked trending topics as clickable removal chips.
       */
      renderTrendingTopicChips_fn = function() {
        if (!this.trendingTopicListElement) {
          return;
        }
        this.trendingTopicListElement.textContent = "";
        if (this.draftTrendingTopics.length === 0) {
          const emptyElement = document.createElement("span");
          emptyElement.className = "btf-empty-list";
          emptyElement.textContent = "No trending topics configured.";
          this.trendingTopicListElement.appendChild(emptyElement);
          return;
        }
        for (let index = 0; index < this.draftTrendingTopics.length; index += 1) {
          const topic = this.draftTrendingTopics[index];
          const chipButton = document.createElement("button");
          chipButton.type = "button";
          chipButton.className = "btf-chip";
          chipButton.setAttribute("data-btf-action", ACTIONS.trendingTopicChip);
          chipButton.setAttribute("data-entry-index", String(index));
          chipButton.textContent = topic;
          chipButton.title = `Remove trending topic: ${topic}`;
          if (this.draftTrendingNotInterestedTopics.has(topic)) {
            const metaElement = document.createElement("span");
            metaElement.className = "btf-chip-meta";
            metaElement.textContent = "NI";
            chipButton.appendChild(metaElement);
          }
          this.trendingTopicListElement.appendChild(chipButton);
        }
      };
      /**
       * Open phrase entry editor for add or edit mode.
       *
       * @param {number | null} [entryIndex=null] - Existing phrase index to edit.
       */
      openPhraseEditor_fn = function(entryIndex = null) {
        if (!this.editorModalElement || !this.editorTitleElement || !this.editorSubtitleElement || !this.editorInputElement || !this.editorRegexRowElement || !this.editorRegexToggleElement || !this.editorNotInterestedRowElement || !this.editorNotInterestedLabelElement || !this.editorNotInterestedToggleElement || !this.editorSubmitButtonElement || !this.editorDeleteButtonElement) {
          return;
        }
        const existingEntry = Number.isInteger(entryIndex) && entryIndex >= 0 ? this.draftPhraseEntries[entryIndex] : null;
        const isEditMode = Boolean(existingEntry);
        this.editorState = {
          mode: "phrase",
          entryIndex: isEditMode ? entryIndex : null
        };
        this.editorTitleElement.textContent = isEditMode ? "Edit phrase filter" : "Add phrase filter";
        this.editorSubtitleElement.textContent = "Use regex mode only when needed, and optionally auto-send Not Interested for matches.";
        __privateMethod(this, _ThreadsSettingsMenu_instances, refreshEditorInputAutofillSuppression_fn).call(this);
        this.editorInputElement.placeholder = "Type phrase or regex pattern";
        this.editorInputElement.value = isEditMode ? existingEntry.pattern : "";
        this.editorRegexToggleElement.checked = isEditMode ? existingEntry.isRegex : false;
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.editorRegexToggleElement);
        this.editorRegexToggleElement.disabled = false;
        this.editorRegexRowElement.hidden = false;
        this.editorNotInterestedToggleElement.checked = isEditMode ? this.draftPhraseNotInterestedKeys.has(
          buildPhraseEntryKey(existingEntry.pattern, existingEntry.isRegex)
        ) : false;
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.editorNotInterestedToggleElement);
        this.editorNotInterestedToggleElement.disabled = false;
        this.editorNotInterestedRowElement.hidden = false;
        this.editorNotInterestedLabelElement.textContent = "Auto-send Not Interested on matching posts";
        this.editorSubmitButtonElement.textContent = isEditMode ? "Save Phrase" : "Add Phrase";
        this.editorDeleteButtonElement.hidden = !isEditMode;
        __privateMethod(this, _ThreadsSettingsMenu_instances, clearEditorSuggestions_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncEditorDirtyState_fn).call(this, { resetBaseline: true });
        __privateMethod(this, _ThreadsSettingsMenu_instances, setEditorStatus_fn).call(this, "");
        __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
        this.editorModalElement.hidden = false;
        this.editorInputElement.focus();
      };
      /**
       * Open username editor for adding one or more handles.
       */
      openUserEditor_fn = function() {
        if (!this.editorModalElement || !this.editorTitleElement || !this.editorSubtitleElement || !this.editorInputElement || !this.editorRegexRowElement || !this.editorRegexToggleElement || !this.editorNotInterestedRowElement || !this.editorNotInterestedLabelElement || !this.editorNotInterestedToggleElement || !this.editorSubmitButtonElement || !this.editorDeleteButtonElement) {
          return;
        }
        this.editorState = {
          mode: "username",
          entryIndex: null
        };
        this.editorTitleElement.textContent = "Add filtered usernames";
        this.editorSubtitleElement.textContent = "Type @ to search and select usernames, or paste multiple handles separated by commas.";
        __privateMethod(this, _ThreadsSettingsMenu_instances, refreshEditorInputAutofillSuppression_fn).call(this);
        this.editorInputElement.placeholder = "@noisy_account, ads_bot";
        this.editorInputElement.value = "";
        this.editorRegexToggleElement.checked = false;
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.editorRegexToggleElement);
        this.editorRegexToggleElement.disabled = true;
        this.editorRegexRowElement.hidden = true;
        this.editorNotInterestedToggleElement.checked = false;
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.editorNotInterestedToggleElement);
        this.editorNotInterestedToggleElement.disabled = false;
        this.editorNotInterestedRowElement.hidden = false;
        this.editorNotInterestedLabelElement.textContent = "Auto-send Not Interested for added usernames";
        this.editorSubmitButtonElement.textContent = "Add Users";
        this.editorDeleteButtonElement.hidden = true;
        __privateMethod(this, _ThreadsSettingsMenu_instances, clearEditorSuggestions_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncEditorDirtyState_fn).call(this, { resetBaseline: true });
        __privateMethod(this, _ThreadsSettingsMenu_instances, setEditorStatus_fn).call(this, "");
        __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
        this.editorModalElement.hidden = false;
        this.editorInputElement.focus();
      };
      /**
       * Open verified-whitelist editor for adding one or more trusted handles.
       */
      openVerifiedWhitelistEditor_fn = function() {
        if (!this.editorModalElement || !this.editorTitleElement || !this.editorSubtitleElement || !this.editorInputElement || !this.editorRegexRowElement || !this.editorRegexToggleElement || !this.editorNotInterestedRowElement || !this.editorNotInterestedLabelElement || !this.editorNotInterestedToggleElement || !this.editorSubmitButtonElement || !this.editorDeleteButtonElement) {
          return;
        }
        this.editorState = {
          mode: "verified-whitelist",
          entryIndex: null
        };
        this.editorTitleElement.textContent = "Add verified whitelist handles";
        this.editorSubtitleElement.textContent = "Type @ to search and select handles that should bypass verified filtering.";
        __privateMethod(this, _ThreadsSettingsMenu_instances, refreshEditorInputAutofillSuppression_fn).call(this);
        this.editorInputElement.placeholder = "@trusted_account, @favorite_creator";
        this.editorInputElement.value = "";
        this.editorRegexToggleElement.checked = false;
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.editorRegexToggleElement);
        this.editorRegexToggleElement.disabled = true;
        this.editorRegexRowElement.hidden = true;
        this.editorNotInterestedToggleElement.checked = false;
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.editorNotInterestedToggleElement);
        this.editorNotInterestedToggleElement.disabled = true;
        this.editorNotInterestedRowElement.hidden = true;
        this.editorNotInterestedLabelElement.textContent = "Auto-send Not Interested on matching posts";
        this.editorSubmitButtonElement.textContent = "Add Handles";
        this.editorDeleteButtonElement.hidden = true;
        __privateMethod(this, _ThreadsSettingsMenu_instances, clearEditorSuggestions_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncEditorDirtyState_fn).call(this, { resetBaseline: true });
        __privateMethod(this, _ThreadsSettingsMenu_instances, setEditorStatus_fn).call(this, "");
        __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
        this.editorModalElement.hidden = false;
        this.editorInputElement.focus();
      };
      /**
       * Open trending-topic editor for adding one or more topic labels.
       */
      openTrendingTopicEditor_fn = function() {
        if (!this.editorModalElement || !this.editorTitleElement || !this.editorSubtitleElement || !this.editorInputElement || !this.editorRegexRowElement || !this.editorRegexToggleElement || !this.editorNotInterestedRowElement || !this.editorNotInterestedLabelElement || !this.editorNotInterestedToggleElement || !this.editorSubmitButtonElement || !this.editorDeleteButtonElement) {
          return;
        }
        this.editorState = {
          mode: "trending-topic",
          entryIndex: null
        };
        this.editorTitleElement.textContent = "Add trending topics";
        this.editorSubtitleElement.textContent = "Add one or more topic names separated by commas to filter matching trending posts.";
        __privateMethod(this, _ThreadsSettingsMenu_instances, refreshEditorInputAutofillSuppression_fn).call(this);
        this.editorInputElement.placeholder = "daily deals, local events";
        this.editorInputElement.value = "";
        this.editorRegexToggleElement.checked = false;
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.editorRegexToggleElement);
        this.editorRegexToggleElement.disabled = true;
        this.editorRegexRowElement.hidden = true;
        this.editorNotInterestedToggleElement.checked = false;
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncSwitchAriaState_fn).call(this, this.editorNotInterestedToggleElement);
        this.editorNotInterestedToggleElement.disabled = false;
        this.editorNotInterestedRowElement.hidden = false;
        this.editorNotInterestedLabelElement.textContent = "Auto-send Not Interested for added topics";
        this.editorSubmitButtonElement.textContent = "Add Topics";
        this.editorDeleteButtonElement.hidden = true;
        __privateMethod(this, _ThreadsSettingsMenu_instances, clearEditorSuggestions_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncEditorDirtyState_fn).call(this, { resetBaseline: true });
        __privateMethod(this, _ThreadsSettingsMenu_instances, setEditorStatus_fn).call(this, "");
        __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
        this.editorModalElement.hidden = false;
        this.editorInputElement.focus();
      };
      /**
       * Apply pending editor state into phrase, trending-topic, and username drafts.
       */
      applyEditorChanges_fn = function() {
        if (!this.editorState || !this.editorInputElement || !this.editorRegexToggleElement || !this.editorNotInterestedToggleElement) {
          return;
        }
        if (this.editorState.mode === "phrase") {
          const shouldSendNotInterested2 = this.editorNotInterestedToggleElement.checked === true;
          const nextEntry = normalizePhraseEntry(
            this.editorInputElement.value,
            this.editorRegexToggleElement.checked
          );
          if (!nextEntry) {
            __privateMethod(this, _ThreadsSettingsMenu_instances, setEditorStatus_fn).call(this, "Enter a phrase or regex before saving.");
            return;
          }
          const nextEntries = [...this.draftPhraseEntries];
          let previousEntryKey = "";
          if (Number.isInteger(this.editorState.entryIndex)) {
            const previousEntry = nextEntries[this.editorState.entryIndex];
            previousEntryKey = previousEntry ? buildPhraseEntryKey(previousEntry.pattern, previousEntry.isRegex) : "";
            nextEntries[this.editorState.entryIndex] = nextEntry;
          } else {
            nextEntries.push(nextEntry);
          }
          this.draftPhraseEntries = dedupePhraseEntries(nextEntries);
          const nextEntryKey = buildPhraseEntryKey(nextEntry.pattern, nextEntry.isRegex);
          if (previousEntryKey) {
            this.draftPhraseNotInterestedKeys.delete(previousEntryKey);
          }
          if (shouldSendNotInterested2) {
            this.draftPhraseNotInterestedKeys.add(nextEntryKey);
          } else if (previousEntryKey) {
            this.draftPhraseNotInterestedKeys.delete(nextEntryKey);
          }
          __privateMethod(this, _ThreadsSettingsMenu_instances, prunePhraseNotInterestedKeys_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, renderPhraseEntryChips_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, syncDirtyState_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeEditorModal_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "Phrase filters updated. Save & Close to apply.");
          return;
        }
        if (this.editorState.mode === "trending-topic") {
          const shouldSendNotInterested2 = this.editorNotInterestedToggleElement.checked === true;
          const pendingTopics = dedupeTrendingTopics(
            splitCommaSeparatedList(this.editorInputElement.value)
          );
          if (pendingTopics.length === 0) {
            __privateMethod(this, _ThreadsSettingsMenu_instances, setEditorStatus_fn).call(this, "Enter at least one trending topic before saving.");
            return;
          }
          this.draftTrendingTopics = dedupeTrendingTopics([
            ...this.draftTrendingTopics,
            ...pendingTopics
          ]);
          for (const topic of pendingTopics) {
            if (shouldSendNotInterested2) {
              this.draftTrendingNotInterestedTopics.add(topic);
            } else {
              this.draftTrendingNotInterestedTopics.delete(topic);
            }
          }
          __privateMethod(this, _ThreadsSettingsMenu_instances, pruneTrendingNotInterestedTopics_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, renderTrendingTopicChips_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, syncDirtyState_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeEditorModal_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "Trending topic filters updated. Save & Close to apply.");
          return;
        }
        const pendingHandles = splitCommaSeparatedList(this.editorInputElement.value).map((handle) => normalizeHandle(handle)).filter(Boolean);
        const shouldSendNotInterested = this.editorNotInterestedToggleElement.checked === true;
        if (pendingHandles.length === 0) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, setEditorStatus_fn).call(this, this.editorState.mode === "verified-whitelist" ? "Enter at least one handle before saving." : "Enter at least one username before saving.");
          return;
        }
        if (this.editorState.mode === "username") {
          this.draftUserHandles = dedupeHandles([...this.draftUserHandles, ...pendingHandles]);
          for (const handle of pendingHandles) {
            if (shouldSendNotInterested) {
              this.draftUserNotInterestedHandles.add(handle);
            } else {
              this.draftUserNotInterestedHandles.delete(handle);
            }
          }
          __privateMethod(this, _ThreadsSettingsMenu_instances, pruneUserNotInterestedHandles_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, renderUserHandleChips_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, syncDirtyState_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeEditorModal_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "Username filters updated. Save & Close to apply.");
          return;
        }
        if (this.editorState.mode === "verified-whitelist") {
          this.draftVerifiedWhitelistHandles = dedupeHandles([
            ...this.draftVerifiedWhitelistHandles,
            ...pendingHandles
          ]);
          __privateMethod(this, _ThreadsSettingsMenu_instances, renderVerifiedWhitelistHandleChips_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, syncDirtyState_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeEditorModal_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "Verified whitelist updated. Save & Close to apply.");
          return;
        }
      };
      /**
       * Remove currently edited phrase entry from draft state.
       */
      removeCurrentPhraseEntry_fn = function() {
        if (!this.editorState || this.editorState.mode !== "phrase") {
          return;
        }
        if (!Number.isInteger(this.editorState.entryIndex)) {
          return;
        }
        const removedEntry = this.draftPhraseEntries[this.editorState.entryIndex];
        if (removedEntry) {
          this.draftPhraseNotInterestedKeys.delete(
            buildPhraseEntryKey(removedEntry.pattern, removedEntry.isRegex)
          );
        }
        this.draftPhraseEntries = this.draftPhraseEntries.filter(
          (_entry, index) => index !== this.editorState.entryIndex
        );
        __privateMethod(this, _ThreadsSettingsMenu_instances, prunePhraseNotInterestedKeys_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, renderPhraseEntryChips_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncDirtyState_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, closeEditorModal_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "Phrase filter removed. Save & Close to apply.");
      };
      /**
       * Open handle-removal confirmation modal for one managed list.
       *
       * @param {number} entryIndex - Handle entry index.
       * @param {'username' | 'verified-whitelist' | 'trending-topic'} listName - Handle list identifier.
       */
      openHandleRemovalConfirm_fn = function(entryIndex, listName) {
        if (!this.confirmModalElement || !this.confirmMessageElement) {
          return;
        }
        const sourceList = listName === "verified-whitelist" ? this.draftVerifiedWhitelistHandles : listName === "trending-topic" ? this.draftTrendingTopics : this.draftUserHandles;
        const selectedHandle = sourceList[entryIndex];
        if (!selectedHandle) {
          return;
        }
        this.pendingHandleRemoval = {
          list: listName,
          handle: selectedHandle
        };
        this.confirmMessageElement.textContent = listName === "verified-whitelist" ? `Remove @${selectedHandle} from verified whitelist?` : listName === "trending-topic" ? `Remove "${selectedHandle}" from trending topic filters?` : `Remove @${selectedHandle} from filtered usernames?`;
        this.confirmModalElement.hidden = false;
      };
      /**
       * Remove the selected handle from its pending list context.
       */
      confirmHandleRemoval_fn = function() {
        const removalKey = this.pendingHandleRemoval.list === "trending-topic" ? normalizeTopic(this.pendingHandleRemoval.handle) : normalizeHandle(this.pendingHandleRemoval.handle);
        if (!removalKey) {
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
          return;
        }
        if (this.pendingHandleRemoval.list === "verified-whitelist") {
          this.draftVerifiedWhitelistHandles = this.draftVerifiedWhitelistHandles.filter(
            (handle) => normalizeHandle(handle) !== removalKey
          );
          __privateMethod(this, _ThreadsSettingsMenu_instances, renderVerifiedWhitelistHandleChips_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, syncDirtyState_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "Verified whitelist handle removed. Save & Close to apply.");
          return;
        }
        if (this.pendingHandleRemoval.list === "trending-topic") {
          this.draftTrendingTopics = this.draftTrendingTopics.filter(
            (topic) => normalizeTopic(topic) !== removalKey
          );
          this.draftTrendingNotInterestedTopics.delete(removalKey);
          __privateMethod(this, _ThreadsSettingsMenu_instances, pruneTrendingNotInterestedTopics_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, renderTrendingTopicChips_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, syncDirtyState_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
          __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "Trending topic filter removed. Save & Close to apply.");
          return;
        }
        this.draftUserHandles = this.draftUserHandles.filter(
          (handle) => normalizeHandle(handle) !== removalKey
        );
        this.draftUserNotInterestedHandles.delete(removalKey);
        __privateMethod(this, _ThreadsSettingsMenu_instances, pruneUserNotInterestedHandles_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, renderUserHandleChips_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, syncDirtyState_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, setStatusMessage_fn).call(this, "Username filter removed. Save & Close to apply.");
      };
      /**
       * Open About modal from header trigger.
       */
      openAboutModal_fn = function() {
        if (!this.aboutModalElement) {
          return;
        }
        __privateMethod(this, _ThreadsSettingsMenu_instances, closeEditorModal_fn).call(this);
        __privateMethod(this, _ThreadsSettingsMenu_instances, closeConfirmModal_fn).call(this);
        this.aboutModalElement.hidden = false;
      };
      /**
       * Close editor modal and reset transient editor state.
       */
      closeEditorModal_fn = function() {
        if (!this.editorModalElement) {
          return;
        }
        this.editorModalElement.hidden = true;
        if (this.pendingSuggestionTimeoutId !== null) {
          clearTimeout(this.pendingSuggestionTimeoutId);
          this.pendingSuggestionTimeoutId = null;
        }
        __privateMethod(this, _ThreadsSettingsMenu_instances, clearEditorSuggestions_fn).call(this);
        this.editorState = null;
        this.editorBaselineSnapshot = "";
        this.editorIsDirty = false;
        __privateMethod(this, _ThreadsSettingsMenu_instances, setEditorActionSetState_fn).call(this, false);
        __privateMethod(this, _ThreadsSettingsMenu_instances, setEditorStatus_fn).call(this, "");
      };
      /**
       * Rotate input identity and attributes to discourage browser history suggestions.
       */
      refreshEditorInputAutofillSuppression_fn = function() {
        if (!this.editorFormElement || !this.editorInputElement) {
          return;
        }
        this.editorInputNameSequence += 1;
        this.editorFormElement.setAttribute("autocomplete", "off");
        this.editorInputElement.setAttribute(
          "name",
          `${EDITOR_INPUT_NAME_PREFIX}-${this.editorInputNameSequence}`
        );
        this.editorInputElement.setAttribute("autocomplete", "off");
        this.editorInputElement.setAttribute("autocorrect", "off");
        this.editorInputElement.setAttribute("autocapitalize", "off");
        this.editorInputElement.setAttribute("spellcheck", "false");
        this.editorInputElement.setAttribute("inputmode", "text");
      };
      /**
       * Close confirmation modal and clear pending removal state.
       */
      closeConfirmModal_fn = function() {
        if (this.confirmModalElement) {
          this.confirmModalElement.hidden = true;
        }
        this.pendingHandleRemoval = {
          list: "",
          handle: ""
        };
      };
      /**
       * Close About modal.
       */
      closeAboutModal_fn = function() {
        if (this.aboutModalElement) {
          this.aboutModalElement.hidden = true;
        }
      };
      /**
       * Determine whether the editor modal is currently open.
       *
       * @returns {boolean}
       */
      isEditorOpen_fn = function() {
        return Boolean(this.editorModalElement && this.editorModalElement.hidden === false);
      };
      /**
       * Determine whether the confirmation modal is currently open.
       *
       * @returns {boolean}
       */
      isConfirmOpen_fn = function() {
        return Boolean(this.confirmModalElement && this.confirmModalElement.hidden === false);
      };
      /**
       * Determine whether the About modal is currently open.
       *
       * @returns {boolean}
       */
      isAboutOpen_fn = function() {
        return Boolean(this.aboutModalElement && this.aboutModalElement.hidden === false);
      };
      /**
       * Synchronize editor action buttons from current editor draft state.
       *
       * @param {{ resetBaseline?: boolean }} [options] - Dirty-state options.
       */
      syncEditorDirtyState_fn = function(options = {}) {
        if (!this.editorState) {
          this.editorBaselineSnapshot = "";
          this.editorIsDirty = false;
          __privateMethod(this, _ThreadsSettingsMenu_instances, setEditorActionSetState_fn).call(this, false);
          return;
        }
        const currentSnapshot = __privateMethod(this, _ThreadsSettingsMenu_instances, serializeCurrentEditorSnapshot_fn).call(this);
        if (options.resetBaseline === true) {
          this.editorBaselineSnapshot = currentSnapshot;
        }
        this.editorIsDirty = currentSnapshot !== this.editorBaselineSnapshot;
        __privateMethod(this, _ThreadsSettingsMenu_instances, setEditorActionSetState_fn).call(this, this.editorIsDirty);
      };
      /**
       * Serialize one stable snapshot of the open editor draft state.
       *
       * @returns {string}
       */
      serializeCurrentEditorSnapshot_fn = function() {
        if (!this.editorState || !this.editorInputElement) {
          return "";
        }
        if (this.editorState.mode === "phrase") {
          return JSON.stringify({
            mode: this.editorState.mode,
            entryIndex: Number.isInteger(this.editorState.entryIndex) ? this.editorState.entryIndex : -1,
            pattern: String(this.editorInputElement.value || "").trim(),
            isRegex: Boolean(this.editorRegexToggleElement && this.editorRegexToggleElement.checked),
            shouldSendNotInterested: Boolean(
              this.editorNotInterestedToggleElement && this.editorNotInterestedToggleElement.checked
            )
          });
        }
        if (this.editorState.mode === "username") {
          return JSON.stringify({
            mode: this.editorState.mode,
            handles: splitCommaSeparatedList(this.editorInputElement.value).map((handle) => normalizeHandle(handle)).filter(Boolean),
            shouldSendNotInterested: Boolean(
              this.editorNotInterestedToggleElement && this.editorNotInterestedToggleElement.checked
            )
          });
        }
        if (this.editorState.mode === "trending-topic") {
          return JSON.stringify({
            mode: this.editorState.mode,
            topics: splitCommaSeparatedList(this.editorInputElement.value).map((topic) => normalizeTopic(topic)).filter(Boolean),
            shouldSendNotInterested: Boolean(
              this.editorNotInterestedToggleElement && this.editorNotInterestedToggleElement.checked
            )
          });
        }
        return JSON.stringify({
          mode: this.editorState.mode,
          handles: splitCommaSeparatedList(this.editorInputElement.value).map((handle) => normalizeHandle(handle)).filter(Boolean)
        });
      };
      /**
       * Toggle clean/dirty editor action sets with animated transitions.
       *
       * @param {boolean} isDirty - Whether the open editor state differs from baseline.
       */
      setEditorActionSetState_fn = function(isDirty) {
        if (!this.editorCleanActionsElement || !this.editorDirtyActionsElement) {
          return;
        }
        this.editorCleanActionsElement.setAttribute("aria-hidden", String(isDirty));
        this.editorDirtyActionsElement.setAttribute("aria-hidden", String(!isDirty));
      };
      /**
       * Synchronize clean/dirty footer actions from current draft state.
       *
       * @param {{ resetBaseline?: boolean }} [options] - Dirty-state options.
       */
      syncDirtyState_fn = function(options = {}) {
        const currentSnapshot = __privateMethod(this, _ThreadsSettingsMenu_instances, serializeCurrentDraftSnapshot_fn).call(this);
        if (options.resetBaseline === true) {
          this.baselineSnapshot = currentSnapshot;
        }
        const isDirty = currentSnapshot !== this.baselineSnapshot;
        this.isDirty = isDirty;
        if (!this.cleanActionsElement || !this.dirtyActionsElement) {
          return;
        }
        this.cleanActionsElement.setAttribute("aria-hidden", String(isDirty));
        this.dirtyActionsElement.setAttribute("aria-hidden", String(!isDirty));
      };
      /**
       * Serialize current editable state into a stable dirty-check snapshot.
       *
       * @returns {string}
       */
      serializeCurrentDraftSnapshot_fn = function() {
        return JSON.stringify({
          verifiedEnabled: Boolean(this.verifiedToggleElement && this.verifiedToggleElement.checked),
          verifiedBadgeHidden: Boolean(
            this.verifiedBadgeToggleElement && this.verifiedBadgeToggleElement.checked
          ),
          aiLabelEnabled: Boolean(this.aiLabelToggleElement && this.aiLabelToggleElement.checked),
          suggestedFollowEnabled: Boolean(
            this.suggestedFollowToggleElement && this.suggestedFollowToggleElement.checked
          ),
          trendingHideAllEnabled: Boolean(
            this.trendingHideAllToggleElement && this.trendingHideAllToggleElement.checked
          ),
          trendingTopics: [...this.draftTrendingTopics],
          trendingNotInterestedTopics: Array.from(this.draftTrendingNotInterestedTopics).sort(),
          phraseEntries: this.draftPhraseEntries.map((entry) => ({
            pattern: String(entry.pattern || ""),
            isRegex: entry.isRegex === true
          })),
          phraseNotInterestedKeys: Array.from(this.draftPhraseNotInterestedKeys).sort(),
          blockedHandles: [...this.draftUserHandles],
          userNotInterestedHandles: Array.from(this.draftUserNotInterestedHandles).sort(),
          verifiedWhitelistHandles: [...this.draftVerifiedWhitelistHandles]
        });
      };
      /**
       * Show editor feedback without mutating main status text.
       *
       * @param {string} value - User-facing editor status message.
       */
      setEditorStatus_fn = function(value) {
        if (!this.editorStatusElement) {
          return;
        }
        this.editorStatusElement.textContent = value;
      };
      /**
       * Keep switch aria state aligned with checkbox checked state.
       *
       * @param {HTMLInputElement | null} inputElement - Switch checkbox input.
       */
      syncSwitchAriaState_fn = function(inputElement) {
        if (!inputElement) {
          return;
        }
        inputElement.setAttribute("aria-checked", String(inputElement.checked));
      };
      /**
       * Show status feedback without interrupting host interactions.
       *
       * @param {string} value - User-facing status message.
       */
      setStatusMessage_fn = function(value) {
        if (!this.statusElement) {
          return;
        }
        this.statusElement.textContent = value;
      };
      module.exports = {
        ThreadsSettingsMenu,
        joinCommaSeparatedList,
        splitCommaSeparatedList
      };
    }
  });

  // src/core/blocked-post-catalog.js
  var require_blocked_post_catalog = __commonJS({
    "src/core/blocked-post-catalog.js"(exports, module) {
      var DEFAULT_BLOCK_TTL_MS = 6 * 60 * 60 * 1e3;
      var DEFAULT_MAX_ENTRIES = 1e4;
      function normalizePostCodeList(value) {
        if (!Array.isArray(value)) {
          return [];
        }
        const uniqueCodes = /* @__PURE__ */ new Set();
        for (const candidateCode of value) {
          const normalizedCode = String(candidateCode || "").trim();
          if (normalizedCode) {
            uniqueCodes.add(normalizedCode);
          }
        }
        return Array.from(uniqueCodes);
      }
      var _BlockedPostCatalog_instances, pruneExpiredEntries_fn, pruneOverflowEntries_fn;
      var BlockedPostCatalog = class {
        /**
         * Initialize bounded catalog state and pruning controls.
         *
         * @param {{
         *   blockTtlMs?: number,
         *   maxEntries?: number,
         *   nowProvider?: () => number
         * }} [options] - Catalog options.
         */
        constructor(options = {}) {
          __privateAdd(this, _BlockedPostCatalog_instances);
          const {
            blockTtlMs = DEFAULT_BLOCK_TTL_MS,
            maxEntries = DEFAULT_MAX_ENTRIES,
            nowProvider = () => Date.now()
          } = options;
          this.blockTtlMs = Math.max(6e4, Number(blockTtlMs) || DEFAULT_BLOCK_TTL_MS);
          this.maxEntries = Math.max(100, Number(maxEntries) || DEFAULT_MAX_ENTRIES);
          this.nowProvider = nowProvider;
          this.blockedCodes = /* @__PURE__ */ new Map();
        }
        /**
         * Reset catalog state when settings semantics change.
         */
        reset() {
          this.blockedCodes.clear();
        }
        /**
         * Mark post codes as blocked and refresh their recency timestamp.
         *
         * @param {string[]} postCodes - Normalized post codes.
         */
        markBlockedPostCodes(postCodes) {
          const normalizedCodes = normalizePostCodeList(postCodes);
          if (normalizedCodes.length === 0) {
            return;
          }
          const nowMs = this.nowProvider();
          __privateMethod(this, _BlockedPostCatalog_instances, pruneExpiredEntries_fn).call(this, nowMs);
          for (const postCode of normalizedCodes) {
            this.blockedCodes.set(postCode, nowMs);
          }
          __privateMethod(this, _BlockedPostCatalog_instances, pruneOverflowEntries_fn).call(this);
        }
        /**
         * Determine whether any post code is blocked within TTL.
         *
         * @param {string[]} postCodes - Normalized post codes.
         * @returns {boolean}
         */
        hasBlockedPostCode(postCodes) {
          const normalizedCodes = normalizePostCodeList(postCodes);
          if (normalizedCodes.length === 0) {
            return false;
          }
          const nowMs = this.nowProvider();
          __privateMethod(this, _BlockedPostCatalog_instances, pruneExpiredEntries_fn).call(this, nowMs);
          for (const postCode of normalizedCodes) {
            if (this.blockedCodes.has(postCode)) {
              return true;
            }
          }
          return false;
        }
      };
      _BlockedPostCatalog_instances = new WeakSet();
      /**
       * Remove expired entries outside the configured TTL.
       *
       * @param {number} nowMs - Current timestamp in milliseconds.
       */
      pruneExpiredEntries_fn = function(nowMs) {
        const staleThresholdMs = nowMs - this.blockTtlMs;
        for (const [postCode, blockedAtMs] of this.blockedCodes.entries()) {
          if (blockedAtMs <= staleThresholdMs) {
            this.blockedCodes.delete(postCode);
          }
        }
      };
      /**
       * Evict oldest entries when catalog exceeds configured capacity.
       */
      pruneOverflowEntries_fn = function() {
        if (this.blockedCodes.size <= this.maxEntries) {
          return;
        }
        const orderedEntries = Array.from(this.blockedCodes.entries()).sort(
          (leftEntry, rightEntry) => leftEntry[1] - rightEntry[1]
        );
        const removableCount = this.blockedCodes.size - this.maxEntries;
        for (let index = 0; index < removableCount; index += 1) {
          const [postCode] = orderedEntries[index];
          this.blockedCodes.delete(postCode);
        }
      };
      module.exports = {
        BlockedPostCatalog,
        normalizePostCodeList
      };
    }
  });

  // src/core/filter-runtime.js
  var require_filter_runtime = __commonJS({
    "src/core/filter-runtime.js"(exports, module) {
      var { ActivityWatcher } = require_activity_watcher();
      var { whenBodyReady } = require_body_ready();
      var { MutationManager } = require_mutation_manager();
      var { StyleManager } = require_style_manager();
      var { ThreadsFeedAdapter } = require_threads_feed_adapter();
      var { FilterRuleEngine } = require_rule_engine();
      var { Logger } = require_logger();
      var { NotInterestedDispatcher } = require_not_interested_dispatcher();
      var { ThreadsAccountSearchClient } = require_threads_account_search_client();
      var { ThreadsNetworkObserver } = require_threads_network_observer();
      var { ThreadsPostMetadataCatalog } = require_threads_post_metadata_catalog();
      var { SettingsStore } = require_settings_store();
      var { MenuCommandRegistrar } = require_menu_command();
      var { ThreadsSidebarMenuTrigger } = require_sidebar_menu_trigger();
      var { ThreadsSettingsMenu } = require_settings_menu();
      var { BlockedPostCatalog, normalizePostCodeList } = require_blocked_post_catalog();
      var { ContentModel } = require_content_model();
      var EMPTY_MODEL_RECOVERY_DELAY_MS = 2500;
      var TIMELINE_BACKFILL_COOLDOWN_MS = 1500;
      var FULL_FILTER_RECOVERY_RETRY_DELAY_MS = 900;
      var FULL_FILTER_RECOVERY_MAX_ATTEMPTS = 4;
      var TIMELINE_SCROLL_REGION_SELECTOR = '[aria-label="Column body"]';
      var REPLY_CASCADE_REASON = "thread:cascade";
      var PROFILE_ROUTE_PATTERN = /^\/@[^/?#]+(?:\/.*)?$/i;
      var _FilterRuntime_instances, registerMenuCommands_fn, toggleSettingsMenu_fn, adoptSettings_fn, shouldHideVerifiedBadges_fn, resolveRuleSettingsForCurrentRoute_fn, isProfileRoute_fn, evaluateContentModels_fn, buildMetadataAwareContentModel_fn, resolveModelPostCodes_fn, containsBlockedPostCode_fn, buildCascadeDecision_fn, attemptTimelineBackfill_fn, attemptEmptyCycleBackfillRecovery_fn, resolveTimelineScrollRegion_fn, emitTimelineScrollSignals_fn, scheduleFullFilterRecoveryRetry_fn, clearFullFilterRecoveryTimer_fn, resetFullFilterRecovery_fn, attemptEmptyModelRecovery_fn;
      var FilterRuntime = class {
        /**
         * Initialize runtime collaborators and internal state.
         *
         * @param {{
         *   settingsStore?: SettingsStore,
         *   feedAdapter?: ThreadsFeedAdapter,
         *   ruleEngine?: FilterRuleEngine,
         *   blockedPostCatalog?: BlockedPostCatalog,
         *   mutationManager?: MutationManager,
         *   activityWatcher?: ActivityWatcher,
         *   styleManager?: StyleManager,
         *   menuCommandRegistrar?: MenuCommandRegistrar,
         *   settingsMenu?: ThreadsSettingsMenu,
         *   settingsMenuTrigger?: ThreadsSidebarMenuTrigger,
         *   postMetadataCatalog?: ThreadsPostMetadataCatalog,
         *   networkObserver?: ThreadsNetworkObserver,
         *   accountSearchClient?: ThreadsAccountSearchClient,
         *   notInterestedDispatcher?: NotInterestedDispatcher,
         *   nowProvider?: () => number,
         *   scheduleFn?: (callback: Function, delayMs: number) => unknown,
         *   clearScheduleFn?: (timerId: unknown) => void,
         *   logger?: Logger
         * }} [options] - Runtime options.
         */
        constructor(options = {}) {
          __privateAdd(this, _FilterRuntime_instances);
          const { logger = new Logger({ namespace: "runtime", level: "warn" }) } = options;
          this.logger = logger;
          this.nowProvider = typeof options.nowProvider === "function" ? options.nowProvider : Date.now;
          this.scheduleFn = typeof options.scheduleFn === "function" ? options.scheduleFn : (callback, delayMs) => setTimeout(callback, delayMs);
          this.clearScheduleFn = typeof options.clearScheduleFn === "function" ? options.clearScheduleFn : (timerId) => clearTimeout(timerId);
          this.settingsStore = options.settingsStore || new SettingsStore();
          this.feedAdapter = options.feedAdapter || new ThreadsFeedAdapter();
          this.ruleEngine = options.ruleEngine || new FilterRuleEngine({ logger: this.logger });
          this.blockedPostCatalog = options.blockedPostCatalog || new BlockedPostCatalog({
            nowProvider: this.nowProvider
          });
          this.styleManager = options.styleManager || new StyleManager();
          this.menuCommandRegistrar = options.menuCommandRegistrar || new MenuCommandRegistrar();
          this.postMetadataCatalog = options.postMetadataCatalog || new ThreadsPostMetadataCatalog();
          this.networkObserver = options.networkObserver || new ThreadsNetworkObserver({
            postMetadataCatalog: this.postMetadataCatalog,
            logger: this.logger
          });
          this.accountSearchClient = options.accountSearchClient || new ThreadsAccountSearchClient({
            networkObserver: this.networkObserver,
            logger: this.logger
          });
          this.settingsMenu = options.settingsMenu || new ThreadsSettingsMenu({
            settingsStore: this.settingsStore,
            accountSearchClient: this.accountSearchClient,
            logger: this.logger,
            onSettingsUpdated: (nextSettings) => {
              __privateMethod(this, _FilterRuntime_instances, adoptSettings_fn).call(this, nextSettings);
              void this.runCycle();
            },
            onVisibilityChanged: (isOpen) => {
              var _a;
              (_a = this.settingsMenuTrigger) == null ? void 0 : _a.setMenuOpen(isOpen);
            }
          });
          this.settingsMenuTrigger = options.settingsMenuTrigger || new ThreadsSidebarMenuTrigger({
            onActivate: async () => {
              await __privateMethod(this, _FilterRuntime_instances, toggleSettingsMenu_fn).call(this);
            },
            isMenuOpenProvider: () => Boolean(this.settingsMenu && this.settingsMenu.isOpen),
            logger: this.logger
          });
          this.notInterestedDispatcher = options.notInterestedDispatcher || new NotInterestedDispatcher({
            postMetadataCatalog: this.postMetadataCatalog,
            networkObserver: this.networkObserver,
            logger: this.logger
          });
          this.mutationManager = options.mutationManager || new MutationManager({ onMutations: () => this.runCycle() });
          this.activityWatcher = options.activityWatcher || new ActivityWatcher({ onActivity: () => this.runCycle() });
          this.settings = null;
          this.settingsReference = null;
          this.isRunning = false;
          this.hasPendingRun = false;
          this.emptyModelRecoveryStartedAtMs = null;
          this.didRunEmptyModelRecovery = false;
          this.lastTimelineBackfillAtMs = null;
          this.fullFilterRecoveryAttemptCount = 0;
          this.fullFilterRecoveryTimerId = null;
          this.wasVerifiedBadgeHidingEnabled = false;
        }
        /**
         * Start runtime and attach observers only after initial settings load.
         *
         * @returns {Promise<void>}
         */
        async start() {
          __privateMethod(this, _FilterRuntime_instances, adoptSettings_fn).call(this, await this.settingsStore.load());
          await this.notInterestedDispatcher.start();
          await this.networkObserver.start();
          __privateMethod(this, _FilterRuntime_instances, registerMenuCommands_fn).call(this);
          whenBodyReady(() => {
            this.styleManager.ensureFilterStyles();
            void this.settingsMenuTrigger.start();
            this.mutationManager.start(document.body, {
              childList: true,
              subtree: true,
              characterData: true
            });
            this.activityWatcher.start();
            void this.runCycle();
          });
          this.logger.info("Started filter runtime.");
        }
        /**
         * Stop runtime observation and activity listeners.
         */
        stop() {
          __privateMethod(this, _FilterRuntime_instances, clearFullFilterRecoveryTimer_fn).call(this);
          this.fullFilterRecoveryAttemptCount = 0;
          if (typeof document !== "undefined") {
            this.styleManager.clearAllVerifiedBadgeMarkers(document);
            this.styleManager.clearAllTimelineDividerMarkers(document);
          }
          this.wasVerifiedBadgeHidingEnabled = false;
          this.settingsMenuTrigger.stop();
          this.mutationManager.stop();
          this.activityWatcher.stop();
          this.networkObserver.stop();
          void this.notInterestedDispatcher.stop();
          this.settingsMenu.destroy();
        }
        /**
         * Process current feed snapshot while preserving single-run semantics.
         *
         * @returns {Promise<void>}
         */
        async runCycle() {
          if (this.isRunning) {
            this.hasPendingRun = true;
            return;
          }
          this.isRunning = true;
          try {
            const settings = this.settings || await this.settingsStore.load();
            __privateMethod(this, _FilterRuntime_instances, adoptSettings_fn).call(this, settings);
            const contentModels = this.feedAdapter.collectContentModels(document);
            const shouldHideVerifiedBadges = __privateMethod(this, _FilterRuntime_instances, shouldHideVerifiedBadges_fn).call(this, settings);
            const effectiveRuleSettings = __privateMethod(this, _FilterRuntime_instances, resolveRuleSettingsForCurrentRoute_fn).call(this, settings);
            let hiddenCount = 0;
            let cascadeHiddenCount = 0;
            if (contentModels.length === 0) {
              __privateMethod(this, _FilterRuntime_instances, attemptEmptyModelRecovery_fn).call(this);
              __privateMethod(this, _FilterRuntime_instances, attemptEmptyCycleBackfillRecovery_fn).call(this);
            } else {
              this.emptyModelRecoveryStartedAtMs = null;
              this.didRunEmptyModelRecovery = false;
            }
            const evaluatedModels = __privateMethod(this, _FilterRuntime_instances, evaluateContentModels_fn).call(this, contentModels, effectiveRuleSettings);
            let modelCountWithElement = 0;
            for (const { model, decision, postCodes, isCascadeBlocked } of evaluatedModels) {
              if (!model.element) {
                continue;
              }
              modelCountWithElement += 1;
              this.styleManager.setVerifiedBadgesHidden(model.element, shouldHideVerifiedBadges);
              if (decision.blocked) {
                hiddenCount += 1;
                if (isCascadeBlocked) {
                  cascadeHiddenCount += 1;
                }
                this.styleManager.hideElement(model.element, decision.reasons, {
                  postCode: model.postCode
                });
                this.blockedPostCatalog.markBlockedPostCodes(postCodes);
                this.notInterestedDispatcher.enqueue(model, decision, settings);
              } else {
                this.styleManager.unhideElement(model.element);
              }
            }
            this.styleManager.syncFirstVisibleTimelineDividers(
              evaluatedModels.map(({ model }) => model.element).filter(Boolean),
              document
            );
            if (!shouldHideVerifiedBadges && this.wasVerifiedBadgeHidingEnabled) {
              this.styleManager.clearAllVerifiedBadgeMarkers(document);
            }
            this.wasVerifiedBadgeHidingEnabled = shouldHideVerifiedBadges;
            __privateMethod(this, _FilterRuntime_instances, attemptTimelineBackfill_fn).call(this, modelCountWithElement, hiddenCount);
            if (modelCountWithElement > hiddenCount) {
              __privateMethod(this, _FilterRuntime_instances, resetFullFilterRecovery_fn).call(this);
            }
            this.logger.debug("Completed run cycle.", {
              totalModels: contentModels.length,
              hiddenCount,
              cascadeHiddenCount
            });
          } catch (error) {
            this.logger.error("Run cycle failed.", {
              error: error instanceof Error ? error.message : String(error)
            });
          } finally {
            this.isRunning = false;
            if (this.hasPendingRun) {
              this.hasPendingRun = false;
              await this.runCycle();
            }
          }
        }
      };
      _FilterRuntime_instances = new WeakSet();
      /**
       * Register userscript command that opens and closes filter settings.
       */
      registerMenuCommands_fn = function() {
        this.menuCommandRegistrar.register("Bobbin Threads Filter: Toggle Settings", () => {
          void __privateMethod(this, _FilterRuntime_instances, toggleSettingsMenu_fn).call(this);
        });
      };
      toggleSettingsMenu_fn = async function() {
        try {
          await this.settingsMenu.toggle();
        } catch (error) {
          this.logger.error("Settings menu toggle failed.", {
            error: error instanceof Error ? error.message : String(error)
          });
        } finally {
          this.settingsMenuTrigger.setMenuOpen(Boolean(this.settingsMenu && this.settingsMenu.isOpen));
        }
      };
      /**
       * Adopt active settings and reset cascade state when semantics change.
       *
       * @param {object} settings - Normalized runtime settings.
       */
      adoptSettings_fn = function(settings) {
        if (!settings || typeof settings !== "object") {
          return;
        }
        this.settings = settings;
        if (this.settingsReference !== settings) {
          this.settingsReference = settings;
          this.blockedPostCatalog.reset();
        }
        if (settings.observability && settings.observability.level) {
          this.logger.setLevel(settings.observability.level);
        }
      };
      /**
       * Decide whether runtime should hide visible verified badges without filtering rows.
       *
       * @param {object} settings - Normalized runtime settings.
       * @returns {boolean}
       */
      shouldHideVerifiedBadges_fn = function(settings) {
        return Boolean(
          settings && settings.filters && settings.filters.verified && settings.filters.verified.hideBadges === true
        );
      };
      /**
       * Disable verified post filtering on profile routes while keeping all other filters active.
       *
       * @param {object} settings - Normalized runtime settings.
       * @returns {object}
       */
      resolveRuleSettingsForCurrentRoute_fn = function(settings) {
        if (!__privateMethod(this, _FilterRuntime_instances, isProfileRoute_fn).call(this) || !settings || !settings.filters || !settings.filters.verified) {
          return settings;
        }
        if (settings.filters.verified.enabled !== true) {
          return settings;
        }
        return {
          ...settings,
          filters: {
            ...settings.filters,
            verified: {
              ...settings.filters.verified,
              enabled: false
            }
          }
        };
      };
      /**
       * Detect whether the current route is a user profile path.
       *
       * @returns {boolean}
       */
      isProfileRoute_fn = function() {
        if (typeof location === "undefined") {
          return false;
        }
        const pathname = String(location.pathname || "").trim();
        return PROFILE_ROUTE_PATTERN.test(pathname);
      };
      /**
       * Evaluate models and cascade-block replies that reference blocked parent posts.
       *
       * @param {Array<{ postCode?: string, postCodes?: string[] }>} contentModels - Candidate models.
       * @param {object} settings - Normalized runtime settings.
       * @returns {Array<{
       *   model: { postCode?: string, postCodes?: string[], element?: HTMLElement|null },
       *   decision: { blocked: boolean, reasons: string[], matches?: Array<{ kind: string, mode: string, pattern: string }> },
       *   postCodes: string[],
       *   isCascadeBlocked: boolean
       * }>}
       */
      evaluateContentModels_fn = function(contentModels, settings) {
        const evaluatedModels = [];
        const currentlyBlockedCodes = /* @__PURE__ */ new Set();
        for (const contentModel of contentModels) {
          const model = __privateMethod(this, _FilterRuntime_instances, buildMetadataAwareContentModel_fn).call(this, contentModel);
          const postCodes = __privateMethod(this, _FilterRuntime_instances, resolveModelPostCodes_fn).call(this, model);
          const decision = this.ruleEngine.evaluate(model, settings);
          if (decision && decision.blocked) {
            for (const postCode of postCodes) {
              currentlyBlockedCodes.add(postCode);
            }
          }
          evaluatedModels.push({
            model,
            decision,
            postCodes,
            isCascadeBlocked: false
          });
        }
        return evaluatedModels.map((evaluatedModel) => {
          if (evaluatedModel.decision && evaluatedModel.decision.blocked) {
            return evaluatedModel;
          }
          if (!__privateMethod(this, _FilterRuntime_instances, containsBlockedPostCode_fn).call(this, evaluatedModel.postCodes, currentlyBlockedCodes, evaluatedModel.model.postCode)) {
            return evaluatedModel;
          }
          return {
            ...evaluatedModel,
            decision: __privateMethod(this, _FilterRuntime_instances, buildCascadeDecision_fn).call(this, evaluatedModel.decision),
            isCascadeBlocked: true
          };
        });
      };
      /**
       * Enrich one content model with catalog-backed metadata before rule evaluation.
       *
       * @param {import('./content-model').ContentModel|Record<string, unknown>} contentModel - Candidate model.
       * @returns {import('./content-model').ContentModel}
       */
      buildMetadataAwareContentModel_fn = function(contentModel) {
        const baseModel = contentModel instanceof ContentModel ? contentModel : new ContentModel(contentModel || {});
        const postCodes = __privateMethod(this, _FilterRuntime_instances, resolveModelPostCodes_fn).call(this, baseModel);
        if (postCodes.length === 0 || !this.postMetadataCatalog || typeof this.postMetadataCatalog.getByPostCode !== "function") {
          return baseModel;
        }
        const aiDetectionMethods = new Set(
          Array.isArray(baseModel.aiDetectionMethods) ? baseModel.aiDetectionMethods : []
        );
        let hasAiLabel = baseModel.hasAiLabel === true;
        for (const postCode of postCodes) {
          const postMetadata = this.postMetadataCatalog.getByPostCode(postCode);
          if (!postMetadata) {
            continue;
          }
          const normalizedDetectionMethod = String(postMetadata.genAIDetectionMethod || "").trim().toUpperCase();
          const hasDetectedAiLabel = postMetadata.hasAiLabel === true && normalizedDetectionMethod !== "NONE";
          if (hasDetectedAiLabel || normalizedDetectionMethod && normalizedDetectionMethod !== "NONE") {
            hasAiLabel = true;
          }
          if (normalizedDetectionMethod && normalizedDetectionMethod !== "NONE") {
            aiDetectionMethods.add(normalizedDetectionMethod);
          }
        }
        if (hasAiLabel === baseModel.hasAiLabel && aiDetectionMethods.size === baseModel.aiDetectionMethods.length) {
          return baseModel;
        }
        return new ContentModel({
          ...baseModel,
          hasAiLabel,
          aiDetectionMethods: Array.from(aiDetectionMethods)
        });
      };
      /**
       * Normalize all post codes represented by one model.
       *
       * @param {{ postCode?: string, postCodes?: string[] }} model - Candidate content model.
       * @returns {string[]}
       */
      resolveModelPostCodes_fn = function(model) {
        const candidatePostCodes = [];
        if (model && Array.isArray(model.postCodes)) {
          candidatePostCodes.push(...model.postCodes);
        }
        if (model && model.postCode) {
          candidatePostCodes.push(model.postCode);
        }
        return normalizePostCodeList(candidatePostCodes);
      };
      /**
       * Determine whether model post codes intersect blocked code state.
       *
       * @param {string[]} postCodes - Normalized model post codes.
       * @param {Set<string>} currentlyBlockedCodes - Post codes blocked in this run.
       * @param {string} primaryPostCode - Primary post code for this model.
       * @returns {boolean}
       */
      containsBlockedPostCode_fn = function(postCodes, currentlyBlockedCodes, primaryPostCode) {
        if (postCodes.length === 0) {
          return false;
        }
        for (const postCode of postCodes) {
          if (!currentlyBlockedCodes.has(postCode)) {
            continue;
          }
          if (postCodes.length > 1 || postCode !== primaryPostCode) {
            return true;
          }
        }
        return this.blockedPostCatalog.hasBlockedPostCode(postCodes);
      };
      /**
       * Build synthetic block decision used for thread-level cascade hides.
       *
       * @param {{ reasons?: string[], matches?: Array<{ kind: string, mode: string, pattern: string }> }} decision - Rule decision.
       * @returns {{ blocked: boolean, reasons: string[], matches: Array<{ kind: string, mode: string, pattern: string }> }}
       */
      buildCascadeDecision_fn = function(decision) {
        const reasons = Array.isArray(decision && decision.reasons) ? [...decision.reasons] : [];
        if (!reasons.includes(REPLY_CASCADE_REASON)) {
          reasons.push(REPLY_CASCADE_REASON);
        }
        return {
          blocked: true,
          reasons,
          matches: Array.isArray(decision && decision.matches) ? decision.matches : []
        };
      };
      /**
       * Request additional feed rows when current viewport batch is fully filtered.
       *
       * @param {number} modelCountWithElement - Number of extracted models with DOM elements.
       * @param {number} hiddenCount - Number of currently hidden models.
       */
      attemptTimelineBackfill_fn = function(modelCountWithElement, hiddenCount) {
        if (modelCountWithElement <= 0 || hiddenCount < modelCountWithElement) {
          return;
        }
        const nowMs = this.nowProvider();
        if (this.lastTimelineBackfillAtMs !== null && nowMs - this.lastTimelineBackfillAtMs < TIMELINE_BACKFILL_COOLDOWN_MS) {
          return;
        }
        const scrollRegion = __privateMethod(this, _FilterRuntime_instances, resolveTimelineScrollRegion_fn).call(this);
        if (!scrollRegion || !__privateMethod(this, _FilterRuntime_instances, emitTimelineScrollSignals_fn).call(this, scrollRegion)) {
          return;
        }
        this.lastTimelineBackfillAtMs = nowMs;
        __privateMethod(this, _FilterRuntime_instances, scheduleFullFilterRecoveryRetry_fn).call(this);
        this.logger.debug("Requested timeline backfill after full-batch filtering.", {
          modelCountWithElement,
          hiddenCount
        });
      };
      /**
       * Continue requesting backfill while the feed stays empty after full filtering.
       */
      attemptEmptyCycleBackfillRecovery_fn = function() {
        if (this.fullFilterRecoveryAttemptCount <= 0) {
          return;
        }
        if (this.fullFilterRecoveryAttemptCount >= FULL_FILTER_RECOVERY_MAX_ATTEMPTS) {
          __privateMethod(this, _FilterRuntime_instances, resetFullFilterRecovery_fn).call(this);
          return;
        }
        const nowMs = this.nowProvider();
        if (this.lastTimelineBackfillAtMs !== null && nowMs - this.lastTimelineBackfillAtMs < TIMELINE_BACKFILL_COOLDOWN_MS) {
          __privateMethod(this, _FilterRuntime_instances, scheduleFullFilterRecoveryRetry_fn).call(this);
          return;
        }
        const scrollRegion = __privateMethod(this, _FilterRuntime_instances, resolveTimelineScrollRegion_fn).call(this);
        if (!scrollRegion || !__privateMethod(this, _FilterRuntime_instances, emitTimelineScrollSignals_fn).call(this, scrollRegion)) {
          return;
        }
        this.lastTimelineBackfillAtMs = nowMs;
        __privateMethod(this, _FilterRuntime_instances, scheduleFullFilterRecoveryRetry_fn).call(this);
        this.logger.debug("Requested timeline backfill during empty-feed recovery window.", {
          recoveryAttempt: this.fullFilterRecoveryAttemptCount
        });
      };
      /**
       * Resolve timeline scroll host used by Threads feed loading.
       *
       * @returns {HTMLElement|null}
       */
      resolveTimelineScrollRegion_fn = function() {
        if (typeof document === "undefined") {
          return null;
        }
        const region = document.querySelector(TIMELINE_SCROLL_REGION_SELECTOR);
        if (region && typeof region.dispatchEvent === "function") {
          return region;
        }
        const fallbackRegion = document.scrollingElement;
        if (fallbackRegion && typeof fallbackRegion.dispatchEvent === "function") {
          return fallbackRegion;
        }
        return null;
      };
      /**
       * Emit scroll movement and events that trigger Threads feed backfill.
       *
       * @param {HTMLElement} scrollRegion - Timeline scroll host.
       * @returns {boolean}
       */
      emitTimelineScrollSignals_fn = function(scrollRegion) {
        let didSignal = false;
        if (typeof scrollRegion.scrollTop === "number" && typeof scrollRegion.scrollHeight === "number" && typeof scrollRegion.clientHeight === "number") {
          const scrollIncrement = Math.max(Math.floor(scrollRegion.clientHeight * 0.9), 600);
          const nextScrollTop = Math.min(
            scrollRegion.scrollHeight,
            scrollRegion.scrollTop + scrollIncrement
          );
          if (nextScrollTop > scrollRegion.scrollTop) {
            scrollRegion.scrollTop = nextScrollTop;
            didSignal = true;
          }
        }
        if (typeof scrollRegion.dispatchEvent === "function") {
          scrollRegion.dispatchEvent(new Event("scroll", { bubbles: true }));
          didSignal = true;
        }
        if (typeof window !== "undefined" && typeof window.dispatchEvent === "function") {
          window.dispatchEvent(new Event("scroll"));
          didSignal = true;
        }
        return didSignal;
      };
      /**
       * Queue one bounded retry run so full-filtered timelines can recover.
       */
      scheduleFullFilterRecoveryRetry_fn = function() {
        if (this.fullFilterRecoveryAttemptCount >= FULL_FILTER_RECOVERY_MAX_ATTEMPTS) {
          return;
        }
        if (this.fullFilterRecoveryTimerId !== null) {
          return;
        }
        this.fullFilterRecoveryAttemptCount += 1;
        this.fullFilterRecoveryTimerId = this.scheduleFn(() => {
          this.fullFilterRecoveryTimerId = null;
          void this.runCycle();
        }, FULL_FILTER_RECOVERY_RETRY_DELAY_MS);
        this.logger.debug("Scheduled full-filter recovery retry run.", {
          recoveryAttempt: this.fullFilterRecoveryAttemptCount
        });
      };
      /**
       * Cancel any pending full-filter recovery retry timer.
       */
      clearFullFilterRecoveryTimer_fn = function() {
        if (this.fullFilterRecoveryTimerId === null) {
          return;
        }
        this.clearScheduleFn(this.fullFilterRecoveryTimerId);
        this.fullFilterRecoveryTimerId = null;
      };
      /**
       * Reset full-filter recovery state once visible content reappears.
       */
      resetFullFilterRecovery_fn = function() {
        __privateMethod(this, _FilterRuntime_instances, clearFullFilterRecoveryTimer_fn).call(this);
        this.fullFilterRecoveryAttemptCount = 0;
      };
      /**
       * Delay stale-marker recovery until zero-model extraction persists.
       */
      attemptEmptyModelRecovery_fn = function() {
        const nowMs = this.nowProvider();
        if (this.emptyModelRecoveryStartedAtMs === null) {
          this.emptyModelRecoveryStartedAtMs = nowMs;
          this.logger.debug(
            "Deferred stale hide-marker recovery during empty extraction grace window."
          );
          return;
        }
        if (this.didRunEmptyModelRecovery) {
          return;
        }
        if (nowMs - this.emptyModelRecoveryStartedAtMs < EMPTY_MODEL_RECOVERY_DELAY_MS) {
          return;
        }
        this.styleManager.clearAllHiddenMarkers(document);
        this.didRunEmptyModelRecovery = true;
        this.logger.debug("Cleared stale hide markers after sustained empty extraction window.");
      };
      module.exports = {
        FilterRuntime
      };
    }
  });

  // src/entry/userscript.js
  var require_userscript = __commonJS({
    "src/entry/userscript.js"() {
      var { FilterRuntime } = require_filter_runtime();
      var { Logger } = require_logger();
      async function startUserscript() {
        const logger = new Logger({ namespace: "userscript", level: "warn" });
        const runtime = new FilterRuntime({ logger });
        await runtime.start();
      }
      startUserscript().catch(() => {
      });
    }
  });
  require_userscript();
})();