{
  "version": 3,
  "sources": ["/cdn/shop/t/10/assets/cts-product-landing.js?cts_bundle_bridge=3"],
  "sourcesContent": ["if (!customElements.get('cts-product-purchase')) {\n  class CtsProductPurchase extends HTMLElement {\n    constructor() {\n      super();\n\n      this.variants = this.readVariants();\n      this.optionNames = this.readOptionNames();\n      this.colorPrimaryMedia = this.readColorPrimaryMedia();\n      this.colorOptionMedia = this.readColorOptionMedia();\n      this.state = {\n        selections: Array(this.optionNames.length).fill(null),\n        variant: null,\n        transaction: 'idle',\n      };\n      this.activeTransaction = null;\n      this.selectionVersion = 0;\n      this.selectedBundleOption = null;\n      this.fastBundleRenderFrame = null;\n    }\n\n    connectedCallback() {\n      this.form = this.querySelector('[data-cts-purchase-form]');\n      this.variantInput = this.querySelector('[data-cts-variant-id]');\n      this.optionInputs = Array.from(this.querySelectorAll('[data-cts-option-input]'));\n      this.optionGroups = Array.from(this.querySelectorAll('[data-cts-option]'));\n      this.actionButtons = Array.from(this.querySelectorAll('[data-cts-action]'));\n      this.price = this.querySelector('[data-cts-price]');\n      this.compareAtPrice = this.querySelector('[data-cts-compare-at-price]');\n      this.selectionStatus = this.querySelector('[data-cts-selection-status]');\n      this.liveStatus = this.querySelector('[data-cts-live-status]');\n      this.error = this.querySelector('[data-cts-error]');\n      this.errorMessage = this.querySelector('[data-cts-error-message]');\n      this.cartReview = this.querySelector('[data-cts-cart-review]');\n      this.quantityInput = this.querySelector('[data-cts-quantity]');\n      this.primaryActions = this.querySelector('[data-cts-primary-actions]');\n      this.sticky = this.querySelector('[data-cts-sticky]');\n      this.stickyAction = this.querySelector('[data-cts-sticky-action]');\n      this.stickyLabel = this.querySelector('[data-cts-sticky-label]');\n      this.stickyPrice = this.querySelector('[data-cts-sticky-price]');\n      this.stickyPricing = this.querySelector('[data-cts-sticky-pricing]');\n      this.gallery = this.querySelector('media-gallery');\n      this.galleryViewer = this.gallery?.querySelector('slider-component[id^=\"GalleryViewer\"]');\n      this.galleryControls = this.galleryViewer?.querySelector('.slider-buttons');\n      this.galleryPagination = this.querySelector('[data-cts-gallery-pagination]');\n\n      this.onGallerySlideChanged = this.onGallerySlideChanged.bind(this);\n      this.onGalleryPaginationClick = this.onGalleryPaginationClick.bind(this);\n      this.onGalleryPaginationResize = this.onGalleryPaginationResize.bind(this);\n      this.galleryViewer?.addEventListener('slideChanged', this.onGallerySlideChanged);\n      this.galleryPagination?.addEventListener('click', this.onGalleryPaginationClick);\n      if (this.galleryPagination && this.galleryViewer) {\n        window.addEventListener('resize', this.onGalleryPaginationResize);\n        this.refreshGalleryPagination();\n        window.requestAnimationFrame(() => this.refreshGalleryPagination());\n      }\n\n      this.fastBundle = this.querySelector('[data-cts-fastbundle-volume]');\n      this.fastBundleCards = Array.from(this.fastBundle?.querySelectorAll('[data-cts-fastbundle-card]') || []);\n      this.bundleProductImages = Array.from(this.fastBundle?.querySelectorAll('[data-cts-fastbundle-product-image]') || []);\n      this.bundleMarkerImages = Array.from(this.fastBundle?.querySelectorAll('[data-cts-fastbundle-marker-image]') || []);\n\n      if (!this.form || !this.variantInput || this.variants.length === 0) return;\n\n      this.cleanupCheckoutForm();\n\n      // Browsers may restore radio state on reload or back/forward navigation.\n      // Every landing visit must begin without an authoritative variant.\n      this.optionInputs.forEach((input) => {\n        input.checked = false;\n      });\n      this.variantInput.value = '';\n      this.variantInput.disabled = true;\n      this.initializeColorMedia();\n\n      this.onOptionChange = this.onOptionChange.bind(this);\n      this.onOptionClick = this.onOptionClick.bind(this);\n      this.onActionClick = this.onActionClick.bind(this);\n      this.onSubmit = this.onSubmit.bind(this);\n      this.onStickyAction = this.onStickyAction.bind(this);\n      this.onPageShow = this.onPageShow.bind(this);\n      this.onFastBundleCardClick = this.onFastBundleCardClick.bind(this);\n\n      this.optionInputs.forEach((input) => {\n        input.addEventListener('change', this.onOptionChange);\n        input.addEventListener('click', this.onOptionClick);\n      });\n      this.form.addEventListener('click', this.onActionClick, true);\n      this.form.addEventListener('submit', this.onSubmit);\n      this.stickyAction?.addEventListener('click', this.onStickyAction);\n      this.fastBundleCards.forEach((card) => card.addEventListener('click', this.onFastBundleCardClick));\n      window.addEventListener('pageshow', this.onPageShow);\n      this.setupStickyObserver();\n      this.setupFastBundleMirror();\n      this.render();\n    }\n\n    disconnectedCallback() {\n      this.optionInputs?.forEach((input) => {\n        input.removeEventListener('change', this.onOptionChange);\n        input.removeEventListener('click', this.onOptionClick);\n      });\n      this.form?.removeEventListener('click', this.onActionClick, true);\n      this.form?.removeEventListener('submit', this.onSubmit);\n      this.stickyAction?.removeEventListener('click', this.onStickyAction);\n      this.fastBundleCards?.forEach((card) => card.removeEventListener('click', this.onFastBundleCardClick));\n      this.galleryViewer?.removeEventListener('slideChanged', this.onGallerySlideChanged);\n      this.galleryPagination?.removeEventListener('click', this.onGalleryPaginationClick);\n      if (this.onGalleryPaginationResize) window.removeEventListener('resize', this.onGalleryPaginationResize);\n      window.removeEventListener('pageshow', this.onPageShow);\n      this.stickyObserver?.disconnect();\n      this.fastBundleObserver?.disconnect();\n      if (this.fastBundleRenderFrame !== null) {\n        window.cancelAnimationFrame(this.fastBundleRenderFrame);\n        this.fastBundleRenderFrame = null;\n      }\n      this.cleanupCheckoutForm();\n    }\n\n    static resolveVariant(variants, selections) {\n      if (!selections.length || selections.some((selection) => selection === null)) return null;\n      return variants.find((variant) => variant.options.every((option, index) => option === selections[index])) || null;\n    }\n\n    readVariants() {\n      const source = this.querySelector('[data-cts-variants]');\n\n      try {\n        return JSON.parse(source?.textContent || '[]');\n      } catch (error) {\n        console.error('CTS landing: unable to read Shopify variant data.', error);\n        return [];\n      }\n    }\n\n    readOptionNames() {\n      const source = this.querySelector('[data-cts-option-names]');\n\n      try {\n        return JSON.parse(source?.textContent || '[]');\n      } catch (error) {\n        console.error('CTS landing: unable to read Shopify option data.', error);\n        return [];\n      }\n    }\n\n    readColorPrimaryMedia() {\n      const source = this.querySelector('[data-cts-color-primary-media]');\n\n      try {\n        return JSON.parse(source?.textContent || '{}');\n      } catch (error) {\n        console.error('CTS landing: unable to read campaign color media.', error);\n        return {};\n      }\n    }\n\n    readColorOptionMedia() {\n      const source = this.querySelector('[data-cts-color-option-media]');\n\n      try {\n        return JSON.parse(source?.textContent || '{}');\n      } catch (error) {\n        console.error('CTS landing: unable to read color option media.', error);\n        return {};\n      }\n    }\n\n    onOptionChange(event) {\n      const optionIndex = Number(event.target.dataset.optionIndex);\n      this.state.selections[optionIndex] = event.target.value;\n      this.selectionVersion += 1;\n      this.state.variant = CtsProductPurchase.resolveVariant(this.variants, this.state.selections);\n      this.clearError();\n      this.syncColorMedia(optionIndex);\n      this.render();\n    }\n\n    onOptionClick(event) {\n      const input = event.currentTarget;\n      const optionIndex = Number(input.dataset.optionIndex);\n      if (this.state.selections[optionIndex] !== input.value) return;\n\n      this.state.selections[optionIndex] = null;\n      this.selectionVersion += 1;\n      this.state.variant = CtsProductPurchase.resolveVariant(this.variants, this.state.selections);\n      this.clearError();\n      this.syncColorMedia(optionIndex);\n      this.render();\n    }\n\n    onActionClick(event) {\n      const actionButton = event.target.closest('[data-cts-action]');\n      if (!actionButton || !this.form.contains(actionButton)) return;\n\n      // Own the purchase click before cart apps can treat the form as a\n      // separate native submission. The controller performs one native cart\n      // mutation, which UpCart observes and renders independently.\n      event.preventDefault();\n      event.stopImmediatePropagation();\n      this.beginTransaction(actionButton.dataset.ctsAction);\n    }\n\n    onSubmit(event) {\n      event.preventDefault();\n      const action = event.submitter?.dataset.ctsAction;\n      if (!action) return;\n      this.beginTransaction(action);\n    }\n\n    onStickyAction() {\n      if (!this.canPurchase()) {\n        if (!this.hasExplicitBundleSelection()) this.focusFastBundleSelection();\n        else this.focusFirstMissingOption();\n        return;\n      }\n\n      this.beginTransaction('add');\n    }\n\n    onPageShow(event) {\n      if (!event.persisted) return;\n\n      this.cleanupCheckoutForm();\n      this.optionInputs.forEach((input) => {\n        input.checked = false;\n      });\n      this.state.selections = Array(this.optionNames.length).fill(null);\n      this.state.variant = null;\n      this.selectedBundleOption = null;\n      this.selectionVersion += 1;\n      this.variantInput.value = '';\n      this.variantInput.disabled = true;\n      this.state.transaction = 'idle';\n      this.activeTransaction = null;\n      this.setGalleryDefault();\n      this.render();\n    }\n\n    setupStickyObserver() {\n      if (!this.primaryActions || !this.sticky || !('IntersectionObserver' in window)) return;\n\n      this.sticky.hidden = false;\n      const productHero = this.closest('.cts-product-hero') || this.primaryActions;\n      this.stickyObserver = new IntersectionObserver(\n        ([entry]) => this.sticky.classList.toggle('is-visible', !entry.isIntersecting),\n        { threshold: 0 }\n      );\n      this.stickyObserver.observe(productHero);\n    }\n\n    getMissingOptionIndex() {\n      return this.state.selections.findIndex((selection) => selection === null);\n    }\n\n    focusFirstMissingOption() {\n      const missingIndex = this.getMissingOptionIndex();\n      const activeCard = this.fastBundleCards[this.selectedBundleOption];\n      const visibleGroups = activeCard\n        ? Array.from(activeCard.querySelectorAll('[data-cts-option]'))\n        : this.optionGroups.filter((group) => !group.closest('[data-cts-options-step]')?.hidden);\n      const targetGroup = visibleGroups.find(\n        (group) => Number(group.dataset.optionIndex) === missingIndex\n      ) || visibleGroups[0];\n      const target = targetGroup?.querySelector('[data-cts-option-input]:not(:disabled)');\n\n      targetGroup?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      window.setTimeout(() => target?.focus(), 300);\n    }\n\n    canPurchase() {\n      return Boolean(this.state.variant?.available)\n        && this.state.transaction === 'idle'\n        && this.hasExplicitBundleSelection();\n    }\n\n    hasExplicitBundleSelection() {\n      if (!this.fastBundleCards.length) return true;\n      return this.selectedBundleOption !== null && this.hasFastBundleSelection();\n    }\n\n    hasFastBundleSelection() {\n      if (!this.fastBundle) return true;\n\n      const options = this.getFastBundleOptions();\n      return options.length > 0\n        && options.some((option) => option.querySelector('[data-rbrselector=\"discountInfoV3RadioButton\"]:checked'));\n    }\n\n    render() {\n      const missingIndex = this.getMissingOptionIndex();\n      const complete = missingIndex === -1;\n      const variant = this.state.variant;\n      const busy = this.state.transaction === 'adding' || this.state.transaction === 'checkout';\n      const uncertain = this.state.transaction === 'uncertain';\n      const bundleSelected = this.hasExplicitBundleSelection();\n      const enabled = complete && Boolean(variant?.available) && !busy && !uncertain && bundleSelected;\n\n      this.variantInput.value = complete && variant ? String(variant.id) : '';\n      this.variantInput.disabled = !complete || !variant;\n      this.dataset.selectedVariantId = this.variantInput.value;\n      this.dataset.purchaseState = this.state.transaction;\n      this.form.setAttribute('aria-busy', String(busy));\n\n      this.actionButtons.forEach((button) => {\n        button.disabled = !enabled;\n        button.setAttribute('aria-disabled', String(!enabled));\n        button.classList.toggle('loading', busy && button.dataset.ctsAction === this.activeTransaction);\n      });\n\n      this.renderOptionAvailability();\n      this.renderPrice(variant, complete);\n      this.renderSelectionStatus(variant, complete, missingIndex);\n      this.renderQuantityRule(variant, complete);\n      this.renderSticky(variant, complete, busy, uncertain);\n      this.syncFastBundleVariantControls();\n      this.syncBundleItemMedia();\n      this.dispatchState();\n    }\n\n    setupFastBundleMirror() {\n      if (!this.fastBundle) return;\n\n      if ('MutationObserver' in window) {\n        this.fastBundleObserver = new MutationObserver(() => {\n          if (this.fastBundleRenderFrame !== null) return;\n\n          this.fastBundleRenderFrame = window.requestAnimationFrame(() => {\n            this.fastBundleRenderFrame = null;\n            if (this.isConnected) this.render();\n          });\n        });\n        this.fastBundleObserver.observe(this.fastBundle, {\n          childList: true,\n          subtree: true,\n          characterData: true,\n        });\n      }\n\n      this.activateFastBundle();\n    }\n\n    activateFastBundle() {\n      const productId = this.fastBundle?.dataset.fastbundleProductId;\n      if (!productId || !window.FastBundleConf || typeof window.rbrProductService !== 'function') {\n        if ((this.fastBundleActivationAttempts || 0) < 60) {\n          this.fastBundleActivationAttempts = (this.fastBundleActivationAttempts || 0) + 1;\n          window.setTimeout(() => this.activateFastBundle(), 50);\n        }\n        return;\n      }\n\n      if (this.fastBundle.dataset.ctsFastbundleActivated === productId) return;\n\n      // FastBundle's app embed has no product context on a Shopify Page. Supply\n      // the Theme Editor-selected product, then let the app fetch, price,\n      // discount, and add its volume offer using its own storefront service.\n      window.FastBundleConf.pid = String(productId);\n      this.fastBundle.dataset.ctsFastbundleActivated = productId;\n\n      Promise.resolve(window.rbrProductService(productId))\n        .catch((error) => {\n          console.error('CTS landing: FastBundle volume offer could not load.', error);\n          this.fastBundle.dataset.ctsFastbundleActivated = '';\n        });\n\n      // FastBundle captures the product ID before its asynchronous offer fetch.\n      // Clear it on the next task so its supported bundle-page placement hook is\n      // selected when the widget is inserted, rather than the standard PDP slot.\n      window.setTimeout(() => {\n        if (window.FastBundleConf?.pid === String(productId)) window.FastBundleConf.pid = '';\n      }, 0);\n    }\n\n    getFastBundleRoot() {\n      const bundleId = this.fastBundle?.dataset.fastbundleBundleId;\n      return this.fastBundle?.querySelector('[data-rbrselector=\"volumeDiscount\"], [id^=\"rbr-bundle-\"]')\n        || (bundleId ? document.getElementById(`rbr-bundle-${bundleId}`) : null);\n    }\n\n    getFastBundleOptions() {\n      return Array.from(this.getFastBundleRoot()?.querySelectorAll('[data-rbrselector=\"discountOptionV6\"]') || []);\n    }\n\n    getFastBundleAddAction() {\n      return this.getFastBundleRoot()?.querySelector('[data-rbrselector=\"addToCart\"]') || null;\n    }\n\n    onFastBundleCardClick(event) {\n      const card = event.currentTarget;\n      const toggle = event.target.closest('[data-cts-fastbundle-card-toggle]');\n      if (!toggle || toggle.disabled) return;\n\n      const optionIndex = Number(card.dataset.ctsFastbundleOptionIndex);\n      const option = this.getFastBundleOptions()[optionIndex];\n      if (!option) return;\n\n      if (this.selectedBundleOption === optionIndex) {\n        this.selectedBundleOption = null;\n        this.render();\n        return;\n      }\n\n      // A shopper may choose their preferred offer before completing the glove\n      // configuration. The main Add to Cart control remains disabled until a\n      // valid Color, Hand Orientation, and Size are also selected.\n      this.selectedBundleOption = optionIndex;\n      this.render();\n      option.click();\n      window.setTimeout(() => this.render(), 0);\n    }\n\n    syncFastBundleVariantControls() {\n      if (!this.fastBundle) return;\n\n      const bundleRoot = this.getFastBundleRoot();\n      if (!bundleRoot) return;\n\n      const complete = this.getMissingOptionIndex() === -1;\n      const values = this.state.selections.filter(Boolean);\n      const controls = Array.from(bundleRoot.querySelectorAll('select'));\n      const addAction = this.getFastBundleAddAction();\n\n      // The app widget now lives inside the landing page's product form so it\n      // can sit with the variant choices. Keep its app-owned control from\n      // becoming an accidental native form submitter.\n      if (addAction?.tagName === 'BUTTON') addAction.type = 'button';\n\n      if (controls.length) {\n        controls.forEach((control) => {\n          const matchingSelection = values.find((value) =>\n            Array.from(control.options || []).some(\n              (option) => option.value === value || option.textContent.trim() === value\n            )\n          );\n\n          if (matchingSelection) {\n            const matchingOption = Array.from(control.options).find(\n              (option) => option.value === matchingSelection || option.textContent.trim() === matchingSelection\n            );\n            if (matchingOption && control.value !== matchingOption.value) {\n              control.value = matchingOption.value;\n              control.dispatchEvent(new Event('input', { bubbles: true }));\n              control.dispatchEvent(new Event('change', { bubbles: true }));\n            }\n          }\n\n          this.hideFastBundleVariantControl(control, bundleRoot);\n        });\n      }\n\n      this.fastBundle.dataset.ctsFastbundleReady = String(complete && controls.length === this.optionNames.length && this.getFastBundleOptions().length > 0);\n\n      this.syncFastBundleCards();\n    }\n\n    syncFastBundleCards() {\n      const options = this.getFastBundleOptions();\n      const localizedOffers = this.getLocalizedBundleOffers(options);\n\n      if (options.length) {\n        this.fastBundle.dataset.ctsFastbundleMounted = 'true';\n        this.fastBundle.querySelector('.rbrFastBundlePage')?.setAttribute('data-cts-fastbundle-mounted', 'true');\n        this.getFastBundleRoot()?.closest('#rbr-container-element-volume')?.setAttribute('data-cts-fastbundle-mounted', 'true');\n      }\n\n      this.fastBundleCards.forEach((card, index) => {\n        const option = options[index];\n        const active = this.selectedBundleOption === index\n          && Boolean(option?.querySelector('[data-rbrselector=\"discountInfoV3RadioButton\"]:checked'));\n        const toggle = card.querySelector('[data-cts-fastbundle-card-toggle]');\n        const content = card.querySelector('[data-cts-options-step]');\n        const price = localizedOffers[index]?.price;\n\n        if (toggle) {\n          toggle.disabled = !option;\n          toggle.setAttribute('aria-pressed', String(active));\n          toggle.setAttribute('aria-expanded', String(active));\n        }\n        if (content) content.hidden = !active;\n        card.classList.toggle('is-selected', active);\n\n        this.setFastBundleCardText(\n          card.querySelector('[data-cts-fastbundle-card-price]'),\n          this.formatFastBundlePrice(price)\n        );\n      });\n\n      this.renderStickyBundlePrice(localizedOffers);\n      this.syncBundleItemMedia(options);\n    }\n\n    syncBundleItemMedia(options = this.getFastBundleOptions()) {\n      const colorIndex = Number(this.dataset.colorOptionIndex);\n      const colorValue = this.state.selections[colorIndex]\n        || this.optionInputs.find((input) => Number(input.dataset.optionIndex) === colorIndex)?.value;\n      const productMedia = this.colorOptionMedia?.[colorValue] || this.colorPrimaryMedia?.[colorValue];\n\n      if (productMedia?.src) {\n        this.bundleProductImages.forEach((image) => {\n          image.src = productMedia.src;\n          image.removeAttribute('srcset');\n          if (productMedia.alt) image.alt = productMedia.alt;\n        });\n      }\n\n      const markerImage = options\n        .flatMap((option) => Array.from(option.querySelectorAll('img')))\n        .find((image) => /marker/i.test(image.alt || ''));\n\n      if (markerImage?.currentSrc || markerImage?.src) {\n        this.bundleMarkerImages.forEach((image) => {\n          image.src = markerImage.currentSrc || markerImage.src;\n          image.alt = markerImage.alt || image.alt;\n          image.hidden = false;\n        });\n      }\n    }\n\n    formatFastBundlePrice(price) {\n      if (!price) return '';\n\n      // FastBundle may append a localized \"each\" or \"per\" label. Its price\n      // amount remains app-owned; the compact card presents that amount with\n      // the nearby, consistent /pack unit label.\n      return price.trim().split(/\\s*(?:\\/|\\b(?:each|per)\\b)\\s*/i)[0].trim();\n    }\n\n    setFastBundleCardText(element, text) {\n      if (element && text && element.textContent !== text) element.textContent = text;\n    }\n\n    getLocalizedBundleOffers(options) {\n      const appOffers = options.map((option) => {\n        const appPrice = this.formatFastBundlePrice(\n          option.querySelector('[data-rbrselector=\"discountInfoV3FinalPrice\"]')?.textContent?.trim()\n        );\n\n        return { appPrice, appValue: this.parseFastBundlePrice(appPrice) };\n      });\n      const currencyRate = Number(window.Shopify?.currency?.rate);\n      const marketRate = Number.isFinite(currencyRate) && currencyRate > 0 ? currencyRate : 1;\n\n      // FastBundle owns the offer amount and cart discount. Its offer prices\n      // are in the shop currency, so convert each actual offer by Shopify's\n      // Markets rate instead of rebasing it to the first offer. Rebasing made\n      // discounted tiers display at the undiscounted Shopify product price.\n      return appOffers.map((offer) => {\n        if (!Number.isFinite(offer.appValue)) return { price: '', value: NaN };\n\n        // Parsed offer values are decimal currency units (for example,\n        // 32.95), while formatLocalizedPrice expects minor units (3295).\n        const value = Math.round(offer.appValue * 100 * marketRate);\n        return { price: this.formatLocalizedPrice(value), value };\n      });\n    }\n\n    formatLocalizedPrice(priceInCents) {\n      const sample = this.state.variant?.priceFormatted || this.dataset.productPrice || '';\n      const numericMatch = sample.match(/[\\d][\\d\\s,\\.]*[\\d]|[\\d]/);\n      if (!numericMatch) return '';\n\n      const numericSample = numericMatch[0];\n      const lastComma = numericSample.lastIndexOf(',');\n      const lastPeriod = numericSample.lastIndexOf('.');\n      const decimalIndex = Math.max(lastComma, lastPeriod);\n      const fractionDigits = decimalIndex >= 0\n        ? numericSample.length - decimalIndex - 1\n        : 0;\n      const formattedNumber = new Intl.NumberFormat(document.documentElement.lang || undefined, {\n        minimumFractionDigits: fractionDigits,\n        maximumFractionDigits: fractionDigits,\n      }).format(priceInCents / 100);\n\n      return `${sample.slice(0, numericMatch.index)}${formattedNumber}${sample.slice(numericMatch.index + numericSample.length)}`;\n    }\n\n    renderStickyBundlePrice(offers) {\n      if (!this.stickyPrice || !this.stickyPricing) return;\n\n      const pricedOffers = offers.filter((offer) => offer.price && Number.isFinite(offer.value));\n\n      const lowestOffer = pricedOffers.reduce(\n        (lowest, offer) => (!lowest || offer.value < lowest.value ? offer : lowest),\n        null\n      );\n\n      this.stickyPrice.textContent = lowestOffer?.price || '';\n      this.stickyPricing.hidden = !lowestOffer;\n    }\n\n    parseFastBundlePrice(price) {\n      const number = price?.replace(/[^\\d,.-]/g, '');\n      if (!number) return NaN;\n\n      const lastComma = number.lastIndexOf(',');\n      const lastPeriod = number.lastIndexOf('.');\n      const normalized = lastComma > lastPeriod\n        ? number.replace(/\\./g, '').replace(',', '.')\n        : number.replace(/,/g, '');\n\n      return Number(normalized);\n    }\n\n    hideFastBundleVariantControl(control, bundleRoot) {\n      let candidate = control.parentElement;\n\n      for (let depth = 0; candidate && candidate !== bundleRoot && depth < 5; depth += 1) {\n        if (candidate.querySelectorAll('select').length === 1) {\n          candidate.classList.add('cts-fastbundle__variant-mirror');\n          candidate.setAttribute('aria-hidden', 'true');\n          candidate.inert = true;\n          return;\n        }\n        candidate = candidate.parentElement;\n      }\n    }\n\n    renderOptionAvailability() {\n      this.optionInputs.forEach((input) => {\n        const optionIndex = Number(input.dataset.optionIndex);\n        input.checked = this.state.selections[optionIndex] === input.value;\n        const candidateSelections = [...this.state.selections];\n        candidateSelections[optionIndex] = input.value;\n        const isPossible = this.variants.some(\n          (variant) =>\n            variant.available &&\n            variant.options.every(\n              (option, index) => candidateSelections[index] === null || candidateSelections[index] === option\n            )\n        );\n        const unavailableLabel = this.querySelector(`label[for=\"${CSS.escape(input.id)}\"] [data-cts-unavailable-label]`);\n\n        input.disabled = false;\n        input.dataset.unavailable = String(!isPossible);\n        unavailableLabel?.toggleAttribute('hidden', isPossible);\n      });\n    }\n\n    renderPrice(variant, complete) {\n      const price = complete && variant ? variant.priceFormatted : this.dataset.productPrice;\n      const showCompareAt = complete && variant?.onSale;\n\n      if (this.price) this.price.textContent = price;\n      if (this.compareAtPrice) {\n        this.compareAtPrice.textContent = showCompareAt ? variant.compareAtFormatted : '';\n        this.compareAtPrice.hidden = !showCompareAt;\n      }\n    }\n\n    renderSelectionStatus(variant, complete, missingIndex) {\n      if (!this.hasExplicitBundleSelection()) {\n        this.selectionStatus.textContent = 'Choose your bundle.';\n      } else if (!complete) {\n        const untouched = this.state.selections.every((selection) => selection === null);\n        this.selectionStatus.textContent = untouched\n          ? this.dataset.selectionPrompt\n          : `${this.dataset.chooseLabel} ${this.optionNames[missingIndex]}.`;\n      } else if (!variant) {\n        this.selectionStatus.textContent = this.dataset.unavailableLabel;\n      } else if (!variant.available) {\n        this.selectionStatus.textContent = this.dataset.soldOutLabel;\n      } else {\n        this.selectionStatus.textContent = this.dataset.availableLabel;\n      }\n    }\n\n    renderQuantityRule(variant, complete) {\n      if (!this.quantityInput || this.quantityInput.type === 'hidden') return;\n\n      const rule = complete && variant ? variant.quantityRule : { min: 1, max: null, increment: 1 };\n      this.quantityInput.min = rule.min;\n      this.quantityInput.step = rule.increment;\n      if (rule.max) this.quantityInput.max = rule.max;\n      else this.quantityInput.removeAttribute('max');\n\n      const current = Number(this.quantityInput.value);\n      if (current < rule.min || (rule.max && current > rule.max)) this.quantityInput.value = rule.min;\n    }\n\n    renderSticky(variant, complete, busy, uncertain) {\n      if (!this.stickyAction || !this.stickyLabel) return;\n\n      const bundleSelected = this.hasExplicitBundleSelection();\n      // Before purchase is possible, the sticky CTA is a navigation control:\n      // it returns the shopper to the first missing option or bundle choice.\n      // Only a busy, uncertain, or explicitly sold-out resolved variant blocks it.\n      const disabled = busy || uncertain || (complete && !variant?.available);\n      this.stickyAction.disabled = disabled;\n      this.stickyAction.setAttribute('aria-disabled', String(disabled));\n      this.stickyAction.classList.toggle('loading', busy && this.activeTransaction === 'add');\n\n      if (!bundleSelected) this.stickyLabel.textContent = 'Choose your bundle';\n      else if (!complete) this.stickyLabel.textContent = this.dataset.chooseOptionsLabel;\n      else if (!variant?.available) this.stickyLabel.textContent = this.dataset.soldOutLabel;\n      else this.stickyLabel.textContent = this.dataset.addLabel;\n    }\n\n    syncColorMedia(changedOptionIndex) {\n      const colorIndex = Number(this.dataset.colorOptionIndex);\n      if (colorIndex < 0) return;\n\n      const campaignDefaults = this.gallery?.querySelector('[data-cts-default-gallery-slide]');\n      if (campaignDefaults) {\n        const colorValue = this.state.selections[colorIndex];\n\n        if (changedOptionIndex === colorIndex) {\n          if (colorValue) this.setGalleryColor(colorValue);\n          else this.setGalleryDefault();\n        } else if (!colorValue) {\n          this.setGalleryDefault();\n        }\n        return;\n      }\n\n      if (changedOptionIndex !== colorIndex) return;\n\n      const colorValue = this.state.selections[colorIndex];\n      this.setGalleryColor(colorValue);\n    }\n\n    initializeColorMedia() {\n      const colorIndex = Number(this.dataset.colorOptionIndex);\n      if (!this.gallery || !this.galleryViewer || colorIndex < 0) return;\n\n      const defaultColor = this.optionInputs.find((input) => Number(input.dataset.optionIndex) === colorIndex)?.value;\n      this.colorMediaGroups = this.buildColorMediaGroups(colorIndex, defaultColor);\n      this.setGalleryDefault();\n    }\n\n    visibleGallerySlides() {\n      return Array.from(this.galleryViewer?.querySelectorAll('.product__media-item[data-media-id]') || []).filter(\n        (slide) => !slide.hidden && slide.getClientRects().length > 0\n      );\n    }\n\n    refreshGalleryPagination(activePage = this.galleryViewer?.currentPage) {\n      if (!this.galleryViewer) return;\n\n      const slides = this.visibleGallerySlides();\n      if (this.galleryControls) this.galleryControls.hidden = slides.length < 2;\n      if (!this.galleryPagination) return;\n      const existingButtons = Array.from(this.galleryPagination.querySelectorAll('[data-gallery-index]'));\n\n      if (existingButtons.length !== slides.length) {\n        this.galleryPagination.replaceChildren();\n\n        slides.forEach(() => {\n          const button = document.createElement('button');\n          button.type = 'button';\n          button.className = 'cts-product-gallery-pagination__item';\n          this.galleryPagination.append(button);\n        });\n      }\n\n      const labelTemplate = this.galleryPagination.dataset.labelTemplate || 'Show image [index]';\n      Array.from(this.galleryPagination.children).forEach((button, index) => {\n        button.dataset.galleryIndex = String(index);\n        button.setAttribute('aria-label', labelTemplate.replace('[index]', String(index + 1)));\n      });\n\n      this.galleryPagination.hidden = slides.length < 2;\n      this.updateGalleryPagination(activePage);\n    }\n\n    updateGalleryPagination(activePage = this.galleryViewer?.currentPage) {\n      if (!this.galleryPagination) return;\n\n      const buttons = Array.from(this.galleryPagination.querySelectorAll('[data-gallery-index]'));\n      const activeIndex = Math.min(\n        Math.max((Number(activePage) || 1) - 1, 0),\n        buttons.length - 1\n      );\n\n      buttons.forEach((button, index) => {\n        const isActive = index === activeIndex;\n        button.classList.toggle('is-active', isActive);\n        if (isActive) button.setAttribute('aria-current', 'true');\n        else button.removeAttribute('aria-current');\n      });\n    }\n\n    onGallerySlideChanged(event) {\n      this.refreshGalleryPagination(event.detail.currentPage);\n    }\n\n    onGalleryPaginationResize() {\n      this.refreshGalleryPagination();\n    }\n\n    onGalleryPaginationClick(event) {\n      const button = event.target.closest('[data-gallery-index]');\n      if (!button || !this.galleryViewer?.slider) return;\n\n      const slide = this.visibleGallerySlides()[Number(button.dataset.galleryIndex)];\n      if (!slide) return;\n\n      const reducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n      this.galleryViewer.slider.scrollTo({\n        left: slide.offsetLeft,\n        behavior: reducedMotion ? 'auto' : 'smooth',\n      });\n    }\n\n    buildColorMediaGroups(colorIndex, defaultColor) {\n      const galleryItems = Array.from(this.gallery.querySelectorAll('[data-cts-media-position][data-media-id]'));\n      const mediaById = new Map(\n        galleryItems.map((item) => [\n          Number(item.dataset.mediaId.split('-').pop()),\n          { item, position: Number(item.dataset.ctsMediaPosition) },\n        ])\n      );\n      const colorAnchors = new Map();\n\n      this.variants.forEach((variant) => {\n        const color = variant.options[colorIndex];\n        if (color && variant.featuredMediaId && !colorAnchors.has(color)) {\n          colorAnchors.set(color, Number(variant.featuredMediaId));\n        }\n      });\n\n      const orderedAnchors = Array.from(colorAnchors, ([color, mediaId]) => {\n        const media = mediaById.get(mediaId);\n        return media ? { color, position: media.position } : null;\n      })\n        .filter(Boolean)\n        .sort((first, second) => first.position - second.position);\n\n      const groups = new Map(\n        orderedAnchors.map((anchor, index) => {\n          const nextAnchor = orderedAnchors[index + 1];\n          const mediaIds = galleryItems\n            .filter(({ dataset }) => {\n              const position = Number(dataset.ctsMediaPosition);\n              return position >= anchor.position && (!nextAnchor || position < nextAnchor.position);\n            })\n            .sort((first, second) => Number(first.dataset.ctsMediaPosition) - Number(second.dataset.ctsMediaPosition))\n            .map((item) => item.dataset.mediaId);\n\n          return [anchor.color, mediaIds];\n        })\n      );\n\n      // Shopify media can be reordered independently from variant assignments.\n      // When a merchant's default Color anchor sits at the end of the product\n      // media list, preserve the leading unassigned product photos as part of\n      // that default Color group instead of leaving them without a color home.\n      const firstAnchor = orderedAnchors[0];\n      if (defaultColor && firstAnchor) {\n        const leadingMedia = galleryItems\n          .filter((item) => Number(item.dataset.ctsMediaPosition) < firstAnchor.position)\n          .map((item) => item.dataset.mediaId);\n        const defaultMedia = groups.get(defaultColor) || [];\n        groups.set(defaultColor, [...new Set([...leadingMedia, ...defaultMedia])]);\n      }\n\n      const campaignColorGroups = new Map();\n      this.gallery\n        .querySelectorAll('.product__media-item[data-cts-campaign-color-gallery-slide][data-cts-campaign-color]')\n        .forEach((item) => {\n          const color = item.dataset.ctsCampaignColor;\n          const mediaIds = campaignColorGroups.get(color) || [];\n          mediaIds.push(item.dataset.mediaId);\n          campaignColorGroups.set(color, mediaIds);\n        });\n      campaignColorGroups.forEach((mediaIds, color) => groups.set(color, mediaIds));\n\n      return groups;\n    }\n\n    setGalleryColor(colorValue, { announce = true } = {}) {\n      const mediaIds = this.colorMediaGroups?.get(colorValue);\n      if (!mediaIds?.length || !this.gallery || !this.galleryViewer) return;\n\n      const visibleMedia = new Set(mediaIds);\n      const galleryItems = Array.from(this.gallery.querySelectorAll('.product__media-item[data-media-id]'));\n      const galleryItemsById = new Map(galleryItems.map((item) => [item.dataset.mediaId, item]));\n      galleryItems.forEach((item) => {\n        item.hidden = !visibleMedia.has(item.dataset.mediaId);\n        item.classList.remove('is-active');\n      });\n\n      mediaIds.forEach((mediaId) => {\n        const media = galleryItemsById.get(mediaId);\n        if (media) this.galleryViewer.slider.append(media);\n      });\n\n      const firstMedia = galleryItemsById.get(mediaIds[0]);\n      if (!firstMedia) return;\n\n      const isCampaignColorMedia = firstMedia.hasAttribute('data-cts-campaign-color-gallery-slide');\n      if (!isCampaignColorMedia) this.applyColorPrimaryMedia(colorValue, firstMedia);\n      const firstImage = firstMedia.querySelector('img');\n      if (firstImage) {\n        firstImage.loading = 'eager';\n        firstImage.fetchPriority = 'high';\n      }\n      firstMedia.hidden = false;\n      firstMedia.classList.add('is-active');\n      this.galleryViewer.resetPages();\n      this.galleryViewer.slider?.scrollTo({ left: 0, behavior: 'auto' });\n      this.refreshGalleryPagination(1);\n\n      if (announce && !isCampaignColorMedia) this.gallery.setActiveMedia(firstMedia.dataset.mediaId, false);\n    }\n\n    setGalleryDefault() {\n      const configuredDefaultSlides = Array.from(\n        this.gallery?.querySelectorAll(\n          '.product__media-item[data-cts-default-gallery-slide], .product__media-item[data-cts-campaign-color-gallery-slide][data-cts-campaign-color=\"White/Black\"], .product__media-item[data-cts-campaign-color-gallery-slide][data-cts-campaign-color=\"WHITE/BLACK\"]'\n        ) || []\n      );\n      const defaultSlides = configuredDefaultSlides.length\n        ? configuredDefaultSlides\n        : Array.from(this.gallery?.querySelectorAll('.product__media-item[data-cts-media-position][data-media-id]') || []);\n      if (!defaultSlides.length || !this.gallery || !this.galleryViewer) return;\n\n      const defaultSlideSet = new Set(defaultSlides);\n      this.gallery.querySelectorAll('.product__media-item[data-media-id]').forEach((item) => {\n        item.hidden = !defaultSlideSet.has(item);\n        item.classList.toggle('is-active', item === defaultSlides[0]);\n      });\n\n      this.galleryViewer.slider.prepend(...defaultSlides);\n      this.galleryViewer.resetPages();\n      this.galleryViewer.slider.scrollTo({ left: 0, behavior: 'auto' });\n      this.refreshGalleryPagination(1);\n    }\n\n    applyColorPrimaryMedia(colorValue, firstMedia) {\n      const media = this.colorPrimaryMedia?.[colorValue];\n      if (!media?.src || !firstMedia) return;\n\n      const updateImage = (image) => {\n        image.removeAttribute('srcset');\n        image.src = media.src;\n        if (media.alt) image.alt = media.alt;\n      };\n\n      firstMedia.querySelectorAll('img').forEach(updateImage);\n\n      const thumbnail = this.gallery?.querySelector(\n        `.thumbnail-list__item[data-target=\"${CSS.escape(firstMedia.dataset.mediaId)}\"] img`\n      );\n      if (thumbnail) updateImage(thumbnail);\n    }\n\n    async beginTransaction(action) {\n      if (!this.canPurchase() || this.activeTransaction) {\n        if (!this.hasExplicitBundleSelection()) this.focusFastBundleSelection();\n        else this.focusFirstMissingOption();\n        return;\n      }\n\n      if (this.fastBundle) {\n        this.beginFastBundleTransaction(action);\n        return;\n      }\n\n      const versionAtStart = this.selectionVersion;\n      const variantAtStart = this.state.variant;\n      const quantity = Math.max(1, Number(this.quantityInput?.value || 1));\n      this.activeTransaction = action;\n      this.state.transaction = action === 'buy-now' ? 'checkout' : 'adding';\n      this.clearError();\n      this.render();\n\n      let cartBefore = null;\n      try {\n        cartBefore = await this.getCartQuantity(variantAtStart.id);\n      } catch (error) {\n        cartBefore = null;\n      }\n\n      try {\n        await this.addToCart(variantAtStart.id, quantity);\n\n        if (action === 'buy-now') {\n          this.submitCheckout();\n          return;\n        }\n\n        this.completeTransaction(versionAtStart);\n        this.announce(this.dataset.addedLabel);\n      } catch (error) {\n        await this.handleCartError(error, variantAtStart.id, quantity, cartBefore, action, versionAtStart);\n      }\n    }\n\n    beginFastBundleTransaction(action) {\n      const addAction = this.getFastBundleAddAction();\n      const actionUnavailable = !addAction\n        || addAction.getAttribute('aria-disabled') === 'true'\n        || /_disabled_/.test(addAction.className || '');\n\n      if (actionUnavailable) {\n        this.focusFastBundleSelection();\n        return;\n      }\n\n      // The landing cards choose FastBundle's real offer. Its own add action\n      // creates the cart lines and applies the app-owned discount payload.\n      addAction.click();\n\n      if (action === 'buy-now') this.submitCheckout();\n      else this.announce(this.dataset.addedLabel);\n    }\n\n    focusFastBundleSelection() {\n      const target = this.fastBundleCards\n        .map((card) => card.querySelector('[data-cts-fastbundle-card-toggle]'))\n        .find((toggle) => toggle && !toggle.disabled) || this.fastBundle;\n      this.fastBundle?.scrollIntoView({ behavior: 'smooth', block: 'center' });\n      window.setTimeout(() => target?.focus(), 300);\n    }\n\n    async addToCart(variantId, quantity) {\n      const formData = new FormData();\n      formData.append('id', String(variantId));\n      formData.append('quantity', String(quantity));\n\n      const response = await fetch(this.dataset.cartAddUrl, {\n        method: 'POST',\n        headers: {\n          Accept: 'application/json',\n          'X-Requested-With': 'XMLHttpRequest',\n        },\n        body: formData,\n      });\n      const payload = await response.json().catch(() => ({}));\n\n      if (!response.ok) {\n        const error = new Error(payload.description || payload.message || this.dataset.cartErrorLabel);\n        error.status = response.status;\n        error.definitive = response.status >= 400 && response.status < 500;\n        throw error;\n      }\n\n      return payload;\n    }\n\n    async getCartQuantity(variantId) {\n      const response = await fetch(this.dataset.cartJsonUrl, {\n        headers: { Accept: 'application/json' },\n        cache: 'no-store',\n      });\n      if (!response.ok) throw new Error('Cart state unavailable.');\n      const cart = await response.json();\n\n      return cart.items\n        .filter((item) => Number(item.variant_id) === Number(variantId))\n        .reduce((total, item) => total + item.quantity, 0);\n    }\n\n    async handleCartError(error, variantId, quantity, cartBefore, action, versionAtStart) {\n      if (error.definitive) {\n        this.failTransaction(error.message, versionAtStart);\n        return;\n      }\n\n      try {\n        const cartAfter = await this.getCartQuantity(variantId);\n        if (cartBefore !== null && cartAfter >= cartBefore + quantity) {\n          if (action === 'buy-now') {\n            this.submitCheckout();\n            return;\n          }\n\n          this.completeTransaction(versionAtStart);\n          this.announce(this.dataset.addedLabel);\n          return;\n        }\n\n        if (cartBefore !== null && cartAfter === cartBefore) {\n          this.failTransaction(error.message || this.dataset.cartErrorLabel, versionAtStart);\n          return;\n        }\n      } catch (reconciliationError) {\n        // Leave the transaction locked when Shopify cannot confirm whether the add occurred.\n      }\n\n      this.activeTransaction = null;\n      this.state.transaction = 'uncertain';\n      this.showError(this.dataset.uncertainCartLabel, true);\n      this.render();\n    }\n\n    completeTransaction(versionAtStart) {\n      this.activeTransaction = null;\n      this.state.transaction = 'idle';\n      if (versionAtStart !== this.selectionVersion) {\n        this.state.variant = CtsProductPurchase.resolveVariant(this.variants, this.state.selections);\n      }\n      this.render();\n    }\n\n    failTransaction(message, versionAtStart) {\n      this.activeTransaction = null;\n      this.state.transaction = 'idle';\n      if (versionAtStart !== this.selectionVersion) {\n        this.state.variant = CtsProductPurchase.resolveVariant(this.variants, this.state.selections);\n      }\n      this.showError(message);\n      this.render();\n    }\n\n    submitCheckout() {\n      this.cleanupCheckoutForm();\n\n      const checkoutForm = document.createElement('form');\n      checkoutForm.method = 'post';\n      checkoutForm.action = this.dataset.cartUrl;\n      checkoutForm.id = `CtsNativeCheckout-${this.dataset.sectionId}`;\n      checkoutForm.dataset.ctsCheckoutForm = '';\n\n      const checkoutButton = document.createElement('button');\n      checkoutButton.type = 'submit';\n      checkoutButton.name = 'checkout';\n      checkoutButton.value = 'Checkout';\n      checkoutButton.textContent = 'Buy Now';\n      checkoutForm.append(checkoutButton);\n\n      const checkoutAction = document.createElement('input');\n      checkoutAction.type = 'hidden';\n      checkoutAction.name = 'checkout';\n      checkoutAction.value = 'Checkout';\n      checkoutForm.append(checkoutAction);\n      document.body.append(checkoutForm);\n      this.checkoutForm = checkoutForm;\n\n      // A normal rendered cart-form submitter is the only mechanism this\n      // storefront's UpCart stack allows through to Shopify Checkout. It is\n      // created only after a confirmed add and removed when history restores\n      // the landing page, so it cannot persist as another purchase control.\n      // Give UpCart time to finish handling the native add before Shopify's\n      // checkout submit action runs; firing it immediately is intercepted.\n      this.checkoutTimer = window.setTimeout(() => {\n        this.checkoutTimer = null;\n        if (checkoutForm.isConnected) HTMLFormElement.prototype.submit.call(checkoutForm);\n      }, 3500);\n    }\n\n    cleanupCheckoutForm() {\n      window.clearTimeout(this.checkoutTimer);\n      this.checkoutTimer = null;\n      this.checkoutForm?.remove();\n      this.checkoutForm = null;\n      document.querySelectorAll('[data-cts-checkout-form]').forEach((form) => form.remove());\n    }\n\n    showError(message, showCartReview = false) {\n      if (!this.error || !this.errorMessage) return;\n      this.errorMessage.textContent = message;\n      this.error.hidden = false;\n      this.cartReview?.toggleAttribute('hidden', !showCartReview);\n      this.error.focus();\n    }\n\n    clearError() {\n      if (!this.error) return;\n      this.error.hidden = true;\n      if (this.errorMessage) this.errorMessage.textContent = '';\n      this.cartReview?.setAttribute('hidden', '');\n    }\n\n    announce(message) {\n      if (this.liveStatus) this.liveStatus.textContent = message;\n    }\n\n    dispatchState() {\n      const selections = Object.fromEntries(\n        this.optionNames.map((name, index) => [name, this.state.selections[index]])\n      );\n      this.dispatchEvent(\n        new CustomEvent('cts:purchase-state-change', {\n          bubbles: true,\n          detail: {\n            sectionId: this.dataset.sectionId,\n            selections,\n            complete: this.getMissingOptionIndex() === -1,\n            variantId: this.state.variant?.id || null,\n            available: Boolean(this.state.variant?.available),\n            transaction: this.state.transaction,\n          },\n        })\n      );\n    }\n  }\n\n  customElements.define('cts-product-purchase', CtsProductPurchase);\n}\n\nif (!window.CtsSizeChartUnitsBound) {\n  window.CtsSizeChartUnitsBound = true;\n\n  document.addEventListener('click', (event) => {\n    const control = event.target.closest('[data-cts-size-unit]');\n    if (!control) return;\n\n    const chart = control.closest('[data-cts-size-chart]');\n    const unit = control.dataset.ctsSizeUnit;\n    if (!chart || !unit || chart.dataset.unit === unit) return;\n\n    chart.dataset.unit = unit;\n    chart.querySelectorAll('[data-cts-size-unit]').forEach((button) => {\n      const isActive = button.dataset.ctsSizeUnit === unit;\n      button.classList.toggle('is-active', isActive);\n      button.setAttribute('aria-pressed', String(isActive));\n    });\n    chart.querySelectorAll('[data-cts-size-value]').forEach((value) => {\n      value.hidden = value.dataset.ctsSizeValue !== unit;\n    });\n  });\n}\n\nif (!window.CtsFaqSizeGuideBound) {\n  window.CtsFaqSizeGuideBound = true;\n\n  document.addEventListener('click', (event) => {\n    const link = event.target.closest('.cts-faq a[data-cts-open-size-guide], .cts-faq a[href=\"#size-guide\"]');\n    if (!link) return;\n\n    const faq = link.closest('.cts-faq');\n    const modal = document.querySelector('.cts-size-guide-modal');\n    if (!faq || !modal || typeof modal.show !== 'function') return;\n\n    event.preventDefault();\n    modal.show(link);\n  });\n}\n"],
  "mappings": "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",
  "names": ["colorValue"]
}
