{
  "version": 3,
  "sources": ["/cdn/shop/t/11/assets/article-product-offer-v3.js?wahup_limit_check=178305"],
  "sourcesContent": ["(() => {\n  const root = document.querySelector('[data-article-product-offer]');\n  if (!root || root.dataset.initialized === 'true') return;\n  const isIPhone = /iPhone|iPod/i.test(navigator.userAgent);\n  const deviceTarget = root.dataset.deviceTarget || 'all';\n  if (\n    (deviceTarget === 'non_iphone' && isIPhone) ||\n    (deviceTarget === 'iphone' && !isIPhone)\n  ) {\n    root.remove();\n    return;\n  }\n  root.dataset.initialized = 'true';\n\n  root.querySelectorAll('.article-product-offer__shipping-badge').forEach((element) => {\n    element.textContent = 'Code WELCOME10';\n  });\n  root.querySelectorAll('.article-product-offer__shipping-line').forEach((element) => {\n    element.innerHTML = '<strong>10% off</strong> first order \u00B7 Delivery <strong><span data-offer-shipping-start></span> - <span data-offer-shipping-end></span></strong>';\n  });\n  root.querySelectorAll('.article-product-offer__launcher-shipping').forEach((element) => {\n    element.textContent = 'WELCOME10: 10% off';\n  });\n\n  const hydrateRandomNewestProduct = async () => {\n    if (root.dataset.randomNewest !== 'true') return true;\n\n    try {\n      const response = await fetch('/products.json?limit=20&order=created_at%20desc', {\n        headers: { Accept: 'application/json' }\n      });\n      if (!response.ok) throw new Error('Product feed request failed');\n\n      const products = (await response.json()).products.filter((product) =>\n        product.variants.some((variant) => variant.available)\n      );\n      if (!products.length) return false;\n\n      const randomValues = new Uint32Array(1);\n      crypto.getRandomValues(randomValues);\n      const product = products[randomValues[0] % products.length];\n      const productUrl = `/products/${product.handle}`;\n      const variants = product.variants.map((variant) => ({\n        id: variant.id,\n        available: variant.available,\n        price: Math.round(Number(variant.price) * 100),\n        compare_at_price: variant.compare_at_price\n          ? Math.round(Number(variant.compare_at_price) * 100)\n          : null,\n        options: [variant.option1, variant.option2, variant.option3].filter(Boolean),\n        featured_image: variant.featured_image\n      }));\n\n      root.dataset.productId = product.id;\n      root.dataset.productHandle = product.handle;\n      root.dataset.productTitle = product.title;\n      root.dataset.offerSource = 'fallback_product';\n      root.querySelectorAll('[data-offer-product-link]:not([data-offer-discover-link])').forEach((link) => {\n        link.href = productUrl;\n      });\n      root.querySelector('[data-offer-title]').textContent = product.title;\n      root.querySelector('[data-offer-launcher-title]').textContent = product.title;\n      root.querySelector('[data-offer-variants]').textContent = JSON.stringify(variants);\n      const launcherImage = root.querySelector('[data-offer-launcher-image]');\n      if (launcherImage && product.images[0]?.src) launcherImage.src = product.images[0].src;\n\n      const initialVariant = variants.find((variant) => variant.available) || variants[0];\n      const track = root.querySelector('[data-offer-track]');\n      const dots = root.querySelector('[data-offer-dots]');\n      const initialImageId = String(initialVariant.featured_image?.id || product.images[0]?.id || '');\n      track.replaceChildren();\n      dots.replaceChildren();\n\n      product.images.forEach((image, index) => {\n        const slide = document.createElement('div');\n        const imageElement = document.createElement('img');\n        const dot = document.createElement('button');\n        const isInitial = String(image.id) === initialImageId || (!initialImageId && index === 0);\n\n        slide.className = `article-product-offer__slide${isInitial ? ' is-active' : ''}`;\n        slide.dataset.offerSlide = '';\n        slide.dataset.imageId = image.id;\n        slide.setAttribute('aria-hidden', isInitial ? 'false' : 'true');\n\n        imageElement.className = 'article-product-offer__image';\n        imageElement.src = image.src;\n        imageElement.alt = image.alt || product.title;\n        imageElement.loading = isInitial ? 'eager' : 'lazy';\n        slide.append(imageElement);\n        track.append(slide);\n\n        dot.className = 'article-product-offer__dot';\n        dot.type = 'button';\n        dot.dataset.offerDot = index;\n        dot.setAttribute('aria-label', `Show product image ${index + 1} of ${product.images.length}`);\n        dot.setAttribute('aria-current', isInitial ? 'true' : 'false');\n        dots.append(dot);\n      });\n\n      let optionsContainer = root.querySelector('[data-offer-options]');\n      if (!optionsContainer) {\n        optionsContainer = document.createElement('div');\n        optionsContainer.className = 'article-product-offer__options';\n        optionsContainer.dataset.offerOptions = '';\n        root.querySelector('[data-offer-actions]').before(optionsContainer);\n      }\n\n      optionsContainer.replaceChildren();\n      product.options.forEach((option, index) => {\n        const label = document.createElement('label');\n        const labelText = document.createElement('span');\n        const select = document.createElement('select');\n        label.className = 'article-product-offer__option';\n        labelText.textContent = option.name;\n        select.dataset.offerOptionIndex = index;\n\n        option.values.forEach((value) => {\n          const optionElement = document.createElement('option');\n          optionElement.value = value;\n          optionElement.textContent = value;\n          optionElement.selected = initialVariant.options[index] === value;\n          select.append(optionElement);\n        });\n\n        label.append(labelText, select);\n        optionsContainer.append(label);\n      });\n      optionsContainer.hidden = product.options.length === 1 && product.options[0].name === 'Title';\n      return true;\n    } catch (error) {\n      console.error('Article product offer could not load newest products.', error);\n      return false;\n    }\n  };\n\n  const initializeOffer = async () => {\n  if (!(await hydrateRandomNewestProduct())) return;\n\n  const dialog = root.querySelector('[role=\"dialog\"]');\n  const variantsElement = root.querySelector('[data-offer-variants]');\n  const optionSelects = [...root.querySelectorAll('[data-offer-option-index]')];\n  const addButton = root.querySelector('[data-offer-add]');\n  const addLabel = root.querySelector('[data-offer-add-label]');\n  const buyButton = root.querySelector('[data-offer-buy]');\n  const buyLabel = root.querySelector('[data-offer-buy-label]');\n  const price = root.querySelector('[data-offer-price]');\n  const comparePrice = root.querySelector('[data-offer-compare-price]');\n  const launcherPrice = root.querySelector('[data-offer-launcher-price]');\n  const launcherComparePrice = root.querySelector('[data-offer-launcher-compare-price]');\n  const status = root.querySelector('[data-offer-status]');\n  const statusMessage = root.querySelector('[data-offer-status-message]');\n  const statusVariant = root.querySelector('[data-offer-status-variant]');\n  const viewCartLink = root.querySelector('[data-offer-view-cart]');\n  const reopenButton = root.querySelector('[data-offer-reopen]');\n  const closeButtons = [...root.querySelectorAll('[data-offer-close]')];\n  const variants = JSON.parse(variantsElement?.textContent || '[]');\n  const articleId = root.dataset.articleId;\n  const articleHandle = root.dataset.articleHandle || '';\n  const articleTitle = root.dataset.articleTitle || document.title;\n  const blogHandle = root.dataset.blogHandle || '';\n  const ga4MeasurementId = root.dataset.ga4MeasurementId || '';\n  const delayMs = Number(root.dataset.delaySeconds || 10) * 1000;\n  const autoOpen = root.dataset.autoOpen !== 'false';\n  const currency = root.dataset.currency || 'USD';\n  const defaultAddText = addLabel?.textContent.trim() || 'Add to cart';\n  const defaultBuyText = buyLabel?.textContent.trim() || 'Buy now';\n  let selectedVariant = variants.find((variant) => variant.available) || variants[0];\n  let activeTime = 0;\n  let lastTick = Date.now();\n  let isOpen = false;\n  let previousFocus = null;\n  let activeSlide = Math.max(0, [...root.querySelectorAll('[data-offer-slide]')].findIndex((slide) => slide.classList.contains('is-active')));\n  let touchStartX = 0;\n  let autoplayTimer = null;\n  let chatObserver = null;\n  let animationTimer = null;\n  let attentionTimer = null;\n  let launcherTouchStartY = 0;\n  let openSource = 'automatic';\n\n  const getOfferSessionId = () => {\n    const storageKey = `wahup_offer_session_${articleId || 'unknown'}`;\n    try {\n      let sessionId = window.sessionStorage.getItem(storageKey);\n      if (!sessionId) {\n        sessionId = typeof crypto.randomUUID === 'function'\n          ? crypto.randomUUID()\n          : `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n        window.sessionStorage.setItem(storageKey, sessionId);\n      }\n      return sessionId;\n    } catch (error) {\n      return `${Date.now()}-${Math.random().toString(36).slice(2)}`;\n    }\n  };\n\n  const offerSessionId = getOfferSessionId();\n\n  root.hidden = false;\n  root.classList.add('is-pending');\n  dialog.setAttribute('aria-hidden', 'true');\n  reopenButton.setAttribute('aria-expanded', 'false');\n\n  const getSelectedVariantDetails = () => optionSelects\n    .map((select) => {\n      const name = select.closest('label')?.querySelector('span')?.textContent.trim();\n      if (!name || name.toLowerCase() === 'title') return '';\n      return `${name}: ${select.value}`;\n    })\n    .filter(Boolean)\n    .join(' \u00B7 ');\n\n  const getTrackingContext = () => ({\n    article_id: String(articleId || ''),\n    article_handle: articleHandle,\n    article_title: articleTitle,\n    blog_handle: blogHandle,\n    product_id: String(root.dataset.productId || ''),\n    product_handle: root.dataset.productHandle || '',\n    product_title: root.dataset.productTitle || '',\n    variant_id: String(selectedVariant?.id || ''),\n    variant_title: getSelectedVariantDetails(),\n    offer_source: root.dataset.offerSource || 'assigned_product',\n    offer_type: 'pod',\n    offer_session_id: offerSessionId,\n    open_source: openSource,\n    currency,\n    value: Number(selectedVariant?.price || 0) / 100\n  });\n\n  const track = (event, details = {}) => {\n    const eventMap = {\n      launcher_view: 'pod_launcher',\n      image_change: 'pod_image',\n      view: 'pod_view',\n      reopen: 'pod_reopen',\n      close: 'pod_close',\n      eligible: 'pod_ready',\n      variant_select: 'pod_variant',\n      add_to_cart: 'pod_atc',\n      add_success: 'pod_added',\n      buy_now: 'pod_buy',\n      checkout_start: 'pod_checkout',\n      error: 'pod_error'\n    };\n    const eventName = eventMap[event] || `pod_${event}`;\n    const parameters = {\n      ...getTrackingContext(),\n      ...details\n    };\n    window.dataLayer = window.dataLayer || [];\n    window.dataLayer.push({\n      event: eventName,\n      ga4_direct_sent: true,\n      ...parameters\n    });\n    window.gtag = window.gtag || function () {\n      window.dataLayer.push(arguments);\n    };\n    window.gtag('event', eventName, {\n      ...parameters,\n      send_to: ga4MeasurementId\n    });\n  };\n\n  const setStatus = (message = '', state = '', variantDetails = '') => {\n    statusMessage.textContent = message;\n    statusVariant.textContent = variantDetails;\n    statusVariant.hidden = !variantDetails;\n    status.hidden = !message;\n    viewCartLink.hidden = state !== 'success';\n    if (state) status.dataset.state = state;\n    else delete status.dataset.state;\n  };\n\n  const formatMoney = (cents) => new Intl.NumberFormat(document.documentElement.lang || 'en-US', {\n    style: 'currency',\n    currency\n  }).format(Number(cents || 0) / 100);\n\n  const formatShippingDate = (daysFromNow) => {\n    const date = new Date();\n    date.setDate(date.getDate() + daysFromNow);\n    return new Intl.DateTimeFormat('en-US', { month: 'short', day: 'numeric' }).format(date);\n  };\n\n  root.querySelectorAll('[data-offer-shipping-start]').forEach((element) => {\n    element.textContent = formatShippingDate(3);\n  });\n  root.querySelectorAll('[data-offer-shipping-end]').forEach((element) => {\n    element.textContent = formatShippingDate(7);\n  });\n\n  const carousel = root.querySelector('[data-offer-carousel]');\n  const previousButton = root.querySelector('[data-offer-previous]');\n  const nextButton = root.querySelector('[data-offer-next]');\n  const dotsContainer = root.querySelector('[data-offer-dots]');\n  const slides = [...root.querySelectorAll('[data-offer-slide]')];\n  const dots = [...root.querySelectorAll('[data-offer-dot]')];\n\n  const preloadSlide = (index) => {\n    if (!slides.length) return;\n    const normalizedIndex = (index + slides.length) % slides.length;\n    const image = slides[normalizedIndex].querySelector('img');\n    if (!image?.src) return;\n    image.loading = 'eager';\n    const preloader = new Image();\n    preloader.src = image.currentSrc || image.src;\n  };\n\n  const goToSlide = (index, shouldTrack = false) => {\n    if (!slides.length) return;\n    activeSlide = (index + slides.length) % slides.length;\n    preloadSlide(activeSlide);\n    preloadSlide(activeSlide - 1);\n    preloadSlide(activeSlide + 1);\n    slides.forEach((slide, slideIndex) => {\n      const isActive = slideIndex === activeSlide;\n      slide.classList.toggle('is-active', isActive);\n      slide.setAttribute('aria-hidden', isActive ? 'false' : 'true');\n    });\n    dots.forEach((dot, dotIndex) => {\n      dot.setAttribute('aria-current', dotIndex === activeSlide ? 'true' : 'false');\n    });\n    if (!root.hidden) {\n      dots[activeSlide]?.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' });\n    }\n    if (shouldTrack) track('image_change', { image_position: activeSlide + 1 });\n  };\n\n  const syncCarouselControls = () => {\n    const hideControls = slides.length < 2;\n    previousButton.hidden = hideControls;\n    nextButton.hidden = hideControls;\n    dotsContainer.hidden = hideControls;\n  };\n\n  const stopAutoplay = () => {\n    clearInterval(autoplayTimer);\n    autoplayTimer = null;\n  };\n\n  const startAutoplay = () => {\n    stopAutoplay();\n    if (\n      slides.length < 2 ||\n      window.matchMedia('(prefers-reduced-motion: reduce)').matches ||\n      document.hidden\n    ) return;\n    autoplayTimer = window.setInterval(() => goToSlide(activeSlide + 1), 4200);\n  };\n\n  const showVariantImage = (variant) => {\n    const imageId = String(variant.featured_image?.id || '');\n    if (!imageId) return;\n    const imageIndex = slides.findIndex((slide) => slide.dataset.imageId === imageId);\n    if (imageIndex >= 0) {\n      goToSlide(imageIndex);\n      const launcherImage = root.querySelector('[data-offer-launcher-image]');\n      const variantImage = slides[imageIndex].querySelector('img');\n      if (launcherImage && variantImage?.src) {\n        launcherImage.src = variantImage.currentSrc || variantImage.src;\n      }\n    }\n  };\n\n  const setChatVisibility = (visible) => {\n    const chat = document.querySelector('#ShopifyChat, inbox-online-store-chat');\n    if (!chat) return;\n    if (visible) {\n      chat.style.removeProperty('visibility');\n      chat.style.removeProperty('opacity');\n      chat.style.removeProperty('pointer-events');\n      chat.style.removeProperty('z-index');\n    } else {\n      chat.style.setProperty('visibility', 'hidden', 'important');\n      chat.style.setProperty('opacity', '0', 'important');\n      chat.style.setProperty('pointer-events', 'none', 'important');\n      chat.style.setProperty('z-index', '-1', 'important');\n    }\n  };\n\n  const watchChat = () => {\n    chatObserver?.disconnect();\n    setChatVisibility(false);\n    chatObserver = new MutationObserver(() => setChatVisibility(false));\n    chatObserver.observe(document.body, { childList: true, subtree: true });\n  };\n\n  const show = (isReopen = false, source = 'automatic') => {\n    if (isOpen) return;\n    openSource = source;\n    clearTimeout(attentionTimer);\n    clearTimeout(animationTimer);\n    isOpen = true;\n    previousFocus = document.activeElement;\n    root.hidden = false;\n    root.classList.remove('is-attention', 'is-pending', 'is-collapsed', 'is-closing');\n    root.classList.add('is-opening');\n    dialog.removeAttribute('aria-hidden');\n    reopenButton.setAttribute('aria-expanded', 'true');\n    document.body.classList.add('article-product-offer-open');\n    watchChat();\n    dialog.focus({ preventScroll: true });\n    startAutoplay();\n    animationTimer = window.setTimeout(() => root.classList.remove('is-opening'), 560);\n    track(isReopen ? 'reopen' : 'view', { active_time_ms: Math.round(activeTime) });\n  };\n\n  const openWithLauncherAnimation = (isReopen = false, source = 'automatic') => {\n    if (isOpen) return;\n    if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) {\n      show(isReopen, source);\n      return;\n    }\n\n    clearTimeout(attentionTimer);\n    root.classList.add('is-attention');\n    attentionTimer = window.setTimeout(() => {\n      root.classList.remove('is-attention');\n      show(isReopen, source);\n    }, 430);\n  };\n\n  const close = () => {\n    if (!isOpen) return;\n    clearTimeout(attentionTimer);\n    clearTimeout(animationTimer);\n    isOpen = false;\n    root.classList.remove('is-attention', 'is-opening');\n    root.classList.add('is-closing');\n    document.body.classList.remove('article-product-offer-open');\n    stopAutoplay();\n    animationTimer = window.setTimeout(() => {\n      root.classList.remove('is-closing');\n      root.classList.add('is-collapsed');\n      dialog.setAttribute('aria-hidden', 'true');\n      reopenButton.setAttribute('aria-expanded', 'false');\n      reopenButton.focus({ preventScroll: true });\n    }, window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 0 : 290);\n    track('close');\n  };\n\n  const checkEligibility = () => {\n    if (!autoOpen || isOpen || document.hidden) return;\n    const now = Date.now();\n    activeTime += now - lastTick;\n    lastTick = now;\n\n    if (activeTime >= delayMs) {\n      track('eligible', { active_time_ms: Math.round(activeTime) });\n      openWithLauncherAnimation(false, 'automatic');\n      clearInterval(eligibilityTimer);\n    }\n  };\n\n  const updateVariant = (shouldTrack = false) => {\n    const selectedOptions = optionSelects.map((select) => select.value);\n    selectedVariant = variants.find((variant) =>\n      selectedOptions.every((value, index) => variant.options[index] === value)\n    );\n\n    if (!selectedVariant) {\n      addButton.disabled = true;\n      addLabel.textContent = 'Unavailable';\n      buyButton.disabled = true;\n      buyLabel.textContent = 'Unavailable';\n      setStatus();\n      return;\n    }\n\n    price.textContent = formatMoney(selectedVariant.price);\n    if (launcherPrice) launcherPrice.textContent = formatMoney(selectedVariant.price);\n    if (selectedVariant.compare_at_price > selectedVariant.price) {\n      comparePrice.textContent = formatMoney(selectedVariant.compare_at_price);\n      comparePrice.hidden = false;\n      if (launcherComparePrice) {\n        launcherComparePrice.textContent = formatMoney(selectedVariant.compare_at_price);\n        launcherComparePrice.hidden = false;\n      }\n    } else {\n      comparePrice.hidden = true;\n      if (launcherComparePrice) launcherComparePrice.hidden = true;\n    }\n\n    showVariantImage(selectedVariant);\n\n    addButton.disabled = !selectedVariant.available;\n    addLabel.textContent = selectedVariant.available ? defaultAddText : 'Sold out';\n    buyButton.disabled = !selectedVariant.available;\n    buyLabel.textContent = selectedVariant.available ? defaultBuyText : 'Sold out';\n    setStatus();\n    if (shouldTrack) track('variant_select');\n  };\n\n  const setActionState = (isLoading, activeButton) => {\n    const unavailable = !selectedVariant?.available;\n    addButton.disabled = isLoading || unavailable;\n    buyButton.disabled = isLoading || unavailable;\n    addButton.toggleAttribute('aria-busy', isLoading && activeButton === addButton);\n    buyButton.toggleAttribute('aria-busy', isLoading && activeButton === buyButton);\n  };\n\n  const addSelectedVariant = async () => {\n    const response = await fetch(window.routes?.cart_add_url || '/cart/add.js', {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        Accept: 'application/json',\n        'X-Requested-With': 'XMLHttpRequest'\n      },\n      body: JSON.stringify({\n        items: [{\n          id: selectedVariant.id,\n          quantity: 1,\n          properties: {\n            _offer_source: 'article_product_offer',\n            _offer_session_id: offerSessionId,\n            _article_id: String(articleId || ''),\n            _article_handle: articleHandle\n          }\n        }]\n      })\n    });\n\n    const result = await response.json();\n    if (!response.ok || result.status) {\n      throw new Error(result.description || 'Cart request failed');\n    }\n    return result;\n  };\n\n  const addToCart = async () => {\n    if (!selectedVariant?.available || addButton.disabled) return;\n    setActionState(true, addButton);\n    setStatus();\n    track('add_to_cart');\n\n    try {\n      await addSelectedVariant();\n      track('add_success', { action: 'add_to_cart' });\n      addLabel.textContent = 'Added';\n      setStatus('Added to cart.', 'success', getSelectedVariantDetails());\n      if (typeof window.renderCountInCart === 'function') window.renderCountInCart();\n      window.dispatchEvent(new CustomEvent('cart:updated', {\n        detail: { source: 'article-product-offer' }\n      }));\n    } catch (error) {\n      setStatus(error.message || 'Could not add this item. Please try again.');\n      track('error', {\n        action: 'add_to_cart',\n        error_message: String(error.message || '').slice(0, 100)\n      });\n    } finally {\n      setActionState(false);\n      window.setTimeout(() => {\n        if (selectedVariant?.available) addLabel.textContent = defaultAddText;\n      }, 1800);\n    }\n  };\n\n  const buyNow = async () => {\n    if (!selectedVariant?.available || buyButton.disabled) return;\n    setActionState(true, buyButton);\n    buyButton.disabled = true;\n    setStatus();\n    track('buy_now');\n\n    try {\n      await addSelectedVariant();\n      track('add_success', { action: 'buy_now' });\n      track('checkout_start', { action: 'buy_now' });\n      window.location.assign('/checkout');\n    } catch (error) {\n      setStatus(error.message || 'Could not add this item. Please try again.');\n      track('error', {\n        action: 'buy_now',\n        error_message: String(error.message || '').slice(0, 100)\n      });\n      setActionState(false);\n    } finally {\n      buyButton.removeAttribute('aria-busy');\n    }\n  };\n\n  const eligibilityTimer = window.setInterval(checkEligibility, 500);\n\n  document.addEventListener('visibilitychange', () => {\n    lastTick = Date.now();\n    if (document.hidden) stopAutoplay();\n    else if (isOpen) startAutoplay();\n  });\n\n  closeButtons.forEach((button) => button.addEventListener('click', close));\n  reopenButton.addEventListener('click', () => openWithLauncherAnimation(true, 'launcher'));\n  document.addEventListener('article-product-offer:open', (event) => {\n    event.preventDefault();\n    const source = event.detail?.source === 'article-meme-quiz' ? 'quiz' : 'external';\n    openWithLauncherAnimation(true, source);\n  });\n  reopenButton.addEventListener('touchstart', (event) => {\n    launcherTouchStartY = event.changedTouches[0].clientY;\n  }, { passive: true });\n  reopenButton.addEventListener('touchend', (event) => {\n    if (event.changedTouches[0].clientY - launcherTouchStartY < -24) {\n      openWithLauncherAnimation(true, 'launcher_swipe');\n    }\n  }, { passive: true });\n  optionSelects.forEach((select) => select.addEventListener('change', () => updateVariant(true)));\n  addButton.addEventListener('click', addToCart);\n  buyButton.addEventListener('click', buyNow);\n  previousButton.addEventListener('click', () => goToSlide(activeSlide - 1, true));\n  nextButton.addEventListener('click', () => goToSlide(activeSlide + 1, true));\n  dots.forEach((dot, index) => dot.addEventListener('click', () => goToSlide(index, true)));\n  carousel.addEventListener('mouseenter', stopAutoplay);\n  carousel.addEventListener('mouseleave', startAutoplay);\n  carousel.addEventListener('focusin', stopAutoplay);\n  carousel.addEventListener('focusout', startAutoplay);\n  carousel.addEventListener('touchstart', (event) => {\n    stopAutoplay();\n    touchStartX = event.changedTouches[0].clientX;\n  }, { passive: true });\n  carousel.addEventListener('touchend', (event) => {\n    const distance = event.changedTouches[0].clientX - touchStartX;\n    if (Math.abs(distance) >= 40) {\n      goToSlide(activeSlide + (distance < 0 ? 1 : -1), true);\n    }\n    startAutoplay();\n  }, { passive: true });\n\n  document.addEventListener('keydown', (event) => {\n    if (!isOpen) return;\n    if (event.key === 'Escape') close();\n    if (event.key === 'ArrowLeft' && event.target.tagName !== 'SELECT') goToSlide(activeSlide - 1, true);\n    if (event.key === 'ArrowRight' && event.target.tagName !== 'SELECT') goToSlide(activeSlide + 1, true);\n    if (event.key !== 'Tab') return;\n\n    const focusable = [...dialog.querySelectorAll('button:not([disabled]), a[href], select:not([disabled])')];\n    const first = focusable[0];\n    const last = focusable[focusable.length - 1];\n    if (event.shiftKey && document.activeElement === first) {\n      event.preventDefault();\n      last.focus();\n    } else if (!event.shiftKey && document.activeElement === last) {\n      event.preventDefault();\n      first.focus();\n    }\n  });\n\n  syncCarouselControls();\n  goToSlide(activeSlide);\n  updateVariant();\n  track('launcher_view');\n  };\n\n  initializeOffer();\n})();\n"],
  "mappings": "CAAC,IAAM,CACL,MAAM,KAAO,SAAS,cAAc,8BAA8B,EAClE,GAAI,CAAC,MAAQ,KAAK,QAAQ,cAAgB,OAAQ,OAClD,MAAM,SAAW,eAAe,KAAK,UAAU,SAAS,EAClD,aAAe,KAAK,QAAQ,cAAgB,MAClD,GACG,eAAiB,cAAgB,UACjC,eAAiB,UAAY,CAAC,SAC/B,CACA,KAAK,OAAO,EACZ,MACF,CACA,KAAK,QAAQ,YAAc,OAE3B,KAAK,iBAAiB,wCAAwC,EAAE,QAAS,SAAY,CACnF,QAAQ,YAAc,gBACxB,CAAC,EACD,KAAK,iBAAiB,uCAAuC,EAAE,QAAS,SAAY,CAClF,QAAQ,UAAY,qJACtB,CAAC,EACD,KAAK,iBAAiB,2CAA2C,EAAE,QAAS,SAAY,CACtF,QAAQ,YAAc,oBACxB,CAAC,EAED,MAAM,2BAA6B,SAAY,CAC7C,GAAI,KAAK,QAAQ,eAAiB,OAAQ,MAAO,GAEjD,GAAI,CACF,MAAM,SAAW,MAAM,MAAM,kDAAmD,CAC9E,QAAS,CAAE,OAAQ,kBAAmB,CACxC,CAAC,EACD,GAAI,CAAC,SAAS,GAAI,MAAM,IAAI,MAAM,6BAA6B,EAE/D,MAAM,UAAY,MAAM,SAAS,KAAK,GAAG,SAAS,OAAQA,UACxDA,SAAQ,SAAS,KAAM,SAAY,QAAQ,SAAS,CACtD,EACA,GAAI,CAAC,SAAS,OAAQ,MAAO,GAE7B,MAAM,aAAe,IAAI,YAAY,CAAC,EACtC,OAAO,gBAAgB,YAAY,EACnC,MAAM,QAAU,SAAS,aAAa,CAAC,EAAI,SAAS,MAAM,EACpD,WAAa,aAAa,QAAQ,MAAM,GACxC,SAAW,QAAQ,SAAS,IAAK,UAAa,CAClD,GAAI,QAAQ,GACZ,UAAW,QAAQ,UACnB,MAAO,KAAK,MAAM,OAAO,QAAQ,KAAK,EAAI,GAAG,EAC7C,iBAAkB,QAAQ,iBACtB,KAAK,MAAM,OAAO,QAAQ,gBAAgB,EAAI,GAAG,EACjD,KACJ,QAAS,CAAC,QAAQ,QAAS,QAAQ,QAAS,QAAQ,OAAO,EAAE,OAAO,OAAO,EAC3E,eAAgB,QAAQ,cAC1B,EAAE,EAEF,KAAK,QAAQ,UAAY,QAAQ,GACjC,KAAK,QAAQ,cAAgB,QAAQ,OACrC,KAAK,QAAQ,aAAe,QAAQ,MACpC,KAAK,QAAQ,YAAc,mBAC3B,KAAK,iBAAiB,2DAA2D,EAAE,QAAS,MAAS,CACnG,KAAK,KAAO,UACd,CAAC,EACD,KAAK,cAAc,oBAAoB,EAAE,YAAc,QAAQ,MAC/D,KAAK,cAAc,6BAA6B,EAAE,YAAc,QAAQ,MACxE,KAAK,cAAc,uBAAuB,EAAE,YAAc,KAAK,UAAU,QAAQ,EACjF,MAAM,cAAgB,KAAK,cAAc,6BAA6B,EAClE,eAAiB,QAAQ,OAAO,CAAC,GAAG,MAAK,cAAc,IAAM,QAAQ,OAAO,CAAC,EAAE,KAEnF,MAAM,eAAiB,SAAS,KAAM,SAAY,QAAQ,SAAS,GAAK,SAAS,CAAC,EAC5E,MAAQ,KAAK,cAAc,oBAAoB,EAC/C,KAAO,KAAK,cAAc,mBAAmB,EAC7C,eAAiB,OAAO,eAAe,gBAAgB,IAAM,QAAQ,OAAO,CAAC,GAAG,IAAM,EAAE,EAC9F,MAAM,gBAAgB,EACtB,KAAK,gBAAgB,EAErB,QAAQ,OAAO,QAAQ,CAAC,MAAO,QAAU,CACvC,MAAM,MAAQ,SAAS,cAAc,KAAK,EACpC,aAAe,SAAS,cAAc,KAAK,EAC3C,IAAM,SAAS,cAAc,QAAQ,EACrC,UAAY,OAAO,MAAM,EAAE,IAAM,gBAAmB,CAAC,gBAAkB,QAAU,EAEvF,MAAM,UAAY,+BAA+B,UAAY,aAAe,EAAE,GAC9E,MAAM,QAAQ,WAAa,GAC3B,MAAM,QAAQ,QAAU,MAAM,GAC9B,MAAM,aAAa,cAAe,UAAY,QAAU,MAAM,EAE9D,aAAa,UAAY,+BACzB,aAAa,IAAM,MAAM,IACzB,aAAa,IAAM,MAAM,KAAO,QAAQ,MACxC,aAAa,QAAU,UAAY,QAAU,OAC7C,MAAM,OAAO,YAAY,EACzB,MAAM,OAAO,KAAK,EAElB,IAAI,UAAY,6BAChB,IAAI,KAAO,SACX,IAAI,QAAQ,SAAW,MACvB,IAAI,aAAa,aAAc,sBAAsB,MAAQ,CAAC,OAAO,QAAQ,OAAO,MAAM,EAAE,EAC5F,IAAI,aAAa,eAAgB,UAAY,OAAS,OAAO,EAC7D,KAAK,OAAO,GAAG,CACjB,CAAC,EAED,IAAI,iBAAmB,KAAK,cAAc,sBAAsB,EAChE,OAAK,mBACH,iBAAmB,SAAS,cAAc,KAAK,EAC/C,iBAAiB,UAAY,iCAC7B,iBAAiB,QAAQ,aAAe,GACxC,KAAK,cAAc,sBAAsB,EAAE,OAAO,gBAAgB,GAGpE,iBAAiB,gBAAgB,EACjC,QAAQ,QAAQ,QAAQ,CAAC,OAAQ,QAAU,CACzC,MAAM,MAAQ,SAAS,cAAc,OAAO,EACtC,UAAY,SAAS,cAAc,MAAM,EACzC,OAAS,SAAS,cAAc,QAAQ,EAC9C,MAAM,UAAY,gCAClB,UAAU,YAAc,OAAO,KAC/B,OAAO,QAAQ,iBAAmB,MAElC,OAAO,OAAO,QAAS,OAAU,CAC/B,MAAM,cAAgB,SAAS,cAAc,QAAQ,EACrD,cAAc,MAAQ,MACtB,cAAc,YAAc,MAC5B,cAAc,SAAW,eAAe,QAAQ,KAAK,IAAM,MAC3D,OAAO,OAAO,aAAa,CAC7B,CAAC,EAED,MAAM,OAAO,UAAW,MAAM,EAC9B,iBAAiB,OAAO,KAAK,CAC/B,CAAC,EACD,iBAAiB,OAAS,QAAQ,QAAQ,SAAW,GAAK,QAAQ,QAAQ,CAAC,EAAE,OAAS,QAC/E,EACT,OAAS,MAAO,CACd,eAAQ,MAAM,wDAAyD,KAAK,EACrE,EACT,CACF,GAEwB,SAAY,CACpC,GAAI,CAAE,MAAM,2BAA2B,EAAI,OAE3C,MAAM,OAAS,KAAK,cAAc,iBAAiB,EAC7C,gBAAkB,KAAK,cAAc,uBAAuB,EAC5D,cAAgB,CAAC,GAAG,KAAK,iBAAiB,2BAA2B,CAAC,EACtE,UAAY,KAAK,cAAc,kBAAkB,EACjD,SAAW,KAAK,cAAc,wBAAwB,EACtD,UAAY,KAAK,cAAc,kBAAkB,EACjD,SAAW,KAAK,cAAc,wBAAwB,EACtD,MAAQ,KAAK,cAAc,oBAAoB,EAC/C,aAAe,KAAK,cAAc,4BAA4B,EAC9D,cAAgB,KAAK,cAAc,6BAA6B,EAChE,qBAAuB,KAAK,cAAc,qCAAqC,EAC/E,OAAS,KAAK,cAAc,qBAAqB,EACjD,cAAgB,KAAK,cAAc,6BAA6B,EAChE,cAAgB,KAAK,cAAc,6BAA6B,EAChE,aAAe,KAAK,cAAc,wBAAwB,EAC1D,aAAe,KAAK,cAAc,qBAAqB,EACvD,aAAe,CAAC,GAAG,KAAK,iBAAiB,oBAAoB,CAAC,EAC9D,SAAW,KAAK,MAAM,iBAAiB,aAAe,IAAI,EAC1D,UAAY,KAAK,QAAQ,UACzB,cAAgB,KAAK,QAAQ,eAAiB,GAC9C,aAAe,KAAK,QAAQ,cAAgB,SAAS,MACrD,WAAa,KAAK,QAAQ,YAAc,GACxC,iBAAmB,KAAK,QAAQ,kBAAoB,GACpD,QAAU,OAAO,KAAK,QAAQ,cAAgB,EAAE,EAAI,IACpD,SAAW,KAAK,QAAQ,WAAa,QACrC,SAAW,KAAK,QAAQ,UAAY,MACpC,eAAiB,UAAU,YAAY,KAAK,GAAK,cACjD,eAAiB,UAAU,YAAY,KAAK,GAAK,UACvD,IAAI,gBAAkB,SAAS,KAAM,SAAY,QAAQ,SAAS,GAAK,SAAS,CAAC,EAC7E,WAAa,EACb,SAAW,KAAK,IAAI,EACpB,OAAS,GACT,cAAgB,KAChB,YAAc,KAAK,IAAI,EAAG,CAAC,GAAG,KAAK,iBAAiB,oBAAoB,CAAC,EAAE,UAAW,OAAU,MAAM,UAAU,SAAS,WAAW,CAAC,CAAC,EACtI,YAAc,EACd,cAAgB,KAChB,aAAe,KACf,eAAiB,KACjB,eAAiB,KACjB,oBAAsB,EACtB,WAAa,YAkBjB,MAAM,gBAhBoB,IAAM,CAC9B,MAAM,WAAa,uBAAuB,WAAa,SAAS,GAChE,GAAI,CACF,IAAI,UAAY,OAAO,eAAe,QAAQ,UAAU,EACxD,OAAK,YACH,UAAY,OAAO,OAAO,YAAe,WACrC,OAAO,WAAW,EAClB,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,GACxD,OAAO,eAAe,QAAQ,WAAY,SAAS,GAE9C,SACT,MAAgB,CACd,MAAO,GAAG,KAAK,IAAI,CAAC,IAAI,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC,EAC7D,CACF,GAEyC,EAEzC,KAAK,OAAS,GACd,KAAK,UAAU,IAAI,YAAY,EAC/B,OAAO,aAAa,cAAe,MAAM,EACzC,aAAa,aAAa,gBAAiB,OAAO,EAElD,MAAM,0BAA4B,IAAM,cACrC,IAAK,QAAW,CACf,MAAM,KAAO,OAAO,QAAQ,OAAO,GAAG,cAAc,MAAM,GAAG,YAAY,KAAK,EAC9E,MAAI,CAAC,MAAQ,KAAK,YAAY,IAAM,QAAgB,GAC7C,GAAG,IAAI,KAAK,OAAO,KAAK,EACjC,CAAC,EACA,OAAO,OAAO,EACd,KAAK,QAAK,EAEP,mBAAqB,KAAO,CAChC,WAAY,OAAO,WAAa,EAAE,EAClC,eAAgB,cAChB,cAAe,aACf,YAAa,WACb,WAAY,OAAO,KAAK,QAAQ,WAAa,EAAE,EAC/C,eAAgB,KAAK,QAAQ,eAAiB,GAC9C,cAAe,KAAK,QAAQ,cAAgB,GAC5C,WAAY,OAAO,iBAAiB,IAAM,EAAE,EAC5C,cAAe,0BAA0B,EACzC,aAAc,KAAK,QAAQ,aAAe,mBAC1C,WAAY,MACZ,iBAAkB,eAClB,YAAa,WACb,SACA,MAAO,OAAO,iBAAiB,OAAS,CAAC,EAAI,GAC/C,GAEM,MAAQ,CAAC,MAAO,QAAU,CAAC,IAAM,CAerC,MAAM,UAdW,CACf,cAAe,eACf,aAAc,YACd,KAAM,WACN,OAAQ,aACR,MAAO,YACP,SAAU,YACV,eAAgB,cAChB,YAAa,UACb,YAAa,YACb,QAAS,UACT,eAAgB,eAChB,MAAO,WACT,EAC2B,KAAK,GAAK,OAAO,KAAK,GAC3C,WAAa,CACjB,GAAG,mBAAmB,EACtB,GAAG,OACL,EACA,OAAO,UAAY,OAAO,WAAa,CAAC,EACxC,OAAO,UAAU,KAAK,CACpB,MAAO,UACP,gBAAiB,GACjB,GAAG,UACL,CAAC,EACD,OAAO,KAAO,OAAO,MAAQ,UAAY,CACvC,OAAO,UAAU,KAAK,SAAS,CACjC,EACA,OAAO,KAAK,QAAS,UAAW,CAC9B,GAAG,WACH,QAAS,gBACX,CAAC,CACH,EAEM,UAAY,CAAC,QAAU,GAAI,MAAQ,GAAI,eAAiB,KAAO,CACnE,cAAc,YAAc,QAC5B,cAAc,YAAc,eAC5B,cAAc,OAAS,CAAC,eACxB,OAAO,OAAS,CAAC,QACjB,aAAa,OAAS,QAAU,UAC5B,MAAO,OAAO,QAAQ,MAAQ,MAC7B,OAAO,OAAO,QAAQ,KAC7B,EAEM,YAAe,OAAU,IAAI,KAAK,aAAa,SAAS,gBAAgB,MAAQ,QAAS,CAC7F,MAAO,WACP,QACF,CAAC,EAAE,OAAO,OAAO,OAAS,CAAC,EAAI,GAAG,EAE5B,mBAAsB,aAAgB,CAC1C,MAAM,KAAO,IAAI,KACjB,YAAK,QAAQ,KAAK,QAAQ,EAAI,WAAW,EAClC,IAAI,KAAK,eAAe,QAAS,CAAE,MAAO,QAAS,IAAK,SAAU,CAAC,EAAE,OAAO,IAAI,CACzF,EAEA,KAAK,iBAAiB,6BAA6B,EAAE,QAAS,SAAY,CACxE,QAAQ,YAAc,mBAAmB,CAAC,CAC5C,CAAC,EACD,KAAK,iBAAiB,2BAA2B,EAAE,QAAS,SAAY,CACtE,QAAQ,YAAc,mBAAmB,CAAC,CAC5C,CAAC,EAED,MAAM,SAAW,KAAK,cAAc,uBAAuB,EACrD,eAAiB,KAAK,cAAc,uBAAuB,EAC3D,WAAa,KAAK,cAAc,mBAAmB,EACnD,cAAgB,KAAK,cAAc,mBAAmB,EACtD,OAAS,CAAC,GAAG,KAAK,iBAAiB,oBAAoB,CAAC,EACxD,KAAO,CAAC,GAAG,KAAK,iBAAiB,kBAAkB,CAAC,EAEpD,aAAgB,OAAU,CAC9B,GAAI,CAAC,OAAO,OAAQ,OACpB,MAAM,iBAAmB,MAAQ,OAAO,QAAU,OAAO,OACnD,MAAQ,OAAO,eAAe,EAAE,cAAc,KAAK,EACzD,GAAI,CAAC,OAAO,IAAK,OACjB,MAAM,QAAU,QAChB,MAAM,UAAY,IAAI,MACtB,UAAU,IAAM,MAAM,YAAc,MAAM,GAC5C,EAEM,UAAY,CAAC,MAAO,YAAc,KAAU,CAC3C,OAAO,SACZ,aAAe,MAAQ,OAAO,QAAU,OAAO,OAC/C,aAAa,WAAW,EACxB,aAAa,YAAc,CAAC,EAC5B,aAAa,YAAc,CAAC,EAC5B,OAAO,QAAQ,CAAC,MAAO,aAAe,CACpC,MAAM,SAAW,aAAe,YAChC,MAAM,UAAU,OAAO,YAAa,QAAQ,EAC5C,MAAM,aAAa,cAAe,SAAW,QAAU,MAAM,CAC/D,CAAC,EACD,KAAK,QAAQ,CAAC,IAAK,WAAa,CAC9B,IAAI,aAAa,eAAgB,WAAa,YAAc,OAAS,OAAO,CAC9E,CAAC,EACI,KAAK,QACR,KAAK,WAAW,GAAG,eAAe,CAAE,SAAU,SAAU,MAAO,UAAW,OAAQ,QAAS,CAAC,EAE1F,aAAa,MAAM,eAAgB,CAAE,eAAgB,YAAc,CAAE,CAAC,EAC5E,EAEM,qBAAuB,IAAM,CACjC,MAAM,aAAe,OAAO,OAAS,EACrC,eAAe,OAAS,aACxB,WAAW,OAAS,aACpB,cAAc,OAAS,YACzB,EAEM,aAAe,IAAM,CACzB,cAAc,aAAa,EAC3B,cAAgB,IAClB,EAEM,cAAgB,IAAM,CAC1B,aAAa,EAEX,SAAO,OAAS,GAChB,OAAO,WAAW,kCAAkC,EAAE,SACtD,SAAS,UAEX,cAAgB,OAAO,YAAY,IAAM,UAAU,YAAc,CAAC,EAAG,IAAI,EAC3E,EAEM,iBAAoB,SAAY,CACpC,MAAM,QAAU,OAAO,QAAQ,gBAAgB,IAAM,EAAE,EACvD,GAAI,CAAC,QAAS,OACd,MAAM,WAAa,OAAO,UAAW,OAAU,MAAM,QAAQ,UAAY,OAAO,EAChF,GAAI,YAAc,EAAG,CACnB,UAAU,UAAU,EACpB,MAAM,cAAgB,KAAK,cAAc,6BAA6B,EAChE,aAAe,OAAO,UAAU,EAAE,cAAc,KAAK,EACvD,eAAiB,cAAc,MACjC,cAAc,IAAM,aAAa,YAAc,aAAa,IAEhE,CACF,EAEM,kBAAqB,SAAY,CACrC,MAAM,KAAO,SAAS,cAAc,uCAAuC,EACtE,OACD,SACF,KAAK,MAAM,eAAe,YAAY,EACtC,KAAK,MAAM,eAAe,SAAS,EACnC,KAAK,MAAM,eAAe,gBAAgB,EAC1C,KAAK,MAAM,eAAe,SAAS,IAEnC,KAAK,MAAM,YAAY,aAAc,SAAU,WAAW,EAC1D,KAAK,MAAM,YAAY,UAAW,IAAK,WAAW,EAClD,KAAK,MAAM,YAAY,iBAAkB,OAAQ,WAAW,EAC5D,KAAK,MAAM,YAAY,UAAW,KAAM,WAAW,GAEvD,EAEM,UAAY,IAAM,CACtB,cAAc,WAAW,EACzB,kBAAkB,EAAK,EACvB,aAAe,IAAI,iBAAiB,IAAM,kBAAkB,EAAK,CAAC,EAClE,aAAa,QAAQ,SAAS,KAAM,CAAE,UAAW,GAAM,QAAS,EAAK,CAAC,CACxE,EAEM,KAAO,CAAC,SAAW,GAAO,OAAS,cAAgB,CACnD,SACJ,WAAa,OACb,aAAa,cAAc,EAC3B,aAAa,cAAc,EAC3B,OAAS,GACT,cAAgB,SAAS,cACzB,KAAK,OAAS,GACd,KAAK,UAAU,OAAO,eAAgB,aAAc,eAAgB,YAAY,EAChF,KAAK,UAAU,IAAI,YAAY,EAC/B,OAAO,gBAAgB,aAAa,EACpC,aAAa,aAAa,gBAAiB,MAAM,EACjD,SAAS,KAAK,UAAU,IAAI,4BAA4B,EACxD,UAAU,EACV,OAAO,MAAM,CAAE,cAAe,EAAK,CAAC,EACpC,cAAc,EACd,eAAiB,OAAO,WAAW,IAAM,KAAK,UAAU,OAAO,YAAY,EAAG,GAAG,EACjF,MAAM,SAAW,SAAW,OAAQ,CAAE,eAAgB,KAAK,MAAM,UAAU,CAAE,CAAC,EAChF,EAEM,0BAA4B,CAAC,SAAW,GAAO,OAAS,cAAgB,CAC5E,GAAI,QACJ,IAAI,OAAO,WAAW,kCAAkC,EAAE,QAAS,CACjE,KAAK,SAAU,MAAM,EACrB,MACF,CAEA,aAAa,cAAc,EAC3B,KAAK,UAAU,IAAI,cAAc,EACjC,eAAiB,OAAO,WAAW,IAAM,CACvC,KAAK,UAAU,OAAO,cAAc,EACpC,KAAK,SAAU,MAAM,CACvB,EAAG,GAAG,EACR,EAEM,MAAQ,IAAM,CACb,SACL,aAAa,cAAc,EAC3B,aAAa,cAAc,EAC3B,OAAS,GACT,KAAK,UAAU,OAAO,eAAgB,YAAY,EAClD,KAAK,UAAU,IAAI,YAAY,EAC/B,SAAS,KAAK,UAAU,OAAO,4BAA4B,EAC3D,aAAa,EACb,eAAiB,OAAO,WAAW,IAAM,CACvC,KAAK,UAAU,OAAO,YAAY,EAClC,KAAK,UAAU,IAAI,cAAc,EACjC,OAAO,aAAa,cAAe,MAAM,EACzC,aAAa,aAAa,gBAAiB,OAAO,EAClD,aAAa,MAAM,CAAE,cAAe,EAAK,CAAC,CAC5C,EAAG,OAAO,WAAW,kCAAkC,EAAE,QAAU,EAAI,GAAG,EAC1E,MAAM,OAAO,EACf,EAEM,iBAAmB,IAAM,CAC7B,GAAI,CAAC,UAAY,QAAU,SAAS,OAAQ,OAC5C,MAAM,IAAM,KAAK,IAAI,EACrB,YAAc,IAAM,SACpB,SAAW,IAEP,YAAc,UAChB,MAAM,WAAY,CAAE,eAAgB,KAAK,MAAM,UAAU,CAAE,CAAC,EAC5D,0BAA0B,GAAO,WAAW,EAC5C,cAAc,gBAAgB,EAElC,EAEM,cAAgB,CAAC,YAAc,KAAU,CAC7C,MAAM,gBAAkB,cAAc,IAAK,QAAW,OAAO,KAAK,EAKlE,GAJA,gBAAkB,SAAS,KAAM,SAC/B,gBAAgB,MAAM,CAAC,MAAO,QAAU,QAAQ,QAAQ,KAAK,IAAM,KAAK,CAC1E,EAEI,CAAC,gBAAiB,CACpB,UAAU,SAAW,GACrB,SAAS,YAAc,cACvB,UAAU,SAAW,GACrB,SAAS,YAAc,cACvB,UAAU,EACV,MACF,CAEA,MAAM,YAAc,YAAY,gBAAgB,KAAK,EACjD,gBAAe,cAAc,YAAc,YAAY,gBAAgB,KAAK,GAC5E,gBAAgB,iBAAmB,gBAAgB,OACrD,aAAa,YAAc,YAAY,gBAAgB,gBAAgB,EACvE,aAAa,OAAS,GAClB,uBACF,qBAAqB,YAAc,YAAY,gBAAgB,gBAAgB,EAC/E,qBAAqB,OAAS,MAGhC,aAAa,OAAS,GAClB,uBAAsB,qBAAqB,OAAS,KAG1D,iBAAiB,eAAe,EAEhC,UAAU,SAAW,CAAC,gBAAgB,UACtC,SAAS,YAAc,gBAAgB,UAAY,eAAiB,WACpE,UAAU,SAAW,CAAC,gBAAgB,UACtC,SAAS,YAAc,gBAAgB,UAAY,eAAiB,WACpE,UAAU,EACN,aAAa,MAAM,gBAAgB,CACzC,EAEM,eAAiB,CAAC,UAAW,eAAiB,CAClD,MAAM,YAAc,CAAC,iBAAiB,UACtC,UAAU,SAAW,WAAa,YAClC,UAAU,SAAW,WAAa,YAClC,UAAU,gBAAgB,YAAa,WAAa,eAAiB,SAAS,EAC9E,UAAU,gBAAgB,YAAa,WAAa,eAAiB,SAAS,CAChF,EAEM,mBAAqB,SAAY,CACrC,MAAM,SAAW,MAAM,MAAM,OAAO,QAAQ,cAAgB,eAAgB,CAC1E,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,OAAQ,mBACR,mBAAoB,gBACtB,EACA,KAAM,KAAK,UAAU,CACnB,MAAO,CAAC,CACN,GAAI,gBAAgB,GACpB,SAAU,EACV,WAAY,CACV,cAAe,wBACf,kBAAmB,eACnB,YAAa,OAAO,WAAa,EAAE,EACnC,gBAAiB,aACnB,CACF,CAAC,CACH,CAAC,CACH,CAAC,EAEK,OAAS,MAAM,SAAS,KAAK,EACnC,GAAI,CAAC,SAAS,IAAM,OAAO,OACzB,MAAM,IAAI,MAAM,OAAO,aAAe,qBAAqB,EAE7D,OAAO,MACT,EAEM,UAAY,SAAY,CAC5B,GAAI,GAAC,iBAAiB,WAAa,UAAU,UAC7C,gBAAe,GAAM,SAAS,EAC9B,UAAU,EACV,MAAM,aAAa,EAEnB,GAAI,CACF,MAAM,mBAAmB,EACzB,MAAM,cAAe,CAAE,OAAQ,aAAc,CAAC,EAC9C,SAAS,YAAc,QACvB,UAAU,iBAAkB,UAAW,0BAA0B,CAAC,EAC9D,OAAO,OAAO,mBAAsB,YAAY,OAAO,kBAAkB,EAC7E,OAAO,cAAc,IAAI,YAAY,eAAgB,CACnD,OAAQ,CAAE,OAAQ,uBAAwB,CAC5C,CAAC,CAAC,CACJ,OAAS,MAAO,CACd,UAAU,MAAM,SAAW,4CAA4C,EACvE,MAAM,QAAS,CACb,OAAQ,cACR,cAAe,OAAO,MAAM,SAAW,EAAE,EAAE,MAAM,EAAG,GAAG,CACzD,CAAC,CACH,QAAE,CACA,eAAe,EAAK,EACpB,OAAO,WAAW,IAAM,CAClB,iBAAiB,YAAW,SAAS,YAAc,eACzD,EAAG,IAAI,CACT,EACF,EAEM,OAAS,SAAY,CACzB,GAAI,GAAC,iBAAiB,WAAa,UAAU,UAC7C,gBAAe,GAAM,SAAS,EAC9B,UAAU,SAAW,GACrB,UAAU,EACV,MAAM,SAAS,EAEf,GAAI,CACF,MAAM,mBAAmB,EACzB,MAAM,cAAe,CAAE,OAAQ,SAAU,CAAC,EAC1C,MAAM,iBAAkB,CAAE,OAAQ,SAAU,CAAC,EAC7C,OAAO,SAAS,OAAO,WAAW,CACpC,OAAS,MAAO,CACd,UAAU,MAAM,SAAW,4CAA4C,EACvE,MAAM,QAAS,CACb,OAAQ,UACR,cAAe,OAAO,MAAM,SAAW,EAAE,EAAE,MAAM,EAAG,GAAG,CACzD,CAAC,EACD,eAAe,EAAK,CACtB,QAAE,CACA,UAAU,gBAAgB,WAAW,CACvC,EACF,EAEM,iBAAmB,OAAO,YAAY,iBAAkB,GAAG,EAEjE,SAAS,iBAAiB,mBAAoB,IAAM,CAClD,SAAW,KAAK,IAAI,EAChB,SAAS,OAAQ,aAAa,EACzB,QAAQ,cAAc,CACjC,CAAC,EAED,aAAa,QAAS,QAAW,OAAO,iBAAiB,QAAS,KAAK,CAAC,EACxE,aAAa,iBAAiB,QAAS,IAAM,0BAA0B,GAAM,UAAU,CAAC,EACxF,SAAS,iBAAiB,6BAA+B,OAAU,CACjE,MAAM,eAAe,EACrB,MAAM,OAAS,MAAM,QAAQ,SAAW,oBAAsB,OAAS,WACvE,0BAA0B,GAAM,MAAM,CACxC,CAAC,EACD,aAAa,iBAAiB,aAAe,OAAU,CACrD,oBAAsB,MAAM,eAAe,CAAC,EAAE,OAChD,EAAG,CAAE,QAAS,EAAK,CAAC,EACpB,aAAa,iBAAiB,WAAa,OAAU,CAC/C,MAAM,eAAe,CAAC,EAAE,QAAU,oBAAsB,KAC1D,0BAA0B,GAAM,gBAAgB,CAEpD,EAAG,CAAE,QAAS,EAAK,CAAC,EACpB,cAAc,QAAS,QAAW,OAAO,iBAAiB,SAAU,IAAM,cAAc,EAAI,CAAC,CAAC,EAC9F,UAAU,iBAAiB,QAAS,SAAS,EAC7C,UAAU,iBAAiB,QAAS,MAAM,EAC1C,eAAe,iBAAiB,QAAS,IAAM,UAAU,YAAc,EAAG,EAAI,CAAC,EAC/E,WAAW,iBAAiB,QAAS,IAAM,UAAU,YAAc,EAAG,EAAI,CAAC,EAC3E,KAAK,QAAQ,CAAC,IAAK,QAAU,IAAI,iBAAiB,QAAS,IAAM,UAAU,MAAO,EAAI,CAAC,CAAC,EACxF,SAAS,iBAAiB,aAAc,YAAY,EACpD,SAAS,iBAAiB,aAAc,aAAa,EACrD,SAAS,iBAAiB,UAAW,YAAY,EACjD,SAAS,iBAAiB,WAAY,aAAa,EACnD,SAAS,iBAAiB,aAAe,OAAU,CACjD,aAAa,EACb,YAAc,MAAM,eAAe,CAAC,EAAE,OACxC,EAAG,CAAE,QAAS,EAAK,CAAC,EACpB,SAAS,iBAAiB,WAAa,OAAU,CAC/C,MAAM,SAAW,MAAM,eAAe,CAAC,EAAE,QAAU,YAC/C,KAAK,IAAI,QAAQ,GAAK,IACxB,UAAU,aAAe,SAAW,EAAI,EAAI,IAAK,EAAI,EAEvD,cAAc,CAChB,EAAG,CAAE,QAAS,EAAK,CAAC,EAEpB,SAAS,iBAAiB,UAAY,OAAU,CAK9C,GAJI,CAAC,SACD,MAAM,MAAQ,UAAU,MAAM,EAC9B,MAAM,MAAQ,aAAe,MAAM,OAAO,UAAY,UAAU,UAAU,YAAc,EAAG,EAAI,EAC/F,MAAM,MAAQ,cAAgB,MAAM,OAAO,UAAY,UAAU,UAAU,YAAc,EAAG,EAAI,EAChG,MAAM,MAAQ,OAAO,OAEzB,MAAM,UAAY,CAAC,GAAG,OAAO,iBAAiB,yDAAyD,CAAC,EAClG,MAAQ,UAAU,CAAC,EACnB,KAAO,UAAU,UAAU,OAAS,CAAC,EACvC,MAAM,UAAY,SAAS,gBAAkB,OAC/C,MAAM,eAAe,EACrB,KAAK,MAAM,GACF,CAAC,MAAM,UAAY,SAAS,gBAAkB,OACvD,MAAM,eAAe,EACrB,MAAM,MAAM,EAEhB,CAAC,EAED,qBAAqB,EACrB,UAAU,WAAW,EACrB,cAAc,EACd,MAAM,eAAe,CACrB,GAEgB,CAClB,GAAG",
  "names": ["product"]
}
