{
  "version": 3,
  "sources": ["/cdn/shop/t/1064/assets/alv2-order-panel.js?auto=format%2Ccompress"],
  "sourcesContent": ["/* My Designs \u2014 a PURCHASED design's Details panel (Justin 2026-09-29 mocks).\n   Replaces the last-order block, the Edit Size dialog and the old order rows.\n\n     Last Ordered: <date> as <product>\n     \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n     Orders with this design (N)        Expand All\n     #NT-2658391  Qty 1                       View   \u2190 View opens the order in place:\n       Product \u00B7 Size + Edit Size \u00B7 Qty \u00B7 + Add Another Size\n       [ Add to Cart as <product> ]  [ Order as a Different Product ]\n\n   Every order (the newest included) is its own accordion row, so any past\n   order is re-bought at its own product, size and quantity. An open order is\n   a list of sizes, each with its own Qty: the ordered size first (its Qty =\n   the ordered quantity), + Add Another Size appends one. A size being typed\n   shows W \u00D7 H inputs + Done; a set size shows its text + Edit Size. Remove\n   shows only while there is more than one size. Every size keeps the order's\n   proportions, clamped to the cart editor's 0.25\u201322\u2033. The row's \"Qty N\"\n   follows the total of its sizes once they change.\n\n   The host (snippets/artwork-library-v2.liquid \u2192 renderOrderHistory) owns the\n   data and the cart; this file only lays out and wires the panel:\n\n     NTAlv2Orders.render(host, ctx)\n       ctx.list      the design's order lines, newest first (purchase twin history)\n       ctx.ordering  true on the account surface: Qty / sizes / CTAs; false = read-only\n       ctx.esc, ctx.fmtDate(ts, str), ctx.fmtIn(n), ctx.parseSize(variantTitle)\n       ctx.productOf(line)       PRODUCT_BY_ID entry for the line\n       ctx.addLine(line, qty)    \u2192 Promise(cart/add.js response)\n       ctx.added([{ res, qty }], all)  cart repaint + toast; all = every size went in\n       ctx.failed(msg)           error toast\n       ctx.handoff(line, btn)    products that can't be added directly \u2192 their page\n       ctx.others(line)          Order as a Different Product (excludes the line's product)\n       ctx.tiers(line)           \u2192 Promise({ rules: [{ min, percent }], cumulative } | null):\n                                 the product's quantity-break table (cumulative = counts\n                                 every size of the order; otherwise each size on its own)\n       ctx.priceFor(line, w, h)  \u2192 Promise(unit price in cents | null): the variant the\n                                 add would use (by-size band for w \u00D7 h, else the line's variant)\n\n   Styles: assets/alv2-last-order.css (.alv2-op*). */\n(function () {\n  'use strict';\n  if (window.NTAlv2Orders) return;\n\n  var MIN = 0.25, MAX = 22;\n  function money(c) { return '$' + (Math.round(c) / 100).toFixed(2); }\n  /* Quantity breaks beside the Qty box (Justin 2026-09-29): each product's own\n     table (ctx.tiers). DTF and UV DTF by size are cumulative, so the badge\n     follows the order's total across its sizes; every other product counts\n     each size's own qty. The % that applies = the rule with the largest min\n     the qty reaches. */\n  /* The break math lives in ONE place, assets/nt-qty-tiers.js (window.NTQtyTiers, also My Orders' Buy Again;\n     Owen 2026-10-22): the rule for a qty, the cart pieces that count toward it (every cart line in the same\n     combine group of shop.metafields.custom.combine_group_split_config, as the cart counts it), and the price\n     each the cart charges. snippets/artwork-library-v2.liquid loads it before this file. */\n  function offFor(rules, n) { return window.NTQtyTiers ? window.NTQtyTiers.offFor(rules, n) : 0; }\n  function withCartBase(t) {\n    if (!t || !t.cumulative || !t.type || !window.NTQtyTiers) return t;\n    return window.NTQtyTiers.cartBase(t.type).then(function (base) { t.base = base; return t; });\n  }\n  function r2(n) { return Math.round(n * 100) / 100; }\n  function num(v) { var n = parseFloat(v); return isFinite(n) ? n : NaN; }\n  function k(s) { return '<span class=\"alv2-op__k\">' + s + '</span> '; }\n\n  function qtyHtml(n) {\n    return '<span class=\"alv2-op__qty\">' +\n      '<button type=\"button\" class=\"alv2-op__qbtn\" data-op-qty=\"-1\" aria-label=\"Decrease quantity\">\u2212</button>' +\n      '<input type=\"text\" inputmode=\"numeric\" autocomplete=\"off\" class=\"alv2-op__qn\" data-op-qn aria-label=\"Quantity\" value=\"' + (n || 1) + '\">' +\n      '<button type=\"button\" class=\"alv2-op__qbtn\" data-op-qty=\"1\" aria-label=\"Increase quantity\">+</button></span>';\n  }\n  /* the qty box is typed into too (Justin 2026-09-29): 1\u20139999, whole units */\n  function qtyVal(inp) { return Math.max(1, Math.min(9999, parseInt(inp && inp.value, 10) || 1)); }\n  function sizeInputs(w, h) {\n    var inp = function (dim, v) {\n      return '<input type=\"text\" inputmode=\"decimal\" autocomplete=\"off\" class=\"alv2-op__in\" data-op-' + dim +\n        ' aria-label=\"' + (dim === 'w' ? 'Width' : 'Height') + ' (inches)\" value=\"' + (v ? r2(v) : '') + '\">';\n    };\n    return '<span class=\"alv2-op__dims\">' + inp('w', w) + '<span class=\"alv2-op__unit\">\u2033</span>' +\n      '<span class=\"alv2-op__x\" aria-hidden=\"true\">\u00D7</span>' + inp('h', h) + '<span class=\"alv2-op__unit\">\u2033</span></span>';\n  }\n  /* one size of an open order: Size (text + Edit Size, or inputs + Done),\n     Remove (CSS shows it only with 2+ sizes), Qty */\n  function entryHtml(o) {\n    return '<div class=\"alv2-op__size\" data-op-entry' + (o.w ? ' data-cw=\"' + o.w + '\" data-ch=\"' + o.h + '\"' : '') + '>' +\n      (o.text ? '<p class=\"alv2-op__line alv2-op__sizeline\">' + k('Size:') +\n        (o.editing ? sizeInputs(o.w, o.h) : '<b data-op-sizetext>' + o.text + '</b>') +\n        (o.editable ? '<button type=\"button\" class=\"alv2-op__link alv2-op__edit\" ' + (o.editing ? 'data-op-done>Done' : 'data-op-edit>Edit Size') + '</button>' +\n          '<button type=\"button\" class=\"alv2-op__link alv2-op__rm\" data-op-rm>Remove</button>' : '') + '</p>' : '') +\n      (o.qty ? '<p class=\"alv2-op__line alv2-op__qtyline\">' + k('Qty:') + qtyHtml(o.qty) +\n        /* price + badge wrap together if the rail is too narrow for both */\n        '<span class=\"alv2-op__deal\"><span class=\"alv2-op__price\" data-op-price hidden></span>' +\n        '<span class=\"alv2-op__off\" data-op-off hidden></span></span></p>' : '') +\n      '</div>';\n  }\n  function sizeCheck(w, h) {\n    if (!(w > 0 && h > 0)) return 'Enter a width and height for each size.';\n    if (Math.max(w, h) > MAX) return 'The longest side can be up to ' + MAX + '\u2033.';\n    if (Math.min(w, h) < MIN) return 'The shortest side must be at least ' + MIN + '\u2033.';\n    return '';\n  }\n\n  function render(host, ctx) {\n    host.__op = { ctx: ctx };\n    paint(host);\n    if (!host.__opWired) { wire(host); host.__opWired = true; }\n  }\n\n  function paint(host) {\n    var ctx = host.__op.ctx, list = ctx.list, esc = ctx.esc;\n    var last = list[0], lp = ctx.productOf(last) || {};\n    var h = '<p class=\"alv2-op__last\">' + k('Last Ordered:') + '<b>' + esc(ctx.fmtDate(last.timestamp, last.date) || '\u2014') + '</b>' +\n        (lp.label ? ' <span class=\"alv2-op__k\">as</span> <b>' + esc(lp.label) + '</b>' : '') + '</p>' +\n      '<div class=\"alv2-op__hist\"><div class=\"alv2-op__histhead\">' +\n        '<span class=\"alv2-op__title\">Orders with this design (' + list.length + ')</span>' +\n        /* Expand All only when there is more than one order to expand */\n        (list.length > 1 ? '<button type=\"button\" class=\"alv2-op__link\" data-op-all>Expand All</button>' : '') + '</div>';\n    list.forEach(function (o, i) { h += orderHtml(ctx, o, i); });\n    host.innerHTML = h + '</div>';\n    host.querySelectorAll('.alv2-op__order').forEach(function (r) {\n      r.__ctx = ctx; syncSizes(r, true);\n      /* the product's quantity-break table, then badge + prices again */\n      if (r.hasAttribute('data-op-deal') && ctx.tiers) {\n        ctx.tiers(ctx.list[+r.getAttribute('data-op-i')]).then(withCartBase).then(function (t) { r.__tiers = t; syncSizes(r, true); }, function () {});\n      }\n    });\n    /* the most recent order opens expanded, every time (Justin 2026-09-29) */\n    var first = host.querySelector('.alv2-op__order');\n    if (first && first.querySelector('[data-op-toggle]')) { setOpen(first, true); syncAll(host); }\n  }\n\n  function orderHtml(ctx, o, i) {\n    var esc = ctx.esc, p = ctx.productOf(o) || {}, s = ctx.parseSize(o.variantTitle);\n    var vt = String(o.variantTitle || '').trim();\n    var no = String(o.orderName || '').replace(/^#/, '').trim();\n    var handoff = !!p.handoff;\n    var canAdd = ctx.ordering && !handoff && (!!s || !!vt);\n    var canSize = canAdd && !!s && !p.gang;\n    var name = p.cta || p.label || '';\n    var q = o.quantity > 0 ? o.quantity : 0;\n    var sizeText = s ? ctx.fmtIn(s.width) + ' \u00D7 ' + ctx.fmtIn(s.height) : vt;\n    var label = (canAdd ? 'Add to Cart' : 'Order') + (name ? ' as ' + name : '');\n\n    var body =\n      (p.label ? '<p class=\"alv2-op__line\">' + k('Product:') + '<b>' + esc(p.label) + '</b></p>' : '') +\n      '<div class=\"alv2-op__sizes\" data-op-sizes>' +\n        entryHtml({ text: esc(sizeText), w: s && s.width, h: s && s.height, editable: canSize, qty: canAdd ? (q || 1) : 0 }) + '</div>' +\n      (canAdd ? '<p class=\"alv2-op__cartnote\" data-op-cartnote hidden></p>' : '') +\n      (canSize ? '<button type=\"button\" class=\"alv2-op__link alv2-op__addsize\" data-op-addsize>+ Add Another Size</button>' : '') +\n      '<p class=\"alv2-op__err\" data-op-err role=\"alert\" hidden></p>' +\n      (ctx.ordering ? '<div class=\"alv2-op__cta\">' +\n        '<button type=\"button\" class=\"alv2-rail__primary alv2-op__primary\" ' + (canAdd ? 'data-op-add' : 'data-op-handoff') +\n          ' data-label=\"' + esc(label) + '\">' + esc(label) + '</button>' +\n        '<button type=\"button\" class=\"alv2-rail__secondary alv2-op__other\" data-op-others>Order as a Different Product</button>' +\n        '</div>' : '');\n\n    var head = '<span class=\"alv2-op__num\"><b>' + (no ? '#' + esc(no) : esc(ctx.fmtDate(o.timestamp, o.date) || 'Order')) + '</b>' +\n          '<span class=\"alv2-op__rowqty\"' + (q ? '' : ' hidden') + '>Qty <b data-op-total>' + q + '</b></span></span>';\n    /* one order: always open, no View / Hide (Justin 2026-09-29) */\n    var single = ctx.list.length === 1;\n    return '<div class=\"alv2-op__order' + (single ? ' is-open' : '') + '\" data-op-i=\"' + i + '\"' + (canAdd ? ' data-op-deal' : '') + '>' +\n      (single ? '<div class=\"alv2-op__head alv2-op__head--static\">' + head + '</div>'\n              : '<button type=\"button\" class=\"alv2-op__head\" data-op-toggle aria-expanded=\"false\">' + head +\n                  '<span class=\"alv2-op__vh\" data-op-vh>View</span></button>') +\n      '<div class=\"alv2-op__body\"' + (single ? '' : ' hidden') + '>' + body + '</div></div>';\n  }\n\n  /* \u2500\u2500 accordion \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function setOpen(row, open) {\n    row.querySelector('[data-op-toggle]').setAttribute('aria-expanded', String(open));\n    row.querySelector('[data-op-vh]').textContent = open ? 'Hide' : 'View';\n    row.querySelector('.alv2-op__body').hidden = !open;\n    row.classList.toggle('is-open', open);\n  }\n  function syncAll(host) {\n    var rows = host.querySelectorAll('.alv2-op__order'), open = host.querySelectorAll('.alv2-op__order.is-open');\n    var b = host.querySelector('[data-op-all]');\n    if (b) b.textContent = rows.length && open.length === rows.length ? 'Collapse All' : 'Expand All';\n  }\n\n  /* \u2500\u2500 sizes \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  /* the order's own proportions: its ordered W \u00D7 H */\n  function ratioOf(row) {\n    var ctx = row.__ctx, s = ctx.parseSize(ctx.list[+row.getAttribute('data-op-i')].variantTitle);\n    return s && s.height ? s.width / s.height : 0;\n  }\n  /* one side typed \u2192 the other follows */\n  function sync(row, inp) {\n    var ar = ratioOf(row), v = num(inp.value), pair = inp.closest('.alv2-op__dims');\n    if (!ar || !(v > 0) || !pair) return;\n    if (inp.hasAttribute('data-op-w')) pair.querySelector('[data-op-h]').value = r2(v / ar);\n    else pair.querySelector('[data-op-w]').value = r2(v * ar);\n  }\n  function focusFirst(scope) {\n    var inp = scope && scope.querySelector('[data-op-w]');\n    if (inp) { try { inp.focus(); } catch (e) {} }\n  }\n  function showErr(row, msg) {\n    var e = row.querySelector('[data-op-err]');\n    if (!e) return;\n    e.textContent = msg || '';\n    e.hidden = !msg;\n  }\n  /* Edit Size \u2192 W \u00D7 H inputs + Done, in place */\n  function editEntry(entry) {\n    var line = entry.querySelector('.alv2-op__sizeline'), txt = line && line.querySelector('[data-op-sizetext]');\n    if (!txt) return;\n    txt.outerHTML = sizeInputs(+entry.getAttribute('data-cw'), +entry.getAttribute('data-ch'));\n    var b = line.querySelector('[data-op-edit]');\n    b.textContent = 'Done'; b.removeAttribute('data-op-edit'); b.setAttribute('data-op-done', '');\n    focusFirst(line);\n  }\n  /* Done \u2192 validate, keep the size, back to text + Edit Size. An untouched\n     new size (both boxes empty) is left as is \u2014 false only on a real error. */\n  function doneEntry(row, entry, quiet, keepFocus) {\n    var dims = entry.querySelector('.alv2-op__dims');\n    if (!dims) return true;\n    var wv = dims.querySelector('[data-op-w]').value.trim(), hv = dims.querySelector('[data-op-h]').value.trim();\n    if (quiet && !wv && !hv && !entry.hasAttribute('data-cw')) return true;\n    var w = num(wv), h = num(hv), err = sizeCheck(w, h);\n    if (err) { showErr(row, err); if (!keepFocus) { try { dims.querySelector('[data-op-w]').focus(); } catch (e) {} } return false; }\n    w = r2(w); h = r2(h);\n    entry.setAttribute('data-cw', w); entry.setAttribute('data-ch', h);\n    syncSizes(row);\n    var t = document.createElement('b');\n    t.setAttribute('data-op-sizetext', '');\n    t.textContent = row.__ctx.fmtIn(w) + ' \u00D7 ' + row.__ctx.fmtIn(h);\n    dims.replaceWith(t);\n    var b = entry.querySelector('[data-op-done]');\n    b.textContent = 'Edit Size'; b.removeAttribute('data-op-done'); b.setAttribute('data-op-edit', '');\n    showErr(row, '');\n    if (!quiet) { try { b.focus(); } catch (e) {} }\n    return true;\n  }\n  /* Moving to a Qty closes the order's open size edits, as Done would\n     (Justin 2026-09-29). Focus stays on the Qty; an empty new size stays open,\n     a bad one shows its error. */\n  function closeEdits(row) {\n    row.querySelectorAll('[data-op-entry]').forEach(function (entry) {\n      if (entry.querySelector('.alv2-op__dims')) doneEntry(row, entry, true, true);\n    });\n  }\n  function addSize(row) {\n    var box = row.querySelector('[data-op-sizes]');\n    if (!box) return;\n    box.insertAdjacentHTML('beforeend', entryHtml({ text: ' ', editing: true, editable: true, qty: 1 }));\n    syncSizes(row);\n    focusFirst(box.lastElementChild);\n  }\n  /* Remove only with 2+ sizes; the row's \"Qty N\" = the total of its sizes\n     (not on first paint \u2014 there it is the ORDERED qty, or nothing when the\n     feed has none); the quantity-break badge from the same total */\n  function syncSizes(row, initial) {\n    var box = row.querySelector('[data-op-sizes]');\n    if (!box) return;\n    box.classList.toggle('is-multi', box.querySelectorAll('[data-op-entry]').length > 1);\n    var total = 0;\n    box.querySelectorAll('[data-op-qn]').forEach(function (n) { total += parseInt(n.value, 10) || 0; });\n    var tq = row.querySelector('[data-op-total]');\n    if (tq && total && !initial) { tq.textContent = String(total); tq.parentNode.hidden = false; }\n    var t = row.__tiers, base = t && t.cumulative ? (t.base || 0) : 0;\n    var rowOff = t && t.cumulative ? offFor(t.rules, total + base) : 0;\n    var note = row.querySelector('[data-op-cartnote]');\n    if (note) { note.hidden = !base; note.textContent = base ? 'Includes ' + base + ' piece' + (base === 1 ? '' : 's') + ' already in your cart toward this discount' : ''; }\n    box.querySelectorAll('[data-op-entry]').forEach(function (entry) {\n      var off = !t ? 0 : t.cumulative ? rowOff : offFor(t.rules, qtyVal(entry.querySelector('[data-op-qn]')));\n      var b = entry.querySelector('[data-op-off]');\n      entry.__off = off;\n      if (b) { b.textContent = off ? off + '% off' : ''; b.hidden = !off; }\n      priceEntry(row, entry);\n    });\n    syncTotal(row);\n  }\n\n  /* Each size's line price between its Qty and the badge (Justin 2026-09-29):\n     unit price \u00D7 qty, and with a quantity break the full price struck\n     through beside the discounted one. The unit price is the variant the add\n     would use, fetched once per size. An estimate from THIS order's sizes:\n     the cart applies the tier to everything in it, so checkout can only match\n     or beat it. */\n  /* the size to price: what is typed while editing (live, Justin 2026-09-29),\n     else the set size; null while the boxes hold no valid size */\n  function sizeOf(entry) {\n    var dims = entry.querySelector('.alv2-op__dims');\n    if (dims) {\n      var w = num(dims.querySelector('[data-op-w]').value), h = num(dims.querySelector('[data-op-h]').value);\n      return sizeCheck(w, h) ? null : { w: r2(w), h: r2(h) };\n    }\n    var cw = +entry.getAttribute('data-cw'), ch = +entry.getAttribute('data-ch');\n    return cw && ch ? { w: cw, h: ch } : null;\n  }\n  function priceEntry(row, entry) {\n    var el = entry.querySelector('[data-op-price]'), ctx = row.__ctx;\n    if (!el || !ctx.priceFor) return;\n    var line = ctx.list[+row.getAttribute('data-op-i')];\n    var sized = !!ctx.parseSize(line.variantTitle), sz = sized ? sizeOf(entry) : null;\n    var w = sz ? sz.w : 0, h = sz ? sz.h : 0;\n    if (sized && !sz) { entry.__unitKey = ''; entry.__unit = 0; el.hidden = true; syncTotal(row); return; }\n    var key = sized ? w + 'x' + h : 'v';\n    if (entry.__unitKey === key) { paintPrice(row, entry, el); return; }\n    entry.__unitKey = key; entry.__unit = 0; el.hidden = true;\n    ctx.priceFor(line, sized ? w : 0, sized ? h : 0).then(function (c) {\n      if (entry.__unitKey !== key) return;   /* the size changed meanwhile */\n      entry.__unit = c || 0;\n      paintPrice(row, entry, el);\n    }, function () {});\n  }\n  /* pay = what the cart charges (NTQtyTiers.eachPrice: the discount per piece, rounded down) */\n  function linePrice(entry) {\n    var qty = qtyVal(entry.querySelector('[data-op-qn]')), unit = Math.round(entry.__unit), off = entry.__off || 0;\n    var each = window.NTQtyTiers ? window.NTQtyTiers.eachPrice(unit, off) : unit;\n    return { full: unit * qty, pay: each * qty };\n  }\n  function paintPrice(row, entry, el) {\n    if (!(entry.__unit > 0)) { el.hidden = true; syncTotal(row); return; }\n    var p = linePrice(entry);\n    el.innerHTML = p.pay < p.full ? '<s>' + money(p.full) + '</s><b>' + money(p.pay) + '</b>' : '<b>' + money(p.full) + '</b>';\n    el.hidden = false;\n    syncTotal(row);\n  }\n  /* \"Add to Cart as UV DTF \u00B7 $107.77\" \u2014 the sum of the sizes' prices, once\n     every set size has one (Justin 2026-09-29); a new size still being typed\n     is left out, and the button keeps its plain label while it works. */\n  /* Also the gate (Justin 2026-09-30): while any size of the order has no\n     valid W \u00D7 H \u2014 a new size not filled in yet, or one being typed wrong \u2014\n     Add to Cart is greyed out; it wakes up as soon as every size is valid\n     (or the empty one is removed). */\n  function syncTotal(row) {\n    var btn = row.querySelector('[data-op-add]');\n    if (!btn || btn.hasAttribute('data-busy')) return;\n    var line = row.__ctx.list[+row.getAttribute('data-op-i')];\n    var sized = !!row.__ctx.parseSize(line.variantTitle);\n    var sum = 0, ok = true, any = false, ready = true;\n    row.querySelectorAll('[data-op-entry]').forEach(function (entry) {\n      if (sized && !sizeOf(entry)) { ready = false; return; }\n      if (!(entry.__unit > 0)) { ok = false; return; }\n      any = true;\n      sum += linePrice(entry).pay;\n    });\n    btn.disabled = !ready;\n    btn.setAttribute('aria-disabled', String(!ready));\n    btn.title = ready ? '' : 'Enter a size for every line first';\n    var base = btn.getAttribute('data-label');\n    btn.textContent = ready && ok && any ? base + ' \u00B7 ' + money(sum) : base;\n  }\n\n\n  /* Every size in the row \u2192 [{ line, qty }], or an error. The first entry is\n     the order itself, at its (possibly edited) size. */\n  function collect(row) {\n    var ctx = row.__ctx, line = ctx.list[+row.getAttribute('data-op-i')];\n    var s = ctx.parseSize(line.variantTitle), out = [], ok = true;\n    row.querySelectorAll('[data-op-entry]').forEach(function (entry) {\n      if (!ok) return;\n      if (!doneEntry(row, entry, true)) { ok = false; return; }\n      if (entry.querySelector('.alv2-op__dims')) return;   /* untouched new size: skipped */\n      var qn = entry.querySelector('[data-op-qn]'), qty = qtyVal(qn);\n      if (qn) qn.value = qty;\n      var w = +entry.getAttribute('data-cw'), h = +entry.getAttribute('data-ch');\n      /* resized: a size the customer changed (the print-ready reorder note says SIMILAR, not EXACT) */\n      out.push({ line: s && w && (w !== s.width || h !== s.height)\n        ? Object.assign({}, line, { variantTitle: r2(w) + ' X ' + r2(h), resized: true }) : line, qty: qty });\n    });\n    if (ok && !out.length) { showErr(row, 'Enter a width and height for each size.'); ok = false; }\n    return ok ? { items: out } : { err: true };\n  }\n\n  function addToCart(row, btn) {\n    var ctx = row.__ctx, got = collect(row);\n    if (got.err) return;\n    showErr(row, '');\n    var label = btn.getAttribute('data-label');\n    btn.setAttribute('data-busy', ''); btn.disabled = true; btn.textContent = 'Adding\u2026';\n    var done = [];\n    got.items.reduce(function (p, it) {\n      return p.then(function () { return ctx.addLine(it.line, it.qty).then(function (res) { done.push({ res: res, qty: it.qty }); }); });\n    }, Promise.resolve()).then(function () {\n      btn.textContent = 'Added';\n      ctx.added(done, true);\n      setTimeout(function () { btn.removeAttribute('data-busy'); btn.disabled = false; btn.textContent = label; syncTotal(row); }, 1200);\n    }).catch(function () {\n      btn.removeAttribute('data-busy'); btn.disabled = false; btn.textContent = label; syncTotal(row);\n      if (done.length) ctx.added(done, false);\n      ctx.failed(done.length ? 'Some sizes could not be added to your cart' : 'Could not add that to your cart');\n    });\n  }\n\n  /* \u2500\u2500 events (delegated on the host, so a re-paint keeps them) \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */\n  function rowOf(host, el) {\n    var row = el.closest('.alv2-op__order');\n    if (row) row.__ctx = host.__op.ctx;\n    return row;\n  }\n  function wire(host) {\n    host.addEventListener('click', function (e) {\n      var t = e.target, b;\n      if (!host.__op || !t.closest) return;\n      if (t.closest('[data-op-all]')) {\n        var rows = host.querySelectorAll('.alv2-op__order');\n        var openAll = host.querySelectorAll('.alv2-op__order.is-open').length !== rows.length;\n        rows.forEach(function (r) { setOpen(r, openAll); });\n        syncAll(host);\n        return;\n      }\n      var row = rowOf(host, t);\n      if (!row) return;\n      var ctx = row.__ctx, line = ctx.list[+row.getAttribute('data-op-i')];\n      if (t.closest('[data-op-toggle]')) { setOpen(row, !row.classList.contains('is-open')); syncAll(host); return; }\n      if ((b = t.closest('[data-op-qty]'))) {\n        closeEdits(row);   /* Safari never focuses the \u00B1 buttons, so the focusin below misses them */\n        var n = b.parentNode.querySelector('[data-op-qn]');\n        n.value = String(Math.max(1, Math.min(9999, qtyVal(n) + parseInt(b.getAttribute('data-op-qty'), 10))));\n        syncSizes(row);\n        return;\n      }\n      if ((b = t.closest('[data-op-edit]'))) { showErr(row, ''); editEntry(b.closest('[data-op-entry]')); return; }\n      if ((b = t.closest('[data-op-done]'))) { doneEntry(row, b.closest('[data-op-entry]')); return; }\n      if (t.closest('[data-op-addsize]')) { showErr(row, ''); addSize(row); return; }\n      if ((b = t.closest('[data-op-rm]'))) {\n        var entry = b.closest('[data-op-entry]'), next = entry.nextElementSibling || entry.previousElementSibling;\n        entry.remove(); showErr(row, ''); syncSizes(row);\n        var f = next && (next.querySelector('input, [data-op-edit], [data-op-done]'));\n        if (f) { try { f.focus(); } catch (x) {} }\n        return;\n      }\n      if ((b = t.closest('[data-op-add]'))) { addToCart(row, b); return; }\n      if ((b = t.closest('[data-op-handoff]'))) { ctx.handoff(line, b); return; }\n      if (t.closest('[data-op-others]')) { ctx.others(line); }\n    });\n    var isSize = function (el) { return !!(el.classList && el.classList.contains('alv2-op__in')); };\n    var isQty = function (el) { return !!(el.classList && el.classList.contains('alv2-op__qn')); };\n    host.addEventListener('input', function (e) {\n      var inp = e.target, row = (isSize(inp) || isQty(inp)) && rowOf(host, inp);\n      if (!row) return;\n      if (isQty(inp)) {\n        var d = inp.value.replace(/\\D/g, '').slice(0, 4);\n        if (d !== inp.value) inp.value = d;\n        syncSizes(row);\n        return;\n      }\n      sync(row, inp);\n      showErr(row, '');\n      priceEntry(row, inp.closest('[data-op-entry]'));\n    });\n    /* a cleared or zero qty settles back to 1 when the box is left */\n    host.addEventListener('change', function (e) {\n      var inp = e.target, row;\n      if (!isQty(inp) || !(row = rowOf(host, inp))) return;\n      inp.value = qtyVal(inp);\n      syncSizes(row);\n    });\n    /* Enter in a size = Done; in a qty = keep it */\n    host.addEventListener('keydown', function (e) {\n      var inp = e.target, row;\n      if (e.key !== 'Enter' || !(isSize(inp) || isQty(inp)) || !(row = rowOf(host, inp))) return;\n      e.preventDefault();\n      if (isQty(inp)) { inp.value = qtyVal(inp); syncSizes(row); try { inp.select(); } catch (x) {} return; }\n      doneEntry(row, inp.closest('[data-op-entry]'));\n    });\n    /* Clicking (or tabbing) into a size or qty selects the whole number, so typing\n       replaces it \u2014 the focusing click's mouseup would re-place the caret, so\n       that one mouseup is cancelled and the select re-applied (the same fix\n       the Edit Size dialog needed, Justin 2026-09-29). */\n    var justFocused = null;\n    var selectAll = function (inp) { try { inp.select(); } catch (x) {} };\n    host.addEventListener('focusin', function (e) {\n      var inp = e.target, qrow = inp.closest && inp.closest('.alv2-op__qty') && rowOf(host, inp);\n      if (qrow) closeEdits(qrow);\n      if (!isSize(inp) && !isQty(inp)) return;\n      justFocused = inp;\n      selectAll(inp);\n      setTimeout(function () { selectAll(inp); }, 0);\n    });\n    host.addEventListener('mouseup', function (e) {\n      if (!justFocused || e.target !== justFocused) { justFocused = null; return; }\n      e.preventDefault();\n      var inp = justFocused;\n      justFocused = null;\n      selectAll(inp);\n      setTimeout(function () { selectAll(inp); }, 0);\n    });\n    host.addEventListener('focusout', function () { justFocused = null; });\n  }\n\n  window.NTAlv2Orders = { render: render };\n})();\n"],
  "mappings": "CAuCC,UAAY,CACX,aACA,GAAI,OAAO,aAAc,OAEzB,IAAI,IAAM,IAAM,IAAM,GACtB,SAAS,MAAM,EAAG,CAAE,MAAO,KAAO,KAAK,MAAM,CAAC,EAAI,KAAK,QAAQ,CAAC,CAAG,CAUnE,SAAS,OAAO,MAAO,EAAG,CAAE,OAAO,OAAO,WAAa,OAAO,WAAW,OAAO,MAAO,CAAC,EAAI,CAAG,CAC/F,SAAS,aAAa,EAAG,CACvB,MAAI,CAAC,GAAK,CAAC,EAAE,YAAc,CAAC,EAAE,MAAQ,CAAC,OAAO,WAAmB,EAC1D,OAAO,WAAW,SAAS,EAAE,IAAI,EAAE,KAAK,SAAU,KAAM,CAAE,SAAE,KAAO,KAAa,CAAG,CAAC,CAC7F,CACA,SAAS,GAAG,EAAG,CAAE,OAAO,KAAK,MAAM,EAAI,GAAG,EAAI,GAAK,CACnD,SAAS,IAAI,EAAG,CAAE,IAAI,EAAI,WAAW,CAAC,EAAG,OAAO,SAAS,CAAC,EAAI,EAAI,GAAK,CACvE,SAAS,EAAE,EAAG,CAAE,MAAO,4BAA8B,EAAI,UAAY,CAErE,SAAS,QAAQ,EAAG,CAClB,MAAO,gQAEuH,GAAK,GAAK,gHAE1I,CAEA,SAAS,OAAO,IAAK,CAAE,OAAO,KAAK,IAAI,EAAG,KAAK,IAAI,KAAM,SAAS,KAAO,IAAI,MAAO,EAAE,GAAK,CAAC,CAAC,CAAG,CAChG,SAAS,WAAW,EAAG,EAAG,CACxB,IAAI,IAAM,SAAU,IAAK,EAAG,CAC1B,MAAO,yFAA2F,IAChG,iBAAmB,MAAQ,IAAM,QAAU,UAAY,sBAAwB,EAAI,GAAG,CAAC,EAAI,IAAM,IACrG,EACA,MAAO,+BAAiC,IAAI,IAAK,CAAC,EAAI,mGACK,IAAI,IAAK,CAAC,EAAI,kDAC3E,CAGA,SAAS,UAAU,EAAG,CACpB,MAAO,4CAA8C,EAAE,EAAI,aAAe,EAAE,EAAI,cAAgB,EAAE,EAAI,IAAM,IAAM,KAC/G,EAAE,KAAO,8CAAgD,EAAE,OAAO,GAChE,EAAE,QAAU,WAAW,EAAE,EAAG,EAAE,CAAC,EAAI,uBAAyB,EAAE,KAAO,SACrE,EAAE,SAAW,8DAAgE,EAAE,QAAU,oBAAsB,0BAA4B,8FACnD,IAAM,OAAS,KACzG,EAAE,IAAM,6CAA+C,EAAE,MAAM,EAAI,QAAQ,EAAE,GAAG,EAE/E,wJACqE,IACvE,QACJ,CACA,SAAS,UAAU,EAAG,EAAG,CACvB,OAAM,EAAI,GAAK,EAAI,EACf,KAAK,IAAI,EAAG,CAAC,EAAI,IAAY,iCAAmC,IAAM,UACtE,KAAK,IAAI,EAAG,CAAC,EAAI,IAAY,sCAAwC,IAAM,UACxE,GAHuB,yCAIhC,CAEA,SAAS,OAAO,KAAM,IAAK,CACzB,KAAK,KAAO,CAAE,IAAK,GAAI,EACvB,MAAM,IAAI,EACL,KAAK,YAAa,KAAK,IAAI,EAAG,KAAK,UAAY,GACtD,CAEA,SAAS,MAAM,KAAM,CACnB,IAAI,IAAM,KAAK,KAAK,IAAK,KAAO,IAAI,KAAM,IAAM,IAAI,IAChD,KAAO,KAAK,CAAC,EAAG,GAAK,IAAI,UAAU,IAAI,GAAK,CAAC,EAC7C,EAAI,4BAA8B,EAAE,eAAe,EAAI,MAAQ,IAAI,IAAI,QAAQ,KAAK,UAAW,KAAK,IAAI,GAAK,QAAG,EAAI,QACnH,GAAG,MAAQ,0CAA4C,IAAI,GAAG,KAAK,EAAI,OAAS,IAAM,uHAE5B,KAAK,OAAS,YAExE,KAAK,OAAS,EAAI,8EAAgF,IAAM,SAC7G,KAAK,QAAQ,SAAU,EAAG,EAAG,CAAE,GAAK,UAAU,IAAK,EAAG,CAAC,CAAG,CAAC,EAC3D,KAAK,UAAY,EAAI,SACrB,KAAK,iBAAiB,iBAAiB,EAAE,QAAQ,SAAU,EAAG,CAC5D,EAAE,MAAQ,IAAK,UAAU,EAAG,EAAI,EAE5B,EAAE,aAAa,cAAc,GAAK,IAAI,OACxC,IAAI,MAAM,IAAI,KAAK,CAAC,EAAE,aAAa,WAAW,CAAC,CAAC,EAAE,KAAK,YAAY,EAAE,KAAK,SAAU,EAAG,CAAE,EAAE,QAAU,EAAG,UAAU,EAAG,EAAI,CAAG,EAAG,UAAY,CAAC,CAAC,CAEjJ,CAAC,EAED,IAAI,MAAQ,KAAK,cAAc,iBAAiB,EAC5C,OAAS,MAAM,cAAc,kBAAkB,IAAK,QAAQ,MAAO,EAAI,EAAG,QAAQ,IAAI,EAC5F,CAEA,SAAS,UAAU,IAAK,EAAG,EAAG,CAC5B,IAAI,IAAM,IAAI,IAAK,EAAI,IAAI,UAAU,CAAC,GAAK,CAAC,EAAG,EAAI,IAAI,UAAU,EAAE,YAAY,EAC3E,GAAK,OAAO,EAAE,cAAgB,EAAE,EAAE,KAAK,EACvC,GAAK,OAAO,EAAE,WAAa,EAAE,EAAE,QAAQ,KAAM,EAAE,EAAE,KAAK,EACtD,QAAU,CAAC,CAAC,EAAE,QACd,OAAS,IAAI,UAAY,CAAC,UAAY,CAAC,CAAC,GAAK,CAAC,CAAC,IAC/C,QAAU,QAAU,CAAC,CAAC,GAAK,CAAC,EAAE,KAC9B,KAAO,EAAE,KAAO,EAAE,OAAS,GAC3B,EAAI,EAAE,SAAW,EAAI,EAAE,SAAW,EAClC,SAAW,EAAI,IAAI,MAAM,EAAE,KAAK,EAAI,SAAQ,IAAI,MAAM,EAAE,MAAM,EAAI,GAClE,OAAS,OAAS,cAAgB,UAAY,KAAO,OAAS,KAAO,IAErE,MACD,EAAE,MAAQ,4BAA8B,EAAE,UAAU,EAAI,MAAQ,IAAI,EAAE,KAAK,EAAI,WAAa,IAC7F,6CACE,UAAU,CAAE,KAAM,IAAI,QAAQ,EAAG,EAAG,GAAK,EAAE,MAAO,EAAG,GAAK,EAAE,OAAQ,SAAU,QAAS,IAAK,OAAU,GAAK,EAAK,CAAE,CAAC,EAAI,UACxH,OAAS,4DAA8D,KACvE,QAAU,2GAA6G,IACxH,gEACC,IAAI,SAAW,gGAC0D,OAAS,cAAgB,mBAC/F,gBAAkB,IAAI,KAAK,EAAI,KAAO,IAAI,KAAK,EAAI,wIAE1C,IAEX,KAAO,kCAAoC,GAAK,IAAM,IAAI,EAAE,EAAI,IAAI,IAAI,QAAQ,EAAE,UAAW,EAAE,IAAI,GAAK,OAAO,GAAK,qCAC/E,EAAI,GAAK,WAAa,yBAA2B,EAAI,qBAE1F,OAAS,IAAI,KAAK,SAAW,EACjC,MAAO,8BAAgC,OAAS,WAAa,IAAM,gBAAkB,EAAI,KAAO,OAAS,gBAAkB,IAAM,KAC9H,OAAS,oDAAsD,KAAO,SAC7D,oFAAsF,KACpF,6DACZ,8BAAgC,OAAS,GAAK,WAAa,IAAM,KAAO,cAC5E,CAGA,SAAS,QAAQ,IAAK,KAAM,CAC1B,IAAI,cAAc,kBAAkB,EAAE,aAAa,gBAAiB,OAAO,IAAI,CAAC,EAChF,IAAI,cAAc,cAAc,EAAE,YAAc,KAAO,OAAS,OAChE,IAAI,cAAc,gBAAgB,EAAE,OAAS,CAAC,KAC9C,IAAI,UAAU,OAAO,UAAW,IAAI,CACtC,CACA,SAAS,QAAQ,KAAM,CACrB,IAAI,KAAO,KAAK,iBAAiB,iBAAiB,EAAG,KAAO,KAAK,iBAAiB,yBAAyB,EACvG,EAAI,KAAK,cAAc,eAAe,EACtC,IAAG,EAAE,YAAc,KAAK,QAAU,KAAK,SAAW,KAAK,OAAS,eAAiB,aACvF,CAIA,SAAS,QAAQ,IAAK,CACpB,IAAI,IAAM,IAAI,MAAO,EAAI,IAAI,UAAU,IAAI,KAAK,CAAC,IAAI,aAAa,WAAW,CAAC,EAAE,YAAY,EAC5F,OAAO,GAAK,EAAE,OAAS,EAAE,MAAQ,EAAE,OAAS,CAC9C,CAEA,SAAS,KAAK,IAAK,IAAK,CACtB,IAAI,GAAK,QAAQ,GAAG,EAAG,EAAI,IAAI,IAAI,KAAK,EAAG,KAAO,IAAI,QAAQ,gBAAgB,EAC1E,CAAC,IAAM,EAAE,EAAI,IAAM,CAAC,OACpB,IAAI,aAAa,WAAW,EAAG,KAAK,cAAc,aAAa,EAAE,MAAQ,GAAG,EAAI,EAAE,EACjF,KAAK,cAAc,aAAa,EAAE,MAAQ,GAAG,EAAI,EAAE,EAC1D,CACA,SAAS,WAAW,MAAO,CACzB,IAAI,IAAM,OAAS,MAAM,cAAc,aAAa,EACpD,GAAI,IAAO,GAAI,CAAE,IAAI,MAAM,CAAG,OAAS,EAAG,CAAC,CAC7C,CACA,SAAS,QAAQ,IAAK,IAAK,CACzB,IAAI,EAAI,IAAI,cAAc,eAAe,EACpC,IACL,EAAE,YAAc,KAAO,GACvB,EAAE,OAAS,CAAC,IACd,CAEA,SAAS,UAAU,MAAO,CACxB,IAAI,KAAO,MAAM,cAAc,oBAAoB,EAAG,IAAM,MAAQ,KAAK,cAAc,oBAAoB,EAC3G,GAAK,IACL,KAAI,UAAY,WAAW,CAAC,MAAM,aAAa,SAAS,EAAG,CAAC,MAAM,aAAa,SAAS,CAAC,EACzF,IAAI,EAAI,KAAK,cAAc,gBAAgB,EAC3C,EAAE,YAAc,OAAQ,EAAE,gBAAgB,cAAc,EAAG,EAAE,aAAa,eAAgB,EAAE,EAC5F,WAAW,IAAI,EACjB,CAGA,SAAS,UAAU,IAAK,MAAO,MAAO,UAAW,CAC/C,IAAI,KAAO,MAAM,cAAc,gBAAgB,EAC/C,GAAI,CAAC,KAAM,MAAO,GAClB,IAAI,GAAK,KAAK,cAAc,aAAa,EAAE,MAAM,KAAK,EAAG,GAAK,KAAK,cAAc,aAAa,EAAE,MAAM,KAAK,EAC3G,GAAI,OAAS,CAAC,IAAM,CAAC,IAAM,CAAC,MAAM,aAAa,SAAS,EAAG,MAAO,GAClE,IAAI,EAAI,IAAI,EAAE,EAAG,EAAI,IAAI,EAAE,EAAG,IAAM,UAAU,EAAG,CAAC,EAClD,GAAI,IAAK,CAAqB,GAAnB,QAAQ,IAAK,GAAG,EAAO,CAAC,UAAa,GAAI,CAAE,KAAK,cAAc,aAAa,EAAE,MAAM,CAAG,OAAS,EAAG,CAAC,CAAI,MAAO,EAAO,CAChI,EAAI,GAAG,CAAC,EAAG,EAAI,GAAG,CAAC,EACnB,MAAM,aAAa,UAAW,CAAC,EAAG,MAAM,aAAa,UAAW,CAAC,EACjE,UAAU,GAAG,EACb,IAAI,EAAI,SAAS,cAAc,GAAG,EAClC,EAAE,aAAa,mBAAoB,EAAE,EACrC,EAAE,YAAc,IAAI,MAAM,MAAM,CAAC,EAAI,SAAQ,IAAI,MAAM,MAAM,CAAC,EAC9D,KAAK,YAAY,CAAC,EAClB,IAAI,EAAI,MAAM,cAAc,gBAAgB,EAG5C,GAFA,EAAE,YAAc,YAAa,EAAE,gBAAgB,cAAc,EAAG,EAAE,aAAa,eAAgB,EAAE,EACjG,QAAQ,IAAK,EAAE,EACX,CAAC,MAAS,GAAI,CAAE,EAAE,MAAM,CAAG,OAAS,EAAG,CAAC,CAC5C,MAAO,EACT,CAIA,SAAS,WAAW,IAAK,CACvB,IAAI,iBAAiB,iBAAiB,EAAE,QAAQ,SAAU,MAAO,CAC3D,MAAM,cAAc,gBAAgB,GAAG,UAAU,IAAK,MAAO,GAAM,EAAI,CAC7E,CAAC,CACH,CACA,SAAS,QAAQ,IAAK,CACpB,IAAI,IAAM,IAAI,cAAc,iBAAiB,EACxC,MACL,IAAI,mBAAmB,YAAa,UAAU,CAAE,KAAM,IAAK,QAAS,GAAM,SAAU,GAAM,IAAK,CAAE,CAAC,CAAC,EACnG,UAAU,GAAG,EACb,WAAW,IAAI,gBAAgB,EACjC,CAIA,SAAS,UAAU,IAAK,QAAS,CAC/B,IAAI,IAAM,IAAI,cAAc,iBAAiB,EAC7C,GAAK,IACL,KAAI,UAAU,OAAO,WAAY,IAAI,iBAAiB,iBAAiB,EAAE,OAAS,CAAC,EACnF,IAAI,MAAQ,EACZ,IAAI,iBAAiB,cAAc,EAAE,QAAQ,SAAU,EAAG,CAAE,OAAS,SAAS,EAAE,MAAO,EAAE,GAAK,CAAG,CAAC,EAClG,IAAI,GAAK,IAAI,cAAc,iBAAiB,EACxC,IAAM,OAAS,CAAC,UAAW,GAAG,YAAc,OAAO,KAAK,EAAG,GAAG,WAAW,OAAS,IACtF,IAAI,EAAI,IAAI,QAAS,KAAO,GAAK,EAAE,YAAc,EAAE,MAAQ,EACvD,OAAS,GAAK,EAAE,WAAa,OAAO,EAAE,MAAO,MAAQ,IAAI,EAAI,EAC7D,KAAO,IAAI,cAAc,oBAAoB,EAC7C,OAAQ,KAAK,OAAS,CAAC,KAAM,KAAK,YAAc,KAAO,YAAc,KAAO,UAAY,OAAS,EAAI,GAAK,KAAO,6CAA+C,IACpK,IAAI,iBAAiB,iBAAiB,EAAE,QAAQ,SAAU,MAAO,CAC/D,IAAI,IAAO,EAAQ,EAAE,WAAa,OAAS,OAAO,EAAE,MAAO,OAAO,MAAM,cAAc,cAAc,CAAC,CAAC,EAAvF,EACX,EAAI,MAAM,cAAc,eAAe,EAC3C,MAAM,MAAQ,IACV,IAAK,EAAE,YAAc,IAAM,IAAM,QAAU,GAAI,EAAE,OAAS,CAAC,KAC/D,WAAW,IAAK,KAAK,CACvB,CAAC,EACD,UAAU,GAAG,EACf,CAUA,SAAS,OAAO,MAAO,CACrB,IAAI,KAAO,MAAM,cAAc,gBAAgB,EAC/C,GAAI,KAAM,CACR,IAAI,EAAI,IAAI,KAAK,cAAc,aAAa,EAAE,KAAK,EAAG,EAAI,IAAI,KAAK,cAAc,aAAa,EAAE,KAAK,EACrG,OAAO,UAAU,EAAG,CAAC,EAAI,KAAO,CAAE,EAAG,GAAG,CAAC,EAAG,EAAG,GAAG,CAAC,CAAE,CACvD,CACA,IAAI,GAAK,CAAC,MAAM,aAAa,SAAS,EAAG,GAAK,CAAC,MAAM,aAAa,SAAS,EAC3E,OAAO,IAAM,GAAK,CAAE,EAAG,GAAI,EAAG,EAAG,EAAI,IACvC,CACA,SAAS,WAAW,IAAK,MAAO,CAC9B,IAAI,GAAK,MAAM,cAAc,iBAAiB,EAAG,IAAM,IAAI,MAC3D,GAAI,GAAC,IAAM,CAAC,IAAI,UAChB,KAAI,KAAO,IAAI,KAAK,CAAC,IAAI,aAAa,WAAW,CAAC,EAC9C,MAAQ,CAAC,CAAC,IAAI,UAAU,KAAK,YAAY,EAAG,GAAK,MAAQ,OAAO,KAAK,EAAI,KACzE,EAAI,GAAK,GAAG,EAAI,EAAG,EAAI,GAAK,GAAG,EAAI,EACvC,GAAI,OAAS,CAAC,GAAI,CAAE,MAAM,UAAY,GAAI,MAAM,OAAS,EAAG,GAAG,OAAS,GAAM,UAAU,GAAG,EAAG,MAAQ,CACtG,IAAI,IAAM,MAAQ,EAAI,IAAM,EAAI,IAChC,GAAI,MAAM,YAAc,IAAK,CAAE,WAAW,IAAK,MAAO,EAAE,EAAG,MAAQ,CACnE,MAAM,UAAY,IAAK,MAAM,OAAS,EAAG,GAAG,OAAS,GACrD,IAAI,SAAS,KAAM,MAAQ,EAAI,EAAG,MAAQ,EAAI,CAAC,EAAE,KAAK,SAAU,EAAG,CAC7D,MAAM,YAAc,MACxB,MAAM,OAAS,GAAK,EACpB,WAAW,IAAK,MAAO,EAAE,EAC3B,EAAG,UAAY,CAAC,CAAC,EACnB,CAEA,SAAS,UAAU,MAAO,CACxB,IAAI,IAAM,OAAO,MAAM,cAAc,cAAc,CAAC,EAAG,KAAO,KAAK,MAAM,MAAM,MAAM,EAAG,IAAM,MAAM,OAAS,EACzG,KAAO,OAAO,WAAa,OAAO,WAAW,UAAU,KAAM,GAAG,EAAI,KACxE,MAAO,CAAE,KAAM,KAAO,IAAK,IAAK,KAAO,GAAI,CAC7C,CACA,SAAS,WAAW,IAAK,MAAO,GAAI,CAClC,GAAI,EAAE,MAAM,OAAS,GAAI,CAAE,GAAG,OAAS,GAAM,UAAU,GAAG,EAAG,MAAQ,CACrE,IAAI,EAAI,UAAU,KAAK,EACvB,GAAG,UAAY,EAAE,IAAM,EAAE,KAAO,MAAQ,MAAM,EAAE,IAAI,EAAI,UAAY,MAAM,EAAE,GAAG,EAAI,OAAS,MAAQ,MAAM,EAAE,IAAI,EAAI,OACpH,GAAG,OAAS,GACZ,UAAU,GAAG,CACf,CAQA,SAAS,UAAU,IAAK,CACtB,IAAI,IAAM,IAAI,cAAc,eAAe,EAC3C,GAAI,GAAC,KAAO,IAAI,aAAa,WAAW,GACxC,KAAI,KAAO,IAAI,MAAM,KAAK,CAAC,IAAI,aAAa,WAAW,CAAC,EACpD,MAAQ,CAAC,CAAC,IAAI,MAAM,UAAU,KAAK,YAAY,EAC/C,IAAM,EAAG,GAAK,GAAM,IAAM,GAAO,MAAQ,GAC7C,IAAI,iBAAiB,iBAAiB,EAAE,QAAQ,SAAU,MAAO,CAC/D,GAAI,OAAS,CAAC,OAAO,KAAK,EAAG,CAAE,MAAQ,GAAO,MAAQ,CACtD,GAAI,EAAE,MAAM,OAAS,GAAI,CAAE,GAAK,GAAO,MAAQ,CAC/C,IAAM,GACN,KAAO,UAAU,KAAK,EAAE,GAC1B,CAAC,EACD,IAAI,SAAW,CAAC,MAChB,IAAI,aAAa,gBAAiB,OAAO,CAAC,KAAK,CAAC,EAChD,IAAI,MAAQ,MAAQ,GAAK,oCACzB,IAAI,KAAO,IAAI,aAAa,YAAY,EACxC,IAAI,YAAc,OAAS,IAAM,IAAM,KAAO,SAAQ,MAAM,GAAG,EAAI,KACrE,CAKA,SAAS,QAAQ,IAAK,CACpB,IAAI,IAAM,IAAI,MAAO,KAAO,IAAI,KAAK,CAAC,IAAI,aAAa,WAAW,CAAC,EAC/D,EAAI,IAAI,UAAU,KAAK,YAAY,EAAG,IAAM,CAAC,EAAG,GAAK,GACzD,WAAI,iBAAiB,iBAAiB,EAAE,QAAQ,SAAU,MAAO,CAC/D,GAAK,GACL,IAAI,CAAC,UAAU,IAAK,MAAO,EAAI,EAAG,CAAE,GAAK,GAAO,MAAQ,CACxD,GAAI,OAAM,cAAc,gBAAgB,EACxC,KAAI,GAAK,MAAM,cAAc,cAAc,EAAG,IAAM,OAAO,EAAE,EACzD,KAAI,GAAG,MAAQ,KACnB,IAAI,EAAI,CAAC,MAAM,aAAa,SAAS,EAAG,EAAI,CAAC,MAAM,aAAa,SAAS,EAEzE,IAAI,KAAK,CAAE,KAAM,GAAK,IAAM,IAAM,EAAE,OAAS,IAAM,EAAE,QACjD,OAAO,OAAO,CAAC,EAAG,KAAM,CAAE,aAAc,GAAG,CAAC,EAAI,MAAQ,GAAG,CAAC,EAAG,QAAS,EAAK,CAAC,EAAI,KAAM,IAAK,GAAI,CAAC,GACxG,CAAC,EACG,IAAM,CAAC,IAAI,SAAU,QAAQ,IAAK,yCAAyC,EAAG,GAAK,IAChF,GAAK,CAAE,MAAO,GAAI,EAAI,CAAE,IAAK,EAAK,CAC3C,CAEA,SAAS,UAAU,IAAK,IAAK,CAC3B,IAAI,IAAM,IAAI,MAAO,IAAM,QAAQ,GAAG,EACtC,GAAI,KAAI,IACR,SAAQ,IAAK,EAAE,EACf,IAAI,MAAQ,IAAI,aAAa,YAAY,EACzC,IAAI,aAAa,YAAa,EAAE,EAAG,IAAI,SAAW,GAAM,IAAI,YAAc,eAC1E,IAAI,KAAO,CAAC,EACZ,IAAI,MAAM,OAAO,SAAU,EAAG,GAAI,CAChC,OAAO,EAAE,KAAK,UAAY,CAAE,OAAO,IAAI,QAAQ,GAAG,KAAM,GAAG,GAAG,EAAE,KAAK,SAAU,IAAK,CAAE,KAAK,KAAK,CAAE,IAAK,IAAK,IAAK,GAAG,GAAI,CAAC,CAAG,CAAC,CAAG,CAAC,CACnI,EAAG,QAAQ,QAAQ,CAAC,EAAE,KAAK,UAAY,CACrC,IAAI,YAAc,QAClB,IAAI,MAAM,KAAM,EAAI,EACpB,WAAW,UAAY,CAAE,IAAI,gBAAgB,WAAW,EAAG,IAAI,SAAW,GAAO,IAAI,YAAc,MAAO,UAAU,GAAG,CAAG,EAAG,IAAI,CACnI,CAAC,EAAE,MAAM,UAAY,CACnB,IAAI,gBAAgB,WAAW,EAAG,IAAI,SAAW,GAAO,IAAI,YAAc,MAAO,UAAU,GAAG,EAC1F,KAAK,QAAQ,IAAI,MAAM,KAAM,EAAK,EACtC,IAAI,OAAO,KAAK,OAAS,6CAA+C,iCAAiC,CAC3G,CAAC,EACH,CAGA,SAAS,MAAM,KAAM,GAAI,CACvB,IAAI,IAAM,GAAG,QAAQ,iBAAiB,EACtC,OAAI,MAAK,IAAI,MAAQ,KAAK,KAAK,KACxB,GACT,CACA,SAAS,KAAK,KAAM,CAClB,KAAK,iBAAiB,QAAS,SAAU,EAAG,CAC1C,IAAI,EAAI,EAAE,OAAQ,EAClB,GAAI,GAAC,KAAK,MAAQ,CAAC,EAAE,SACrB,IAAI,EAAE,QAAQ,eAAe,EAAG,CAC9B,IAAI,KAAO,KAAK,iBAAiB,iBAAiB,EAC9C,QAAU,KAAK,iBAAiB,yBAAyB,EAAE,SAAW,KAAK,OAC/E,KAAK,QAAQ,SAAU,EAAG,CAAE,QAAQ,EAAG,OAAO,CAAG,CAAC,EAClD,QAAQ,IAAI,EACZ,MACF,CACA,IAAI,IAAM,MAAM,KAAM,CAAC,EACvB,GAAK,IACL,KAAI,IAAM,IAAI,MAAO,KAAO,IAAI,KAAK,CAAC,IAAI,aAAa,WAAW,CAAC,EACnE,GAAI,EAAE,QAAQ,kBAAkB,EAAG,CAAE,QAAQ,IAAK,CAAC,IAAI,UAAU,SAAS,SAAS,CAAC,EAAG,QAAQ,IAAI,EAAG,MAAQ,CAC9G,GAAK,EAAI,EAAE,QAAQ,eAAe,EAAI,CACpC,WAAW,GAAG,EACd,IAAI,EAAI,EAAE,WAAW,cAAc,cAAc,EACjD,EAAE,MAAQ,OAAO,KAAK,IAAI,EAAG,KAAK,IAAI,KAAM,OAAO,CAAC,EAAI,SAAS,EAAE,aAAa,aAAa,EAAG,EAAE,CAAC,CAAC,CAAC,EACrG,UAAU,GAAG,EACb,MACF,CACA,GAAK,EAAI,EAAE,QAAQ,gBAAgB,EAAI,CAAE,QAAQ,IAAK,EAAE,EAAG,UAAU,EAAE,QAAQ,iBAAiB,CAAC,EAAG,MAAQ,CAC5G,GAAK,EAAI,EAAE,QAAQ,gBAAgB,EAAI,CAAE,UAAU,IAAK,EAAE,QAAQ,iBAAiB,CAAC,EAAG,MAAQ,CAC/F,GAAI,EAAE,QAAQ,mBAAmB,EAAG,CAAE,QAAQ,IAAK,EAAE,EAAG,QAAQ,GAAG,EAAG,MAAQ,CAC9E,GAAK,EAAI,EAAE,QAAQ,cAAc,EAAI,CACnC,IAAI,MAAQ,EAAE,QAAQ,iBAAiB,EAAG,KAAO,MAAM,oBAAsB,MAAM,uBACnF,MAAM,OAAO,EAAG,QAAQ,IAAK,EAAE,EAAG,UAAU,GAAG,EAC/C,IAAI,EAAI,MAAS,KAAK,cAAc,uCAAuC,EAC3E,GAAI,EAAK,GAAI,CAAE,EAAE,MAAM,CAAG,OAAS,EAAG,CAAC,CACvC,MACF,CACA,GAAK,EAAI,EAAE,QAAQ,eAAe,EAAI,CAAE,UAAU,IAAK,CAAC,EAAG,MAAQ,CACnE,GAAK,EAAI,EAAE,QAAQ,mBAAmB,EAAI,CAAE,IAAI,QAAQ,KAAM,CAAC,EAAG,MAAQ,CACtE,EAAE,QAAQ,kBAAkB,GAAK,IAAI,OAAO,IAAI,GACtD,CAAC,EACD,IAAI,OAAS,SAAU,GAAI,CAAE,MAAO,CAAC,EAAE,GAAG,WAAa,GAAG,UAAU,SAAS,aAAa,EAAI,EAC1F,MAAQ,SAAU,GAAI,CAAE,MAAO,CAAC,EAAE,GAAG,WAAa,GAAG,UAAU,SAAS,aAAa,EAAI,EAC7F,KAAK,iBAAiB,QAAS,SAAU,EAAG,CAC1C,IAAI,IAAM,EAAE,OAAQ,KAAO,OAAO,GAAG,GAAK,MAAM,GAAG,IAAM,MAAM,KAAM,GAAG,EACxE,GAAK,IACL,IAAI,MAAM,GAAG,EAAG,CACd,IAAI,EAAI,IAAI,MAAM,QAAQ,MAAO,EAAE,EAAE,MAAM,EAAG,CAAC,EAC3C,IAAM,IAAI,QAAO,IAAI,MAAQ,GACjC,UAAU,GAAG,EACb,MACF,CACA,KAAK,IAAK,GAAG,EACb,QAAQ,IAAK,EAAE,EACf,WAAW,IAAK,IAAI,QAAQ,iBAAiB,CAAC,EAChD,CAAC,EAED,KAAK,iBAAiB,SAAU,SAAU,EAAG,CAC3C,IAAI,IAAM,EAAE,OAAQ,IAChB,CAAC,MAAM,GAAG,GAAK,EAAE,IAAM,MAAM,KAAM,GAAG,KAC1C,IAAI,MAAQ,OAAO,GAAG,EACtB,UAAU,GAAG,EACf,CAAC,EAED,KAAK,iBAAiB,UAAW,SAAU,EAAG,CAC5C,IAAI,IAAM,EAAE,OAAQ,IACpB,GAAI,IAAE,MAAQ,SAAW,EAAE,OAAO,GAAG,GAAK,MAAM,GAAG,IAAM,EAAE,IAAM,MAAM,KAAM,GAAG,IAEhF,IADA,EAAE,eAAe,EACb,MAAM,GAAG,EAAG,CAAE,IAAI,MAAQ,OAAO,GAAG,EAAG,UAAU,GAAG,EAAG,GAAI,CAAE,IAAI,OAAO,CAAG,OAAS,EAAG,CAAC,CAAE,MAAQ,CACtG,UAAU,IAAK,IAAI,QAAQ,iBAAiB,CAAC,EAC/C,CAAC,EAKD,IAAI,YAAc,KACd,UAAY,SAAU,IAAK,CAAE,GAAI,CAAE,IAAI,OAAO,CAAG,OAAS,EAAG,CAAC,CAAE,EACpE,KAAK,iBAAiB,UAAW,SAAU,EAAG,CAC5C,IAAI,IAAM,EAAE,OAAQ,KAAO,IAAI,SAAW,IAAI,QAAQ,eAAe,GAAK,MAAM,KAAM,GAAG,EACrF,MAAM,WAAW,IAAI,EACrB,GAAC,OAAO,GAAG,GAAK,CAAC,MAAM,GAAG,KAC9B,YAAc,IACd,UAAU,GAAG,EACb,WAAW,UAAY,CAAE,UAAU,GAAG,CAAG,EAAG,CAAC,EAC/C,CAAC,EACD,KAAK,iBAAiB,UAAW,SAAU,EAAG,CAC5C,GAAI,CAAC,aAAe,EAAE,SAAW,YAAa,CAAE,YAAc,KAAM,MAAQ,CAC5E,EAAE,eAAe,EACjB,IAAI,IAAM,YACV,YAAc,KACd,UAAU,GAAG,EACb,WAAW,UAAY,CAAE,UAAU,GAAG,CAAG,EAAG,CAAC,CAC/C,CAAC,EACD,KAAK,iBAAiB,WAAY,UAAY,CAAE,YAAc,IAAM,CAAC,CACvE,CAEA,OAAO,aAAe,CAAE,OAAQ,MAAO,CACzC,GAAG",
  "names": []
}
