{
  "version": 3,
  "sources": ["/cdn/shop/t/92/assets/header-v2.js?lly=laley-custom-20260921-epostsjekk-v860"],
  "sourcesContent": ["(() => {\n  const header = document.querySelector(\"[data-header-v2]\");\n\n  if (!header || header.dataset.headerV2Ready === \"true\") return;\n\n  header.dataset.headerV2Ready = \"true\";\n\n  const root = document.documentElement;\n  const body = document.body;\n\n  let rafId = null;\n  let scrollRafId = null;\n  let lastHeight = 0;\n  let lastSearchFieldTop = null;\n  let lastSearchFieldHeight = null;\n  let lastScrolled = null;\n  let lastNoticeCompact = null;\n\n  root.classList.add(\"header-v2-active\");\n  body.classList.add(\"header-v2-active\");\n\n  const px = (value) => `${Math.max(0, Math.ceil(value))}px`;\n\n  const initNotice = () => {\n    const notice = header.querySelector(\"[data-header-v2-notice]\");\n    const rotator = notice?.querySelector(\"[data-header-v2-notice-rotator]\");\n    const toggle = notice?.querySelector(\"[data-header-v2-notice-toggle]\");\n    const messages = rotator ? Array.from(rotator.querySelectorAll(\"[data-header-v2-notice-message]\")) : [];\n    if (!notice || !rotator || !toggle || messages.length < 2) return;\n\n    const reduceMotion = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\n    let active = 0;\n    let paused = false;\n    let cycleTimer = 0;\n    let fadeTimer = 0;\n\n    const clearTimers = () => {\n      window.clearTimeout(cycleTimer);\n      window.clearTimeout(fadeTimer);\n      cycleTimer = 0;\n      fadeTimer = 0;\n    };\n\n    const reflect = () => {\n      rotator.classList.toggle(\"is-second\", active === 1);\n      messages.forEach((message, index) => {\n        message.setAttribute(\"aria-hidden\", index === active ? \"false\" : \"true\");\n      });\n      toggle.hidden = reduceMotion.matches;\n      toggle.setAttribute(\"aria-pressed\", paused ? \"true\" : \"false\");\n      toggle.setAttribute(\"aria-label\", paused ? window.LaleyTranslate(\"resume_announcements_7f8497\", \"Start meldinger\") : window.LaleyTranslate(\"pause_announcements_261f00\", \"Pause meldinger\"));\n    };\n\n    const schedule = () => {\n      window.clearTimeout(cycleTimer);\n      if (paused || reduceMotion.matches || document.hidden) return;\n      cycleTimer = window.setTimeout(() => {\n        rotator.classList.add(\"is-changing\");\n        fadeTimer = window.setTimeout(() => {\n          active = active === 0 ? 1 : 0;\n          reflect();\n          window.requestAnimationFrame(() => {\n            rotator.classList.remove(\"is-changing\");\n            schedule();\n          });\n        }, 180);\n      }, 4500);\n    };\n\n    const setPaused = (nextPaused) => {\n      paused = nextPaused;\n      clearTimers();\n      rotator.classList.remove(\"is-changing\");\n      reflect();\n      schedule();\n    };\n\n    toggle.addEventListener(\"click\", () => setPaused(!paused));\n    document.addEventListener(\"visibilitychange\", () => {\n      clearTimers();\n      rotator.classList.remove(\"is-changing\");\n      schedule();\n    });\n    const handleMotionChange = () => {\n      clearTimers();\n      active = 0;\n      rotator.classList.remove(\"is-changing\");\n      reflect();\n      schedule();\n    };\n    if (reduceMotion.addEventListener) reduceMotion.addEventListener(\"change\", handleMotionChange);\n    else reduceMotion.addListener(handleMotionChange);\n\n    reflect();\n    schedule();\n  };\n\n  initNotice();\n\n  /* The header-section wrapper owns position:sticky in CSS. Remove a spacer\n     left by a cached/hot-reloaded version of the former fixed-header runtime. */\n  header.parentElement?.querySelectorAll(\":scope > .laley-hv2-placeholder\").forEach((node) => node.remove());\n\n  const getHeaderHeight = () => {\n    const rect = header.getBoundingClientRect();\n    return Math.ceil(rect.height || header.offsetHeight || 0);\n  };\n\n  /* Sokefeltets plass i headeren, eksponert som CSS-variabler.\n     Panelet er soekets FORTSETTELSE, ikke et nytt sted: feltet der skal ligge\n     paa samme linje og i samme hoyde som feltet i headeren, slik SKIMS gjor\n     det - bare bredden endrer seg. Radhoyden er ikke et fast token (logoen\n     drar den), saa den maa maales. Skrives hver gang uansett hoyde-cache,\n     fordi feltet flytter seg naar varselbaren eller raden endrer seg. */\n  const writeSearchFieldVars = () => {\n    /* Begge plasseringene finnes i DOM-en samtidig; CSS skjuler den som ikke\n       gjelder for bredden. querySelector ville tatt den FORSTE i DOM-en, som er\n       mobilvarianten, og den er display:none paa desktop - da ble hoyden 0 og\n       maalingen droppet. Velg den som faktisk rendres. */\n    const field = [\n      ...header.querySelectorAll(\n        \".laley-hv2__searchfield--inline, .laley-hv2__searchfield--row\"\n      )\n    ].find((el) => el.getBoundingClientRect().height > 0);\n    if (!field) return;\n    const rect = field.getBoundingClientRect();\n    const top = Math.round(rect.top);\n    const height = Math.round(rect.height);\n    /* Root custom properties restyle the whole page; write only on change\n       (this runs in every scroll frame). */\n    if (top !== lastSearchFieldTop) {\n      lastSearchFieldTop = top;\n      root.style.setProperty(\"--laley-search-field-top\", px(top));\n    }\n    if (height !== lastSearchFieldHeight) {\n      lastSearchFieldHeight = height;\n      root.style.setProperty(\"--laley-search-field-height\", px(height));\n    }\n  };\n\n  const writeHeaderVars = () => {\n    writeSearchFieldVars();\n\n    const height = getHeaderHeight();\n\n    if (!height) return;\n\n    if (height === lastHeight) return;\n\n    lastHeight = height;\n\n    root.style.setProperty(\"--HEADER-HEIGHT\", px(height));\n    root.style.setProperty(\"--HEADER-HEIGHT-MEDIUM\", px(height));\n    root.style.setProperty(\"--HEADER-HEIGHT-MOBILE\", px(height));\n    root.style.setProperty(\"--header-height\", px(height));\n\n    header.dataset.headerV2Height = String(height);\n  };\n\n  const NOTICE_COMPACT_ENTER_Y = 24;\n  const NOTICE_COMPACT_EXIT_Y = 8;\n\n  const setScrollState = () => {\n    const y = window.scrollY || 0;\n    /* Hysteresis: enter scrolled state at 12px, exit at 4px.\n       Avoids flicker when scrolling near the threshold. */\n    const enter = 12;\n    const exit = 4;\n    const isScrolled = lastScrolled === true ? y > exit : y > enter;\n    /* Preserve the trust message at rest, then yield mobile viewport space\n       as soon as the shopper has clearly started browsing. */\n    const noticeCompact = lastNoticeCompact === true\n      ? y > NOTICE_COMPACT_EXIT_Y\n      : y > NOTICE_COMPACT_ENTER_Y;\n\n    if (noticeCompact !== lastNoticeCompact) {\n      lastNoticeCompact = noticeCompact;\n      header.classList.toggle(\"laley-hv2--notice-compact\", noticeCompact);\n    }\n\n    if (isScrolled !== lastScrolled) {\n      lastScrolled = isScrolled;\n      header.classList.toggle(\"laley-hv2--scrolled\", isScrolled);\n      header.classList.toggle(\"is-scrolled\", isScrolled);\n    }\n  };\n\n  const scheduleMeasure = () => {\n    if (rafId) return;\n\n    rafId = window.requestAnimationFrame(() => {\n      rafId = null;\n      writeHeaderVars();\n    });\n  };\n\n  const forceMeasure = () => {\n    setScrollState();\n    writeHeaderVars();\n  };\n\n  const scheduleScrollState = () => {\n    if (scrollRafId) return;\n    scrollRafId = window.requestAnimationFrame(() => {\n      scrollRafId = null;\n      setScrollState();\n      /* Mobile changes are instant; write the shared geometry in the same\n         frame. ResizeObserver/transitionend own later desktop frames. */\n      writeHeaderVars();\n    });\n  };\n\n  if (\"ResizeObserver\" in window) {\n    const resizeObserver = new ResizeObserver(scheduleMeasure);\n    resizeObserver.observe(header);\n  }\n\n  /* Desktop may still animate visual compaction. Keep the shared height token\n     synchronized after that transition; mobile switches state instantly. */\n  header.addEventListener(\"transitionend\", scheduleMeasure, { passive: true });\n\n  /* Re-measure once header images finish loading (logo can be SVG/PNG, may\n     change height as it decodes). */\n  const images = header.querySelectorAll(\"img\");\n  images.forEach((img) => {\n    if (img.complete) return;\n    img.addEventListener(\"load\", scheduleMeasure, { once: true });\n    img.addEventListener(\"error\", scheduleMeasure, { once: true });\n  });\n\n  /* Custom webfonts can shift the nav row height after swap.\n     Re-measure when document fonts settle. */\n  if (document.fonts && document.fonts.ready) {\n    document.fonts.ready.then(scheduleMeasure).catch(() => {});\n  }\n\n  /* Search is intentionally not handled here. Both header triggers delegate\n     to the global Laley panel controller, which owns open/close, focus and\n     scroll locking across desktop and mobile. */\n\n  /* Theme's <header-component> normally binds [data-drawer-toggle] and\n     [data-cart-toggle] click handlers in its connectedCallback. V2 doesn't\n     use <header-component>, so we replicate those bindings here.\n\n     Delegated approach: listen on document for clicks bubbling from V2\n     buttons. More robust than per-button binding \u2014 no risk of missing a\n     button that re-renders, no need for idempotency flags. */\n  if (!window.__hv2DelegationBound) {\n    window.__hv2DelegationBound = true;\n\n    document.addEventListener(\"click\", (e) => {\n      const v2Header = e.target.closest(\"[data-header-v2]\");\n      if (!v2Header) return;\n\n      /* Drawer toggle (hamburger) */\n      const drawerBtn = e.target.closest(\"[data-drawer-toggle]\");\n      if (drawerBtn) {\n        const key = drawerBtn.getAttribute(\"data-drawer-toggle\");\n        const drawer = key ? document.querySelector(`[data-drawer=\"${key}\"]`) : null;\n        if (drawer) {\n          e.preventDefault();\n          const wasOpen = drawer.classList.contains(\"is-open\");\n          drawer.dispatchEvent(new CustomEvent(\"theme:drawer:toggle\", {\n            bubbles: false,\n            detail: { button: drawerBtn }\n          }));\n          /* Fallback: if the custom element listener isn't wired (timing,\n             constructor error, etc), force open/close via class toggle on\n             next tick. The drawer's own underlay/escape closers still work. */\n          window.setTimeout(() => {\n            if (!wasOpen && !drawer.classList.contains(\"is-open\")) {\n              drawer.classList.add(\"is-open\", \"is-focused\");\n              document.dispatchEvent(new CustomEvent(\"theme:scroll:lock\", { bubbles: true }));\n            }\n          }, 60);\n        }\n        return;\n      }\n\n      /* Cart toggle */\n      const cartBtn = e.target.closest(\"[data-cart-toggle]\");\n      if (cartBtn) {\n        const cartType = window.theme && window.theme.settings && window.theme.settings.cartType;\n        if (cartType !== \"drawer\") return;\n        const cartDrawer = document.querySelector(\"cart-drawer\");\n        if (cartDrawer) {\n          e.preventDefault();\n          cartDrawer.dispatchEvent(new CustomEvent(\"theme:cart-drawer:show\"));\n          if (window.a11y) window.a11y.lastElement = cartBtn;\n        }\n      }\n    });\n  }\n\n  const initMegaMenu = () => {\n    const roots = Array.from(header.querySelectorAll(\"[data-laley-mega-root]\"))\n      .filter((rootEl) => rootEl.dataset.laleyMegaReady !== \"true\");\n\n    if (!roots.length) return;\n\n    const desktopQuery = window.matchMedia(\"(min-width: 990px)\");\n    let activeRoot = null;\n    let openTimer = 0;\n    let closeTimer = 0;\n    let suppressFocusOpen = false;\n\n    const getParts = (rootEl) => {\n      const trigger = rootEl.querySelector(\"[data-laley-mega-trigger]\");\n      const menu = trigger ? document.getElementById(trigger.getAttribute(\"aria-controls\")) : null;\n      return { trigger, menu };\n    };\n\n    const clearTimers = () => {\n      window.clearTimeout(openTimer);\n      window.clearTimeout(closeTimer);\n    };\n\n    const rotateMegaTrending = (menu) => {\n      const cards = Array.from(menu.querySelectorAll(\"[data-laley-mega-trend-card]\"));\n      if (!cards.length) return;\n\n      const count = cards.length;\n      const storageKey = \"laleyMegaTrendingIndex\";\n      const previousKey = \"laleyMegaTrendingPreviousIndex\";\n      let nextIndex = 0;\n      let previousIndex = Number(menu.dataset.laleyLastTrendingIndex);\n\n      try {\n        const stored = Number(window.localStorage.getItem(storageKey));\n        const storedPrevious = Number(window.localStorage.getItem(previousKey));\n\n        if (Number.isFinite(storedPrevious)) previousIndex = storedPrevious;\n\n        if (Number.isFinite(stored)) {\n          nextIndex = (stored + 1) % count;\n        } else {\n          nextIndex = Math.floor(Math.random() * count);\n        }\n      } catch (error) {\n        nextIndex = Math.floor(Math.random() * count);\n      }\n\n      if (count > 1 && Number.isFinite(previousIndex) && nextIndex === previousIndex) {\n        nextIndex = (nextIndex + 1) % count;\n      }\n\n      cards.forEach((card, index) => {\n        const isActive = index === nextIndex;\n        card.hidden = !isActive;\n        card.classList.toggle(\"is-active\", isActive);\n      });\n\n      menu.dataset.laleyLastTrendingIndex = String(nextIndex);\n\n      try {\n        window.localStorage.setItem(storageKey, String(nextIndex));\n        window.localStorage.setItem(previousKey, String(nextIndex));\n      } catch (error) {}\n    };\n\n    const setOpen = (rootEl, open) => {\n      const { trigger, menu } = getParts(rootEl);\n      if (!trigger || !menu) return;\n      if (open && !desktopQuery.matches) return;\n      const wasOpen = rootEl.classList.contains(\"is-open\");\n\n      if (open && activeRoot && activeRoot !== rootEl) {\n        setOpen(activeRoot, false);\n      }\n\n      rootEl.classList.toggle(\"is-open\", open);\n      trigger.setAttribute(\"aria-expanded\", open ? \"true\" : \"false\");\n      menu.hidden = !open;\n      menu.classList.toggle(\"is-open\", open);\n      if (open && !wasOpen) rotateMegaTrending(menu);\n      activeRoot = open ? rootEl : activeRoot === rootEl ? null : activeRoot;\n      /* The visual header state must follow the disclosure state, not the\n         input device's hover media query. Track it explicitly so a mouse,\n         trackpad, keyboard and touch-capable desktop all get the same white\n         navigation surface while a mega menu is open. */\n      header.classList.toggle(\"laley-hv2--mega-open\", Boolean(activeRoot));\n    };\n\n    const openSoon = (rootEl) => {\n      clearTimers();\n      openTimer = window.setTimeout(() => setOpen(rootEl, true), 60);\n    };\n\n    const closeSoon = (rootEl) => {\n      clearTimers();\n      closeTimer = window.setTimeout(() => setOpen(rootEl, false), 140);\n    };\n\n    roots.forEach((rootEl) => {\n      const { trigger, menu } = getParts(rootEl);\n      if (!trigger || !menu) return;\n\n      rootEl.dataset.laleyMegaReady = \"true\";\n\n      trigger.addEventListener(\"mouseenter\", () => openSoon(rootEl));\n      trigger.addEventListener(\"focus\", () => {\n        if (suppressFocusOpen) return;\n        openSoon(rootEl);\n      });\n      trigger.addEventListener(\"mouseleave\", () => closeSoon(rootEl));\n\n      menu.addEventListener(\"mouseenter\", () => {\n        window.clearTimeout(closeTimer);\n      });\n      menu.addEventListener(\"mouseleave\", () => closeSoon(rootEl));\n\n      trigger.addEventListener(\"click\", () => {\n        /* A main navigation label is a real collection link. Hover/focus and\n           ArrowDown own the disclosure; click/Enter must keep native anchor\n           navigation (including modifier-click for a new tab). */\n        clearTimers();\n        setOpen(rootEl, false);\n      });\n\n      rootEl.addEventListener(\"focusout\", (event) => {\n        if (rootEl.contains(event.relatedTarget)) return;\n        closeSoon(rootEl);\n      });\n\n      trigger.addEventListener(\"keydown\", (event) => {\n        if (event.key === \"Escape\") {\n          setOpen(rootEl, false);\n          suppressFocusOpen = true;\n          trigger.focus();\n          suppressFocusOpen = false;\n          return;\n        }\n\n        if (event.key !== \"ArrowDown\") return;\n        event.preventDefault();\n        setOpen(rootEl, true);\n        const firstLink = menu.querySelector(\"a[href]\");\n        if (firstLink) firstLink.focus();\n      });\n\n      menu.addEventListener(\"keydown\", (event) => {\n        if (event.key !== \"Escape\") return;\n        setOpen(rootEl, false);\n        suppressFocusOpen = true;\n        trigger.focus();\n        suppressFocusOpen = false;\n      });\n    });\n\n    if (!window.__hv2MegaGlobalBound) {\n      window.__hv2MegaGlobalBound = true;\n\n      document.addEventListener(\"click\", (event) => {\n        const currentRoot = document.querySelector(\"[data-laley-mega-root].is-open\");\n        if (!currentRoot || currentRoot.contains(event.target)) return;\n        setOpen(currentRoot, false);\n      });\n\n      window.addEventListener(\"resize\", () => {\n        if (window.matchMedia(\"(min-width: 990px)\").matches) return;\n        document.querySelectorAll(\"[data-laley-mega-root].is-open\").forEach((rootEl) => {\n          setOpen(rootEl, false);\n        });\n      }, { passive: true });\n    }\n\n    /* Route navigation owns the timing, while this controller owns menu\n       state. Closing here keeps aria, hidden state and the visual header in\n       sync when a shopper chooses any link inside an open mega menu. */\n    document.addEventListener(\"laley:route:start\", () => {\n      clearTimers();\n      roots.forEach((rootEl) => setOpen(rootEl, false));\n    });\n  };\n\n  initMegaMenu();\n\n  window.addEventListener(\"scroll\", scheduleScrollState, { passive: true });\n  window.addEventListener(\"resize\", scheduleMeasure, { passive: true });\n  window.addEventListener(\"orientationchange\", () => {\n    window.setTimeout(scheduleMeasure, 120);\n    window.setTimeout(scheduleMeasure, 380);\n  }, { passive: true });\n\n  window.addEventListener(\"pageshow\", scheduleMeasure, { passive: true });\n  document.addEventListener(\"shopify:section:load\", scheduleMeasure);\n  document.addEventListener(\"shopify:section:select\", scheduleMeasure);\n  document.addEventListener(\"shopify:section:deselect\", scheduleMeasure);\n\n  forceMeasure();\n  window.setTimeout(forceMeasure, 60);\n  window.setTimeout(forceMeasure, 300);\n  window.setTimeout(forceMeasure, 900);\n})();\n"],
  "mappings": "CAAC,IAAM,CACL,MAAM,OAAS,SAAS,cAAc,kBAAkB,EAExD,GAAI,CAAC,QAAU,OAAO,QAAQ,gBAAkB,OAAQ,OAExD,OAAO,QAAQ,cAAgB,OAE/B,MAAM,KAAO,SAAS,gBAChB,KAAO,SAAS,KAEtB,IAAI,MAAQ,KACR,YAAc,KACd,WAAa,EACb,mBAAqB,KACrB,sBAAwB,KACxB,aAAe,KACf,kBAAoB,KAExB,KAAK,UAAU,IAAI,kBAAkB,EACrC,KAAK,UAAU,IAAI,kBAAkB,EAErC,MAAM,GAAM,OAAU,GAAG,KAAK,IAAI,EAAG,KAAK,KAAK,KAAK,CAAC,CAAC,MAEnC,IAAM,CACvB,MAAM,OAAS,OAAO,cAAc,yBAAyB,EACvD,QAAU,QAAQ,cAAc,iCAAiC,EACjE,OAAS,QAAQ,cAAc,gCAAgC,EAC/D,SAAW,QAAU,MAAM,KAAK,QAAQ,iBAAiB,iCAAiC,CAAC,EAAI,CAAC,EACtG,GAAI,CAAC,QAAU,CAAC,SAAW,CAAC,QAAU,SAAS,OAAS,EAAG,OAE3D,MAAM,aAAe,OAAO,WAAW,kCAAkC,EACzE,IAAI,OAAS,EACT,OAAS,GACT,WAAa,EACb,UAAY,EAEhB,MAAM,YAAc,IAAM,CACxB,OAAO,aAAa,UAAU,EAC9B,OAAO,aAAa,SAAS,EAC7B,WAAa,EACb,UAAY,CACd,EAEM,QAAU,IAAM,CACpB,QAAQ,UAAU,OAAO,YAAa,SAAW,CAAC,EAClD,SAAS,QAAQ,CAAC,QAAS,QAAU,CACnC,QAAQ,aAAa,cAAe,QAAU,OAAS,QAAU,MAAM,CACzE,CAAC,EACD,OAAO,OAAS,aAAa,QAC7B,OAAO,aAAa,eAAgB,OAAS,OAAS,OAAO,EAC7D,OAAO,aAAa,aAAc,OAAS,OAAO,eAAe,8BAA+B,iBAAiB,EAAI,OAAO,eAAe,6BAA8B,iBAAiB,CAAC,CAC7L,EAEM,SAAW,IAAM,CACrB,OAAO,aAAa,UAAU,EAC1B,UAAU,aAAa,SAAW,SAAS,UAC/C,WAAa,OAAO,WAAW,IAAM,CACnC,QAAQ,UAAU,IAAI,aAAa,EACnC,UAAY,OAAO,WAAW,IAAM,CAClC,OAAS,SAAW,EAAI,EAAI,EAC5B,QAAQ,EACR,OAAO,sBAAsB,IAAM,CACjC,QAAQ,UAAU,OAAO,aAAa,EACtC,SAAS,CACX,CAAC,CACH,EAAG,GAAG,CACR,EAAG,IAAI,EACT,EAEM,UAAa,YAAe,CAChC,OAAS,WACT,YAAY,EACZ,QAAQ,UAAU,OAAO,aAAa,EACtC,QAAQ,EACR,SAAS,CACX,EAEA,OAAO,iBAAiB,QAAS,IAAM,UAAU,CAAC,MAAM,CAAC,EACzD,SAAS,iBAAiB,mBAAoB,IAAM,CAClD,YAAY,EACZ,QAAQ,UAAU,OAAO,aAAa,EACtC,SAAS,CACX,CAAC,EACD,MAAM,mBAAqB,IAAM,CAC/B,YAAY,EACZ,OAAS,EACT,QAAQ,UAAU,OAAO,aAAa,EACtC,QAAQ,EACR,SAAS,CACX,EACI,aAAa,iBAAkB,aAAa,iBAAiB,SAAU,kBAAkB,EACxF,aAAa,YAAY,kBAAkB,EAEhD,QAAQ,EACR,SAAS,CACX,GAEW,EAIX,OAAO,eAAe,iBAAiB,iCAAiC,EAAE,QAAS,MAAS,KAAK,OAAO,CAAC,EAEzG,MAAM,gBAAkB,IAAM,CAC5B,MAAM,KAAO,OAAO,sBAAsB,EAC1C,OAAO,KAAK,KAAK,KAAK,QAAU,OAAO,cAAgB,CAAC,CAC1D,EAQM,qBAAuB,IAAM,CAKjC,MAAM,MAAQ,CACZ,GAAG,OAAO,iBACR,+DACF,CACF,EAAE,KAAM,IAAO,GAAG,sBAAsB,EAAE,OAAS,CAAC,EACpD,GAAI,CAAC,MAAO,OACZ,MAAM,KAAO,MAAM,sBAAsB,EACnC,IAAM,KAAK,MAAM,KAAK,GAAG,EACzB,OAAS,KAAK,MAAM,KAAK,MAAM,EAGjC,MAAQ,qBACV,mBAAqB,IACrB,KAAK,MAAM,YAAY,2BAA4B,GAAG,GAAG,CAAC,GAExD,SAAW,wBACb,sBAAwB,OACxB,KAAK,MAAM,YAAY,8BAA+B,GAAG,MAAM,CAAC,EAEpE,EAEM,gBAAkB,IAAM,CAC5B,qBAAqB,EAErB,MAAM,OAAS,gBAAgB,EAE1B,QAED,SAAW,aAEf,WAAa,OAEb,KAAK,MAAM,YAAY,kBAAmB,GAAG,MAAM,CAAC,EACpD,KAAK,MAAM,YAAY,yBAA0B,GAAG,MAAM,CAAC,EAC3D,KAAK,MAAM,YAAY,yBAA0B,GAAG,MAAM,CAAC,EAC3D,KAAK,MAAM,YAAY,kBAAmB,GAAG,MAAM,CAAC,EAEpD,OAAO,QAAQ,eAAiB,OAAO,MAAM,EAC/C,EAEM,uBAAyB,GACzB,sBAAwB,EAExB,eAAiB,IAAM,CAC3B,MAAM,EAAI,OAAO,SAAW,EAKtB,WAAa,eAAiB,GAAO,EAD9B,EACyC,EAFxC,GAKR,cAAgB,oBAAsB,GACxC,EAAI,sBACJ,EAAI,uBAEJ,gBAAkB,oBACpB,kBAAoB,cACpB,OAAO,UAAU,OAAO,4BAA6B,aAAa,GAGhE,aAAe,eACjB,aAAe,WACf,OAAO,UAAU,OAAO,sBAAuB,UAAU,EACzD,OAAO,UAAU,OAAO,cAAe,UAAU,EAErD,EAEM,gBAAkB,IAAM,CACxB,QAEJ,MAAQ,OAAO,sBAAsB,IAAM,CACzC,MAAQ,KACR,gBAAgB,CAClB,CAAC,EACH,EAEM,aAAe,IAAM,CACzB,eAAe,EACf,gBAAgB,CAClB,EAEM,oBAAsB,IAAM,CAC5B,cACJ,YAAc,OAAO,sBAAsB,IAAM,CAC/C,YAAc,KACd,eAAe,EAGf,gBAAgB,CAClB,CAAC,EACH,EAEI,mBAAoB,QACC,IAAI,eAAe,eAAe,EAC1C,QAAQ,MAAM,EAK/B,OAAO,iBAAiB,gBAAiB,gBAAiB,CAAE,QAAS,EAAK,CAAC,EAI5D,OAAO,iBAAiB,KAAK,EACrC,QAAS,KAAQ,CAClB,IAAI,WACR,IAAI,iBAAiB,OAAQ,gBAAiB,CAAE,KAAM,EAAK,CAAC,EAC5D,IAAI,iBAAiB,QAAS,gBAAiB,CAAE,KAAM,EAAK,CAAC,EAC/D,CAAC,EAIG,SAAS,OAAS,SAAS,MAAM,OACnC,SAAS,MAAM,MAAM,KAAK,eAAe,EAAE,MAAM,IAAM,CAAC,CAAC,EActD,OAAO,uBACV,OAAO,qBAAuB,GAE9B,SAAS,iBAAiB,QAAU,GAAM,CAExC,GAAI,CADa,EAAE,OAAO,QAAQ,kBAAkB,EACrC,OAGf,MAAM,UAAY,EAAE,OAAO,QAAQ,sBAAsB,EACzD,GAAI,UAAW,CACb,MAAM,IAAM,UAAU,aAAa,oBAAoB,EACjD,OAAS,IAAM,SAAS,cAAc,iBAAiB,GAAG,IAAI,EAAI,KACxE,GAAI,OAAQ,CACV,EAAE,eAAe,EACjB,MAAM,QAAU,OAAO,UAAU,SAAS,SAAS,EACnD,OAAO,cAAc,IAAI,YAAY,sBAAuB,CAC1D,QAAS,GACT,OAAQ,CAAE,OAAQ,SAAU,CAC9B,CAAC,CAAC,EAIF,OAAO,WAAW,IAAM,CAClB,CAAC,SAAW,CAAC,OAAO,UAAU,SAAS,SAAS,IAClD,OAAO,UAAU,IAAI,UAAW,YAAY,EAC5C,SAAS,cAAc,IAAI,YAAY,oBAAqB,CAAE,QAAS,EAAK,CAAC,CAAC,EAElF,EAAG,EAAE,CACP,CACA,MACF,CAGA,MAAM,QAAU,EAAE,OAAO,QAAQ,oBAAoB,EACrD,GAAI,QAAS,CAEX,IADiB,OAAO,OAAS,OAAO,MAAM,UAAY,OAAO,MAAM,SAAS,YAC/D,SAAU,OAC3B,MAAM,WAAa,SAAS,cAAc,aAAa,EACnD,aACF,EAAE,eAAe,EACjB,WAAW,cAAc,IAAI,YAAY,wBAAwB,CAAC,EAC9D,OAAO,OAAM,OAAO,KAAK,YAAc,SAE/C,CACF,CAAC,IAGkB,IAAM,CACzB,MAAM,MAAQ,MAAM,KAAK,OAAO,iBAAiB,wBAAwB,CAAC,EACvE,OAAQ,QAAW,OAAO,QAAQ,iBAAmB,MAAM,EAE9D,GAAI,CAAC,MAAM,OAAQ,OAEnB,MAAM,aAAe,OAAO,WAAW,oBAAoB,EAC3D,IAAI,WAAa,KACb,UAAY,EACZ,WAAa,EACb,kBAAoB,GAExB,MAAM,SAAY,QAAW,CAC3B,MAAM,QAAU,OAAO,cAAc,2BAA2B,EAC1D,KAAO,QAAU,SAAS,eAAe,QAAQ,aAAa,eAAe,CAAC,EAAI,KACxF,MAAO,CAAE,QAAS,IAAK,CACzB,EAEM,YAAc,IAAM,CACxB,OAAO,aAAa,SAAS,EAC7B,OAAO,aAAa,UAAU,CAChC,EAEM,mBAAsB,MAAS,CACnC,MAAM,MAAQ,MAAM,KAAK,KAAK,iBAAiB,8BAA8B,CAAC,EAC9E,GAAI,CAAC,MAAM,OAAQ,OAEnB,MAAM,MAAQ,MAAM,OACd,WAAa,yBACb,YAAc,iCACpB,IAAI,UAAY,EACZ,cAAgB,OAAO,KAAK,QAAQ,sBAAsB,EAE9D,GAAI,CACF,MAAM,OAAS,OAAO,OAAO,aAAa,QAAQ,UAAU,CAAC,EACvD,eAAiB,OAAO,OAAO,aAAa,QAAQ,WAAW,CAAC,EAElE,OAAO,SAAS,cAAc,IAAG,cAAgB,gBAEjD,OAAO,SAAS,MAAM,EACxB,WAAa,OAAS,GAAK,MAE3B,UAAY,KAAK,MAAM,KAAK,OAAO,EAAI,KAAK,CAEhD,MAAgB,CACd,UAAY,KAAK,MAAM,KAAK,OAAO,EAAI,KAAK,CAC9C,CAEI,MAAQ,GAAK,OAAO,SAAS,aAAa,GAAK,YAAc,gBAC/D,WAAa,UAAY,GAAK,OAGhC,MAAM,QAAQ,CAAC,KAAM,QAAU,CAC7B,MAAM,SAAW,QAAU,UAC3B,KAAK,OAAS,CAAC,SACf,KAAK,UAAU,OAAO,YAAa,QAAQ,CAC7C,CAAC,EAED,KAAK,QAAQ,uBAAyB,OAAO,SAAS,EAEtD,GAAI,CACF,OAAO,aAAa,QAAQ,WAAY,OAAO,SAAS,CAAC,EACzD,OAAO,aAAa,QAAQ,YAAa,OAAO,SAAS,CAAC,CAC5D,MAAgB,CAAC,CACnB,EAEM,QAAU,CAAC,OAAQ,OAAS,CAChC,KAAM,CAAE,QAAS,IAAK,EAAI,SAAS,MAAM,EAEzC,GADI,CAAC,SAAW,CAAC,MACb,MAAQ,CAAC,aAAa,QAAS,OACnC,MAAM,QAAU,OAAO,UAAU,SAAS,SAAS,EAE/C,MAAQ,YAAc,aAAe,QACvC,QAAQ,WAAY,EAAK,EAG3B,OAAO,UAAU,OAAO,UAAW,IAAI,EACvC,QAAQ,aAAa,gBAAiB,KAAO,OAAS,OAAO,EAC7D,KAAK,OAAS,CAAC,KACf,KAAK,UAAU,OAAO,UAAW,IAAI,EACjC,MAAQ,CAAC,SAAS,mBAAmB,IAAI,EAC7C,WAAa,KAAO,OAAS,aAAe,OAAS,KAAO,WAK5D,OAAO,UAAU,OAAO,uBAAwB,EAAQ,UAAW,CACrE,EAEM,SAAY,QAAW,CAC3B,YAAY,EACZ,UAAY,OAAO,WAAW,IAAM,QAAQ,OAAQ,EAAI,EAAG,EAAE,CAC/D,EAEM,UAAa,QAAW,CAC5B,YAAY,EACZ,WAAa,OAAO,WAAW,IAAM,QAAQ,OAAQ,EAAK,EAAG,GAAG,CAClE,EAEA,MAAM,QAAS,QAAW,CACxB,KAAM,CAAE,QAAS,IAAK,EAAI,SAAS,MAAM,EACrC,CAAC,SAAW,CAAC,OAEjB,OAAO,QAAQ,eAAiB,OAEhC,QAAQ,iBAAiB,aAAc,IAAM,SAAS,MAAM,CAAC,EAC7D,QAAQ,iBAAiB,QAAS,IAAM,CAClC,mBACJ,SAAS,MAAM,CACjB,CAAC,EACD,QAAQ,iBAAiB,aAAc,IAAM,UAAU,MAAM,CAAC,EAE9D,KAAK,iBAAiB,aAAc,IAAM,CACxC,OAAO,aAAa,UAAU,CAChC,CAAC,EACD,KAAK,iBAAiB,aAAc,IAAM,UAAU,MAAM,CAAC,EAE3D,QAAQ,iBAAiB,QAAS,IAAM,CAItC,YAAY,EACZ,QAAQ,OAAQ,EAAK,CACvB,CAAC,EAED,OAAO,iBAAiB,WAAa,OAAU,CACzC,OAAO,SAAS,MAAM,aAAa,GACvC,UAAU,MAAM,CAClB,CAAC,EAED,QAAQ,iBAAiB,UAAY,OAAU,CAC7C,GAAI,MAAM,MAAQ,SAAU,CAC1B,QAAQ,OAAQ,EAAK,EACrB,kBAAoB,GACpB,QAAQ,MAAM,EACd,kBAAoB,GACpB,MACF,CAEA,GAAI,MAAM,MAAQ,YAAa,OAC/B,MAAM,eAAe,EACrB,QAAQ,OAAQ,EAAI,EACpB,MAAM,UAAY,KAAK,cAAc,SAAS,EAC1C,WAAW,UAAU,MAAM,CACjC,CAAC,EAED,KAAK,iBAAiB,UAAY,OAAU,CACtC,MAAM,MAAQ,WAClB,QAAQ,OAAQ,EAAK,EACrB,kBAAoB,GACpB,QAAQ,MAAM,EACd,kBAAoB,GACtB,CAAC,EACH,CAAC,EAEI,OAAO,uBACV,OAAO,qBAAuB,GAE9B,SAAS,iBAAiB,QAAU,OAAU,CAC5C,MAAM,YAAc,SAAS,cAAc,gCAAgC,EACvE,CAAC,aAAe,YAAY,SAAS,MAAM,MAAM,GACrD,QAAQ,YAAa,EAAK,CAC5B,CAAC,EAED,OAAO,iBAAiB,SAAU,IAAM,CAClC,OAAO,WAAW,oBAAoB,EAAE,SAC5C,SAAS,iBAAiB,gCAAgC,EAAE,QAAS,QAAW,CAC9E,QAAQ,OAAQ,EAAK,CACvB,CAAC,CACH,EAAG,CAAE,QAAS,EAAK,CAAC,GAMtB,SAAS,iBAAiB,oBAAqB,IAAM,CACnD,YAAY,EACZ,MAAM,QAAS,QAAW,QAAQ,OAAQ,EAAK,CAAC,CAClD,CAAC,CACH,GAEa,EAEb,OAAO,iBAAiB,SAAU,oBAAqB,CAAE,QAAS,EAAK,CAAC,EACxE,OAAO,iBAAiB,SAAU,gBAAiB,CAAE,QAAS,EAAK,CAAC,EACpE,OAAO,iBAAiB,oBAAqB,IAAM,CACjD,OAAO,WAAW,gBAAiB,GAAG,EACtC,OAAO,WAAW,gBAAiB,GAAG,CACxC,EAAG,CAAE,QAAS,EAAK,CAAC,EAEpB,OAAO,iBAAiB,WAAY,gBAAiB,CAAE,QAAS,EAAK,CAAC,EACtE,SAAS,iBAAiB,uBAAwB,eAAe,EACjE,SAAS,iBAAiB,yBAA0B,eAAe,EACnE,SAAS,iBAAiB,2BAA4B,eAAe,EAErE,aAAa,EACb,OAAO,WAAW,aAAc,EAAE,EAClC,OAAO,WAAW,aAAc,GAAG,EACnC,OAAO,WAAW,aAAc,GAAG,CACrC,GAAG",
  "names": []
}
