{
  "version": 3,
  "sources": ["/cdn/shop/t/22/assets/bot-blocker-gate.js?pawuni_v=20260508-v55-event-gate-1"],
  "sourcesContent": ["/* Pawuni Bot Blocker gate:\n * - Shared decision reader for tracking and attribution scripts\n * - Uses Bot Blocker's persisted decision, not a DOM marker that can render late\n * - Tracking fails open after a short wait; page/block-sensitive work stays closed\n */\n(function () {\n  'use strict';\n\n  if (window.PawuniBotBlockerGate) return;\n\n  var DECISION_KEY = 'bot-blocker:decision';\n  var DECISION_EVENT = 'bot-blocker:decision';\n  var RETRY_MS = 250;\n  var TRACKING_MAX_WAIT_MS = 1500;\n  var PAGE_MAX_WAIT_MS = 5000;\n\n  function nowMs() {\n    return Date.now ? Date.now() : new Date().getTime();\n  }\n\n  function safeParseJson(value) {\n    if (!value || typeof value !== 'string') return null;\n    try {\n      return JSON.parse(value);\n    } catch (_error) {\n      return null;\n    }\n  }\n\n  function readStorage(key) {\n    try {\n      return window.localStorage.getItem(key);\n    } catch (_error) {\n      return null;\n    }\n  }\n\n  function hasValidCacheSig(decision) {\n    return typeof decision.cacheSig === 'string' && decision.cacheSig.length === 24;\n  }\n\n  function hasValidDecision(decision) {\n    return (\n      decision &&\n      typeof decision === 'object' &&\n      hasValidCacheSig(decision) &&\n      (!decision.expiresAt || Number(decision.expiresAt) > nowMs())\n    );\n  }\n\n  function readDecision() {\n    return safeParseJson(readStorage(DECISION_KEY));\n  }\n\n  function getStatus() {\n    if (window.__botBlockerBlocked) return 'block';\n\n    var decision = readDecision();\n    if (!hasValidDecision(decision)) return 'pending';\n    if (decision.action === 'block_page' && decision.shadow !== true) return 'block';\n\n    return decision.suppressTracking ? 'suppress' : 'allow';\n  }\n\n  function isPageAllowed() {\n    var status = getStatus();\n    return status === 'allow' || status === 'suppress';\n  }\n\n  function isTrackingAllowed() {\n    return getStatus() === 'allow';\n  }\n\n  function waitForDecision(callback, options) {\n    var status = getStatus();\n    if (options.allows(status)) {\n      callback();\n      return;\n    }\n    if (options.blocks(status)) return;\n\n    var completed = false;\n    var pollTimer = null;\n    var timeoutTimer = null;\n\n    function cleanup() {\n      if (pollTimer) window.clearInterval(pollTimer);\n      if (timeoutTimer) window.clearTimeout(timeoutTimer);\n      window.removeEventListener(DECISION_EVENT, onDecision);\n    }\n\n    function complete(meta) {\n      if (completed) return;\n      completed = true;\n      cleanup();\n      callback(meta);\n    }\n\n    function stop() {\n      if (completed) return;\n      completed = true;\n      cleanup();\n    }\n\n    function check(timedOut) {\n      var nextStatus = getStatus();\n      if (options.allows(nextStatus)) {\n        complete(timedOut ? { timedOut: true } : undefined);\n        return;\n      }\n      if (options.blocks(nextStatus)) {\n        stop();\n        return;\n      }\n      if (timedOut) {\n        if (options.failOpen) complete({ timedOut: true });\n        else stop();\n      }\n    }\n\n    function onDecision() {\n      check(false);\n    }\n\n    window.addEventListener(DECISION_EVENT, onDecision);\n    pollTimer = window.setInterval(function () {\n      check(false);\n    }, RETRY_MS);\n    timeoutTimer = window.setTimeout(function () {\n      check(true);\n    }, options.maxWaitMs);\n  }\n\n  function runWhenPageAllowed(callback) {\n    waitForDecision(callback, {\n      allows: function (status) {\n        return status === 'allow' || status === 'suppress';\n      },\n      blocks: function (status) {\n        return status === 'block';\n      },\n      failOpen: false,\n      maxWaitMs: PAGE_MAX_WAIT_MS\n    });\n  }\n\n  function runWhenTrackingAllowed(callback) {\n    waitForDecision(callback, {\n      allows: function (status) {\n        return status === 'allow';\n      },\n      blocks: function (status) {\n        return status === 'block' || status === 'suppress';\n      },\n      failOpen: true,\n      maxWaitMs: TRACKING_MAX_WAIT_MS\n    });\n  }\n\n  window.PawuniBotBlockerGate = {\n    getStatus: getStatus,\n    isPageAllowed: isPageAllowed,\n    isTrackingAllowed: isTrackingAllowed,\n    readDecision: readDecision,\n    runWhenPageAllowed: runWhenPageAllowed,\n    runWhenTrackingAllowed: runWhenTrackingAllowed,\n  };\n})();\n"],
  "mappings": "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",
  "names": []
}
