{
  "version": 3,
  "sources": ["/cdn/shop/t/68/assets/cc-creator-protein.js?ccv=20260525-protein-buybox-v2"],
  "sourcesContent": ["(function () {\n  var marker = document.querySelector('[data-cc-protein-page]');\n\n  if (!marker) {\n    return;\n  }\n\n  var creatorCode = marker.getAttribute('data-cc-discount-code') || '';\n  var creatorFirstName = marker.getAttribute('data-cc-creator-first-name') || '';\n  var creatorProfilePicture = marker.getAttribute('data-cc-creator-profile-picture') || '';\n  var creatorDiscount = marker.getAttribute('data-cc-discount-display') || '';\n  var STOREFRONT_TOKEN = '557f26c83fe59f0c1c821b9e73367ce0';\n  var discountPct = parseFloat(marker.getAttribute('data-cc-discount-pct') || '0');\n  if (!Number.isFinite(discountPct) || discountPct < 0) {\n    discountPct = 0;\n  }\n  var sellingPlanId = marker.getAttribute('data-cc-selling-plan-id') || '12381552951';\n  var purchaseMode = 'subscribe';\n  var cartState = {\n    qty: 1\n  };\n  var syncedCartLineKeys = [];\n  var cartInstanceId = '';\n  var cartSyncPromise = Promise.resolve();\n  var cartSyncSucceeded = false;\n  var slotFlavors = [];\n  var lastModalTrigger = null;\n  var lastCartTrigger = null;\n\n  function money(value) {\n    return '$' + Number(value || 0).toFixed(2);\n  }\n\n  function moneyCompact(value) {\n    return money(value).replace(/\\.00$/, '');\n  }\n\n  function getCreatorHandle() {\n    var params = new URLSearchParams(window.location.search);\n    var handle = params.get('cc') || params.get('creator') || '';\n    var pathMatch;\n\n    if (!handle) {\n      pathMatch = window.location.pathname.match(/\\/pages\\/creator\\/([^/?#]+)/i);\n      handle = pathMatch ? pathMatch[1] : '';\n    }\n\n    try {\n      handle = decodeURIComponent(handle);\n    } catch (error) {}\n\n    return String(handle || '').trim().toLowerCase();\n  }\n\n  function getCreatorImageAlt() {\n    var name = document.querySelector('.cc-athlete-card__name');\n\n    if (name && name.textContent.trim()) {\n      return name.textContent.trim();\n    }\n\n    return document.title.replace(/\\s+\\|\\s+.*$/, '').trim() || 'Creator';\n  }\n\n  function imageNeedsCreatorPatch(container) {\n    var image = container ? container.querySelector('img') : null;\n    var src = image ? image.getAttribute('src') || '' : '';\n    return !image || !src || src.indexOf('cc-creator-john-athlete-v2') !== -1;\n  }\n\n  function setCreatorImage(container, imageUrl, alt, width, height, loading) {\n    if (!container || !imageUrl || !imageNeedsCreatorPatch(container)) {\n      return;\n    }\n\n    container.innerHTML = '';\n\n    var image = document.createElement('img');\n    image.src = imageUrl;\n    image.alt = alt || 'Creator';\n    image.loading = loading || 'lazy';\n    image.width = width;\n    image.height = height;\n\n    container.appendChild(image);\n  }\n\n  function fieldValue(field) {\n    return field && typeof field.value === 'string' ? field.value.trim() : '';\n  }\n\n  function fieldImageUrl(field) {\n    var value = fieldValue(field);\n    var referenceImage = field && field.reference && field.reference.image ? field.reference.image : null;\n\n    if (referenceImage && referenceImage.url) {\n      return referenceImage.url;\n    }\n\n    return value && (value.indexOf('http') === 0 || value.indexOf('//') === 0) ? value : '';\n  }\n\n  function normalizeDiscountDisplay(value) {\n    value = String(value || '').trim();\n    if (!value) {\n      return '';\n    }\n\n    value = value.replace('%', '');\n    if (/^\\d+\\.0+$/.test(value)) {\n      value = String(parseInt(value, 10));\n    }\n    return value + '%';\n  }\n\n  function discountDisplayToPct(value) {\n    var number = parseFloat(String(value || '').replace('%', ''));\n    return Number.isFinite(number) && number > 0 ? number / 100 : 0;\n  }\n\n  function hasDiscountValue(value) {\n    var normalized = normalizeDiscountDisplay(value);\n    return !!normalized && normalized !== '0%' && normalized !== '0.0%';\n  }\n\n  function creatorCodeLabel() {\n    return creatorCode || 'your creator code';\n  }\n\n  function creatorDiscountDisplay() {\n    return normalizeDiscountDisplay(creatorDiscount);\n  }\n\n  function setCheckoutCode(code) {\n    creatorCode = String(code || '').trim();\n    marker.setAttribute('data-cc-discount-code', creatorCode);\n\n    document.querySelectorAll('[data-discount-code]').forEach(function (node) {\n      node.setAttribute('data-discount-code', creatorCode);\n    });\n  }\n\n  function discountBenefitText() {\n    var discount = creatorDiscountDisplay();\n\n    if (creatorCode && hasDiscountValue(discount)) {\n      return 'Extra ' + discount + ' off with ' + creatorCode;\n    }\n\n    if (creatorCode) {\n      return 'Code ' + creatorCode + ' auto-applies at checkout';\n    }\n\n    return 'Creator discount applies at checkout';\n  }\n\n  function updateBuyboxCreatorCopy(profile) {\n    var name = profile && profile.firstName ? profile.firstName : creatorFirstName;\n    var imageUrl = profile && profile.imageUrl ? profile.imageUrl : creatorProfilePicture;\n    var discount = profile && profile.discountDisplay ? profile.discountDisplay : creatorDiscount;\n    var ribbon = document.querySelector('.cc-protein-buybox .cc-buybox__ribbon-text');\n    var avatar = document.querySelector('.cc-protein-buybox .cc-buybox__avatar');\n    var benefitNode = document.querySelector('.cc-protein-buybox [data-cc-benefit-discount] span:last-child');\n    var footer = document.querySelector('[data-cc-protein-buybox-footer]');\n    var badge = document.querySelector('[data-cc-protein-offer-badge]');\n\n    creatorFirstName = String(name || creatorFirstName || '').trim();\n    creatorProfilePicture = String(imageUrl || creatorProfilePicture || '').trim();\n    creatorDiscount = normalizeDiscountDisplay(discount || creatorDiscount);\n    discountPct = discountDisplayToPct(creatorDiscount);\n\n    marker.setAttribute('data-cc-creator-first-name', creatorFirstName);\n    marker.setAttribute('data-cc-creator-profile-picture', creatorProfilePicture);\n    marker.setAttribute('data-cc-discount-display', creatorDiscount);\n    marker.setAttribute('data-cc-discount-pct', String(discountPct));\n\n    if (ribbon) {\n      ribbon.textContent = (creatorFirstName || 'Athlete') + \"'s choice\";\n    }\n\n    if (avatar) {\n      avatar.innerHTML = '';\n      if (creatorProfilePicture) {\n        var avatarImage = document.createElement('img');\n        avatarImage.src = creatorProfilePicture;\n        avatarImage.alt = '';\n        avatarImage.loading = 'lazy';\n        avatarImage.width = 44;\n        avatarImage.height = 44;\n        avatar.appendChild(avatarImage);\n      } else {\n        avatar.textContent = (creatorFirstName || 'A').slice(0, 1).toUpperCase();\n      }\n    }\n\n    if (benefitNode) {\n      benefitNode.textContent = discountBenefitText();\n    }\n\n    if (footer) {\n      if (creatorCode && hasDiscountValue(creatorDiscount)) {\n        footer.textContent = 'Code ' + creatorCode + ' auto-applied at checkout \u00B7 extra ' + creatorDiscount + ' off';\n      } else if (creatorCode) {\n        footer.textContent = 'Code ' + creatorCode + ' auto-applied at checkout';\n      } else {\n        footer.textContent = 'Creator discount auto-applies when available';\n      }\n    }\n\n    if (badge) {\n      if (creatorCode && hasDiscountValue(creatorDiscount)) {\n        badge.textContent = 'Limited Time \u00B7 Save ' + creatorDiscount + ' with ' + creatorCode;\n      } else if (creatorCode) {\n        badge.textContent = 'Code ' + creatorCode + ' auto-applies at checkout';\n      } else {\n        badge.textContent = 'Creator discount applies at checkout';\n      }\n    }\n  }\n\n  async function hydrateCreatorProfile() {\n    var handle = getCreatorHandle();\n\n    if (!handle || !window.fetch) {\n      return;\n    }\n\n    var response = await fetch('/api/2026-04/graphql.json', {\n      method: 'POST',\n      headers: {\n        'Content-Type': 'application/json',\n        'X-Shopify-Storefront-Access-Token': STOREFRONT_TOKEN\n      },\n      body: JSON.stringify({\n        query: 'query CreatorProfile($handle: MetaobjectHandleInput!) { metaobject(handle: $handle) { firstName: field(key: \"cc-creator-first-name\") { value } profilePicture: field(key: \"cc-creator-profile-picture\") { value reference { ... on MediaImage { image { url altText } } } } discountCode: field(key: \"cc-collab-discount-code\") { value } affiliateCode: field(key: \"cc-collab-affiliate-code\") { value } discountAmount: field(key: \"cc-collab-discount-amount\") { value } } }',\n        variables: {\n          handle: {\n            type: 'creator',\n            handle: handle\n          }\n        }\n      })\n    });\n    var payload = await response.json();\n    var metaobject = payload && payload.data ? payload.data.metaobject : null;\n\n    if (!metaobject) {\n      return;\n    }\n\n    var imageUrl = fieldImageUrl(metaobject.profilePicture);\n    var alt = getCreatorImageAlt();\n    var nextCode = fieldValue(metaobject.discountCode) || fieldValue(metaobject.affiliateCode);\n    var nextDiscount = normalizeDiscountDisplay(fieldValue(metaobject.discountAmount));\n    var nextFirstName = fieldValue(metaobject.firstName);\n\n    if (nextCode) {\n      setCheckoutCode(nextCode);\n    }\n\n    updateBuyboxCreatorCopy({\n      firstName: nextFirstName,\n      imageUrl: imageUrl,\n      discountDisplay: nextDiscount\n    });\n\n    setCreatorImage(document.querySelector('.cc-creator-hero__frame'), imageUrl, alt, 1200, 1400, 'eager');\n    setCreatorImage(document.querySelector('.cc-cta__image'), imageUrl, alt, 1400, 1600, 'lazy');\n    setCreatorImage(document.querySelector('.cc-athlete-card__image'), imageUrl, alt, 224, 224, 'lazy');\n  }\n\n  setCheckoutCode(creatorCode);\n  updateBuyboxCreatorCopy({\n    firstName: creatorFirstName,\n    imageUrl: creatorProfilePicture,\n    discountDisplay: creatorDiscount\n  });\n  hydrateCreatorProfile().catch(function () {});\n\n  async function requestCartJson(url, options, timeoutMs) {\n    var controller = new AbortController();\n    var timeout = window.setTimeout(function () {\n      controller.abort();\n    }, timeoutMs || 8000);\n\n    try {\n      var response = await fetch(url, Object.assign({}, options || {}, { signal: controller.signal }));\n      var json = null;\n\n      try {\n        json = await response.json();\n      } catch (error) {\n        json = null;\n      }\n\n      if (!response.ok) {\n        var message = json && (json.description || json.message || json.status);\n        throw new Error(message || 'Cart request failed');\n      }\n\n      return json;\n    } finally {\n      window.clearTimeout(timeout);\n    }\n  }\n\n  function goToCheckout(button, originalText, code) {\n    window.location.assign(code ? '/checkout?discount=' + encodeURIComponent(code) : '/checkout');\n    window.setTimeout(function () {\n      if (!/\\/checkouts?|\\/checkout/.test(window.location.pathname) && button) {\n        button.textContent = originalText || 'Checkout';\n        button.disabled = false;\n      }\n    }, 6000);\n  }\n\n  function escapeHtml(value) {\n    return String(value || '').replace(/[&<>\"']/g, function (char) {\n      return {\n        '&': '&amp;',\n        '<': '&lt;',\n        '>': '&gt;',\n        '\"': '&quot;',\n        \"'\": '&#39;'\n      }[char];\n    });\n  }\n\n  function getFlavorCards() {\n    return Array.prototype.slice.call(document.querySelectorAll('[data-cc-flavor-card]'));\n  }\n\n  function getPackCards() {\n    return Array.prototype.slice.call(document.querySelectorAll('[data-cc-pack-card]'));\n  }\n\n  function getFlavors() {\n    return getFlavorCards().map(function (card) {\n      return {\n        name: card.getAttribute('data-flavor') || 'Vanilla',\n        shortLabel: card.getAttribute('data-short-label') || card.getAttribute('data-flavor') || 'Vanilla',\n        image: card.getAttribute('data-image') || '',\n        galleryImages: (card.getAttribute('data-gallery-images') || card.getAttribute('data-image') || '').split('|').filter(Boolean),\n        variantId: card.getAttribute('data-variant-id') || ''\n      };\n    });\n  }\n\n  function getSelectedFlavor() {\n    var selected = document.querySelector('[data-cc-flavor-card][aria-pressed=\"true\"]');\n    var fallback = getFlavors()[0] || { name: 'Vanilla', shortLabel: 'Vanilla', image: '' };\n\n    if (!selected) {\n      return fallback;\n    }\n\n    return {\n      name: selected.getAttribute('data-flavor') || fallback.name,\n      shortLabel: selected.getAttribute('data-short-label') || selected.getAttribute('data-flavor') || fallback.shortLabel,\n      image: selected.getAttribute('data-image') || fallback.image,\n      galleryImages: (selected.getAttribute('data-gallery-images') || selected.getAttribute('data-image') || fallback.image || '').split('|').filter(Boolean),\n      variantId: selected.getAttribute('data-variant-id') || fallback.variantId\n    };\n  }\n\n  function getSelectedPack() {\n    var selected = document.querySelector('[data-cc-pack-card][aria-pressed=\"true\"]');\n\n    if (!selected) {\n      return {\n        count: 3,\n        price: 62.37,\n        comparePrice: 95.97,\n        oneTimePrice: 69.97,\n        perDay: 0.69,\n        label: '3 Pack',\n        title: '3 Pack',\n        servings: '90 servings',\n        savings: '35% off per unit'\n      };\n    }\n\n    return {\n      count: parseInt(selected.getAttribute('data-pack-count') || '3', 10),\n      price: parseFloat(selected.getAttribute('data-price') || '62.37'),\n      comparePrice: parseFloat(selected.getAttribute('data-compare-price') || '0'),\n      oneTimePrice: parseFloat(selected.getAttribute('data-one-time-price') || '0'),\n      perDay: parseFloat(selected.getAttribute('data-per-day') || '0'),\n      label: selected.getAttribute('data-label') || '3 Pack',\n      title: selected.getAttribute('data-title') || '3 Pack',\n      servings: selected.getAttribute('data-servings') || '90 servings',\n      savings: selected.getAttribute('data-savings') || ''\n    };\n  }\n\n  function currentPackPrice(pack) {\n    pack = pack || getSelectedPack();\n    return purchaseMode === 'subscribe' ? pack.price : pack.oneTimePrice || pack.price;\n  }\n\n  function setText(selector, value) {\n    var node = document.querySelector(selector);\n\n    if (node) {\n      node.textContent = value;\n    }\n  }\n\n  function setImage(selector, src, alt) {\n    var image = document.querySelector(selector);\n\n    if (!image || !src) {\n      return;\n    }\n\n    image.setAttribute('src', src);\n\n    if (alt) {\n      image.setAttribute('alt', alt);\n    }\n  }\n\n  function makeCartInstanceId() {\n    return 'cc-protein-' + Date.now() + '-' + Math.random().toString(36).slice(2);\n  }\n\n  async function fetchShopifyCart() {\n    if (window.ZenTheme && typeof window.ZenTheme.fetchCart === 'function') {\n      return window.ZenTheme.fetchCart();\n    }\n\n    return requestCartJson('/cart.js', {\n      headers: { Accept: 'application/json' }\n    });\n  }\n\n  function updateShopifyCartCount(cart) {\n    if (window.ZenTheme && typeof window.ZenTheme.updateCartCount === 'function') {\n      window.ZenTheme.updateCartCount(cart.item_count);\n    }\n\n    document.dispatchEvent(new CustomEvent('zen:cart:updated', { detail: { cart: cart } }));\n  }\n\n  function buildProteinCartItems() {\n    var pack = getSelectedPack();\n    var selectedFlavor = getSelectedFlavor();\n    var flavorCounts = {};\n    var activeSlots = getActiveSlotFlavors(pack, selectedFlavor);\n\n    if (!cartInstanceId) {\n      cartInstanceId = makeCartInstanceId();\n    }\n\n    if (activeSlots.length > 0) {\n      activeSlots.forEach(function (flavorName) {\n        var flavor = findFlavorByName(flavorName);\n        var variantId = flavor && flavor.variantId ? flavor.variantId : selectedFlavor.variantId;\n        flavorCounts[variantId] = (flavorCounts[variantId] || 0) + cartState.qty;\n      });\n    } else {\n      flavorCounts[selectedFlavor.variantId] = Math.max(1, pack.count) * cartState.qty;\n    }\n\n    return Object.keys(flavorCounts).filter(Boolean).map(function (variantId) {\n      var item = {\n        id: Number(variantId),\n        quantity: flavorCounts[variantId],\n        properties: {\n          _cc_cart_instance: cartInstanceId\n        }\n      };\n\n      if (creatorCode) {\n        item.properties._creator_code = creatorCode;\n      }\n\n      if (sellingPlanId && purchaseMode === 'subscribe') {\n        item.selling_plan = Number(sellingPlanId);\n      }\n\n      return item;\n    });\n  }\n\n  function assignSyncedProteinLines(cart) {\n    syncedCartLineKeys = cart && cart.items ? cart.items.filter(function (line) {\n      var properties = line && line.properties ? line.properties : {};\n      return properties._cc_cart_instance === cartInstanceId;\n    }).map(function (line) {\n      return line.key;\n    }) : [];\n  }\n\n  async function clearSyncedProteinLines() {\n    var keys = syncedCartLineKeys.slice();\n    var latestCart = null;\n\n    for (var i = 0; i < keys.length; i += 1) {\n      latestCart = await requestCartJson('/cart/change.js', {\n        method: 'POST',\n        headers: {\n          Accept: 'application/json',\n          'Content-Type': 'application/json'\n        },\n        body: JSON.stringify({\n          id: keys[i],\n          quantity: 0\n        })\n      });\n    }\n\n    syncedCartLineKeys = [];\n    return latestCart;\n  }\n\n  async function syncProteinSelectionToCart() {\n    if (!cartInstanceId) {\n      cartInstanceId = makeCartInstanceId();\n    }\n\n    if (syncedCartLineKeys.length) {\n      await clearSyncedProteinLines();\n    }\n\n    var items = buildProteinCartItems();\n\n    if (items.length === 0) {\n      throw new Error('No protein variant selected');\n    }\n\n    await requestCartJson('/cart/add.js', {\n      method: 'POST',\n      headers: {\n        Accept: 'application/json',\n        'Content-Type': 'application/json'\n      },\n      body: JSON.stringify({ items: items })\n    });\n    cartSyncSucceeded = true;\n\n    try {\n      var cart = await fetchShopifyCart();\n      assignSyncedProteinLines(cart);\n      updateShopifyCartCount(cart);\n      return cart;\n    } catch (error) {\n      updateShopifyCartCount({ item_count: items.reduce(function (sum, item) { return sum + Number(item.quantity || 0); }, 0) });\n      return null;\n    }\n  }\n\n  function queueProteinCartSync() {\n    cartSyncPromise = cartSyncPromise.catch(function () {}).then(function () {\n      return syncProteinSelectionToCart();\n    });\n    cartSyncPromise.catch(function () {});\n    return cartSyncPromise;\n  }\n\n  function selectedFlavorSummary() {\n    var pack = getSelectedPack();\n    var flavor = getSelectedFlavor();\n    var activeSlots = getActiveSlotFlavors(pack, flavor);\n\n    if (activeSlots.length === 0) {\n      return flavor.name;\n    }\n\n    return activeSlots.join(', ');\n  }\n\n  function findFlavorByName(name) {\n    var flavors = getFlavors();\n    var selected = getSelectedFlavor();\n    var match = flavors.find(function (flavor) {\n      return flavor.name === name;\n    });\n\n    return match || selected || flavors[0];\n  }\n\n  function getActiveSlotFlavors(pack, selectedFlavor) {\n    var slots = Array.prototype.slice.call(document.querySelectorAll('.cc-protein-slot'));\n    var count = pack && pack.count ? pack.count : 1;\n    var domFlavors = slots.slice(0, count).map(function (slot) {\n      var label = slot.querySelector('.cc-protein-slot__flavor');\n      return slot.getAttribute('data-slot-flavor') || (label ? label.textContent.trim() : '');\n    }).filter(Boolean);\n\n    if (count < 2) {\n      return [];\n    }\n\n    if (domFlavors.length >= count) {\n      return domFlavors.slice(0, count);\n    }\n\n    if (slotFlavors.length >= count) {\n      return slotFlavors.slice(0, count);\n    }\n\n    return selectedFlavor && selectedFlavor.name ? new Array(count).fill(selectedFlavor.name) : [];\n  }\n\n  function setSlotFlavor(index, flavorName) {\n    var flavor = getSelectedFlavor();\n\n    slotFlavors[index] = flavorName || flavor.name;\n    renderSlots();\n    updateWidgetFlavorSummary();\n    setText('#ccProteinCartItemFlavor', selectedFlavorSummary());\n    renderCart();\n  }\n\n  function updateWidgetFlavorSummary() {\n    var pack = getSelectedPack();\n    var text = pack.title || pack.label;\n\n    setText('#ccProteinWidgetPackLabel', text);\n  }\n\n  function syncPackCardSavings() {\n    getPackCards().forEach(function (card) {\n      var savings = card.querySelector('.cc-protein-pack-card__savings');\n      var price = parseFloat(card.getAttribute('data-price') || '0');\n      var comparePrice = parseFloat(card.getAttribute('data-compare-price') || '0');\n      var count = parseInt(card.getAttribute('data-pack-count') || '1', 10) || 1;\n\n      if (!savings) {\n        return;\n      }\n\n      if (count <= 1) {\n        savings.textContent = 'Starter';\n        return;\n      }\n\n      if (comparePrice > price) {\n        savings.textContent = 'Save ' + moneyCompact(comparePrice - price);\n      }\n    });\n  }\n\n  function applyPurchaseMode() {\n    var buybox = document.querySelector('[data-cc-protein-buybox]');\n    var subscribeCard = document.querySelector('[data-cc-purchase-card=\"subscribe\"]');\n    var oneTimeCard = document.querySelector('[data-cc-purchase-card=\"one_time\"]');\n    var subscribeRadio = subscribeCard ? subscribeCard.querySelector('.cc-buybox__radio') : null;\n    var oneTimeRadio = oneTimeCard ? oneTimeCard.querySelector('.cc-buybox__radio') : null;\n\n    if (buybox) {\n      buybox.setAttribute('data-cc-purchase-mode', purchaseMode);\n    }\n\n    if (subscribeCard) {\n      subscribeCard.classList.toggle('is-selected', purchaseMode === 'subscribe');\n      subscribeCard.setAttribute('aria-pressed', purchaseMode === 'subscribe' ? 'true' : 'false');\n    }\n\n    if (oneTimeCard) {\n      oneTimeCard.classList.toggle('is-selected', purchaseMode === 'one_time');\n      oneTimeCard.setAttribute('aria-pressed', purchaseMode === 'one_time' ? 'true' : 'false');\n    }\n\n    if (subscribeRadio) {\n      subscribeRadio.classList.toggle('is-filled', purchaseMode === 'subscribe');\n    }\n\n    if (oneTimeRadio) {\n      oneTimeRadio.classList.toggle('is-filled', purchaseMode === 'one_time');\n    }\n\n    updateBuyboxCreatorCopy({\n      firstName: creatorFirstName,\n      imageUrl: creatorProfilePicture,\n      discountDisplay: creatorDiscount\n    });\n  }\n\n  function setPurchaseMode(next) {\n    if (next !== 'subscribe' && next !== 'one_time') {\n      return;\n    }\n\n    purchaseMode = next;\n    applyPurchaseMode();\n    updatePackUi();\n  }\n\n  function updatePackUi() {\n    var pack = getSelectedPack();\n    var widgetPrice = document.querySelector('[data-cc-protein-price-current]');\n    var widgetCompare = document.querySelector('[data-cc-protein-price-compare]');\n    var widgetPerDay = document.querySelector('[data-cc-protein-per-day]');\n    var oneTimePrice = document.querySelector('[data-cc-protein-one-time-price]');\n    var displayPrice = currentPackPrice(pack);\n\n    updateWidgetFlavorSummary();\n    syncPackCardSavings();\n    setText('#ccProteinStickyPrice', money(displayPrice));\n    setText('#ccProteinStickyLabel', pack.label);\n    setText('#ccProteinCartItemSupply', pack.label);\n\n    if (widgetPrice) {\n      widgetPrice.textContent = money(displayPrice);\n    }\n\n    if (widgetCompare) {\n      if (purchaseMode === 'subscribe' && pack.oneTimePrice > pack.price) {\n        widgetCompare.textContent = money(pack.oneTimePrice);\n      } else {\n        widgetCompare.textContent = '';\n      }\n    }\n\n    if (widgetPerDay) {\n      widgetPerDay.textContent = money(pack.perDay) + ' per day';\n    }\n\n    if (oneTimePrice) {\n      oneTimePrice.textContent = money(pack.oneTimePrice || pack.price);\n    }\n\n    renderSlots();\n    renderCart();\n  }\n\n  function updateFlavorUi(options) {\n    var flavor = getSelectedFlavor();\n    var galleryImages = flavor.galleryImages && flavor.galleryImages.length ? flavor.galleryImages : [flavor.image];\n    var heroImage = galleryImages[0] || flavor.image;\n    var allSame = slotFlavors.length === 0 || slotFlavors.every(function (slot) {\n      return slot === slotFlavors[0];\n    });\n\n    setText('#ccProteinFlavorLabel', flavor.name);\n    setText('#ccProteinCartItemFlavor', selectedFlavorSummary());\n    setImage('#ccProteinMainImage', heroImage, 'Zenbodi Vegan Protein, ' + flavor.name);\n    setImage('#ccProteinStickyThumb', heroImage, 'Zenbodi Vegan Protein, ' + flavor.name);\n    setImage('#ccProteinCartThumb', heroImage, 'Zenbodi Vegan Protein, ' + flavor.name);\n\n    document.querySelectorAll('[data-cc-protein-thumb]').forEach(function (button, index) {\n      var imageSrc = galleryImages[index];\n      var image = button.querySelector('img');\n\n      if (!imageSrc) {\n        button.hidden = true;\n        return;\n      }\n\n      button.hidden = false;\n      button.setAttribute('data-src', imageSrc);\n      button.setAttribute('aria-pressed', index === 0 ? 'true' : 'false');\n\n      if (image) {\n        image.setAttribute('src', imageSrc);\n        image.setAttribute('alt', 'Zenbodi Vegan Protein, ' + flavor.name);\n      }\n    });\n\n    if (!options || options.syncSlots !== false) {\n      if (allSame) {\n        slotFlavors = slotFlavors.map(function () {\n          return flavor.name;\n        });\n      }\n    }\n\n    renderSlots();\n    updateWidgetFlavorSummary();\n    setText('#ccProteinCartItemFlavor', selectedFlavorSummary());\n  }\n\n  function renderSlots() {\n    var customizer = document.getElementById('ccProteinCustomizer');\n    var slots = document.getElementById('ccProteinPackSlots');\n    var pack = getSelectedPack();\n    var flavor = getSelectedFlavor();\n    var flavors = getFlavors();\n\n    if (!customizer || !slots) {\n      return;\n    }\n\n    if (pack.count < 2) {\n      customizer.hidden = true;\n      slots.innerHTML = '';\n      return;\n    }\n\n    customizer.hidden = false;\n\n    while (slotFlavors.length < pack.count) {\n      slotFlavors.push(flavor.name);\n    }\n\n    if (slotFlavors.length > pack.count) {\n      slotFlavors = slotFlavors.slice(0, pack.count);\n    }\n\n    slots.innerHTML = '';\n\n    for (var i = 0; i < pack.count; i += 1) {\n      var slot = document.createElement('div');\n      slot.className = 'cc-protein-slot';\n      slot.setAttribute('data-slot-index', String(i));\n      slot.setAttribute('data-slot-flavor', slotFlavors[i]);\n      slot.innerHTML =\n        '<div class=\"cc-protein-slot__row\">' +\n          '<div class=\"cc-protein-slot__number\">' + (i + 1) + '</div>' +\n          '<div class=\"cc-protein-slot__content\">' +\n            '<span class=\"cc-protein-slot__eyebrow\">Bag ' + (i + 1) + '</span>' +\n            '<span class=\"cc-protein-slot__flavor\">' + escapeHtml(slotFlavors[i]) + '</span>' +\n          '</div>' +\n          '<button class=\"cc-protein-slot__toggle\" type=\"button\" aria-expanded=\"false\">Change</button>' +\n        '</div>' +\n        '<div class=\"cc-protein-slot__picker\" hidden>' +\n          flavors.map(function (item) {\n            return '<button class=\"cc-protein-slot__flavor-button\" type=\"button\" data-slot-index=\"' + i + '\" data-slot-flavor=\"' + escapeHtml(item.name) + '\" aria-pressed=\"' + (slotFlavors[i] === item.name ? 'true' : 'false') + '\">' + escapeHtml(item.shortLabel) + '</button>';\n          }).join('') +\n        '</div>';\n      slots.appendChild(slot);\n    }\n\n    slots.querySelectorAll('.cc-protein-slot__toggle').forEach(function (button) {\n      button.addEventListener('click', function () {\n        var slot = button.closest('.cc-protein-slot');\n        var picker = slot ? slot.querySelector('.cc-protein-slot__picker') : null;\n        var isOpening = picker ? picker.hidden : false;\n\n        slots.querySelectorAll('.cc-protein-slot__picker').forEach(function (otherPicker) {\n          otherPicker.hidden = true;\n        });\n        slots.querySelectorAll('.cc-protein-slot__toggle').forEach(function (otherButton) {\n          otherButton.setAttribute('aria-expanded', 'false');\n          otherButton.textContent = 'Change';\n        });\n\n        if (picker) {\n          picker.hidden = !isOpening;\n          button.setAttribute('aria-expanded', isOpening ? 'true' : 'false');\n          button.textContent = isOpening ? 'Done' : 'Change';\n        }\n      });\n    });\n\n    slots.querySelectorAll('.cc-protein-slot__flavor-button').forEach(function (button) {\n      button.addEventListener('click', function () {\n        var index = parseInt(button.getAttribute('data-slot-index') || '0', 10) || 0;\n        setSlotFlavor(index, button.getAttribute('data-slot-flavor') || flavor.name);\n      });\n    });\n  }\n\n  function initSelectors() {\n    getFlavorCards().forEach(function (card) {\n      card.addEventListener('click', function () {\n        getFlavorCards().forEach(function (other) {\n          other.setAttribute('aria-pressed', 'false');\n        });\n        card.setAttribute('aria-pressed', 'true');\n        updateFlavorUi();\n        renderCart();\n      });\n    });\n\n    getPackCards().forEach(function (card) {\n      card.addEventListener('click', function () {\n        getPackCards().forEach(function (other) {\n          other.setAttribute('aria-pressed', 'false');\n        });\n        card.setAttribute('aria-pressed', 'true');\n        updatePackUi();\n      });\n    });\n\n    document.querySelectorAll('[data-cc-purchase-card]').forEach(function (card) {\n      var mode = card.getAttribute('data-cc-purchase-card');\n      card.addEventListener('click', function () {\n        setPurchaseMode(mode);\n      });\n      card.addEventListener('keydown', function (event) {\n        if (event.key === 'Enter' || event.key === ' ') {\n          event.preventDefault();\n          setPurchaseMode(mode);\n        }\n      });\n    });\n\n    document.querySelectorAll('[data-cc-protein-thumb]').forEach(function (button) {\n      button.addEventListener('click', function () {\n        document.querySelectorAll('[data-cc-protein-thumb]').forEach(function (other) {\n          other.setAttribute('aria-pressed', 'false');\n        });\n        button.setAttribute('aria-pressed', 'true');\n        setImage('#ccProteinMainImage', button.getAttribute('data-src'));\n      });\n    });\n\n    var resetSlots = document.getElementById('ccProteinResetSlots');\n\n    if (resetSlots) {\n      resetSlots.addEventListener('click', function () {\n        var flavor = getSelectedFlavor();\n        slotFlavors = slotFlavors.map(function () {\n          return flavor.name;\n        });\n        renderSlots();\n        updateWidgetFlavorSummary();\n        setText('#ccProteinCartItemFlavor', selectedFlavorSummary());\n      });\n    }\n  }\n\n  function initScience() {\n    document.querySelectorAll('.cc-protein-science-card__toggle').forEach(function (button) {\n      button.addEventListener('click', function () {\n        var card = button.closest('.cc-protein-science-card');\n        var isOpen = button.getAttribute('aria-expanded') === 'true';\n\n        if (!card) {\n          return;\n        }\n\n        button.setAttribute('aria-expanded', isOpen ? 'false' : 'true');\n        card.classList.toggle('is-open', !isOpen);\n      });\n    });\n  }\n\n  function initGenericCreatorInteractions() {\n    var ugcRail = document.getElementById('ccUgcRail');\n    var ugcPrev = document.getElementById('ccUgcPrev');\n    var ugcNext = document.getElementById('ccUgcNext');\n\n    if (ugcRail && ugcPrev && ugcNext) {\n      ugcPrev.addEventListener('click', function () {\n        ugcRail.scrollBy({ left: -320, behavior: 'smooth' });\n      });\n\n      ugcNext.addEventListener('click', function () {\n        ugcRail.scrollBy({ left: 320, behavior: 'smooth' });\n      });\n    }\n\n    function initCreatorVideos() {\n      var tiles = Array.prototype.slice.call(document.querySelectorAll('[data-cc-creator-video-tile], .cc-video-mini, .cc-video-tile'));\n\n      if (!tiles.length) {\n        return;\n      }\n\n      function getVideo(tile) {\n        return tile ? tile.querySelector('[data-cc-creator-video], video') : null;\n      }\n\n      function getVideoControlMarkup() {\n        return [\n          '<div class=\"cc-video-controls\" data-cc-video-controls>',\n            '<button class=\"cc-video-control cc-video-control--play is-paused\" type=\"button\" data-cc-video-toggle-play aria-label=\"Play video\" aria-pressed=\"false\">',\n              '<svg class=\"cc-video-icon cc-video-icon--play\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M8 5v14l11-7z\"></path></svg>',\n              '<svg class=\"cc-video-icon cc-video-icon--pause\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M7 5h4v14H7zM13 5h4v14h-4z\"></path></svg>',\n            '</button>',\n            '<button class=\"cc-video-control cc-video-control--mute is-muted\" type=\"button\" data-cc-video-toggle-mute aria-label=\"Unmute video\" aria-pressed=\"false\">',\n              '<svg class=\"cc-video-icon cc-video-icon--volume\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 9v6h4l5 5V4L8 9H4z\"></path><path d=\"M16 8.5c1.3 1.9 1.3 5.1 0 7M18.5 6c2.2 3.3 2.2 8.7 0 12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"></path></svg>',\n              '<svg class=\"cc-video-icon cc-video-icon--muted\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M4 9v6h4l5 5V4L8 9H4z\"></path><path d=\"M18.5 8.5 15 12l3.5 3.5M15 8.5l3.5 3.5L15 15.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"></path></svg>',\n            '</button>',\n          '</div>'\n        ].join('');\n      }\n\n      function isVideoControlEvent(event) {\n        return Boolean(event && event.target && event.target.closest('[data-cc-video-controls], [data-cc-video-toggle-play], [data-cc-video-toggle-mute]'));\n      }\n\n      function hideTileControls(tile) {\n        if (!tile) {\n          return;\n        }\n\n        tile.classList.remove('has-visible-controls');\n        tile.removeAttribute('data-cc-video-controls-visible');\n      }\n\n      function showTileControls(tile) {\n        if (!tile) {\n          return;\n        }\n\n        tiles.forEach(function (otherTile) {\n          if (otherTile !== tile) {\n            hideTileControls(otherTile);\n          }\n        });\n\n        tile.classList.add('has-visible-controls');\n        tile.setAttribute('data-cc-video-controls-visible', 'true');\n      }\n\n      function setVideoMuted(video, muted) {\n        if (!video) {\n          return;\n        }\n\n        video.muted = Boolean(muted);\n\n        if (video.muted) {\n          video.defaultMuted = true;\n          video.setAttribute('muted', '');\n          video.removeAttribute('data-cc-video-user-sound');\n        } else {\n          video.defaultMuted = false;\n          video.removeAttribute('muted');\n          video.setAttribute('data-cc-video-user-sound', 'true');\n        }\n      }\n\n      function ensureTileControls(tile) {\n        var video = getVideo(tile);\n        var tagName = tile.tagName ? tile.tagName.toLowerCase() : '';\n        var playClass = tile.classList.contains('cc-video-mini') ? 'cc-video-mini__play' : 'cc-video-tile__play';\n\n        tile.setAttribute('data-cc-creator-video-tile', '');\n        tile.setAttribute('aria-pressed', tile.getAttribute('aria-pressed') || 'false');\n\n        if (!tile.getAttribute('aria-label')) {\n          tile.setAttribute('aria-label', 'Creator video');\n        }\n\n        if (tagName !== 'button' && tagName !== 'a') {\n          tile.setAttribute('role', tile.getAttribute('role') || 'group');\n          tile.setAttribute('tabindex', tile.getAttribute('tabindex') || '0');\n        }\n\n        if (video) {\n          video.setAttribute('data-cc-creator-video', '');\n        }\n\n        if (video && !tile.querySelector('[data-cc-video-controls]')) {\n          video.insertAdjacentHTML('afterend', getVideoControlMarkup());\n        }\n\n        if (video && !tile.querySelector('.' + playClass)) {\n          var playIcon = document.createElement('span');\n          playIcon.className = playClass;\n          playIcon.setAttribute('aria-hidden', 'true');\n          playIcon.textContent = '\u25B6';\n          video.insertAdjacentElement('afterend', playIcon);\n        }\n      }\n\n      function primeVideo(video, forceMuted) {\n        if (!video) {\n          return;\n        }\n\n        if (forceMuted !== false && !video.hasAttribute('data-cc-video-user-sound')) {\n          setVideoMuted(video, true);\n        }\n\n        video.loop = true;\n        video.playsInline = true;\n        video.setAttribute('playsinline', '');\n        video.setAttribute('webkit-playsinline', '');\n        video.setAttribute('preload', video.getAttribute('preload') || 'metadata');\n\n        if (video.readyState === 0 && typeof video.load === 'function') {\n          video.load();\n        }\n      }\n\n      function syncTileState(tile) {\n        var video = getVideo(tile);\n        var isPlaying = video && !video.paused && !video.ended;\n        var playButton = tile ? tile.querySelector('[data-cc-video-toggle-play]') : null;\n        var muteButton = tile ? tile.querySelector('[data-cc-video-toggle-mute]') : null;\n        var isMuted = !video || video.muted;\n\n        tile.classList.toggle('is-playing', Boolean(isPlaying));\n        tile.classList.toggle('needs-tap', !isPlaying);\n        tile.classList.toggle('is-muted', Boolean(isMuted));\n        tile.classList.toggle('is-paused', !isPlaying);\n        tile.setAttribute('aria-pressed', String(Boolean(isPlaying && video && !video.muted)));\n\n        if (playButton) {\n          playButton.classList.toggle('is-paused', !isPlaying);\n          playButton.setAttribute('aria-label', isPlaying ? 'Pause video' : 'Play video');\n          playButton.setAttribute('aria-pressed', String(Boolean(isPlaying)));\n        }\n\n        if (muteButton) {\n          muteButton.classList.toggle('is-muted', Boolean(isMuted));\n          muteButton.setAttribute('aria-label', isMuted ? 'Unmute video' : 'Mute video');\n          muteButton.setAttribute('aria-pressed', String(Boolean(!isMuted)));\n        }\n      }\n\n      function pauseOtherVideos(activeTile) {\n        tiles.forEach(function (tile) {\n          var video = getVideo(tile);\n\n          if (!video || tile === activeTile) {\n            return;\n          }\n\n          setVideoMuted(video, true);\n          video.pause();\n          tile.removeAttribute('data-cc-video-user-paused');\n          hideTileControls(tile);\n          syncTileState(tile);\n        });\n      }\n\n      function playTile(tile, withSound) {\n        var video = getVideo(tile);\n\n        if (!video) {\n          return;\n        }\n\n        if (withSound) {\n          pauseOtherVideos(tile);\n        }\n\n        tile.removeAttribute('data-cc-video-user-paused');\n        primeVideo(video, !withSound);\n        setVideoMuted(video, !withSound);\n\n        var playPromise = video.play();\n\n        if (playPromise && typeof playPromise.catch === 'function') {\n          playPromise.then(function () {\n            syncTileState(tile);\n          }).catch(function () {\n            tile.classList.add('needs-tap');\n            syncTileState(tile);\n          });\n        } else {\n          syncTileState(tile);\n        }\n      }\n\n      function playMuted(tile) {\n        var video = getVideo(tile);\n\n        if (!video || tile.hasAttribute('data-cc-video-user-paused') || video.hasAttribute('data-cc-video-user-sound')) {\n          return;\n        }\n\n        if (!video.paused && !video.muted) {\n          return;\n        }\n\n        playTile(tile, false);\n      }\n\n      function pauseTile(tile, userInitiated) {\n        var video = getVideo(tile);\n\n        if (!video) {\n          return;\n        }\n\n        if (userInitiated) {\n          tile.setAttribute('data-cc-video-user-paused', 'true');\n        }\n\n        video.pause();\n        syncTileState(tile);\n      }\n\n      function isTileNearViewport(tile) {\n        if (!tile || typeof tile.getBoundingClientRect !== 'function') {\n          return false;\n        }\n\n        var rect = tile.getBoundingClientRect();\n        var viewportHeight = window.innerHeight || document.documentElement.clientHeight || 0;\n\n        return rect.width > 0 && rect.height > 0 && rect.bottom >= -160 && rect.top <= viewportHeight + 160;\n      }\n\n      function playVisibleMutedVideos() {\n        tiles.forEach(function (tile) {\n          if (isTileNearViewport(tile)) {\n            playMuted(tile);\n          }\n        });\n      }\n\n      function activateVideo(tile, event) {\n        var video = getVideo(tile);\n\n        if (event) {\n          if (isVideoControlEvent(event)) {\n            return;\n          }\n\n          event.preventDefault();\n        }\n\n        if (!video) {\n          return;\n        }\n\n        showTileControls(tile);\n        primeVideo(video);\n        syncTileState(tile);\n      }\n\n      function toggleVideoPlay(tile, event) {\n        var video = getVideo(tile);\n\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n\n        if (!video) {\n          return;\n        }\n\n        showTileControls(tile);\n\n        if (!video.paused && !video.ended) {\n          pauseTile(tile, true);\n        } else {\n          playTile(tile, video.hasAttribute('data-cc-video-user-sound') && !video.muted);\n        }\n      }\n\n      function toggleVideoMute(tile, event) {\n        var video = getVideo(tile);\n\n        if (event) {\n          event.preventDefault();\n          event.stopPropagation();\n        }\n\n        if (!video) {\n          return;\n        }\n\n        showTileControls(tile);\n\n        if (video.muted) {\n          playTile(tile, true);\n        } else {\n          setVideoMuted(video, true);\n          syncTileState(tile);\n        }\n      }\n\n      tiles.forEach(function (tile) {\n        ensureTileControls(tile);\n\n        var video = getVideo(tile);\n        var playButton = tile.querySelector('[data-cc-video-toggle-play]');\n        var muteButton = tile.querySelector('[data-cc-video-toggle-mute]');\n\n        if (!video) {\n          return;\n        }\n\n        primeVideo(video);\n        tile.classList.add('needs-tap');\n\n        tile.addEventListener('click', function (event) {\n          activateVideo(tile, event);\n        });\n\n        tile.addEventListener('keydown', function (event) {\n          if ((event.key === 'Enter' || event.key === ' ') && event.target === tile) {\n            activateVideo(tile, event);\n          }\n        });\n\n        tile.addEventListener('focusin', function () {\n          showTileControls(tile);\n        });\n\n        tile.addEventListener('focusout', function (event) {\n          if (!event.relatedTarget || !tile.contains(event.relatedTarget)) {\n            hideTileControls(tile);\n          }\n        });\n\n        if (playButton) {\n          playButton.addEventListener('click', function (event) {\n            toggleVideoPlay(tile, event);\n          });\n        }\n\n        if (muteButton) {\n          muteButton.addEventListener('click', function (event) {\n            toggleVideoMute(tile, event);\n          });\n        }\n\n        ['play', 'pause', 'ended', 'volumechange'].forEach(function (eventName) {\n          video.addEventListener(eventName, function () {\n            syncTileState(tile);\n          });\n        });\n\n        syncTileState(tile);\n      });\n\n      document.addEventListener('click', function (event) {\n        if (event.target && event.target.closest('[data-cc-creator-video-tile], .cc-video-mini, .cc-video-tile')) {\n          return;\n        }\n\n        tiles.forEach(hideTileControls);\n      });\n\n      if ('IntersectionObserver' in window) {\n        var observer = new IntersectionObserver(function (entries) {\n          entries.forEach(function (entry) {\n            var tile = entry.target;\n            var video = getVideo(tile);\n\n            if (!video) {\n              return;\n            }\n\n            if (entry.isIntersecting) {\n              playMuted(tile);\n            } else {\n              video.pause();\n              syncTileState(tile);\n            }\n          });\n        }, { rootMargin: '160px 0px', threshold: 0.18 });\n\n        tiles.forEach(function (tile) {\n          observer.observe(tile);\n        });\n      } else {\n        tiles.slice(0, 4).forEach(playMuted);\n      }\n\n      window.setTimeout(playVisibleMutedVideos, 250);\n      window.addEventListener('pageshow', playVisibleMutedVideos);\n      document.addEventListener('visibilitychange', function () {\n        if (!document.hidden) {\n          playVisibleMutedVideos();\n        }\n      });\n      window.addEventListener('touchstart', playVisibleMutedVideos, { once: true, passive: true });\n      window.addEventListener('pointerdown', playVisibleMutedVideos, { once: true, passive: true });\n    }\n\n    initCreatorVideos();\n\n    document.querySelectorAll('.cc-review-filter').forEach(function (button) {\n      button.addEventListener('click', function () {\n        var filter = button.getAttribute('data-filter') || 'all';\n\n        document.querySelectorAll('.cc-review-filter').forEach(function (other) {\n          other.setAttribute('aria-pressed', 'false');\n        });\n\n        button.setAttribute('aria-pressed', 'true');\n\n        document.querySelectorAll('.cc-review-card').forEach(function (card) {\n          var category = card.getAttribute('data-category');\n          card.hidden = filter !== 'all' && category !== filter;\n        });\n      });\n    });\n\n    function updateCountdown() {\n      var now = new Date();\n      var end = new Date(now);\n      end.setHours(23, 59, 59, 999);\n\n      var diff = Math.max(0, end.getTime() - now.getTime());\n      var hours = Math.floor(diff / 3600000);\n      var minutes = Math.floor((diff % 3600000) / 60000);\n      var seconds = Math.floor((diff % 60000) / 1000);\n      var text = String(hours).padStart(2, '0') + ':' + String(minutes).padStart(2, '0') + ':' + String(seconds).padStart(2, '0');\n\n      document.querySelectorAll('[data-cc-countdown]').forEach(function (node) {\n        node.textContent = text;\n      });\n    }\n\n    updateCountdown();\n    window.setInterval(updateCountdown, 1000);\n  }\n\n  function openModal(trigger) {\n    var modal = document.getElementById('ccProteinNutritionistModal');\n\n    if (!modal) {\n      return;\n    }\n\n    lastModalTrigger = trigger || document.activeElement;\n    modal.classList.add('is-open');\n    modal.setAttribute('aria-hidden', 'false');\n    document.documentElement.style.overflow = 'hidden';\n    var close = document.getElementById('ccProteinNutritionistClose');\n\n    if (close) {\n      close.focus();\n    }\n  }\n\n  function closeModal() {\n    var modal = document.getElementById('ccProteinNutritionistModal');\n\n    if (!modal) {\n      return;\n    }\n\n    modal.classList.remove('is-open');\n    modal.setAttribute('aria-hidden', 'true');\n    document.documentElement.style.overflow = '';\n\n    if (lastModalTrigger && typeof lastModalTrigger.focus === 'function') {\n      lastModalTrigger.focus();\n    }\n  }\n\n  function initModal() {\n    var trigger = document.getElementById('ccProteinNutritionistTrigger');\n    var close = document.getElementById('ccProteinNutritionistClose');\n    var backdrop = document.getElementById('ccProteinNutritionistBackdrop');\n\n    if (trigger) {\n      trigger.addEventListener('click', function () {\n        openModal(trigger);\n      });\n    }\n\n    if (close) {\n      close.addEventListener('click', closeModal);\n    }\n\n    if (backdrop) {\n      backdrop.addEventListener('click', closeModal);\n    }\n  }\n\n  function renderCart() {\n    var pack = getSelectedPack();\n    var flavorSummary = selectedFlavorSummary();\n    var lineSub = currentPackPrice(pack) * cartState.qty;\n    var discount = creatorCode && discountPct > 0 ? lineSub * discountPct : 0;\n    var finalPrice = lineSub - discount;\n    var shippingTarget = 60;\n    var shippingPct = Math.min(100, finalPrice / shippingTarget * 100);\n\n    setText('#ccProteinCartItemSupply', pack.label);\n    setText('#ccProteinCartItemFlavor', flavorSummary);\n    setText('#ccProteinCartItemPrice', money(lineSub));\n    setText('#ccProteinCartItemSavings', discount > 0 ? 'Save ' + money(discount) + ' with ' + creatorCodeLabel() : 'Creator credit tracked at checkout.');\n    setText('#ccProteinCartQty', String(cartState.qty));\n    setText('#ccProteinCartItemCount', '(' + cartState.qty + ')');\n    setText('#ccProteinCartSubtotal', money(finalPrice));\n    setText('#ccProteinCartCompareAt', money(lineSub));\n    setText('#ccProteinCartSavingsLabel', discount > 0 ? \"You're saving \" + money(discount) + ' with ' + creatorCodeLabel() : 'Price shown. Creator credit tracked at checkout.');\n\n    var progressBar = document.getElementById('ccProteinShippingProgressBar');\n    if (progressBar) {\n      progressBar.style.width = shippingPct + '%';\n    }\n\n    if (finalPrice >= shippingTarget) {\n      setText('#ccProteinShippingProgressLabel', 'You unlocked free shipping');\n    } else {\n      setText('#ccProteinShippingProgressLabel', 'Add ' + money(shippingTarget - finalPrice) + ' more for free shipping');\n    }\n    setText('#ccProteinShippingProgressAmount', money(finalPrice) + ' / ' + money(shippingTarget));\n\n    var upsell = document.getElementById('ccProteinCartUpsell');\n    if (upsell) {\n      upsell.classList.toggle('is-hidden', cartState.qty >= 3);\n    }\n\n    if (cartState.qty === 1) {\n      setText('#ccProteinUpsellHeadline', 'Add another pack to extend your supply');\n      setText('#ccProteinUpsellSubline', 'Stack your subscription supply and never run out.');\n      setText('#ccProteinUpsellButtonText', 'Add 2nd pack');\n    } else if (cartState.qty === 2) {\n      setText('#ccProteinUpsellHeadline', 'Add a 3rd pack for the full training block');\n      setText('#ccProteinUpsellSubline', 'Lock in your stack for the training block.');\n      setText('#ccProteinUpsellButtonText', 'Add 3rd pack');\n    }\n  }\n\n  function openCart(event) {\n    var cart = document.getElementById('ccProteinCartDrawer');\n\n    if (event) {\n      event.preventDefault();\n    }\n\n    if (!cart) {\n      return;\n    }\n\n    lastCartTrigger = event ? event.currentTarget : document.activeElement;\n    syncedCartLineKeys = [];\n    cartInstanceId = makeCartInstanceId();\n    cartSyncSucceeded = false;\n    cartState.qty = 1;\n    renderCart();\n    cart.classList.add('is-open');\n    cart.setAttribute('aria-hidden', 'false');\n    document.documentElement.style.overflow = 'hidden';\n    queueProteinCartSync();\n    var close = document.getElementById('ccProteinCartClose');\n\n    if (close) {\n      close.focus();\n    }\n  }\n\n  function closeCart() {\n    var cart = document.getElementById('ccProteinCartDrawer');\n\n    if (!cart) {\n      return;\n    }\n\n    cart.classList.remove('is-open');\n    cart.setAttribute('aria-hidden', 'true');\n    document.documentElement.style.overflow = '';\n\n    if (lastCartTrigger && typeof lastCartTrigger.focus === 'function') {\n      lastCartTrigger.focus();\n    }\n  }\n\n  async function checkoutSelectedProtein(button) {\n    var originalText = button ? button.textContent : 'Get Started';\n\n    if (button) {\n      button.disabled = true;\n      button.textContent = 'Checking out...';\n    }\n\n    syncedCartLineKeys = [];\n    cartInstanceId = makeCartInstanceId();\n    cartSyncSucceeded = false;\n    cartState.qty = 1;\n    renderCart();\n\n    try {\n      await syncProteinSelectionToCart();\n      goToCheckout(button, originalText, creatorCode);\n    } catch (error) {\n      if (cartSyncSucceeded) {\n        goToCheckout(button, originalText, creatorCode);\n        return;\n      }\n\n      if (button) {\n        button.textContent = 'Try again';\n        window.setTimeout(function () {\n          button.textContent = originalText;\n          button.disabled = false;\n        }, 1400);\n      }\n    }\n  }\n\n  function initCart() {\n    document.querySelectorAll('[data-cc-protein-open-cart]').forEach(function (button) {\n      if ((button.textContent || '').trim() === 'Add to Cart') {\n        button.textContent = 'Get Started';\n      }\n      button.addEventListener('click', function (event) {\n        event.preventDefault();\n        checkoutSelectedProtein(button);\n      });\n    });\n\n    var close = document.getElementById('ccProteinCartClose');\n    var backdrop = document.getElementById('ccProteinCartBackdrop');\n    var decrease = document.getElementById('ccProteinQtyDecrease');\n    var increase = document.getElementById('ccProteinQtyIncrease');\n    var upsell = document.getElementById('ccProteinUpsellButton');\n    var checkout = document.getElementById('ccProteinCheckoutButton');\n\n    if (close) {\n      close.addEventListener('click', closeCart);\n    }\n\n    if (backdrop) {\n      backdrop.addEventListener('click', closeCart);\n    }\n\n    if (decrease) {\n      decrease.addEventListener('click', function () {\n        if (cartState.qty > 1) {\n          cartState.qty -= 1;\n          renderCart();\n          queueProteinCartSync();\n        }\n      });\n    }\n\n    if (increase) {\n      increase.addEventListener('click', function () {\n        if (cartState.qty < 5) {\n          cartState.qty += 1;\n          renderCart();\n          queueProteinCartSync();\n        }\n      });\n    }\n\n    if (upsell) {\n      upsell.addEventListener('click', function () {\n        if (cartState.qty < 3) {\n          cartState.qty += 1;\n          renderCart();\n          queueProteinCartSync();\n        }\n      });\n    }\n\n    async function addProteinSelectionToCart() {\n      await cartSyncPromise.catch(function () {});\n      if (!syncedCartLineKeys.length) {\n        return syncProteinSelectionToCart();\n      }\n      try {\n        return await fetchShopifyCart();\n      } catch (error) {\n        return null;\n      }\n    }\n\n    if (checkout) {\n      checkout.addEventListener('click', async function () {\n        var code = checkout.getAttribute('data-discount-code');\n        var originalText = checkout.textContent;\n\n        checkout.disabled = true;\n        checkout.textContent = 'Checking out...';\n\n        try {\n          await addProteinSelectionToCart();\n          goToCheckout(checkout, originalText, code);\n        } catch (error) {\n          if (cartSyncSucceeded) {\n            goToCheckout(checkout, originalText, code);\n            return;\n          }\n          checkout.textContent = 'Try again';\n          window.setTimeout(function () {\n            checkout.textContent = originalText;\n            checkout.disabled = false;\n          }, 1400);\n        }\n      });\n    }\n  }\n\n  function initStickyBar() {\n    var stickyBar = document.getElementById('ccProteinStickyBuy');\n    var productSection = document.getElementById('product');\n\n    function updateStickyBar() {\n      if (!stickyBar || !productSection) {\n        return;\n      }\n\n      var productRect = productSection.getBoundingClientRect();\n      var scrolled = window.scrollY > window.innerHeight * 0.6;\n      var productInView = productRect.top < window.innerHeight * 0.52 && productRect.bottom > 0;\n\n      stickyBar.classList.toggle('is-visible', scrolled && !productInView);\n    }\n\n    window.addEventListener('scroll', updateStickyBar, { passive: true });\n    updateStickyBar();\n  }\n\n  document.addEventListener('keydown', function (event) {\n    if (event.key !== 'Escape') {\n      return;\n    }\n\n    closeModal();\n    closeCart();\n  });\n\n  initSelectors();\n  initScience();\n  initGenericCreatorInteractions();\n  initModal();\n  initCart();\n  initStickyBar();\n  updateFlavorUi({ syncSlots: false });\n  applyPurchaseMode();\n  updatePackUi();\n})();\n"],
  "mappings": "CAAC,UAAY,CACX,IAAI,OAAS,SAAS,cAAc,wBAAwB,EAE5D,GAAI,CAAC,OACH,OAGF,IAAI,YAAc,OAAO,aAAa,uBAAuB,GAAK,GAC9D,iBAAmB,OAAO,aAAa,4BAA4B,GAAK,GACxE,sBAAwB,OAAO,aAAa,iCAAiC,GAAK,GAClF,gBAAkB,OAAO,aAAa,0BAA0B,GAAK,GACrE,iBAAmB,mCACnB,YAAc,WAAW,OAAO,aAAa,sBAAsB,GAAK,GAAG,GAC3E,CAAC,OAAO,SAAS,WAAW,GAAK,YAAc,KACjD,YAAc,GAEhB,IAAI,cAAgB,OAAO,aAAa,yBAAyB,GAAK,cAClE,aAAe,YACf,UAAY,CACd,IAAK,CACP,EACI,mBAAqB,CAAC,EACtB,eAAiB,GACjB,gBAAkB,QAAQ,QAAQ,EAClC,kBAAoB,GACpB,YAAc,CAAC,EACf,iBAAmB,KACnB,gBAAkB,KAEtB,SAAS,MAAM,MAAO,CACpB,MAAO,IAAM,OAAO,OAAS,CAAC,EAAE,QAAQ,CAAC,CAC3C,CAEA,SAAS,aAAa,MAAO,CAC3B,OAAO,MAAM,KAAK,EAAE,QAAQ,QAAS,EAAE,CACzC,CAEA,SAAS,kBAAmB,CAC1B,IAAI,OAAS,IAAI,gBAAgB,OAAO,SAAS,MAAM,EACnD,OAAS,OAAO,IAAI,IAAI,GAAK,OAAO,IAAI,SAAS,GAAK,GACtD,UAEC,SACH,UAAY,OAAO,SAAS,SAAS,MAAM,8BAA8B,EACzE,OAAS,UAAY,UAAU,CAAC,EAAI,IAGtC,GAAI,CACF,OAAS,mBAAmB,MAAM,CACpC,MAAgB,CAAC,CAEjB,OAAO,OAAO,QAAU,EAAE,EAAE,KAAK,EAAE,YAAY,CACjD,CAEA,SAAS,oBAAqB,CAC5B,IAAI,KAAO,SAAS,cAAc,wBAAwB,EAE1D,OAAI,MAAQ,KAAK,YAAY,KAAK,EACzB,KAAK,YAAY,KAAK,EAGxB,SAAS,MAAM,QAAQ,cAAe,EAAE,EAAE,KAAK,GAAK,SAC7D,CAEA,SAAS,uBAAuB,UAAW,CACzC,IAAI,MAAQ,UAAY,UAAU,cAAc,KAAK,EAAI,KACrD,IAAM,OAAQ,MAAM,aAAa,KAAK,GAAK,GAC/C,MAAO,CAAC,OAAS,CAAC,KAAO,IAAI,QAAQ,4BAA4B,IAAM,EACzE,CAEA,SAAS,gBAAgB,UAAW,SAAU,IAAK,MAAO,OAAQ,QAAS,CACzE,GAAI,GAAC,WAAa,CAAC,UAAY,CAAC,uBAAuB,SAAS,GAIhE,WAAU,UAAY,GAEtB,IAAI,MAAQ,SAAS,cAAc,KAAK,EACxC,MAAM,IAAM,SACZ,MAAM,IAAM,KAAO,UACnB,MAAM,QAAU,SAAW,OAC3B,MAAM,MAAQ,MACd,MAAM,OAAS,OAEf,UAAU,YAAY,KAAK,EAC7B,CAEA,SAAS,WAAW,MAAO,CACzB,OAAO,OAAS,OAAO,MAAM,OAAU,SAAW,MAAM,MAAM,KAAK,EAAI,EACzE,CAEA,SAAS,cAAc,MAAO,CAC5B,IAAI,MAAQ,WAAW,KAAK,EACxB,eAAiB,OAAS,MAAM,WAAa,MAAM,UAAU,MAAQ,MAAM,UAAU,MAAQ,KAEjG,OAAI,gBAAkB,eAAe,IAC5B,eAAe,IAGjB,QAAU,MAAM,QAAQ,MAAM,IAAM,GAAK,MAAM,QAAQ,IAAI,IAAM,GAAK,MAAQ,EACvF,CAEA,SAAS,yBAAyB,MAAO,CAEvC,OADA,MAAQ,OAAO,OAAS,EAAE,EAAE,KAAK,EAC5B,OAIL,MAAQ,MAAM,QAAQ,IAAK,EAAE,EACzB,YAAY,KAAK,KAAK,IACxB,MAAQ,OAAO,SAAS,MAAO,EAAE,CAAC,GAE7B,MAAQ,KAPN,EAQX,CAEA,SAAS,qBAAqB,MAAO,CACnC,IAAI,OAAS,WAAW,OAAO,OAAS,EAAE,EAAE,QAAQ,IAAK,EAAE,CAAC,EAC5D,OAAO,OAAO,SAAS,MAAM,GAAK,OAAS,EAAI,OAAS,IAAM,CAChE,CAEA,SAAS,iBAAiB,MAAO,CAC/B,IAAI,WAAa,yBAAyB,KAAK,EAC/C,MAAO,CAAC,CAAC,YAAc,aAAe,MAAQ,aAAe,MAC/D,CAEA,SAAS,kBAAmB,CAC1B,OAAO,aAAe,mBACxB,CAEA,SAAS,wBAAyB,CAChC,OAAO,yBAAyB,eAAe,CACjD,CAEA,SAAS,gBAAgB,KAAM,CAC7B,YAAc,OAAO,MAAQ,EAAE,EAAE,KAAK,EACtC,OAAO,aAAa,wBAAyB,WAAW,EAExD,SAAS,iBAAiB,sBAAsB,EAAE,QAAQ,SAAU,KAAM,CACxE,KAAK,aAAa,qBAAsB,WAAW,CACrD,CAAC,CACH,CAEA,SAAS,qBAAsB,CAC7B,IAAI,SAAW,uBAAuB,EAEtC,OAAI,aAAe,iBAAiB,QAAQ,EACnC,SAAW,SAAW,aAAe,YAG1C,YACK,QAAU,YAAc,4BAG1B,sCACT,CAEA,SAAS,wBAAwB,QAAS,CACxC,IAAI,KAAO,SAAW,QAAQ,UAAY,QAAQ,UAAY,iBAC1D,SAAW,SAAW,QAAQ,SAAW,QAAQ,SAAW,sBAC5D,SAAW,SAAW,QAAQ,gBAAkB,QAAQ,gBAAkB,gBAC1E,OAAS,SAAS,cAAc,4CAA4C,EAC5E,OAAS,SAAS,cAAc,uCAAuC,EACvE,YAAc,SAAS,cAAc,+DAA+D,EACpG,OAAS,SAAS,cAAc,iCAAiC,EACjE,MAAQ,SAAS,cAAc,+BAA+B,EAgBlE,GAdA,iBAAmB,OAAO,MAAQ,kBAAoB,EAAE,EAAE,KAAK,EAC/D,sBAAwB,OAAO,UAAY,uBAAyB,EAAE,EAAE,KAAK,EAC7E,gBAAkB,yBAAyB,UAAY,eAAe,EACtE,YAAc,qBAAqB,eAAe,EAElD,OAAO,aAAa,6BAA8B,gBAAgB,EAClE,OAAO,aAAa,kCAAmC,qBAAqB,EAC5E,OAAO,aAAa,2BAA4B,eAAe,EAC/D,OAAO,aAAa,uBAAwB,OAAO,WAAW,CAAC,EAE3D,SACF,OAAO,aAAe,kBAAoB,WAAa,aAGrD,OAEF,GADA,OAAO,UAAY,GACf,sBAAuB,CACzB,IAAI,YAAc,SAAS,cAAc,KAAK,EAC9C,YAAY,IAAM,sBAClB,YAAY,IAAM,GAClB,YAAY,QAAU,OACtB,YAAY,MAAQ,GACpB,YAAY,OAAS,GACrB,OAAO,YAAY,WAAW,CAChC,MACE,OAAO,aAAe,kBAAoB,KAAK,MAAM,EAAG,CAAC,EAAE,YAAY,EAIvE,cACF,YAAY,YAAc,oBAAoB,GAG5C,SACE,aAAe,iBAAiB,eAAe,EACjD,OAAO,YAAc,QAAU,YAAc,wCAAuC,gBAAkB,OAC7F,YACT,OAAO,YAAc,QAAU,YAAc,4BAE7C,OAAO,YAAc,gDAIrB,QACE,aAAe,iBAAiB,eAAe,EACjD,MAAM,YAAc,0BAAyB,gBAAkB,SAAW,YACjE,YACT,MAAM,YAAc,QAAU,YAAc,4BAE5C,MAAM,YAAc,uCAG1B,CAEA,eAAe,uBAAwB,CACrC,IAAI,OAAS,iBAAiB,EAE9B,GAAI,GAAC,QAAU,CAAC,OAAO,OAIvB,KAAI,SAAW,MAAM,MAAM,4BAA6B,CACtD,OAAQ,OACR,QAAS,CACP,eAAgB,mBAChB,oCAAqC,gBACvC,EACA,KAAM,KAAK,UAAU,CACnB,MAAO,kdACP,UAAW,CACT,OAAQ,CACN,KAAM,UACN,MACF,CACF,CACF,CAAC,CACH,CAAC,EACG,QAAU,MAAM,SAAS,KAAK,EAC9B,WAAa,SAAW,QAAQ,KAAO,QAAQ,KAAK,WAAa,KAErE,GAAK,WAIL,KAAI,SAAW,cAAc,WAAW,cAAc,EAClD,IAAM,mBAAmB,EACzB,SAAW,WAAW,WAAW,YAAY,GAAK,WAAW,WAAW,aAAa,EACrF,aAAe,yBAAyB,WAAW,WAAW,cAAc,CAAC,EAC7E,cAAgB,WAAW,WAAW,SAAS,EAE/C,UACF,gBAAgB,QAAQ,EAG1B,wBAAwB,CACtB,UAAW,cACX,SACA,gBAAiB,YACnB,CAAC,EAED,gBAAgB,SAAS,cAAc,yBAAyB,EAAG,SAAU,IAAK,KAAM,KAAM,OAAO,EACrG,gBAAgB,SAAS,cAAc,gBAAgB,EAAG,SAAU,IAAK,KAAM,KAAM,MAAM,EAC3F,gBAAgB,SAAS,cAAc,yBAAyB,EAAG,SAAU,IAAK,IAAK,IAAK,MAAM,GACpG,CAEA,gBAAgB,WAAW,EAC3B,wBAAwB,CACtB,UAAW,iBACX,SAAU,sBACV,gBAAiB,eACnB,CAAC,EACD,sBAAsB,EAAE,MAAM,UAAY,CAAC,CAAC,EAE5C,eAAe,gBAAgB,IAAK,QAAS,UAAW,CACtD,IAAI,WAAa,IAAI,gBACjB,QAAU,OAAO,WAAW,UAAY,CAC1C,WAAW,MAAM,CACnB,EAAG,WAAa,GAAI,EAEpB,GAAI,CACF,IAAI,SAAW,MAAM,MAAM,IAAK,OAAO,OAAO,CAAC,EAAG,SAAW,CAAC,EAAG,CAAE,OAAQ,WAAW,MAAO,CAAC,CAAC,EAC3F,KAAO,KAEX,GAAI,CACF,KAAO,MAAM,SAAS,KAAK,CAC7B,MAAgB,CACd,KAAO,IACT,CAEA,GAAI,CAAC,SAAS,GAAI,CAChB,IAAI,QAAU,OAAS,KAAK,aAAe,KAAK,SAAW,KAAK,QAChE,MAAM,IAAI,MAAM,SAAW,qBAAqB,CAClD,CAEA,OAAO,IACT,QAAE,CACA,OAAO,aAAa,OAAO,CAC7B,CACF,CAEA,SAAS,aAAa,OAAQ,aAAc,KAAM,CAChD,OAAO,SAAS,OAAO,KAAO,sBAAwB,mBAAmB,IAAI,EAAI,WAAW,EAC5F,OAAO,WAAW,UAAY,CACxB,CAAC,0BAA0B,KAAK,OAAO,SAAS,QAAQ,GAAK,SAC/D,OAAO,YAAc,cAAgB,WACrC,OAAO,SAAW,GAEtB,EAAG,GAAI,CACT,CAEA,SAAS,WAAW,MAAO,CACzB,OAAO,OAAO,OAAS,EAAE,EAAE,QAAQ,WAAY,SAAU,KAAM,CAC7D,MAAO,CACL,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,OACP,EAAE,IAAI,CACR,CAAC,CACH,CAEA,SAAS,gBAAiB,CACxB,OAAO,MAAM,UAAU,MAAM,KAAK,SAAS,iBAAiB,uBAAuB,CAAC,CACtF,CAEA,SAAS,cAAe,CACtB,OAAO,MAAM,UAAU,MAAM,KAAK,SAAS,iBAAiB,qBAAqB,CAAC,CACpF,CAEA,SAAS,YAAa,CACpB,OAAO,eAAe,EAAE,IAAI,SAAU,KAAM,CAC1C,MAAO,CACL,KAAM,KAAK,aAAa,aAAa,GAAK,UAC1C,WAAY,KAAK,aAAa,kBAAkB,GAAK,KAAK,aAAa,aAAa,GAAK,UACzF,MAAO,KAAK,aAAa,YAAY,GAAK,GAC1C,eAAgB,KAAK,aAAa,qBAAqB,GAAK,KAAK,aAAa,YAAY,GAAK,IAAI,MAAM,GAAG,EAAE,OAAO,OAAO,EAC5H,UAAW,KAAK,aAAa,iBAAiB,GAAK,EACrD,CACF,CAAC,CACH,CAEA,SAAS,mBAAoB,CAC3B,IAAI,SAAW,SAAS,cAAc,4CAA4C,EAC9E,SAAW,WAAW,EAAE,CAAC,GAAK,CAAE,KAAM,UAAW,WAAY,UAAW,MAAO,EAAG,EAEtF,OAAK,SAIE,CACL,KAAM,SAAS,aAAa,aAAa,GAAK,SAAS,KACvD,WAAY,SAAS,aAAa,kBAAkB,GAAK,SAAS,aAAa,aAAa,GAAK,SAAS,WAC1G,MAAO,SAAS,aAAa,YAAY,GAAK,SAAS,MACvD,eAAgB,SAAS,aAAa,qBAAqB,GAAK,SAAS,aAAa,YAAY,GAAK,SAAS,OAAS,IAAI,MAAM,GAAG,EAAE,OAAO,OAAO,EACtJ,UAAW,SAAS,aAAa,iBAAiB,GAAK,SAAS,SAClE,EATS,QAUX,CAEA,SAAS,iBAAkB,CACzB,IAAI,SAAW,SAAS,cAAc,0CAA0C,EAEhF,OAAK,SAcE,CACL,MAAO,SAAS,SAAS,aAAa,iBAAiB,GAAK,IAAK,EAAE,EACnE,MAAO,WAAW,SAAS,aAAa,YAAY,GAAK,OAAO,EAChE,aAAc,WAAW,SAAS,aAAa,oBAAoB,GAAK,GAAG,EAC3E,aAAc,WAAW,SAAS,aAAa,qBAAqB,GAAK,GAAG,EAC5E,OAAQ,WAAW,SAAS,aAAa,cAAc,GAAK,GAAG,EAC/D,MAAO,SAAS,aAAa,YAAY,GAAK,SAC9C,MAAO,SAAS,aAAa,YAAY,GAAK,SAC9C,SAAU,SAAS,aAAa,eAAe,GAAK,cACpD,QAAS,SAAS,aAAa,cAAc,GAAK,EACpD,EAvBS,CACL,MAAO,EACP,MAAO,MACP,aAAc,MACd,aAAc,MACd,OAAQ,IACR,MAAO,SACP,MAAO,SACP,SAAU,cACV,QAAS,kBACX,CAcJ,CAEA,SAAS,iBAAiB,KAAM,CAC9B,YAAO,MAAQ,gBAAgB,EACxB,eAAiB,YAAc,KAAK,MAAQ,KAAK,cAAgB,KAAK,KAC/E,CAEA,SAAS,QAAQ,SAAU,MAAO,CAChC,IAAI,KAAO,SAAS,cAAc,QAAQ,EAEtC,OACF,KAAK,YAAc,MAEvB,CAEA,SAAS,SAAS,SAAU,IAAK,IAAK,CACpC,IAAI,MAAQ,SAAS,cAAc,QAAQ,EAEvC,CAAC,OAAS,CAAC,MAIf,MAAM,aAAa,MAAO,GAAG,EAEzB,KACF,MAAM,aAAa,MAAO,GAAG,EAEjC,CAEA,SAAS,oBAAqB,CAC5B,MAAO,cAAgB,KAAK,IAAI,EAAI,IAAM,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAC9E,CAEA,eAAe,kBAAmB,CAChC,OAAI,OAAO,UAAY,OAAO,OAAO,SAAS,WAAc,WACnD,OAAO,SAAS,UAAU,EAG5B,gBAAgB,WAAY,CACjC,QAAS,CAAE,OAAQ,kBAAmB,CACxC,CAAC,CACH,CAEA,SAAS,uBAAuB,KAAM,CAChC,OAAO,UAAY,OAAO,OAAO,SAAS,iBAAoB,YAChE,OAAO,SAAS,gBAAgB,KAAK,UAAU,EAGjD,SAAS,cAAc,IAAI,YAAY,mBAAoB,CAAE,OAAQ,CAAE,IAAW,CAAE,CAAC,CAAC,CACxF,CAEA,SAAS,uBAAwB,CAC/B,IAAI,KAAO,gBAAgB,EACvB,eAAiB,kBAAkB,EACnC,aAAe,CAAC,EAChB,YAAc,qBAAqB,KAAM,cAAc,EAE3D,OAAK,iBACH,eAAiB,mBAAmB,GAGlC,YAAY,OAAS,EACvB,YAAY,QAAQ,SAAU,WAAY,CACxC,IAAI,OAAS,iBAAiB,UAAU,EACpC,UAAY,QAAU,OAAO,UAAY,OAAO,UAAY,eAAe,UAC/E,aAAa,SAAS,GAAK,aAAa,SAAS,GAAK,GAAK,UAAU,GACvE,CAAC,EAED,aAAa,eAAe,SAAS,EAAI,KAAK,IAAI,EAAG,KAAK,KAAK,EAAI,UAAU,IAGxE,OAAO,KAAK,YAAY,EAAE,OAAO,OAAO,EAAE,IAAI,SAAU,UAAW,CACxE,IAAI,KAAO,CACT,GAAI,OAAO,SAAS,EACpB,SAAU,aAAa,SAAS,EAChC,WAAY,CACV,kBAAmB,cACrB,CACF,EAEA,OAAI,cACF,KAAK,WAAW,cAAgB,aAG9B,eAAiB,eAAiB,cACpC,KAAK,aAAe,OAAO,aAAa,GAGnC,IACT,CAAC,CACH,CAEA,SAAS,yBAAyB,KAAM,CACtC,mBAAqB,MAAQ,KAAK,MAAQ,KAAK,MAAM,OAAO,SAAU,KAAM,CAC1E,IAAI,WAAa,MAAQ,KAAK,WAAa,KAAK,WAAa,CAAC,EAC9D,OAAO,WAAW,oBAAsB,cAC1C,CAAC,EAAE,IAAI,SAAU,KAAM,CACrB,OAAO,KAAK,GACd,CAAC,EAAI,CAAC,CACR,CAEA,eAAe,yBAA0B,CAIvC,QAHI,KAAO,mBAAmB,MAAM,EAChC,WAAa,KAER,EAAI,EAAG,EAAI,KAAK,OAAQ,GAAK,EACpC,WAAa,MAAM,gBAAgB,kBAAmB,CACpD,OAAQ,OACR,QAAS,CACP,OAAQ,mBACR,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAU,CACnB,GAAI,KAAK,CAAC,EACV,SAAU,CACZ,CAAC,CACH,CAAC,EAGH,0BAAqB,CAAC,EACf,UACT,CAEA,eAAe,4BAA6B,CACrC,iBACH,eAAiB,mBAAmB,GAGlC,mBAAmB,QACrB,MAAM,wBAAwB,EAGhC,IAAI,MAAQ,sBAAsB,EAElC,GAAI,MAAM,SAAW,EACnB,MAAM,IAAI,MAAM,6BAA6B,EAG/C,MAAM,gBAAgB,eAAgB,CACpC,OAAQ,OACR,QAAS,CACP,OAAQ,mBACR,eAAgB,kBAClB,EACA,KAAM,KAAK,UAAU,CAAE,KAAa,CAAC,CACvC,CAAC,EACD,kBAAoB,GAEpB,GAAI,CACF,IAAI,KAAO,MAAM,iBAAiB,EAClC,gCAAyB,IAAI,EAC7B,uBAAuB,IAAI,EACpB,IACT,MAAgB,CACd,8BAAuB,CAAE,WAAY,MAAM,OAAO,SAAU,IAAK,KAAM,CAAE,OAAO,IAAM,OAAO,KAAK,UAAY,CAAC,CAAG,EAAG,CAAC,CAAE,CAAC,EAClH,IACT,CACF,CAEA,SAAS,sBAAuB,CAC9B,uBAAkB,gBAAgB,MAAM,UAAY,CAAC,CAAC,EAAE,KAAK,UAAY,CACvE,OAAO,2BAA2B,CACpC,CAAC,EACD,gBAAgB,MAAM,UAAY,CAAC,CAAC,EAC7B,eACT,CAEA,SAAS,uBAAwB,CAC/B,IAAI,KAAO,gBAAgB,EACvB,OAAS,kBAAkB,EAC3B,YAAc,qBAAqB,KAAM,MAAM,EAEnD,OAAI,YAAY,SAAW,EAClB,OAAO,KAGT,YAAY,KAAK,IAAI,CAC9B,CAEA,SAAS,iBAAiB,KAAM,CAC9B,IAAI,QAAU,WAAW,EACrB,SAAW,kBAAkB,EAC7B,MAAQ,QAAQ,KAAK,SAAU,OAAQ,CACzC,OAAO,OAAO,OAAS,IACzB,CAAC,EAED,OAAO,OAAS,UAAY,QAAQ,CAAC,CACvC,CAEA,SAAS,qBAAqB,KAAM,eAAgB,CAClD,IAAI,MAAQ,MAAM,UAAU,MAAM,KAAK,SAAS,iBAAiB,kBAAkB,CAAC,EAChF,MAAQ,MAAQ,KAAK,MAAQ,KAAK,MAAQ,EAC1C,WAAa,MAAM,MAAM,EAAG,KAAK,EAAE,IAAI,SAAU,KAAM,CACzD,IAAI,MAAQ,KAAK,cAAc,0BAA0B,EACzD,OAAO,KAAK,aAAa,kBAAkB,IAAM,MAAQ,MAAM,YAAY,KAAK,EAAI,GACtF,CAAC,EAAE,OAAO,OAAO,EAEjB,OAAI,MAAQ,EACH,CAAC,EAGN,WAAW,QAAU,MAChB,WAAW,MAAM,EAAG,KAAK,EAG9B,YAAY,QAAU,MACjB,YAAY,MAAM,EAAG,KAAK,EAG5B,gBAAkB,eAAe,KAAO,IAAI,MAAM,KAAK,EAAE,KAAK,eAAe,IAAI,EAAI,CAAC,CAC/F,CAEA,SAAS,cAAc,MAAO,WAAY,CACxC,IAAI,OAAS,kBAAkB,EAE/B,YAAY,KAAK,EAAI,YAAc,OAAO,KAC1C,YAAY,EACZ,0BAA0B,EAC1B,QAAQ,2BAA4B,sBAAsB,CAAC,EAC3D,WAAW,CACb,CAEA,SAAS,2BAA4B,CACnC,IAAI,KAAO,gBAAgB,EACvB,KAAO,KAAK,OAAS,KAAK,MAE9B,QAAQ,4BAA6B,IAAI,CAC3C,CAEA,SAAS,qBAAsB,CAC7B,aAAa,EAAE,QAAQ,SAAU,KAAM,CACrC,IAAI,QAAU,KAAK,cAAc,gCAAgC,EAC7D,MAAQ,WAAW,KAAK,aAAa,YAAY,GAAK,GAAG,EACzD,aAAe,WAAW,KAAK,aAAa,oBAAoB,GAAK,GAAG,EACxE,MAAQ,SAAS,KAAK,aAAa,iBAAiB,GAAK,IAAK,EAAE,GAAK,EAEzE,GAAK,QAIL,IAAI,OAAS,EAAG,CACd,QAAQ,YAAc,UACtB,MACF,CAEI,aAAe,QACjB,QAAQ,YAAc,QAAU,aAAa,aAAe,KAAK,GAErE,CAAC,CACH,CAEA,SAAS,mBAAoB,CAC3B,IAAI,OAAS,SAAS,cAAc,0BAA0B,EAC1D,cAAgB,SAAS,cAAc,qCAAqC,EAC5E,YAAc,SAAS,cAAc,oCAAoC,EACzE,eAAiB,cAAgB,cAAc,cAAc,mBAAmB,EAAI,KACpF,aAAe,YAAc,YAAY,cAAc,mBAAmB,EAAI,KAE9E,QACF,OAAO,aAAa,wBAAyB,YAAY,EAGvD,gBACF,cAAc,UAAU,OAAO,cAAe,eAAiB,WAAW,EAC1E,cAAc,aAAa,eAAgB,eAAiB,YAAc,OAAS,OAAO,GAGxF,cACF,YAAY,UAAU,OAAO,cAAe,eAAiB,UAAU,EACvE,YAAY,aAAa,eAAgB,eAAiB,WAAa,OAAS,OAAO,GAGrF,gBACF,eAAe,UAAU,OAAO,YAAa,eAAiB,WAAW,EAGvE,cACF,aAAa,UAAU,OAAO,YAAa,eAAiB,UAAU,EAGxE,wBAAwB,CACtB,UAAW,iBACX,SAAU,sBACV,gBAAiB,eACnB,CAAC,CACH,CAEA,SAAS,gBAAgB,KAAM,CACzB,OAAS,aAAe,OAAS,aAIrC,aAAe,KACf,kBAAkB,EAClB,aAAa,EACf,CAEA,SAAS,cAAe,CACtB,IAAI,KAAO,gBAAgB,EACvB,YAAc,SAAS,cAAc,iCAAiC,EACtE,cAAgB,SAAS,cAAc,iCAAiC,EACxE,aAAe,SAAS,cAAc,2BAA2B,EACjE,aAAe,SAAS,cAAc,kCAAkC,EACxE,aAAe,iBAAiB,IAAI,EAExC,0BAA0B,EAC1B,oBAAoB,EACpB,QAAQ,wBAAyB,MAAM,YAAY,CAAC,EACpD,QAAQ,wBAAyB,KAAK,KAAK,EAC3C,QAAQ,2BAA4B,KAAK,KAAK,EAE1C,cACF,YAAY,YAAc,MAAM,YAAY,GAG1C,gBACE,eAAiB,aAAe,KAAK,aAAe,KAAK,MAC3D,cAAc,YAAc,MAAM,KAAK,YAAY,EAEnD,cAAc,YAAc,IAI5B,eACF,aAAa,YAAc,MAAM,KAAK,MAAM,EAAI,YAG9C,eACF,aAAa,YAAc,MAAM,KAAK,cAAgB,KAAK,KAAK,GAGlE,YAAY,EACZ,WAAW,CACb,CAEA,SAAS,eAAe,QAAS,CAC/B,IAAI,OAAS,kBAAkB,EAC3B,cAAgB,OAAO,eAAiB,OAAO,cAAc,OAAS,OAAO,cAAgB,CAAC,OAAO,KAAK,EAC1G,UAAY,cAAc,CAAC,GAAK,OAAO,MACvC,QAAU,YAAY,SAAW,GAAK,YAAY,MAAM,SAAU,KAAM,CAC1E,OAAO,OAAS,YAAY,CAAC,CAC/B,CAAC,EAED,QAAQ,wBAAyB,OAAO,IAAI,EAC5C,QAAQ,2BAA4B,sBAAsB,CAAC,EAC3D,SAAS,sBAAuB,UAAW,0BAA4B,OAAO,IAAI,EAClF,SAAS,wBAAyB,UAAW,0BAA4B,OAAO,IAAI,EACpF,SAAS,sBAAuB,UAAW,0BAA4B,OAAO,IAAI,EAElF,SAAS,iBAAiB,yBAAyB,EAAE,QAAQ,SAAU,OAAQ,MAAO,CACpF,IAAI,SAAW,cAAc,KAAK,EAC9B,MAAQ,OAAO,cAAc,KAAK,EAEtC,GAAI,CAAC,SAAU,CACb,OAAO,OAAS,GAChB,MACF,CAEA,OAAO,OAAS,GAChB,OAAO,aAAa,WAAY,QAAQ,EACxC,OAAO,aAAa,eAAgB,QAAU,EAAI,OAAS,OAAO,EAE9D,QACF,MAAM,aAAa,MAAO,QAAQ,EAClC,MAAM,aAAa,MAAO,0BAA4B,OAAO,IAAI,EAErE,CAAC,GAEG,CAAC,SAAW,QAAQ,YAAc,KAChC,UACF,YAAc,YAAY,IAAI,UAAY,CACxC,OAAO,OAAO,IAChB,CAAC,GAIL,YAAY,EACZ,0BAA0B,EAC1B,QAAQ,2BAA4B,sBAAsB,CAAC,CAC7D,CAEA,SAAS,aAAc,CACrB,IAAI,WAAa,SAAS,eAAe,qBAAqB,EAC1D,MAAQ,SAAS,eAAe,oBAAoB,EACpD,KAAO,gBAAgB,EACvB,OAAS,kBAAkB,EAC3B,QAAU,WAAW,EAEzB,GAAI,GAAC,YAAc,CAAC,OAIpB,IAAI,KAAK,MAAQ,EAAG,CAClB,WAAW,OAAS,GACpB,MAAM,UAAY,GAClB,MACF,CAIA,IAFA,WAAW,OAAS,GAEb,YAAY,OAAS,KAAK,OAC/B,YAAY,KAAK,OAAO,IAAI,EAG1B,YAAY,OAAS,KAAK,QAC5B,YAAc,YAAY,MAAM,EAAG,KAAK,KAAK,GAG/C,MAAM,UAAY,GAElB,QAAS,EAAI,EAAG,EAAI,KAAK,MAAO,GAAK,EAAG,CACtC,IAAI,KAAO,SAAS,cAAc,KAAK,EACvC,KAAK,UAAY,kBACjB,KAAK,aAAa,kBAAmB,OAAO,CAAC,CAAC,EAC9C,KAAK,aAAa,mBAAoB,YAAY,CAAC,CAAC,EACpD,KAAK,UACH,2EAC6C,EAAI,GAAK,2FAED,EAAI,GAAK,gDACf,WAAW,YAAY,CAAC,CAAC,EAAI,6JAK1E,QAAQ,IAAI,SAAU,KAAM,CAC1B,MAAO,iFAAmF,EAAI,uBAAyB,WAAW,KAAK,IAAI,EAAI,oBAAsB,YAAY,CAAC,IAAM,KAAK,KAAO,OAAS,SAAW,KAAO,WAAW,KAAK,UAAU,EAAI,WAC/P,CAAC,EAAE,KAAK,EAAE,EACZ,SACF,MAAM,YAAY,IAAI,CACxB,CAEA,MAAM,iBAAiB,0BAA0B,EAAE,QAAQ,SAAU,OAAQ,CAC3E,OAAO,iBAAiB,QAAS,UAAY,CAC3C,IAAIA,MAAO,OAAO,QAAQ,kBAAkB,EACxC,OAASA,MAAOA,MAAK,cAAc,0BAA0B,EAAI,KACjE,UAAY,OAAS,OAAO,OAAS,GAEzC,MAAM,iBAAiB,0BAA0B,EAAE,QAAQ,SAAU,YAAa,CAChF,YAAY,OAAS,EACvB,CAAC,EACD,MAAM,iBAAiB,0BAA0B,EAAE,QAAQ,SAAU,YAAa,CAChF,YAAY,aAAa,gBAAiB,OAAO,EACjD,YAAY,YAAc,QAC5B,CAAC,EAEG,SACF,OAAO,OAAS,CAAC,UACjB,OAAO,aAAa,gBAAiB,UAAY,OAAS,OAAO,EACjE,OAAO,YAAc,UAAY,OAAS,SAE9C,CAAC,CACH,CAAC,EAED,MAAM,iBAAiB,iCAAiC,EAAE,QAAQ,SAAU,OAAQ,CAClF,OAAO,iBAAiB,QAAS,UAAY,CAC3C,IAAI,MAAQ,SAAS,OAAO,aAAa,iBAAiB,GAAK,IAAK,EAAE,GAAK,EAC3E,cAAc,MAAO,OAAO,aAAa,kBAAkB,GAAK,OAAO,IAAI,CAC7E,CAAC,CACH,CAAC,EACH,CAEA,SAAS,eAAgB,CACvB,eAAe,EAAE,QAAQ,SAAU,KAAM,CACvC,KAAK,iBAAiB,QAAS,UAAY,CACzC,eAAe,EAAE,QAAQ,SAAU,MAAO,CACxC,MAAM,aAAa,eAAgB,OAAO,CAC5C,CAAC,EACD,KAAK,aAAa,eAAgB,MAAM,EACxC,eAAe,EACf,WAAW,CACb,CAAC,CACH,CAAC,EAED,aAAa,EAAE,QAAQ,SAAU,KAAM,CACrC,KAAK,iBAAiB,QAAS,UAAY,CACzC,aAAa,EAAE,QAAQ,SAAU,MAAO,CACtC,MAAM,aAAa,eAAgB,OAAO,CAC5C,CAAC,EACD,KAAK,aAAa,eAAgB,MAAM,EACxC,aAAa,CACf,CAAC,CACH,CAAC,EAED,SAAS,iBAAiB,yBAAyB,EAAE,QAAQ,SAAU,KAAM,CAC3E,IAAI,KAAO,KAAK,aAAa,uBAAuB,EACpD,KAAK,iBAAiB,QAAS,UAAY,CACzC,gBAAgB,IAAI,CACtB,CAAC,EACD,KAAK,iBAAiB,UAAW,SAAU,MAAO,EAC5C,MAAM,MAAQ,SAAW,MAAM,MAAQ,OACzC,MAAM,eAAe,EACrB,gBAAgB,IAAI,EAExB,CAAC,CACH,CAAC,EAED,SAAS,iBAAiB,yBAAyB,EAAE,QAAQ,SAAU,OAAQ,CAC7E,OAAO,iBAAiB,QAAS,UAAY,CAC3C,SAAS,iBAAiB,yBAAyB,EAAE,QAAQ,SAAU,MAAO,CAC5E,MAAM,aAAa,eAAgB,OAAO,CAC5C,CAAC,EACD,OAAO,aAAa,eAAgB,MAAM,EAC1C,SAAS,sBAAuB,OAAO,aAAa,UAAU,CAAC,CACjE,CAAC,CACH,CAAC,EAED,IAAI,WAAa,SAAS,eAAe,qBAAqB,EAE1D,YACF,WAAW,iBAAiB,QAAS,UAAY,CAC/C,IAAI,OAAS,kBAAkB,EAC/B,YAAc,YAAY,IAAI,UAAY,CACxC,OAAO,OAAO,IAChB,CAAC,EACD,YAAY,EACZ,0BAA0B,EAC1B,QAAQ,2BAA4B,sBAAsB,CAAC,CAC7D,CAAC,CAEL,CAEA,SAAS,aAAc,CACrB,SAAS,iBAAiB,kCAAkC,EAAE,QAAQ,SAAU,OAAQ,CACtF,OAAO,iBAAiB,QAAS,UAAY,CAC3C,IAAI,KAAO,OAAO,QAAQ,0BAA0B,EAChD,OAAS,OAAO,aAAa,eAAe,IAAM,OAEjD,OAIL,OAAO,aAAa,gBAAiB,OAAS,QAAU,MAAM,EAC9D,KAAK,UAAU,OAAO,UAAW,CAAC,MAAM,EAC1C,CAAC,CACH,CAAC,CACH,CAEA,SAAS,gCAAiC,CACxC,IAAI,QAAU,SAAS,eAAe,WAAW,EAC7C,QAAU,SAAS,eAAe,WAAW,EAC7C,QAAU,SAAS,eAAe,WAAW,EAE7C,SAAW,SAAW,UACxB,QAAQ,iBAAiB,QAAS,UAAY,CAC5C,QAAQ,SAAS,CAAE,KAAM,KAAM,SAAU,QAAS,CAAC,CACrD,CAAC,EAED,QAAQ,iBAAiB,QAAS,UAAY,CAC5C,QAAQ,SAAS,CAAE,KAAM,IAAK,SAAU,QAAS,CAAC,CACpD,CAAC,GAGH,SAAS,mBAAoB,CAC3B,IAAI,MAAQ,MAAM,UAAU,MAAM,KAAK,SAAS,iBAAiB,8DAA8D,CAAC,EAEhI,GAAI,CAAC,MAAM,OACT,OAGF,SAAS,SAAS,KAAM,CACtB,OAAO,KAAO,KAAK,cAAc,gCAAgC,EAAI,IACvE,CAEA,SAAS,uBAAwB,CAC/B,MAAO,CACL,yDACE,0JACE,gJACA,8JACF,YACA,2JACE,6SACA,mSACF,YACF,QACF,EAAE,KAAK,EAAE,CACX,CAEA,SAAS,oBAAoB,MAAO,CAClC,MAAO,GAAQ,OAAS,MAAM,QAAU,MAAM,OAAO,QAAQ,oFAAoF,EACnJ,CAEA,SAAS,iBAAiB,KAAM,CACzB,OAIL,KAAK,UAAU,OAAO,sBAAsB,EAC5C,KAAK,gBAAgB,gCAAgC,EACvD,CAEA,SAAS,iBAAiB,KAAM,CACzB,OAIL,MAAM,QAAQ,SAAU,UAAW,CAC7B,YAAc,MAChB,iBAAiB,SAAS,CAE9B,CAAC,EAED,KAAK,UAAU,IAAI,sBAAsB,EACzC,KAAK,aAAa,iCAAkC,MAAM,EAC5D,CAEA,SAAS,cAAc,MAAO,MAAO,CAC9B,QAIL,MAAM,MAAQ,EAAQ,MAElB,MAAM,OACR,MAAM,aAAe,GACrB,MAAM,aAAa,QAAS,EAAE,EAC9B,MAAM,gBAAgB,0BAA0B,IAEhD,MAAM,aAAe,GACrB,MAAM,gBAAgB,OAAO,EAC7B,MAAM,aAAa,2BAA4B,MAAM,GAEzD,CAEA,SAAS,mBAAmB,KAAM,CAChC,IAAI,MAAQ,SAAS,IAAI,EACrB,QAAU,KAAK,QAAU,KAAK,QAAQ,YAAY,EAAI,GACtD,UAAY,KAAK,UAAU,SAAS,eAAe,EAAI,sBAAwB,sBAsBnF,GApBA,KAAK,aAAa,6BAA8B,EAAE,EAClD,KAAK,aAAa,eAAgB,KAAK,aAAa,cAAc,GAAK,OAAO,EAEzE,KAAK,aAAa,YAAY,GACjC,KAAK,aAAa,aAAc,eAAe,EAG7C,UAAY,UAAY,UAAY,MACtC,KAAK,aAAa,OAAQ,KAAK,aAAa,MAAM,GAAK,OAAO,EAC9D,KAAK,aAAa,WAAY,KAAK,aAAa,UAAU,GAAK,GAAG,GAGhE,OACF,MAAM,aAAa,wBAAyB,EAAE,EAG5C,OAAS,CAAC,KAAK,cAAc,0BAA0B,GACzD,MAAM,mBAAmB,WAAY,sBAAsB,CAAC,EAG1D,OAAS,CAAC,KAAK,cAAc,IAAM,SAAS,EAAG,CACjD,IAAI,SAAW,SAAS,cAAc,MAAM,EAC5C,SAAS,UAAY,UACrB,SAAS,aAAa,cAAe,MAAM,EAC3C,SAAS,YAAc,SACvB,MAAM,sBAAsB,WAAY,QAAQ,CAClD,CACF,CAEA,SAAS,WAAW,MAAO,WAAY,CAChC,QAID,aAAe,IAAS,CAAC,MAAM,aAAa,0BAA0B,GACxE,cAAc,MAAO,EAAI,EAG3B,MAAM,KAAO,GACb,MAAM,YAAc,GACpB,MAAM,aAAa,cAAe,EAAE,EACpC,MAAM,aAAa,qBAAsB,EAAE,EAC3C,MAAM,aAAa,UAAW,MAAM,aAAa,SAAS,GAAK,UAAU,EAErE,MAAM,aAAe,GAAK,OAAO,MAAM,MAAS,YAClD,MAAM,KAAK,EAEf,CAEA,SAAS,cAAc,KAAM,CAC3B,IAAI,MAAQ,SAAS,IAAI,EACrB,UAAY,OAAS,CAAC,MAAM,QAAU,CAAC,MAAM,MAC7C,WAAa,KAAO,KAAK,cAAc,6BAA6B,EAAI,KACxE,WAAa,KAAO,KAAK,cAAc,6BAA6B,EAAI,KACxE,QAAU,CAAC,OAAS,MAAM,MAE9B,KAAK,UAAU,OAAO,aAAc,EAAQ,SAAU,EACtD,KAAK,UAAU,OAAO,YAAa,CAAC,SAAS,EAC7C,KAAK,UAAU,OAAO,WAAY,EAAQ,OAAQ,EAClD,KAAK,UAAU,OAAO,YAAa,CAAC,SAAS,EAC7C,KAAK,aAAa,eAAgB,OAAO,GAAQ,WAAa,OAAS,CAAC,MAAM,MAAM,CAAC,EAEjF,aACF,WAAW,UAAU,OAAO,YAAa,CAAC,SAAS,EACnD,WAAW,aAAa,aAAc,UAAY,cAAgB,YAAY,EAC9E,WAAW,aAAa,eAAgB,OAAO,EAAQ,SAAU,CAAC,GAGhE,aACF,WAAW,UAAU,OAAO,WAAY,EAAQ,OAAQ,EACxD,WAAW,aAAa,aAAc,QAAU,eAAiB,YAAY,EAC7E,WAAW,aAAa,eAAgB,OAAe,CAAC,OAAQ,CAAC,EAErE,CAEA,SAAS,iBAAiB,WAAY,CACpC,MAAM,QAAQ,SAAU,KAAM,CAC5B,IAAI,MAAQ,SAAS,IAAI,EAErB,CAAC,OAAS,OAAS,aAIvB,cAAc,MAAO,EAAI,EACzB,MAAM,MAAM,EACZ,KAAK,gBAAgB,2BAA2B,EAChD,iBAAiB,IAAI,EACrB,cAAc,IAAI,EACpB,CAAC,CACH,CAEA,SAAS,SAAS,KAAM,UAAW,CACjC,IAAI,MAAQ,SAAS,IAAI,EAEzB,GAAK,MAIL,CAAI,WACF,iBAAiB,IAAI,EAGvB,KAAK,gBAAgB,2BAA2B,EAChD,WAAW,MAAO,CAAC,SAAS,EAC5B,cAAc,MAAO,CAAC,SAAS,EAE/B,IAAI,YAAc,MAAM,KAAK,EAEzB,aAAe,OAAO,YAAY,OAAU,WAC9C,YAAY,KAAK,UAAY,CAC3B,cAAc,IAAI,CACpB,CAAC,EAAE,MAAM,UAAY,CACnB,KAAK,UAAU,IAAI,WAAW,EAC9B,cAAc,IAAI,CACpB,CAAC,EAED,cAAc,IAAI,EAEtB,CAEA,SAAS,UAAU,KAAM,CACvB,IAAI,MAAQ,SAAS,IAAI,EAErB,CAAC,OAAS,KAAK,aAAa,2BAA2B,GAAK,MAAM,aAAa,0BAA0B,GAIzG,CAAC,MAAM,QAAU,CAAC,MAAM,OAI5B,SAAS,KAAM,EAAK,CACtB,CAEA,SAAS,UAAU,KAAM,cAAe,CACtC,IAAI,MAAQ,SAAS,IAAI,EAEpB,QAID,eACF,KAAK,aAAa,4BAA6B,MAAM,EAGvD,MAAM,MAAM,EACZ,cAAc,IAAI,EACpB,CAEA,SAAS,mBAAmB,KAAM,CAChC,GAAI,CAAC,MAAQ,OAAO,KAAK,uBAA0B,WACjD,MAAO,GAGT,IAAI,KAAO,KAAK,sBAAsB,EAClC,eAAiB,OAAO,aAAe,SAAS,gBAAgB,cAAgB,EAEpF,OAAO,KAAK,MAAQ,GAAK,KAAK,OAAS,GAAK,KAAK,QAAU,MAAQ,KAAK,KAAO,eAAiB,GAClG,CAEA,SAAS,wBAAyB,CAChC,MAAM,QAAQ,SAAU,KAAM,CACxB,mBAAmB,IAAI,GACzB,UAAU,IAAI,CAElB,CAAC,CACH,CAEA,SAAS,cAAc,KAAM,MAAO,CAClC,IAAI,MAAQ,SAAS,IAAI,EAEzB,GAAI,MAAO,CACT,GAAI,oBAAoB,KAAK,EAC3B,OAGF,MAAM,eAAe,CACvB,CAEK,QAIL,iBAAiB,IAAI,EACrB,WAAW,KAAK,EAChB,cAAc,IAAI,EACpB,CAEA,SAAS,gBAAgB,KAAM,MAAO,CACpC,IAAI,MAAQ,SAAS,IAAI,EAErB,QACF,MAAM,eAAe,EACrB,MAAM,gBAAgB,GAGnB,QAIL,iBAAiB,IAAI,EAEjB,CAAC,MAAM,QAAU,CAAC,MAAM,MAC1B,UAAU,KAAM,EAAI,EAEpB,SAAS,KAAM,MAAM,aAAa,0BAA0B,GAAK,CAAC,MAAM,KAAK,EAEjF,CAEA,SAAS,gBAAgB,KAAM,MAAO,CACpC,IAAI,MAAQ,SAAS,IAAI,EAErB,QACF,MAAM,eAAe,EACrB,MAAM,gBAAgB,GAGnB,QAIL,iBAAiB,IAAI,EAEjB,MAAM,MACR,SAAS,KAAM,EAAI,GAEnB,cAAc,MAAO,EAAI,EACzB,cAAc,IAAI,GAEtB,CAiEA,GA/DA,MAAM,QAAQ,SAAU,KAAM,CAC5B,mBAAmB,IAAI,EAEvB,IAAI,MAAQ,SAAS,IAAI,EACrB,WAAa,KAAK,cAAc,6BAA6B,EAC7D,WAAa,KAAK,cAAc,6BAA6B,EAE5D,QAIL,WAAW,KAAK,EAChB,KAAK,UAAU,IAAI,WAAW,EAE9B,KAAK,iBAAiB,QAAS,SAAU,MAAO,CAC9C,cAAc,KAAM,KAAK,CAC3B,CAAC,EAED,KAAK,iBAAiB,UAAW,SAAU,MAAO,EAC3C,MAAM,MAAQ,SAAW,MAAM,MAAQ,MAAQ,MAAM,SAAW,MACnE,cAAc,KAAM,KAAK,CAE7B,CAAC,EAED,KAAK,iBAAiB,UAAW,UAAY,CAC3C,iBAAiB,IAAI,CACvB,CAAC,EAED,KAAK,iBAAiB,WAAY,SAAU,MAAO,EAC7C,CAAC,MAAM,eAAiB,CAAC,KAAK,SAAS,MAAM,aAAa,IAC5D,iBAAiB,IAAI,CAEzB,CAAC,EAEG,YACF,WAAW,iBAAiB,QAAS,SAAU,MAAO,CACpD,gBAAgB,KAAM,KAAK,CAC7B,CAAC,EAGC,YACF,WAAW,iBAAiB,QAAS,SAAU,MAAO,CACpD,gBAAgB,KAAM,KAAK,CAC7B,CAAC,EAGH,CAAC,OAAQ,QAAS,QAAS,cAAc,EAAE,QAAQ,SAAU,UAAW,CACtE,MAAM,iBAAiB,UAAW,UAAY,CAC5C,cAAc,IAAI,CACpB,CAAC,CACH,CAAC,EAED,cAAc,IAAI,EACpB,CAAC,EAED,SAAS,iBAAiB,QAAS,SAAU,MAAO,CAC9C,MAAM,QAAU,MAAM,OAAO,QAAQ,8DAA8D,GAIvG,MAAM,QAAQ,gBAAgB,CAChC,CAAC,EAEG,yBAA0B,OAAQ,CACpC,IAAI,SAAW,IAAI,qBAAqB,SAAU,QAAS,CACzD,QAAQ,QAAQ,SAAU,MAAO,CAC/B,IAAI,KAAO,MAAM,OACb,MAAQ,SAAS,IAAI,EAEpB,QAID,MAAM,eACR,UAAU,IAAI,GAEd,MAAM,MAAM,EACZ,cAAc,IAAI,GAEtB,CAAC,CACH,EAAG,CAAE,WAAY,YAAa,UAAW,GAAK,CAAC,EAE/C,MAAM,QAAQ,SAAU,KAAM,CAC5B,SAAS,QAAQ,IAAI,CACvB,CAAC,CACH,MACE,MAAM,MAAM,EAAG,CAAC,EAAE,QAAQ,SAAS,EAGrC,OAAO,WAAW,uBAAwB,GAAG,EAC7C,OAAO,iBAAiB,WAAY,sBAAsB,EAC1D,SAAS,iBAAiB,mBAAoB,UAAY,CACnD,SAAS,QACZ,uBAAuB,CAE3B,CAAC,EACD,OAAO,iBAAiB,aAAc,uBAAwB,CAAE,KAAM,GAAM,QAAS,EAAK,CAAC,EAC3F,OAAO,iBAAiB,cAAe,uBAAwB,CAAE,KAAM,GAAM,QAAS,EAAK,CAAC,CAC9F,CAEA,kBAAkB,EAElB,SAAS,iBAAiB,mBAAmB,EAAE,QAAQ,SAAU,OAAQ,CACvE,OAAO,iBAAiB,QAAS,UAAY,CAC3C,IAAI,OAAS,OAAO,aAAa,aAAa,GAAK,MAEnD,SAAS,iBAAiB,mBAAmB,EAAE,QAAQ,SAAU,MAAO,CACtE,MAAM,aAAa,eAAgB,OAAO,CAC5C,CAAC,EAED,OAAO,aAAa,eAAgB,MAAM,EAE1C,SAAS,iBAAiB,iBAAiB,EAAE,QAAQ,SAAU,KAAM,CACnE,IAAI,SAAW,KAAK,aAAa,eAAe,EAChD,KAAK,OAAS,SAAW,OAAS,WAAa,MACjD,CAAC,CACH,CAAC,CACH,CAAC,EAED,SAAS,iBAAkB,CACzB,IAAI,IAAM,IAAI,KACV,IAAM,IAAI,KAAK,GAAG,EACtB,IAAI,SAAS,GAAI,GAAI,GAAI,GAAG,EAE5B,IAAI,KAAO,KAAK,IAAI,EAAG,IAAI,QAAQ,EAAI,IAAI,QAAQ,CAAC,EAChD,MAAQ,KAAK,MAAM,KAAO,IAAO,EACjC,QAAU,KAAK,MAAO,KAAO,KAAW,GAAK,EAC7C,QAAU,KAAK,MAAO,KAAO,IAAS,GAAI,EAC1C,KAAO,OAAO,KAAK,EAAE,SAAS,EAAG,GAAG,EAAI,IAAM,OAAO,OAAO,EAAE,SAAS,EAAG,GAAG,EAAI,IAAM,OAAO,OAAO,EAAE,SAAS,EAAG,GAAG,EAE1H,SAAS,iBAAiB,qBAAqB,EAAE,QAAQ,SAAU,KAAM,CACvE,KAAK,YAAc,IACrB,CAAC,CACH,CAEA,gBAAgB,EAChB,OAAO,YAAY,gBAAiB,GAAI,CAC1C,CAEA,SAAS,UAAU,QAAS,CAC1B,IAAI,MAAQ,SAAS,eAAe,4BAA4B,EAEhE,GAAK,MAIL,kBAAmB,SAAW,SAAS,cACvC,MAAM,UAAU,IAAI,SAAS,EAC7B,MAAM,aAAa,cAAe,OAAO,EACzC,SAAS,gBAAgB,MAAM,SAAW,SAC1C,IAAI,MAAQ,SAAS,eAAe,4BAA4B,EAE5D,OACF,MAAM,MAAM,EAEhB,CAEA,SAAS,YAAa,CACpB,IAAI,MAAQ,SAAS,eAAe,4BAA4B,EAE3D,QAIL,MAAM,UAAU,OAAO,SAAS,EAChC,MAAM,aAAa,cAAe,MAAM,EACxC,SAAS,gBAAgB,MAAM,SAAW,GAEtC,kBAAoB,OAAO,iBAAiB,OAAU,YACxD,iBAAiB,MAAM,EAE3B,CAEA,SAAS,WAAY,CACnB,IAAI,QAAU,SAAS,eAAe,8BAA8B,EAChE,MAAQ,SAAS,eAAe,4BAA4B,EAC5D,SAAW,SAAS,eAAe,+BAA+B,EAElE,SACF,QAAQ,iBAAiB,QAAS,UAAY,CAC5C,UAAU,OAAO,CACnB,CAAC,EAGC,OACF,MAAM,iBAAiB,QAAS,UAAU,EAGxC,UACF,SAAS,iBAAiB,QAAS,UAAU,CAEjD,CAEA,SAAS,YAAa,CACpB,IAAI,KAAO,gBAAgB,EACvB,cAAgB,sBAAsB,EACtC,QAAU,iBAAiB,IAAI,EAAI,UAAU,IAC7C,SAAW,aAAe,YAAc,EAAI,QAAU,YAAc,EACpE,WAAa,QAAU,SACvB,eAAiB,GACjB,YAAc,KAAK,IAAI,IAAK,WAAa,eAAiB,GAAG,EAEjE,QAAQ,2BAA4B,KAAK,KAAK,EAC9C,QAAQ,2BAA4B,aAAa,EACjD,QAAQ,0BAA2B,MAAM,OAAO,CAAC,EACjD,QAAQ,4BAA6B,SAAW,EAAI,QAAU,MAAM,QAAQ,EAAI,SAAW,iBAAiB,EAAI,qCAAqC,EACrJ,QAAQ,oBAAqB,OAAO,UAAU,GAAG,CAAC,EAClD,QAAQ,0BAA2B,IAAM,UAAU,IAAM,GAAG,EAC5D,QAAQ,yBAA0B,MAAM,UAAU,CAAC,EACnD,QAAQ,0BAA2B,MAAM,OAAO,CAAC,EACjD,QAAQ,6BAA8B,SAAW,EAAI,iBAAmB,MAAM,QAAQ,EAAI,SAAW,iBAAiB,EAAI,kDAAkD,EAE5K,IAAI,YAAc,SAAS,eAAe,8BAA8B,EACpE,cACF,YAAY,MAAM,MAAQ,YAAc,KAGtC,YAAc,eAChB,QAAQ,kCAAmC,4BAA4B,EAEvE,QAAQ,kCAAmC,OAAS,MAAM,eAAiB,UAAU,EAAI,yBAAyB,EAEpH,QAAQ,mCAAoC,MAAM,UAAU,EAAI,MAAQ,MAAM,cAAc,CAAC,EAE7F,IAAI,OAAS,SAAS,eAAe,qBAAqB,EACtD,QACF,OAAO,UAAU,OAAO,YAAa,UAAU,KAAO,CAAC,EAGrD,UAAU,MAAQ,GACpB,QAAQ,2BAA4B,wCAAwC,EAC5E,QAAQ,0BAA2B,mDAAmD,EACtF,QAAQ,6BAA8B,cAAc,GAC3C,UAAU,MAAQ,IAC3B,QAAQ,2BAA4B,4CAA4C,EAChF,QAAQ,0BAA2B,4CAA4C,EAC/E,QAAQ,6BAA8B,cAAc,EAExD,CAEA,SAAS,SAAS,MAAO,CACvB,IAAI,KAAO,SAAS,eAAe,qBAAqB,EAMxD,GAJI,OACF,MAAM,eAAe,EAGnB,EAAC,KAIL,iBAAkB,MAAQ,MAAM,cAAgB,SAAS,cACzD,mBAAqB,CAAC,EACtB,eAAiB,mBAAmB,EACpC,kBAAoB,GACpB,UAAU,IAAM,EAChB,WAAW,EACX,KAAK,UAAU,IAAI,SAAS,EAC5B,KAAK,aAAa,cAAe,OAAO,EACxC,SAAS,gBAAgB,MAAM,SAAW,SAC1C,qBAAqB,EACrB,IAAI,MAAQ,SAAS,eAAe,oBAAoB,EAEpD,OACF,MAAM,MAAM,EAEhB,CAEA,SAAS,WAAY,CACnB,IAAI,KAAO,SAAS,eAAe,qBAAqB,EAEnD,OAIL,KAAK,UAAU,OAAO,SAAS,EAC/B,KAAK,aAAa,cAAe,MAAM,EACvC,SAAS,gBAAgB,MAAM,SAAW,GAEtC,iBAAmB,OAAO,gBAAgB,OAAU,YACtD,gBAAgB,MAAM,EAE1B,CAEA,eAAe,wBAAwB,OAAQ,CAC7C,IAAI,aAAe,OAAS,OAAO,YAAc,cAE7C,SACF,OAAO,SAAW,GAClB,OAAO,YAAc,mBAGvB,mBAAqB,CAAC,EACtB,eAAiB,mBAAmB,EACpC,kBAAoB,GACpB,UAAU,IAAM,EAChB,WAAW,EAEX,GAAI,CACF,MAAM,2BAA2B,EACjC,aAAa,OAAQ,aAAc,WAAW,CAChD,MAAgB,CACd,GAAI,kBAAmB,CACrB,aAAa,OAAQ,aAAc,WAAW,EAC9C,MACF,CAEI,SACF,OAAO,YAAc,YACrB,OAAO,WAAW,UAAY,CAC5B,OAAO,YAAc,aACrB,OAAO,SAAW,EACpB,EAAG,IAAI,EAEX,CACF,CAEA,SAAS,UAAW,CAClB,SAAS,iBAAiB,6BAA6B,EAAE,QAAQ,SAAU,OAAQ,EAC5E,OAAO,aAAe,IAAI,KAAK,IAAM,gBACxC,OAAO,YAAc,eAEvB,OAAO,iBAAiB,QAAS,SAAU,MAAO,CAChD,MAAM,eAAe,EACrB,wBAAwB,MAAM,CAChC,CAAC,CACH,CAAC,EAED,IAAI,MAAQ,SAAS,eAAe,oBAAoB,EACpD,SAAW,SAAS,eAAe,uBAAuB,EAC1D,SAAW,SAAS,eAAe,sBAAsB,EACzD,SAAW,SAAS,eAAe,sBAAsB,EACzD,OAAS,SAAS,eAAe,uBAAuB,EACxD,SAAW,SAAS,eAAe,yBAAyB,EAE5D,OACF,MAAM,iBAAiB,QAAS,SAAS,EAGvC,UACF,SAAS,iBAAiB,QAAS,SAAS,EAG1C,UACF,SAAS,iBAAiB,QAAS,UAAY,CACzC,UAAU,IAAM,IAClB,UAAU,KAAO,EACjB,WAAW,EACX,qBAAqB,EAEzB,CAAC,EAGC,UACF,SAAS,iBAAiB,QAAS,UAAY,CACzC,UAAU,IAAM,IAClB,UAAU,KAAO,EACjB,WAAW,EACX,qBAAqB,EAEzB,CAAC,EAGC,QACF,OAAO,iBAAiB,QAAS,UAAY,CACvC,UAAU,IAAM,IAClB,UAAU,KAAO,EACjB,WAAW,EACX,qBAAqB,EAEzB,CAAC,EAGH,eAAe,2BAA4B,CAEzC,GADA,MAAM,gBAAgB,MAAM,UAAY,CAAC,CAAC,EACtC,CAAC,mBAAmB,OACtB,OAAO,2BAA2B,EAEpC,GAAI,CACF,OAAO,MAAM,iBAAiB,CAChC,MAAgB,CACd,OAAO,IACT,CACF,CAEI,UACF,SAAS,iBAAiB,QAAS,gBAAkB,CACnD,IAAI,KAAO,SAAS,aAAa,oBAAoB,EACjD,aAAe,SAAS,YAE5B,SAAS,SAAW,GACpB,SAAS,YAAc,kBAEvB,GAAI,CACF,MAAM,0BAA0B,EAChC,aAAa,SAAU,aAAc,IAAI,CAC3C,MAAgB,CACd,GAAI,kBAAmB,CACrB,aAAa,SAAU,aAAc,IAAI,EACzC,MACF,CACA,SAAS,YAAc,YACvB,OAAO,WAAW,UAAY,CAC5B,SAAS,YAAc,aACvB,SAAS,SAAW,EACtB,EAAG,IAAI,CACT,CACF,CAAC,CAEL,CAEA,SAAS,eAAgB,CACvB,IAAI,UAAY,SAAS,eAAe,oBAAoB,EACxD,eAAiB,SAAS,eAAe,SAAS,EAEtD,SAAS,iBAAkB,CACzB,GAAI,GAAC,WAAa,CAAC,gBAInB,KAAI,YAAc,eAAe,sBAAsB,EACnD,SAAW,OAAO,QAAU,OAAO,YAAc,GACjD,cAAgB,YAAY,IAAM,OAAO,YAAc,KAAQ,YAAY,OAAS,EAExF,UAAU,UAAU,OAAO,aAAc,UAAY,CAAC,aAAa,EACrE,CAEA,OAAO,iBAAiB,SAAU,gBAAiB,CAAE,QAAS,EAAK,CAAC,EACpE,gBAAgB,CAClB,CAEA,SAAS,iBAAiB,UAAW,SAAU,MAAO,CAChD,MAAM,MAAQ,WAIlB,WAAW,EACX,UAAU,EACZ,CAAC,EAED,cAAc,EACd,YAAY,EACZ,+BAA+B,EAC/B,UAAU,EACV,SAAS,EACT,cAAc,EACd,eAAe,CAAE,UAAW,EAAM,CAAC,EACnC,kBAAkB,EAClB,aAAa,CACf,GAAG",
  "names": ["slot"]
}
